(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