Running meteor on linux server - meteor

I am trying to get my localhost working on my remote (mediatemple) server.
I have bundled it up and have a /myurl.com/bundle folder with the following files.
this folder contains
main.js
npm-debug.log
programs
server
How do I get this to run?

You should take a look in the README inside the bundle folder. Normally everything ist described there to start your app.
Make sure that NODEJS and MONGO is installed on your remote server. This is NOT included in your bundle as well as NODEJS is not present.
If you are running a system like debian or ubuntu normally you can do the installation with
apt-get install nodejs mongo
Make sure, that the nodejs has release v0.10.36 or v0.10.38
node --version
At the README you see the necessary ENV-VARS like MONGO_URL and PORT you need to set to start your meteor app.
If you have running a apache server already the PORT 80 is already blocked, so try PORT=3000 to start your meteor app.
Example:
MONGO_URL='mongodb://localhost:27017/yourapp' ROOT_URL="http://yourhost" PORT=3000 node main.js
If using as above you do not need to export the ENV-VARS before start
Sometime when starting, there are missing NPM – you get fiber errors
In that case
cd programs/server
npm install
and the try start again.
Good luck
Tom

(I'm writing this response assuming that you are not worried about scalability issue, respond in comment if you want to scale your app)
The best option for running a node application, which Meteor application is, is by using forever.
npm install forever
forever start simple-server.js
If you want to figure out how to see the log files and how to stop/restart your service, you can run forever --help to see all the commands.

Related

How do I read a file from the local file system from inside a meteor app?

I have a meteor app that needs to periodically read a file located on the host's file system, outside of the app package. I am using node's fs to accomplish this, and it works fine on my (macOS) development machine.
However, when I run mup deploy to deploy it to my (Ubuntu 14) server, mup returns the following error after starting meteor:
Error: ENOENT: no such file or directory, open '/home/sam/data/all_data.json'
at Object.fs.openSync (fs.js:652:18)
at Object.fs.readFileSync (fs.js:553:33)
Does anyone know why this might be happening?
you should follow mup documentation closely. Have you seen volumes setup in mup config? Try this to solve your issue.
Reason: mup runs app in docker without any access to host file system unless specified. Volumes setup does this for you with mup deployment.
Below is the part of mup config from http://meteor-up.com/docs.html, Everything Configured, read more to get a better idea.
name: 'app',
path: '../app',
// lets you add docker volumes (optional). Can be used to
// store files between app deploys and restarts.
volumes: {
// passed as '-v /host/path:/container/path' to the docker run command
'/host/path': '/container/path',
'/second/host/path': '/second/container/path'
},
The user you have that is running your meteor build on the server needs to have access to that folder - read access. I would store the file in a different directory than the home one, because you don't want to mess it up. Either way doing something like chmod -R 444 /home/sam/data should give read access to any user for all files in that directory. You are probably running meteor as your local user(sam?) in development mode on your macOS, but the built up gets run as meteor or some other user on ubuntu, because of mup and forever.

how to solve "Failed at the fibers#2.0.0 install script' error while deploying the meteor app?

I know how to package and then deploy meteor application. But recently for one project i'm stuck at an error which i couldn't resolve.
Steps I followed for package and deploy of my meteor app:
1. meteor build package
2. cd package
3. tar -xf inventoryTool.tar.gz
4. cd bundle/programs/server
5. npm install
6. cd ../..
7. PORT=<port> MONGO_URL=mongodb://127.0.0.1:27017/dbName ROOT_URL=http://<ip> node main.js
Here is the log for the error when i run the npm install(STEP 5) command.
Is there anything missing in my execution?. I'm not using the fibers package anywhere in my project. Does anyone have solution to this problem? Thanks in advance.
Why this happens (a lot)?
Your local version of node is v8.9.4. When using the build command, you will export your application and build the code against this exact node version. Your server environment will require this exact version, too.
An excerpt from the custom deployment section of the guide:
Depending on the version of Meteor you are using, you should install
the proper version of node using the appropriate installation process
for your platform. To find out which version of node you should use,
run meteor node -v in the development environment, or check the
.node_version.txt file within the bundle generated by meteor build.
Even if you don't use fibers explicitly it will be required to run your Meteor app on the server correctly.
So what to do?
In order to solve this, you need to
a) ensure that your local version of node exactly matches the version on the server
b) ensure that you build against the server's architecture (see build command)
To install a) the very specific node version on your server you have two options:
Option I. Use n, as described here. However this works only if your server environment uses node and not nodejs (which depends on how you installed nodejs on the server).
II. To install a specific nodejs version from the repositories, you may do the following:
$ cd /tmp
$ wget https://deb.nodesource.com/node_8.x/pool/main/n/nodejs/nodejs_8.9.4-1nodesource1_amd64.deb
$ apt install nodejs_8.9.4-1nodesource1_amd64.deb
If you are not sure, which of both are installed on your server, check node -v and nodejs -v. One of both will return a version. If your npm install still fails, check the error output and if it involves either node or nodejs and install the desired distribution using the options above.
To build b) against the architecture on your server, you should use the --architecture flag in your build command.

"Meteor create my-app" taking forever installing npm dependencies

I am a newbie in web development. I have installed Meteor on ubuntu. When I try to create an app using something like:
Meteor create my-app
It creates the my-app folder but it never returns out of "Installing npm dependencies". I have been waiting for more than half and hour. I was wondering if this is normal? How long more should I wait for it to end?
I'm working behind a company proxy but I have set the proxy using the following lines (and that allowed me to install Meteor in the first place):
export http_proxy=http://username:password#proxy:port
export https_proxy=http://username:password#proxy:port
I was stuck in a similar situation on Windows.
Cancel the job using ctrl+c. Since meteor creates the app directory even before the command is complete, you will have the directory intact, go into the directory and run
meteor npm install
It will install all the dependencies (took 7s for me),
then run meteor to start the server.

Can't complete mup setup on Dreamhost aka Meteor Up

I'm stuck at the mup setup. Trying to set it up on my Dreamhost server.
Here is what I started with after running mup setup:
Meteor Up: Production Quality Meteor Deployments
------------------------------------------------
Started TaskList: Setup (linux)
[mydomain.com] - Installing Node.js
[mydomain.com] ✘ Installing Node.js: FAILED
-----------------------------------STDERR------------
tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
Then I installed node manually on my server, and set the mup file to "setupNode": false. Tried again and got that:
Meteor Up: Production Quality Meteor Deployments
------------------------------------------------
Started TaskList: Setup (linux)
[mydomain.com] - Installing PhantomJS
[mydomain.com] ✘ Installing PhantomJS: FAILED
-----------------------------------STDERR-----------------
tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
Finally, I also deactivated the PhantomJS install, tried again to run mup setup and got that:
Meteor Up: Production Quality Meteor Deployments
------------------------------------------------
Started TaskList: Setup (linux)
[mydomain.com] - Setting up Environment
[mydomain.com] ✔ Setting up Environment: SUCCESS
[mudomain.com] - Copying MongoDB configuration
[mydomain.com] ✘ Copying MongoDB configuration: FAILED
-----------------------------------STDERR-----------------
Warning: Permanently added 'mydomain.com,69.163.152.69' (RSA) to the list of known hosts.
scp: /etc/mongodb.conf: Permission denied
Killed by signal 1.
-----------------------------------STDOUT-----------------
----------------------------------------------------------
Completed TaskList: Setup (linux)
I am not sure what to do or try next. Thanks in advance for your help and suggestions.
Its seems like its a Permission problem.
Try with sudo mup setup or whatever name process are you running, initialize with the sudo keyword
From dream Host forums (admin or tutor post).
node.js — which is used by Meteor — causes some weird issues on our shared hosting servers that can trigger this behavior. We're aware of
the issue, but, for various reasons, it's been difficult to fix.
That being said, Meteor won't work on a shared hosting account anyway,
as it runs as a persistent server process, which isn't permitted.
You'd need a DreamHost VPS or dedicated server to run Meteor.
So if you don't have a dreamHost VPS or dedicated server, and you only want to deploy the app give a try to Modulus.io, it works pretty fine with meteor, or use the meteor deploy servers, doc here
This happens because Sudo isn't installed on the target machine.
On my Debian target machine I did apt-get install sudo to resolve this.
For a RedHat flavor (Centos etc) target machine you might do yum install sudo etc.
However mup is supported for Ubuntu only so it's very likely to run into issues with other flavors. You might want to stick with Ubuntu target machines to avoid headaches like these.

Recompile Nginx with additional modules

I installed Nginx via apt-get on Debian a while ago, and I've got a couple of sites live on it. Now I need to install some additional modules, and as I don't want to mess anything up I'd like to double check my process before I perform it. Hopefully this will also help others that are unsure about this part.
As I've understood it I have to do the following to minimize the downtime:
Download the source for Nginx
Add the additional modules with ./configure --additional-module
Compile Nginx with make
Stop the current server (service nginx stop)
Install Nginx with make install
Start the new server (service nginx start)
Or do I have to uninstall Nginx first, as it's not compiled from source at this point?
Having done something similar on Ubuntu before, the installation should overwrite the existing nginx binaries with the newly compiled ones, so long as yes, you ensure nginx isn't running on the system at the time.
I'd recommend trying to install nginx elsewhere on the system, so in case you can't get it to work quickly, you can restart your web server with the old nginx binaries and not have significant downtime.
nginx -V - helpful command which shows options for .\configure which was used to make nginx, which is actually working.
Helpful to get detail imagination about.
apt-get source nginx - to get source
install will automatically substitute actual installed version by new one
Keep also in mind that some nginx-modules can require additional libs on server. geoip module is classical example of it

Resources