本文会介绍一个在一个干净的云服务上部署项目的过程。关于如何购买云服务不会做过多赘述,网上有很多教程。
一、内容大纲
- 登录服务器
- 下载安装 git,下载我们要部署的项目
- 下载安装 node.js
- 下载安装配置 nginx
- 项目运行
- 使用 pm2 管理进程
二、登录服务器
首先,我们进入控制台,看看已经创建好的实例。这里有实例的详细信息包括服务器相关参数、实例 ID、公网 IP 等。如果我们实例刚创建完还没有设置密码,我们可以点击重置密码去设置一个登录密码。
接下来,我们在自己的电脑上通过 SSH 进行登录。
// 连接云服务器 然后输入我们之前设置密码进行登录
ssh root@120.24.206.53
三、下载安装 git,下载我们要部署的项目
安装 git
// 在Linux上使用yum安装Git
yum -y install git
查看 git 版本
git --version
下载代码
// 把我们的代码 clone 到服务器
git clone https://github.com/BODhaha/zhihu.git
四、下载安装 node.js
到 官网 找到我们要安装的 node 版本,右键复制下载地址。
下载node 包
// 下载node 包
wget https://nodejs.org/dist/v16.13.2/node-v16.13.2-linux-x64.tar.xz
解压文件
// 解压文件
tar xvf node-v16.13.2-linux-x64.tar.xz
解压结果
配置环境变量 vim .bashrc
记得 source .barshrc
一下,让我们的配置生效。
然后我们可以查看下 node 和 npm 版本看下是否配置成功。
五、下载安装配置 nginx
nginx 常用命令
// 启动 nginx
nginx
// 重启 nginx
nginx -s reload
// 快速停止
nginx -s stop
// 正常停止
nginx -s quit
- 因为Nginx依赖于gcc的编译环境,所以,需要安装编译环境来使Nginx能够编译起来。
// 因为Nginx依赖于gcc的编译环境,所以,需要安装编译环境来使Nginx能够编译起来。
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2. 安装 nginx
我们先去官网找到现安装的版本nginx.org/en/download…
下载 nginx
// 下载 nginx
wget -c http://nginx.org/download/nginx-1.20.2.tar.gz
解压下载包
// 解压
tar -zxvf nginx-1.20.2.tar.gz
进入 nginx-1.20.2 目录
// 进入 nginx
cd nginx-1.20.2
我们可以查看下 nginx 目录看一看
配置 nginx 安装路径,我们制定到 /usr/local/nginx
这个目录下。
./configure --prefix=/usr/local/nginx
编译 make
安装 make install
- 配置环境变量
// 我们 source .bashrc 一下,配置的环境变量就生效了
source .bashrc
- 编辑 nginx 配置文件,添加端口转发
修改完配置文件,我们可以 nginx -t
看下有没有啥语法错误,然后启动 nginx 配置生效。
如果启动 nginx 报 80 端口被占用错误,我们可以通过过 netstat -ntlp
查看下进程,找到对应占用 80 端口的进程,并杀掉这个进程 kill pid
。
如果我们配置好了 nginx,并且启动了,也检查了防火墙端口,发下仍然无法访问。那么我们要去阿里云控制台添加下安全组。
六、运行项目
我们进入之前下载好的项目,执行 npm i
安装依赖,然后 npm run dev
运行一下,在通过我们之前配置在 nginx 里的 80 端口转发,去访问我们的项目。可以看到是访问正常。
七、使用 PM2 管理进程
因为我们关闭命令行工具,就无法访问我们的项目了,可以通过 pm2 来使我们的应用保持在后台。
安装 pm2
// 全局安装 pm2
npm i pm2 -g
pm2 常用命令
// 启动 pm2:pm2 start 运行脚本
pm2 start app/index.js
查看 pm2 管理的进程
// 查看 pm2 管理的进程
pm2 ls
// 关闭指定进程: pm2 stop 进程名称
pm2 stop index
// 关闭所有进程
pm2 stop all
重启进程
// 重新启动
pm2 restart index
// 不间断重启
pm2 reload index
设置环境变量
// 设置环境变量
NODE_ENV=production pm2 start index
// 更新环境变量
NODE_ENV=production pm2 start index --update-env
// 使 log 带上日期
NODE_ENV=production pm2 restart index --update-env --log-date-format "YYYY-MM-DD HH:mm"
查看日志
// 查看日志
pm2 log index
// 查看所有日志
pm2 logs
到这里就结束啦!!!❤️❤️❤️