NodeJS項目遷移兼Ubuntu下NodeJS環境部署

前言

以前作的幾個項目都託管在阿里雲服務器,可是最近要到期了。想着到底要不要續期,畢竟100/月。後面看着阿里雲有個活動,800/三年。果斷買下。環境部署折騰了一天,其中也遇到幾個坑。html

目錄

1、安裝環境
  1.1 安裝NodeJS環境
  1.2 安裝版本控制軟件Git
  1.3 安裝MongoDB數據庫
  1.4 安裝Nginx

2、導入數據

3、安裝項目

4、部署項目
  4.1 Nginx配置
  4.2 啓用HTTPS
  4.3 使用PM2部署項目
  4.4 開啓阿里雲外網訪問

5、踩坑記錄
  5.1 數據庫導入失敗
  5.2 PM2部署失敗

1、安裝環境

爲了保證項目運行不出問題,在新服務器安裝和原服務器一致的環境。項目遷移歷時一天,兩臺服務器的系統都是Ubuntu 16.04 64位。node

1.1 安裝NodeJS環境

自帶的NodeJS版本是4.2.6,版本有點低,使用npm的n模塊更新到最新版。python

安裝NPMnginx

sudo apt-get install npm

使用淘寶源git

阿里雲訪問npm的速度很是慢,這裏經過設置,讓NPM從淘寶鏡像更新模塊github

npm set registry https://registry.npm.taobao.org  // 設置從淘寶鏡像更新
npm set disturl https://npm.taobao.org/dist
npm cache clean  // 清除緩存

更新NodeJSmongodb

npm install n  // 更新NodeJS的模塊
n stable  // 更新到最新穩定版
node -v  // v8.2.1

1.2 安裝版本控制軟件Git

sudo apt-get install git

1.3 安裝MongoDB數據庫

sudo apt-get install mongodb  // 安裝MongoDB
service mongodb start  // 啓動服務
mongod  // 進入交互式控制檯,能加入說明啓動成功,ctrl+c退出

1.4 安裝Nginx

sudo apt-get install nginx  // 安裝Nginx

2、導入數據

把之前的數據庫完整的遷移過來數據庫

從源服務器導出數據庫npm

mongodump -h localhost --port 27017 -d test -o database_dump

導入MongoDB數據庫ubuntu

mongorestore -d test database_dump/test

3、安裝項目

項目是在Github開源,直接拉取就行。

git clone https://github.com/bergwhite/nchat.git  // 克隆項目
cd nchat  // 進入目錄
npm install 安裝模塊
npm run build

4、部署項目

4.1 Nginx配置

vim /etc/nginx/nginx.conf  // 編輯Nginx的配置

http {

        server {

            listen 80;
            server_name hostName;
            rewrite ^(.*) https://$server_name$1 permanent;
        }

        server {

            listen    443 ssl;
            server_name hostName;
            ssl on;
            # SSL證書會插入到這裏

            # 完整根目錄
            location / {

                root   /*/*/*;
                index  index.html;

            }

            # 反向代理V2EX API到本地,解決跨域問題
            location /api/ {

                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass https://www.v2ex.com/api/;

            }

        }
...

4.2 啓用HTTPS

sudo apt-get update  // 更新軟件源
sudo apt-get install software-properties-common  // 安裝
sudo add-apt-repository ppa:certbot/certbot  // 添加倉庫
sudo apt-get update  // 更新軟件源
sudo apt-get install python-certbot-nginx // 安裝

sudo certbot --nginx  // 生成證書(自動添加到Nginx)
sudo certbot --nginx certonly  // 生成證書(手動添加到Nginx)

4.3 使用PM2部署項目

sudo apt-get install pm2  // 安裝pm2

4.4 開啓阿里雲外網訪問

在安全組裏添加須要放行的NodeJS項目端口便可。

5、踩坑記錄

5.1 數據庫導入失敗

導入數據庫的時候,有一個Collection沒有導入成功

Assertion failure amt == (size_t)( size - 4 ) src/mongo/tools/tool.cpp 330

解決方案

把報錯的Collection單獨導出,而後從新導入到新服務器的數據庫

5.2 PM2部署失敗

運行下面的代碼會失敗

pm2 start -i 0 --name test ./bin/www

解決方案

使用fork模式啓動

pm2 start --name nchat3 ./bin/www

參考鏈接

相關文章
相關標籤/搜索