nodejs服務器部署教程三,部署基於node+vue+mongodb的項目

nodejs服務器部署教程一
nodejs服務器部署教程二,把vue項目部署到線上
本文以我我的的開源項目vueblog做爲演示,讓你把本身的項目能在服務器上跑起來html

安裝mongodb數據庫

如何在ubuntu上安裝mongodb數據庫,其實官方文檔寫的很清楚啦前端

  1. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6切記按找ubuntu版本號安裝,個人是16.04
  2. echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
  3. sudo apt-get update
  4. sudo apt-get install -y mongodb-org
  5. sudo service mongod start

完成以上操做輸入mongo 看到以下信息表示:

第一個: WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
意思是:強烈建議使用帶WiredTiger存儲引擎的XFS文件系統,這個不用管它vue

第二個: WARNING: Access control is not enabled for the database
意思是:未對數據庫啓用訪問控制,對數據和配置的讀寫訪問不受限制(危險的warning),這個也不用管它node

第三個:WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'
解決方法:
sudo chmod 777 /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/enablednginx

第四個:WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'
解決方法:
sudo chmod 777 /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/defrag
重啓:sudo service mongod restart
完成以上操做你就成功在你的遠程服務器上安裝mongodb了git

初始數據的備份和導入

不少時候咱們項目要上線,須要把本地的初始化數據導入到線上github

  1. 首先在本地開啓你的mongodb,並把數據備份到本地

好比說我要備份vueblog數據庫到c:vueblog-backup文件夾:
mongodump -h 127.0.0.1:27017 -d vueblog -o C:\vueblog-backup
備份出來的數據長這樣
mongodb

  1. 經過ftp工具把數據上傳到遠程服務器,例如我上傳到了home/wmui文件夾下
  2. 接着在服務器導入數據到vueblog數據庫

mongorestore -h 127.0.0.1:27017 -d vueblog ./vueblog-backup/vueblog
切記路徑不要搞錯了
查看是否導入成功:
mongo
use vueblog
數據庫

項目部署

這裏以我寫的開源項目vueblog做爲演示,此項目基於vue+node+mongodb開發npm

  1. 把服務器的/home/wmui/.ssh/下的id_res.pub添加到github的ssh公鑰,wmui是你本身建立的用戶
  2. 在項目根目錄下建立ecosystem.json,pm2的發佈腳本
{
  "apps": [{
    "name": "vueblog",
    "script": "./server.js",
    "env":
    {
      "COMMON_VARIABLE": "true"
    },
    "env_production":
    {
      "NODE_ENV": "production"
    }
  }]
}

把改動commit到github

  1. 設置文件夾的可讀寫權限

sudo chmod 777 /www
我默認是把項目clone到/www文件夾下

  1. 找到/home/wmui/下.bashrc:

註釋掉

# case $- in
#    *i*) ;;
#      *) return;;
#esac
  1. cd 到www目錄下,clone項目到你的服務端
  2. 因爲本地測試網址用的localhost,而線上確定是你本身的域名,因此要解析域名和修改網址

添加nginx配置文件

upstream vueblog {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name vueblog.86886.wang;

    location / {
        proxy_set_header Host  $http_host;
        proxy_set_header X-Real-IP  $remote_addr;  
        proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header X-Nginx-proxy true;
        proxy_pass http://vueblog;
        proxy_redirect off;
    }
}

命名爲vueblog-8080.conf,保存到/etc/nginx/conf.d文件夾下
執行 sudo nginx -s reload 重啓服務器

修改成線上地址

server.js:

const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', { url: 'http://localhost:8080' })
const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', { url: 'http://vueblog.86886.wang' })

app.js:

const baseURL = 'http://localhost:8080/api'
const baseURL = 'http://vueblog.86886.wang/api'

啓動項目

完成以上操做,就能夠準備啓動項目了
首先npm install安裝依賴包
而後pm2執行:
pm2 start ecosystem.json --env production

結語

因爲我主要是作前端的,對於服務器運維方面知識瞭解也很少,因此關於安全項的設置就沒有考慮,不過若是僅僅想讓本身的項目在服務器上跑起來,以上應該足夠啦

相關文章
相關標籤/搜索