0%

Deploy Meteor.js Apps on Ubuntu 16.04

Deploy Meteor.js Apps on Ubuntu 16.04

Server Environment

  • Ubuntu 16.04
  • Node.js v4 or higher
  • Apache2.4
    • Passenger
  • MongoDB

Install Passenger

How to Install Passenger

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Install our PGP key and add HTTPS support for APT
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates
# Add our APT repository
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update
# Install Passenger + Apache module
sudo apt-get install -y libapache2-mod-passenger
# Enable
sudo a2enmod passenger
# Restart Apache
sudo apache2ctl restart

Build Project

1
2
3
4
5
6
7
8
# 打包
meteor build --server-only ../new_package && mv ../new_package/*.tar.gz ../new_package/package.tar.gz
# 移至打包檔位置
cd ../new_package
# 上傳至遠端家目錄
scp -P <PORT> package.tar.gz <USER>@<HOST>:

Deploy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 到網頁根目錄
cd <DOCUMENT_ROOT>
# 解壓縮 成 bundle/
tar xzf ~/package.tar.gz
# 改權限
sudo chown -R <USER>:<GROUP> bundle/
# 安裝必要套件
cd bundle/programs/server
npm install --production
# Apache 設定
sudo vim /etc/apache2/sites-available/meteorjs.conf
sudo a2ensite meteorjs.conf
sudo systemctl restart apache2.service

Config file

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# /etc/apache2/sites-available/meteorjs.conf
Listen 8088
<VirtualHost *:8088>
#ServerName <HOST>
#ServerAdmin john@example.com
PassengerAppType node
PassengerStartupFile main.js
SetEnv MONGO_URL mongodb://localhost:27017/meteorjs
SetEnv ROOT_URL http://<HOST>
PassengerAppRoot <DOCUMENT_ROOT>/bundle
DocumentRoot <DOCUMENT_ROOT>/bundle/public
<Directory "<DOCUMENT_ROOT>/bundle/public">
Allow from all
Options -MultiViews
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Done

http://<HOST>:8088

Deploy updates shortcuts

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Local
meteor build --server-only ../new_package && mv ../new_package/*.tar.gz ../new_package/package.tar.gz
cd ../new_package
scp -P <PORT> package.tar.gz <USER>@<HOST>:
# Remote
cd <DOCUMENT_ROOT>
sudo rm -rf bundle/
sudo tar xzf ~/package.tar.gz
sudo chown -R <USER>:www-data bundle/
cd bundle/programs/server
npm install --production
npm prune --production
# do not add slash at the end path
passenger-config restart-app <DOCUMENT_ROOT>/bundle