前言#
最近写了一个 Nuxt 项目,打算部署到服务器中。因为很久没有部署过新项目,一些部署的流程都已经忘记了,所以打算写一篇 Node.js 项目的部署文章。
写这篇文章,第一可以加深理解,第二也可以方便以后查看。
准备#
平台#
- CentOS7:阿里云服务器系统
- Node.js:项目运行环境
- Window10 本地开发系统
工具#
- PM2:项目运行工具
- Nginx:反向代理服务器
- Git:项目版本控制工具
- XShell5:远程连接服务器工具
- WinSCP:远程给服务器传送文件工具
- Mongodb:非关系型数据库
- NoSQL Manager for MongoDB:MongoDB 视图化工具
连接远程服务器#
打开浏览器,进入阿里云网站,进入“云服务 ECS”,点击实例,进入实例详情,然后点击“远程连接”,就可以连接到远程服务器。
但是这个远程连接的界面实在是太难看了,而且操作也不方便,建议使用远程连接工具“XShell5”来进行远程操作服务器,简单好用。
“XShell5”可以修改成自己喜欢的字体、背景和颜色,复制粘贴内容也很方便。而且家庭和学校版本是完全免费的,功能也够用了。
搭建环境#
建议使用系统自带的 yum 来安装相应的工具,更加简单。(有的工具可能需要更新 Repo,请自行 Google 解决)
sudo yum install nodejs -y
sudo yum install nginx -y
sudo yum install git -y
sudo yum install mongodb-org -y
sudo yum install yarn -y这里也可以使用 nvm 来安装 Node.js,可以更好的管理版本。
下载项目#
git clone XXX安装依赖和打包项目#
# 进入项目文件夹
cd <folder name>
# 安装依赖
yarn
# or npm install
# 前端代码打包
yarn build
# or npm run build如果安装或者打包过程中,出现了问题后,导致失败,可以通过 Google 来解决。
如果你的服务器配置不高的话,在服务器中编译打包可能会失败。这里建议在本地把文件打包好,然后再上传到服务器中,这里通过一个工具“WinSCP”上传文件到服务器中。
配置数据库数据#
在本地开发完成项目之后,在本地的数据库中已经生成好数据了,但是服务器上的数据库上并没有数据,这时需要把本地的数据库中的数据上传到服务器数据库中去,这里我们使用了一个 MongoDB 的可视化工具“NoSQL Manager for MongoDB”来上传数据。
简单说下配置步骤:
首先必须要连接到服务器数据库,如果服务器数据库有设立密码(为了安全),还需要输入账号和密码才能连接,
然后在服务器数据库中新建一个数据库,然后选中本地的数据库里面的集合,把它们拷贝到服务器的数据库中,
最后,如果服务器数据库有密码的话,还需要在代码添加账号和密码,这样才能连接到数据库。
编写 Nginx 配置#
在 Nginx 配置目录里新建一个.conf文件,来定制每个项目的配置
vim /etc/nginx/conf.d/nuxt-trailer.confnuxt-trailer.conf内容如下:
upstream nuxt-trailer {
server 127.0.0.1:9097;
keepalive 64;
}
server {
listen 80;
server_name nuxt-trailer.haledeng.com;
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://nuxt-trailer;
}
}
upstream后面是代理项目的名称,里面的server是本地(服务器)运行的 ip 地址和端口,server监听 80 端口,server_name是二级域名,需要提前在阿里云服务器中配置好二级域名,location下面的proxy_pass是代理的项目名称,按照上面的格式书写,并且需要和upstream后面的名字一致。
编写完成后,保存,并且重启nginx服务
systemctl restart nginx如果部署不止一个项目,只要再新建一个.conf文件,然后按照上面的配置修改一下就好了,再重启下 Nginx 服务即可。
阿里云配置二级域名#
登录阿里云网站,进入控制台,进入云解析 DNS,点击你的主域名,进入解析设置,点击添加记录,添加二级域名。
在主机记录填写:nuxt-trailer,这时你的二级域名就是:nuxt-trailer.xxx.xxx了,
在记录值填写你的服务器的外部 ip 地址,其他的默认即可,然后点击确定,10 分钟之后二级域名就会解析成功。
配置 PM2#
先安装 PM2,通过 Node.js 来安装
yarn global add pm2
# or npm install -g pm2编写配置文件
# 创建配置文件
touch pm2.yml
# 编写配置文件
vim pm2.ymlpm2.yml内容如下:
apps:
- script: ./server/index.js
name: nuxt-trailer
env_production:
NODE_ENV: production
HOST: "127.0.0.1"
PORT: 9097其中,script是文件的路径,name是项目名称,env_production是环境配置。
之后就是启动项目, 输入下面命令启动项目
pm2 start pm2.yml --env production启动成功后,输入下面命令可以查看启动的项目
pm2 list输入下面命令查看具体某个项目信息
pm2 show <id|name>一些常用的 PM2 命令
# 停止某个项目
pm2 stop <id|name>
# 停止和删除某个项目
pm2 delete <id|name>
# 重启某个项目
pm2 restart <id|name>
# 停止所有的项目
pm2 kill
# 查看某个项目的日志
pm2 log <id|name>总结#
使用 PM2 来部署 Node.js 项目非常方便,有兴趣的同学可以学习下。