伺服器部署前端&node專案(包括阿里雲伺服器、nginx以及mongoDB 的配置)

majun發表於2019-01-19

建議不熟悉 linux 命令的小夥伴同時開啟我的另一篇部落格linux 常用操作

伺服器購買&配置

  1. 開啟阿里雲,選擇購買雲伺服器 ECS,這裡可以選擇一鍵購買進行快速配置,作業系統選擇 CentOS 7.2 64 位,其他預設或根據實際需求來,若選擇自定義購買請自行搜尋;
  2. 購買成功設定賬號密碼後,就可以通過 ftp 工具(我用的是 FileZilla)或者 git 連線我們的伺服器了,這個時候我們也可以開啟阿里雲的控制檯/雲伺服器 ECS 檢視購買的伺服器;
  3. 開啟阿里雲的控制檯/雲伺服器 ECS/網路和安全/安全組,在安全組列表點選配置規則,點選快速建立規則,就可以暴露埠了。比如暴露 80 埠,選擇 HTTP(80),授權物件填0.0.0.0/0,其他預設就可以了。暴露其他埠你就在自定義埠選擇,比如暴露 7001 埠,你就在自定義埠選擇 TCP,輸入7001/7001即可。
  4. 開啟node 效能平臺,點選建立新應用按照操作提示來就行,成功開啟後在專案配置(具體配置看下文))就可以監控資料了。

連線伺服器

  1. git 連線

    # ssh remote_username@remote_ip 然後輸入密碼即可
    
    如果ssh不存在,執行以下命令即可
    # yum install openssh-client 下載客戶端ssh
  2. ftp 工具連線(這裡以 FileZilla 為例),下載 filezilla 後,點選新建站點,輸入主機 ip,選擇 sftp 協議,選擇登入型別為正常,輸入賬號密碼即可

部署 node 環境

  1. 部署 node 環境

    # ssh remote_username@remote_ip 連線伺服器
    # wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz 下載node壓縮檔案
    # tar xvf node-v6.9.5-linux-x64.tar.xz 解壓
    # ln -s /root/node-v6.9.5-linux-x64/bin/node /usr/local/bin/node 建立軟連線
    # ln -s /root/node-v6.9.5-linux-x64/bin/npm /usr/local/bin/npm 建立軟連線
    # node -v 檢視node版本
    # npm -v 檢視npm版本
  2. 其他

    # yum install vim 下載vim

nginx 安裝&配置

  1. nginx 安裝

    # yum install epel-release 下載epel-release
    # yun install nginx 下載nginx
    # cd /etc/nginx
    # vim nginx.conf 用vim開啟nginx.conf
  2. 修改 nginx.conf

    • 修改 user 為 root
    • 修改 server 如下,這裡 admin 是指向管理後臺專案,app 是指向移動端專案,wx 是指向代理另一個 node 微信公眾號專案(執行在 7002 埠,但微信公眾號配置 http 只允許 80 埠,所以設定代理,我們的 elm 介面執行在 7001 不用代理)
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /root/www/;
    
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
    
        location /admin/ {
        # 為空即可,前端打包檔案放在/root/www/admin裡面就可訪問到,注意預設是index.html
        }
    
        location /app/ {
    
        }
    
        location /wx/ {
            proxy_pass   http://127.0.0.1:7002/;
        }
    
        error_page 404 /404.html;
            location = /40x.html {
        }
    
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
  3. 啟動 nginx

    nginx -t 測試nginx語法是否有誤
    nginx 啟動nginx
    nginx -s reload 重啟nginx,修改nginx.conf後記得重啟
  4. 其他命令

    ps -ef | grep nginx 顯示nginx程式
    nginx -s stop 停止nginx
    nginx -v 檢視nginx版本

部署 mongodb

  1. 安裝 mongodb

    # ssh remote_username@remote_ip 連線伺服器
    # curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 下載
    # tar -zxvf mongodb-linux-x86_64-3.0.6.tgz 解壓
    # mkdir data 建立資料庫資料夾
    # touch mongodb.log 建立日誌檔案
    # cd /usr/local/mongodb/bin
    # ./mongod -dbpath=/usr/local/mongodb/data -logpath=/usr/local/mongodb/mongodb.log -logappend -port=27017 -fork 注意fork是後臺啟動,避免又要再開視窗重新連線伺服器再能進行其他操作
    # ./mongo 連線mongodb
  2. 配置隨 linux 啟動
    在/etc/rc.local 新增如下即可:

    # rm /usr/local/mongodb/data/mongod.lock 停止可能在執行的mongo
    # /.../bin/mongod -dbpath /usr/local/mongodb/data -logpath /usr/local/mongodb/mongodb.log -logappend -fork -port 27017
  3. 設定許可權

    # cd /usr/local/mongodb/bin
    # ./mongod -dbpath=/usr/local/mongodb/data -logpath=/usr/local/mongodb/mongodb.log -logappend -port=27017 -fork
    # ./mongo
    > use admin
    > db.createUser(
    >  {
    >    user: "root",
    >    pwd: "123456",
    >    roles: [ { role: "root", db: "admin" } ]
    > }
    > )
    > db.shutdownServer();
    # ./mongod -dbpath=/usr/local/mongodb/data -logpath=/usr/local/mongodb/mongodb.log -logappend -port=27017 -fork --auth
    # db.auth("root","123456")
  4. 專案中連線 mongodb(這裡以 koa 框架 egg 專案為例,其他 node 請自行查詢)

    # cnpm i egg-mongoose -S
    
    // config/plugin.js
    exports.mongoose = {
      enable: true,
      package: `egg-mongoose`,
    }
    
    // config/config.default.js
    config.mongoose = {
        url: `mongodb://127.0.0.1/eggadmin`,
        options: {
            // 如果設定了密碼
            // auth: { "authSource": "admin" },
            // user: "root",
            // pass: "123456",
        }
    }

部署 node 專案

部署環境 阿里雲 CentOS 7.2 64 位

  1. 本地專案根目錄(刪除 node_modules,建議依賴在伺服器下載)

    # tar -zcvf ../file_name.tgz . 打包
    # scp ../file_name.tgz remote_username@remote_ip:/root/www/server 上傳到伺服器
  2. 伺服器

    # ssh remote_username@remote_ip 連線伺服器
    # cd /root/www
    # mkdir server 這裡建立server資料夾放node專案程式碼
    # cd server
    # tar -zxvf file_name.tgz . 解壓
    # cnpm install --production 安裝生產環境依賴
    

# cnpm i -g pm2 下載pm2
# pm2 start bin/www 守護程式啟動
# pm2 restart app_name|app_id 重啟
# pm2 stop app_name|app_id 停止
# pm2 list 檢視程式狀態
# pm2 stop all 停止所有應用
# pm2 start ./bin/www –watch 監聽更改自動重啟

  1. egg專案

# npm start 執行
# npm stop 停止


3. 阿里 node 效能平臺監控

1. koa 專案(express 專案類似)

# wget -O- https://raw.githubusercontent… | bash 安裝版本管理工具 tnvm
# source ~/.bashrc
# tnvm ls-remote alinode 檢視需要的版本
# tnvm install alinode-v3.11.4 安裝需要的版本
# tnvm use alinode-v3.11. 使用需要的版本


新建 config.json 檔案如下,從[node 效能平臺](https://node.console.aliyun.com/#!/owned)獲取對應的接入引數

{

"appid": "<YOUR APPID>",
"secret": "<YOUR SECRET>"
}

# cnpm install @alicloud/agenthub -g 安裝 agenthub
# agenthub start config.json 啟動agenthub
# agenthub list 檢視 agenthub 列表
# ENABLE_NODE_LOG=YES pm2 start bin/www 使用pm2管理的應用


2. egg 專案

# cnpm i nodeinstall -g
# nodeinstall –install-alinode ^3
# cnpm i egg-alinode –save
# npm start

// config/plugin.js
exports.alinode = {

 enable: true,
 package: `egg-alinode`,

};

// config/config.default.js
config.alinode = {

 appid: `<YOUR_APPID>`,
 secret: `<YOUR_SECRET>`,

};


## 部署前端專案(這裡以 vue 為例)

在專案根目錄`npm run build`,然後把 dist 資料夾裡的內容傳到伺服器,這裡我們把兩個專案分部傳到/root/www/app 和/root/www/admin,記得提前建立 app 和 admin 資料夾

## 專案實戰

[全棧專案-基於 koa 框架 egg 的服務端介面](https://github.com/majun00/egg-api) 求一個 star~

> 本人水平有限,歡迎大家交流指正。本文為作者原創,轉載請註明出處。

相關文章