(1)安裝nodejavascript
wget http://nodejs.org/dist/v9.9.0/node-v9.9.0-linux-x64.tar.gz #下載 tar xvzf node-v9.9.0-linux-x64.tar.gz #解壓 cd node-v9.9.0-linux-x64 #進入解壓文件目錄
(2)安裝必要的文件html
sudo yum install gcc gcc-c++
(3)配置node、npm軟鏈接vue
ln -s /root/node-v9.9.0-linux-x64/bin/node /usr/local/bin/node ln -s /root/node-v9.9.0-linux-x64/bin/npm /usr/local/bin/npm
(4)安裝查看java
node -v #查看版本
(1)pm2的安裝node
npm i pm2 -g
(2)配置pm2的軟連接linux
ln -s /root/node-v9.9.0-linux-x64/bin/pm2 /usr/local/bin/pm2
(1)nginx的安裝nginx
yum install nginx
git clone git@xxxxxxx/xxxxx.git #或者直接上傳項目文件夾
cd xxx #進入項目目錄 npm i #安裝npm包 npm run build #打包項目,命令根據本身設定的
(1)pm2啓動文件配置(可在項目文件夾根目錄下)c++
方式1:yml配置git
apps: - script: /root/projects/VUE-SSR-TECH/server/server.js name: vue-todo env_production: NODE_ENV: production HOST: localhost PORT: 8888
ym2.ymlnpm
方式2:json配置
{ "apps": { "name": "todo", "cwd": "/root/projects/VUE-SSR-TECH", "script": "/root/projects/VUE-SSR-TECH/server/server.js", "exec_interpreter": "bash", "min_uptime": "60s", "max_restarts": 30, "exec_mode" : "cluster_mode", "error_file" : "./test-err.log", "out_file": "./test-out.log", "pid_file": "./test.pid", "watch": true, "env": { "NODE_ENV": "production", "HOST": "127.0.0.1", "PORT": "8888" } } }
app.json
(2)nginx配置(可在項目文件夾根目錄下)
upstream todo { server 127.0.0.1:8888; #這裏要和啓動項目的PORT端口一致 keepalive 64; } server { listen 80; server_name www.helpping.top; #填寫必須是已備案的域名,否則解析會出錯。沒有域名可填寫服務器ip root /root/projects/VUE-SSR-TECH; #項目favicon.ico所在文件夾 location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwardered-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_set_header Connection ''; proxy_pass http://todo; #這裏要和最上面upstream後的應用名一致,能夠自定義 } location ~ \.(txt)$ { root /var/www/jnode/; } }
todo.conf
說明:在centos裏nginx有默認啓動配置在etc/nginx/nginx.conf文件中
通常不修改這個文件,但有時由於權限須要,能夠修改第5行的用戶
修改用戶爲nginx用戶
# 啓動nginx sudo ln -s /root/projects/VUE-SSR-TECH/todo.conf /etc/nginx/conf.d/ #nginx啓動文件的軟連接 service nginx start #啓動nginx服務 cd xxx #進入項目根目錄 # 啓動pm2(選擇其中一條命令) pm2 start pm2.yml #啓動,啓動端口爲項目默認端口 pm2 start app.json #啓動,啓動端口爲項目默認端口 pm2 start pm2.yml --env production # 啓動,啓動端口爲pm2.yml中env_production下指定端口 pm2 start app.json --env production # 啓動,啓動端口爲app.json中env_production下指定端口
此時輸入瀏覽器中輸入域名(本案例爲: www.helpping.top),便可看到頁面
關鍵
不少次設置域名後,啓動不是跳nginx默認頁面就是502,實質上都是nginx啓動成功後找不到pm2頁面的啓動端口所致。不少時候咱們查看pm2 list發現項目啓動運行了,ps -ef | grep nginx發現nginx也啓動了,但就是找不到網關,很大緣由就是這個端口設置和啓動方式不匹配的緣由(花了好久才發現問題所在TVT)
jtodo.conf中的upstream todo {server 127.0.0.1:8888}端口設置和啓動命令選擇的端口要一致。
我這裏設置的todo.conf和ym2.yml(或者app.json)設置都是8888的端口,因此啓動的時候命令要使用yml/json中新設置的
pm2 start pm2.yml --env production # 啓動,啓動端口爲pm2.yml中env_production下指定端口 pm2 start app.json --env production # 啓動,啓動端口爲app.json中env_production下指定端口
這樣才能找到
若是不想帶env的參數,就要在項目的server.js文件中查找啓動端口
我這裏很明顯是端口號是3333
upstream todo { server 127.0.0.1:3333; #這裏要和啓動項目的PORT端口一致 keepalive 64; }
那麼,設置todo.conf的端口就要爲3333
啓動命令能夠簡化(2選1)
pm2 start pm2.yml #啓動,啓動端口爲項目默認端口 pm2 start app.json #啓動,啓動端口爲項目默認端口
1.pm2更新啓動
pm2 -i /root/projects/VUE-SSR-TECH/pm2.yml & #添加pm2軟連接 pm2 start pm2.yml #啓動pm2
2.conf更新啓動
rm /etc/nginx/conf.d/todo.conf -rf #強制刪除以前已存在的nginx啓動軟連接文件 sudo ln -s /root/projects/VUE-SSR-TECH/todo.conf /etc/nginx/conf.d/ #從新添加nginx啓動軟連接 lsof -i tcp:80 #查看服務器域名(端口默認80)所在進程 kill 12344 #殺死nginx的進程 sudo /usr/sbin/nginx #啓動nginx(service nginx start)
server { listen 80; server_name a.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:8082; } } server { listen 80; server_name b.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:8083; }
conf文件配置
參考文檔
1.在CentOS 7上安裝Node.js的4種方法(包含npm):http://www.javashuo.com/article/p-omzdorsl-ma.html
2.nginx學習-超詳細nginx配置文件:https://www.cnblogs.com/2nao/p/8031866.html
3.Nginx配置文件nginx.conf詳解:http://www.javashuo.com/article/p-dbvjthmd-bb.html
4.nginx部署多個node站點:https://blog.csdn.net/ziwoods/article/details/77164927