# 连接远程服务器
ssh root@zhonglim
# 在服务器中全局安装pm2
npm i pm2 -g
# 本地项目文件根目录中添加pm2.yml文件
apps:
- script: ./server/server.js
name: vue-todo
env_production:
NODE_ENV: production
HOST: localhost
PORT: 8888
- script指运行的文件名
- name指定pm2运行后,进程的名字,可以通过pm2 stop name等命令进行操作
- HOST
- localhost或0.0.0.0,如果使用localhost,需要使用nginx进行反向代理才能从外网进行访问,使用0.0.0.0则不用
# 远程服务器中使用pm2运行程序
- 先将本地文件push到github仓库
- git init
- git add --all
- git commit -m "vue learn"
- git remote add origin https://github.com/limsanity/vue-learn.git
- git push -u origin master
- 在远程服务器中clone仓库并安装依赖
- git clone https://github.com/limsanity/vue-learn.git
- npm i
- pm2运行程序
pm2 start pm2.yml --env production
- 关于pm2的一些常用命令
- pm2 stop vue-todo
- pm2 list
- pm2 log
# 通过外网访问
# pm2.yml中HOST为0.0.0.0的一些问题
ufw allow 8888
开启端口访问
# pm2.yml中HOST为localhost的一些问题
# 配置Nginx反向代理
远程服务器安装nginx:
apt-get install nginx
进入配置文件的路径
- cd /etc/nginx/conf.d
创建配置文件
- vim todo.conf
- listen为80是因为通过域名访问都是访问到80端口
- server_name是要访问的目的地
- proxy_pass是服务器将请求转向的目的地,即:127.0.0.1:8888
upstream todo {
server 127.0.0.1:8888;
keepalive 64;
}
server {
listen 80;
server_name 68.183.187.125;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-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; # the same as upstream name
}
location ~\.(txt)$ {
root /var/www/jnode/;
}
}
service nginx reload
重启反向代理服务- 输入命令后报错
See "systemctl status nginx.service" and "journalctl -xe" for details.
- journalctl -xe查看原因,可能是端口80被占用,或者todo.conf配置文件写的有问题,我在配置过程中就在listen后加多了个冒号导致重启失败
- 输入命令后报错
# 配置后依然无法访问
- 一度以为配置出错,可以先在远程服务器中查看
curl {your destination}
正常会返回html内容
- 上文有说,通过域名访问的是80端口,我们需要通过ufw allow 80打开80端口,至此,就可以正常访问
# 补充一些部署过程中出现的问题
# npm run dev报错
部署的过程中出去吃饭,然后使用手机对远程服务器进行了操作,一开始npm run dev想看看无法访问的问题是不是出现在配置上,第一次还没有报错,第二次就在端口上报错了。后来一想,出饭店断了wifi后,手机和服务器的连接也随之断开,但之前npm run dev的进程并没有关闭,于是网上查找了一些ubuntu下查看进程的命令:
- 查看已经连接的服务端口(ESTABLISHED)
- netstat -a
- 查看所有的服务端口(LISTEN,ESTABLISHED)
- netstat -ap
- 查看指定端口,可以结合grep命令:
- netstat -ap | grep 8080
- 若要关闭使用这个端口的程序,使用kill + 对应的pid
- kill -9 PID号