mup deploy error - x Start Meteor: FAILED - javascript

On Windows 10 PowerShell as admin, trying to deploy a Meteor app using mup, onto a VPS Ubuntu 20.04.2 LTS, all went good but failed to start meteor, as show in the bottom of the print out. I "think" that it is because this sentence at the end;
Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.
Server reports:
root#server:~# netstat -tulpn | grep --color :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 231/apache2
Any idea how to fix this issue where I need Apache to be running as well as nodeJs? Thank you
Update:
The following is the output of mup deploy --verbose, followed by the file mup.js
C:\my-app-dir\.deploy>mup deploy --verbose
Active Connections
Proto Local Address Foreign Address State
TCP 127.0.0.1:49675 LAPTOP-OLT811G5:49676 ESTABLISHED
TCP 127.0.0.1:49676 LAPTOP-OLT811G5:49675 ESTABLISHED
TCP 127.0.0.1:50151 LAPTOP-OLT811G5:50152 ESTABLISHED
TCP 127.0.0.1:50152 LAPTOP-OLT811G5:50151 ESTABLISHED
TCP 127.0.0.1:50154 LAPTOP-OLT811G5:50155 ESTABLISHED
TCP 127.0.0.1:50155 LAPTOP-OLT811G5:50154 ESTABLISHED
TCP 127.0.0.1:50160 LAPTOP-OLT811G5:50161 ESTABLISHED
TCP 127.0.0.1:50161 LAPTOP-OLT811G5:50160 ESTABLISHED
TCP 127.0.0.1:52367 LAPTOP-OLT811G5:52368 ESTABLISHED
[185.148.129.235] - Pushing Meteor App Bundle to the Server: SUCCESS
[185.148.129.235] - Prepare BundlePTOP-OLT811G5:52800 ESTABLISHED
Updating base image52800 LAPTOP-OLT811G5:52799 ESTABLISHED
node-12-base: Pulling from abernix/meteord811G5:55366 ESTABLISHED
Digest: sha256:79c9c29c028fd72320fa1af5e2bab1147db3c206a9d807e9bdb3fb2110660c1a
Status: Image is up to date for abernix/meteord:node-12-baseLISHED
docker.io/abernix/meteord:node-12-base-OLT811G5:60241 ESTABLISHED
Preparing for docker build LAPTOP-OLT811G5:64587 ESTABLISHED
Creating Dockerfile64587 LAPTOP-OLT811G5:64586 ESTABLISHED
Finished creating Dockerfile LAPTOP-OLT811G5:65122 ESTABLISHED
Building image.0.1:65122 LAPTOP-OLT811G5:65121 ESTABLISHED
Sending build context to Docker daemon 128.6MB:65151 ESTABLISHED
Step 1/7 : FROM abernix/meteord:node-12-base1G5:65150 ESTABLISHED
# Executing 1 build trigger 40.119.211.203:https ESTABLISHED
---> Using cache0.67:52400 142.250.4.188:5228 ESTABLISHED
---> 65200bf0c802.67:52422 40.119.211.203:https ESTABLISHED
Step 2/7 : RUN mkdir /built_app || true216-3-76:https ESTABLISHED
---> Using cache0.67:52447 syd15s17-in-f3:https ESTABLISHED
---> 641135f006a7.67:52449 syd09s14-in-f14:https ESTABLISHED
Step 3/7 : ARG ROOT_URL="http://185.148.129.235.static.a2webhosting.com"
---> Using cache0.67:52625 151.101.193.69:https ESTABLISHED
---> 51449bdf1771Documents\meteor\apps\audio\.deploy> mup deploy --verbose
Step 4/7 : ARG MONGO_URL="mongodb://mongodb:27017/audio"
---> Using cache
---> 9e90ec530e62Pushing Meteor App
Step 5/7 : ARG MONGO_OPLOG_URL="mongodb://mongodb/local"ver
---> Using cache
---> be34137de50b
Step 6/7 : COPY ./ /built_app
---> Using cache
---> c23d46e03e72
Step 7/7 : RUN cd /built_app/programs/server && npm install --unsafe-perm
---> Using cache
---> fccd4584401f
[Warning] One or more build-args [NODE_VERSION] were not consumed
Successfully built fccd4584401f
Successfully tagged mup-audio:build
real 0m9.804s
user 0m0.769s
sys 0m1.010s
Tagged latest
Deleted Images:
deleted: sha256:e869f38ad6f15504fdacb6c286dd7904521f4bf2eb00f699fdefb4fa4d4857e1
deleted: sha256:538b72c0548dcc8e1def78d335a34e448d611ed55105cfcd132f1dc7bfe12ac7
deleted: sha256:16b87889c911fdaeb4225509b676468f9c7df9208fd3e17c075c08646b840c51
deleted: sha256:f2b507302cb528f88d72a8837d74b1d523f60426b0dda43fcb0369f9bf1eef27
Total reclaimed space: 139.4MB
[185.148.129.235] - Prepare Bundle: SUCCESS
Started TaskList: Configuring App
[185.148.129.235] - Pushing the Startup Script
[185.148.129.235] - Pushing the Startup Script: SUCCESS
[185.148.129.235] - Sending Environment Variables
[185.148.129.235] - Sending Environment Variables: SUCCESS
Started TaskList: Start Meteor
[185.148.129.235] - Start Meteor
using image
removing last
Image mup-audio:latest
Volume
Removing docker containers. Errors about nonexistent endpoints and containers are normal.
audio
Error response from daemon: endpoint audio not found
Error: No such container: audio-frontend
Error response from daemon: endpoint audio-frontend not found
Error: No such container: audio-nginx-letsencrypt
Error response from daemon: endpoint audio-nginx-letsencrypt not found
Error: No such container: audio-nginx-proxy
Error response from daemon: endpoint audio-nginx-proxy not found
Finished removing docker containers
e63e684acf2ba89117a8ee7c4a53c28ca08cd5fdeacc8c7b368689fcd36172b1
docker: Error response from daemon: driver failed programming external connectivity on endpoint audio (6dcafd574d2116c25d289cc71e15c41112b53a049a52c6481ecd20e51ec8414c): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.
[185.148.129.235] x Start Meteor: FAILED
------------------------------------STDERR------------------------------------
Removing docker containers. Errors about nonexistent endpoints and containers are normal.
Error response from daemon: endpoint audio not found
Error: No such container: audio-frontend
Error response from daemon: endpoint audio-frontend not found
Error: No such container: audio-nginx-letsencrypt
Error response from daemon: endpoint audio-nginx-letsencrypt not found
Error: No such container: audio-nginx-proxy
Error response from daemon: endpoint audio-nginx-proxy not found
Finished removing docker containers
docker: Error response from daemon: driver failed programming external connectivity on endpoint audio (6dcafd574d2116c25d289cc71e15c41112b53a049a52c6481ecd20e51ec8414c): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.
------------------------------------STDOUT------------------------------------
using image
removing last
Image mup-audio:latest
Volume
audio
e63e684acf2ba89117a8ee7c4a53c28ca08cd5fdeacc8c7b368689fcd36172b1
------------------------------------------------------------------------------
******************************************************************************
//mup.js
module.exports = {
servers: {
one: {
host: '185.148.129.235',
username: 'root',
password: 'abcdefghij',
opts: {
port: 7822
}
}
},
app: {
name: 'audio',
path: '../',
servers: {
one: {},
},
buildOptions: {
serverOnly: true,
},
env: {
ROOT_URL: 'http://185.148.129.235.static.a2webhosting.com',
MONGO_URL: 'mongodb://mongodb/meteor',
MONGO_OPLOG_URL: 'mongodb://mongodb/local',
},
docker: {
image: 'abernix/meteord:node-12-base',
},
enableUploadProgressBar: true
},
mongo: {
version: '3.4.1',
servers: {
one: {}
}
},
};

Since the Ubuntu VPS had Apache2 server listening on port 80, and mup makes the same port number for the docker-containing-meteor-app to listen on. I needed to stop the Apache2 systemctl stop apache2, then mup deploy worked and now the meteor app is accessable on the browser.
Now I need to find out how to use nginx as a proxy for the meteor app.

Related

How To Deploy a Node.js and MongoDB Application on Linux server

I am developing an app and I want to deploy it on a linux server. I already have copy my local files to the server . I have read this article but not so clear to me https://github.com/keystonejs/keystone/issues/4687.
things i have already done
Remote server has appropriate versions of Node.js & npm installed (ideally the same as what you have been testing with in development)
Check out (or copy) the latest version of your application source to the remote server.
Run npm install (or npm install --production if this will be a production environment) in the top-level of your application source directory.
but when i run npm start on the server it gives me error which is
Mongoose connection "error" event fired with:
{ MongoError: failed to connect to server [localhost:27017] on first connect
my settings
keystone.init({
'name': 'Test',
'brand': 'Test',
'sass': 'public',
'static': 'public',
'favicon': 'public/favicon.ico',
'auto update': true,
'views': 'templates/views',
'view engine': '.html',
'custom engine': cons.nunjucks,
'mongo': 'mongodb://localhost/test',
'auto update': true,
'emails': 'templates/email',
'session': true,
'auth': true,
'user model': 'User',
});
Do i need to configure more settings on mongo on the server?
Mongoose connection "error" event fired with: { MongoError: failed to connect to server [localhost:27017] on first connect
The above error means that your mongodb service was not started.
To enable & start the mongodb service you can run following command:
1. Enable mongodb service
sudo systemctl enable mongod.service
2. Start mongodb service
sudo service mongod start
3. Start your nodejs app
npm start

Run React application in vm azure

I want to run my react application on azure's virtual machine. I started my application in azure's vm but when I go to public url (DNS) of vm it says site can't be reached.
This is what I did to start my project in vm
I ran command ssh a********#52.*..***
After entering vm, I cloned the git project (React nodejs project)
I then install all the packages like npm, node and yarn, important to my project
I then ran gulp command. My project gets compiled successfully
Now, I tried accessing public url (DNS) of my azure's vm
Expected Result: I should be able to see my application page when DNS accessed
Result: Site cannot be reached
This is the serving part of my server file in project
const PORT = (process.env.PORT || 4200);
const runServer = (app)=> {
app.listen(PORT, ()=> {
debug(`Listening on http://localhost:${PORT}`);
if (__DEV__)
debug(`HMR on http://localhost:${config.BS_PORT}`);
});
}
runServer(app);
I started my application in azure's vm but when I go to public url
(DNS) of vm it says site can't be reached.
Can you access this site with localhost? Please test it in your Azure VM, to make sure this service running in the correct port.
We should add port 4200 to Azure NSG (Network security groups) inbound rules.
We can follow this article to add port to NSG inbound rules.
By the way, if you are create a classic VM, we should follow this article to add port 4200 to VM's endpoints.
Also we should check Linux firewall settings, make sure the firewall will not block port 4200.
Finally, we can use telnet to test the network connection.
Update:
We can use netstat -ant | grep 4200 to check the service is running or not.
For example, SSH service listen on port 22:
jason#jasonvm:~$ netstat -ant | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 104 10.0.0.4:22 167.220.255.8:57001 ESTABLISHED
tcp 0 0 10.0.0.4:58122 52.239.153.36:443 TIME_WAIT
tcp 0 0 10.0.0.4:40922 168.63.129.16:80 TIME_WAIT
tcp6 0 0 :::22 :::* LISTEN
Also we can use telnet to test it, we can install telnet on your local PC, and run this command in CMD, like this telnet vmpublicIP 4200.
If your service listen on port 4200 and it run correctly, we can use this command to access it:
curl localhost:4200

Problems with MongoDB trying to deploy a Meteor App

I have been setting up a server on a Digital Ocean droplet in order to host a couple of Meteor apps. I'm doing everything from scratch so I can learn as much as possible. I am trying to use "Meteor-Up" (mup) to deploy an app, but it is having problem communicating with MongoDB. When I run "mup setup" I get the following error:
Started TaskList: Setup (linux)
[Gibson] - Installing Docker
[Gibson] - Installing Docker: SUCCESS
[Gibson] - Setting up Environment
[Gibson] - Setting up Environment: SUCCESS
[Gibson] - Copying MongoDB configuration
[Gibson] - Copying MongoDB configuration: SUCCESS
[Gibson] - Installing MongoDB
[Gibson] x Installing MongoDB: FAILED
-----------------------------------STDERR-----------------------------------
docker: Error response from daemon: driver failed programming external connectivity on endpoint mongodb (1e188b51b171446cd22d96f40ceab1e696019e5ac33ca713d78827246ae37ec8): Error starting userland proxy: listen tcp 127.0.0.1:27017: bind: address already in use.
-----------------------------------STDOUT-----------------------------------
latest: Pulling from library/mongo
Digest: sha256:beff97308c36f7af664a1d04eb6ed09be1d14c17427065b2ec4b0de90967bb3f
Status: Image is up to date for mongo:latest
mongodb
c17e5ac9e9369b779da4aff639c16578dedbc7c357985f67d6e7b005d9cf3939
----------------------------------------------------------------------------
But I can't get from this any indication of what's going wrong. Is the problem with Mongo, Meteor, mup, or docker?
EDIT:
So far I understand from the message that "mup" is trying to connect to Mongo on port 27017 and is failing, I just don't understand why or how to fix it. I have a database that I want the app to connect to, which I moved onto the server from my local machine using mongodump and mongorestore. The thing I can't solve is how to connect my meteor app to that mongo DB.
It does not just try to connect to mongod, but it installs mongod in a container and tries to bind port 27017 to local interface.
If you already have mongodb installed and prefer to use it instead, you need to disable installation of mongodb in mup.js, mup.json, or whatever configuration file is being used in your version of mup.

Can't deploy todos; Failed to remove container (todos-frontend)

First time with linux and meteor up, so sorry if there's a stupid mistake. I try to deploy the meteor example app todos with mupx, and followed the instructions from the readme, but I'm getting the following mistake. (I'm using Ubuntu 14.04 LTS Server ). Thanks for help.
Configuration file : mup.json
Settings file : settings.json
“ Checkout Kadira!
It's the best way to monitor performance of your app.
Visit: https://kadira.io/mup ”
Meteor app path : /home/jan/todos
Using buildOptions : {}
Currently, it is only possible to build iOS apps on an OS X system.
Started TaskList: Deploy app 'todos' (linux)
[h2544161.stratoserver.net] - Uploading bundle
[h2544161.stratoserver.net] - Uploading bundle: SUCCESS
[h2544161.stratoserver.net] - Sending environment variables
[h2544161.stratoserver.net] - Sending environment variables: SUCCESS
[h2544161.stratoserver.net] - Initializing start script
[h2544161.stratoserver.net] - Initializing start script: SUCCESS
[h2544161.stratoserver.net] - Invoking deployment process
Invoking deployment process: FAILED
-----------------------------------STDERR-----------------------------------
Failed to remove container (todos-frontend): Error response from daemon: No such container: todos-frontend
docker: Error response from daemon: failed to create endpoint todos on network bridge: Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.
-----------------------------------STDOUT-----------------------------------
todos
base: Pulling from meteorhacks/meteord
518dc1482465: Already exists
a3ed95caeb02: Already exists
a3ed95caeb02: Already exists
a3ed95caeb02: Already exists
537c534356b6: Already exists
b65a0e1e554b: Already exists
a3ed95caeb02: Already exists
a3ed95caeb02: Already exists
Digest: sha256:b5a4f6efa98e4070792ed36d33b14385a28e6ceda691a492ee5b9f2431b1515a
Status: Image is up to date for meteorhacks/meteord:base
d6d192579495851d5817288ff89abb69512562d7c2a7075f965484e64583c61b
Failed to remove container (todos-frontend): Error response from daemon: No such container: todos-frontend
docker: Error response from daemon: failed to create endpoint todos on network bridge: Bind for 0.0.0.0:80 failed: port is already allocated.
Just had the same issue,
finally deployed after changing file port number to an unused port in my-deployment mup.json somehow docker service could release ports automatically when it wants. I've used 80, 8000, 8001 so far but I haven't successfully deployed to the same port twice, but reading
credit to this
It seems that different deployments may conflict each other pretty easily. I have no resolution for this.

running shadowsocks-nodejs on heroku

What I am trying to accomplish: Get shadowsocks-node.js to run on heroku.
shadowsocks-nodejs is a lightweight tunnel proxy which can help you get through firewalls.
I got it to run locally with both processes on the same machine.
My next step was to deploy it to heroku and run server.js there and local.js locally on my machine. However, I can't seem to get a connection going.
My problem: the connections seem to be refused by the server process.
node local.js outputs:
calculating ciphers
server listening at port 1080
server connected
concurrent connections: 1
remote connection refused
server connected
concurrent connections: 1
remote connection refused
server connected
and so on...
server.js outputs (via heroku logs):
012-10-27T20:39:57+00:00 app[web.1]: server connected
2012-10-27T20:39:57+00:00 app[web.1]: concurrent connections: 1
2012-10-27T20:39:57+00:00 app[web.1]: server disconnected
2012-10-27T20:39:57+00:00 app[web.1]: concurrent connections: 0
2012-10-27T20:42:02+00:00 app[web.1]: server connected
2012-10-27T20:42:02+00:00 app[web.1]: concurrent connections: 1
2012-10-27T20:42:02+00:00 app[web.1]: server disconnected
and so on.
Chrome gives back the error:
Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.
(makes sense)
This is my config.json that is used by shadowsocks:
{
"server":["https://damp-woodland-7539.herokuapp.com"],
"server_port":58954,
"local_port":1080,
"password":"barfoo!",
"timeout":60
}
I edited server.js to read (line 31):
//PORT = config.server_port;
PORT = process.env.PORT || 5000;
as advised for heroku apps.
And this is my package.json file:
{
"name": "shadowsocks-nodejs",
"scripts": {
"start": "server.js"
},
"version": "0.0.1",
"engines": {
"node": "0.8.x"
},
"dependencies": {
"fs": "*",
"net": "*"
}
}
This might be just a simple setup issue or some incorrect addresses. Would be great if someone of you could help me out.
Thanks a lot!
shadowsocks-nodejs is incompatible with Heroku. It's using raw sockets, while Heroku only provide HTTP access.
You can deploy shadowsocks-nodejs on a VPS with all the freedom of using raw sockets, or use shadowsocks-dotcloud if you want a free proxy.
EDIT:
The reason why there is no shadowsocks-heroku is that Heroku does not have websocket support.
Look this:
shadowsocks-heroku is a lightweight tunnel proxy which can help you get through firewalls. It is a port of shadowsocks, but through a different protocol.
shadowsocks-heroku uses WebSockets instead of raw sockets, so it can be deployed on heroku.
Notice that the protocol is INCOMPATIBLE with the origin shadowsocks.
https://github.com/mrluanma/shadowsocks-heroku

Categories

Resources