-
Notifications
You must be signed in to change notification settings - Fork 0
VM Node 01
IPv4: 5.196.206.61
Virtual MAC: 02:00:00:b3:ce:47
OS: Ubuntu 14.04
Installed from VM-template
Managed via PVE interface:
- Global configuration:
- Input policy: Drop
- Output policy: Accept
- Proxmox server specific configuration
- Input Accept SSH macro
- Input Accept HTTP macro
- Input Accept HTTPS macro
Configure network interface
$ vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 5.196.206.61
netmask 255.255.255.255
broadcast 5.196.206.61
post-up route add 37.59.46.254 dev eth0
post-up route add default gw 37.59.46.254
pre-down route del 37.59.46.254 dev eth0
pre-down route del default gw 37.59.46.254
dns-nameservers 8.8.8.8 8.8.4.4
Change hostname
$ echo "node01" | sudo tee /etc/hostname
$ sudo vi /etc/hosts
127.0.0.1 localhost
127.0.1.1 node01.donut.me node01
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Install and configure stunnel to secure MongoDB connexion
$ sudo apt-get install stunnel4
$ sudo vi /etc/stunnel/stunnel.conf
client = yes
[mongodb]
accept = 27017
connect = 5.196.206.60:27018
$ sudo vi /etc/default/stunnel4
ENABLED=1
$ sudo service stunnel4 start
Install and configure Exim4
$ sudo apt-get install exim4 $ sudo dpkg-reconfigure exim4-config
- System mail name: node01.donut.me
- IP-addresses to listen on for incoming SMTP connections: 127.0.0.1 ; ::1
- Other destinations for which mail is accepted:
- Domains to relay mail for:
- Machines to relay mail for:
- Keep number of DNS-queries minimal (Dial-on-Demand)? No
- Delivery method for local mail: mbox format in /var/mail/
- Split configuration into small files? No
Add a forward rule 80 => 3000 (http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2) :
$ sudo apt-get install iptables-persistent
$ sudo vim /etc/sysctl.conf
uncomment net.ipv4.ip_forward=1
$ sudo sysctl -p /etc/sysctl.conf
$ cat /proc/sys/net/ipv4/ip_forward
return a 1 now
$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
$ sudo iptables-save | sudo tee /etc/iptables/rules.v4After nginx addition, the redirection is no longer required. Removed with:
$ sudo iptables -L -t nat --line-numbers
$ sudo iptables -t nat -D PREROUTING 1
$ sudo iptables -L -t nat --line-numbers
$ sudo iptables-save | sudo tee /etc/iptables/rules.v4
$ sudo apt-get install nginx
$ sudo vi /etc/nginx/sites-available/web.conf
server {
listen 80;
server_name test.donut.me;
location / {
proxy_pass http://donut.me:3000;
}
}
$ sudo vi /etc/nginx/sites-available/ws.conf
upstream io_nodes {
ip_hash;
server ws.donut.me:3050;
server ws.donut.me:3051;
}
server {
listen 80;
server_name ws.donut.me;
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_pass http://io_nodes;
}
}
$ cd /etc/nginx/sites-enabled
$ sudo rm default
$ sudo ln -s /etc/nginx/sites-available/web.conf web
$ sudo ln -s /etc/nginx/sites-available/ws.conf ws
$ sudo nginx -s reload
Source: https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-an-ubuntu-14-04-server Install node.js from ppa:chris-lea/node.js:
$ sudo apt-get install software-properties-common # for having add-apt-repository
$ sudo add-apt-repository ppa:chris-lea/node.js
$ sudo apt-get update
$ sudo apt-get install nodejs
Install GIT (required) and "donut" user to run process
$ sudo apt-get install git
$ sudo useradd -s /bin/bash -m -d /home/donut -c "safe user for node process" donut
$ sudo usermod -aG sudo donut
As "donut" user install PM2 and node-gyp
$ sudo su - donut
$ sudo npm install pm2 -g
Install node-gyp to
$ sudo apt-get install gcc make build-essential
$ sudo npm install node-gyp -g
Update system startup script for automatically launch PM2 as user "donut" at boot
$ sudo pm2 startup ubuntu -u donut
Add additional project global packages:
$ sudo apt-get install g++ $ sudo npm install bower $ sudo npm install grunt-cli $ sudo npm install pomelo $ sudo npm install pomelo-cli
Fix npm permission bug after a "npm install -g":
$ sudo chown -R donut:donut /home/donut/.pm2
$ sudo chown -R donut:donut /home/donut/.npm
Get Donut from git and initialize npm environnement
$ sudo su - donut
$ mkdir /home/donut/app
$ cd /home/donut/app
$ git clone git@github.com:dbrugne/donut.git ./
$ cd server
$ npm update
Source: https://github.com/unitech/pm2#a1
All command must be run as "donut" user
$ sudo su - donut
Define and create pm2 process:
$ vi /home/donut/web.json
{
"name" : "web",
"script" : "./app.js",
"cwd" : "/home/donut/app/web-server",
"exec_mode" : "fork_mode",
"env": {
"NODE_ENV": "production",
"DEBUG": "donut:*",
}
}$ vi /home/donut/ws.json
{
"name" : "ws",
"script" : "./app.js",
"cwd" : "/home/donut/app/game-server",
"exec_mode" : "fork_mode",
"env": {
"NODE_ENV": "production",
"DEBUG": "donut:*",
}
}$ pm2 start /home/donut/web.json
$ pm2 start /home/donut/ws.json
Save current process list for automatic relaunch at boot
$ pm2 save
Then to suspend process
$ pm2 stop web
$ pm2 stop ws
To relaunch
$ pm2 restart web
$ pm2 restart ws
To get info on process
$ pm2 info web
$ pm2 info ws
To monitor process
$ pm2 monit web
$ pm2 monit ws