前端项目部署上线到 centos 并使用 pm2 管理

155 阅读3分钟

部署上线

先购买一台服务器(实例),顺便自带安装了宝塔 linux 面板。由于我自己是第一次使用,直接用的3个月免费~

然后我们设置密码:

在这里插入图片描述

然后配置安全组,以便部署项目的端口可以公开给外部访问。

在这里插入图片描述

安全组可以创建多个,并且应用到不同的云服务器实例上。应用到服务器上后 IP 占用数会加一。

然后服务器的基本配置就算结束了。

下一步是通过 xshell 进行远程连接服务器,通过 xftp 进行远程项目文件传输。(当然也可以通过 vscode 插件 Remote SSH)

然后安装相应的软件:

yum install nodejs
yum install npm

之后我在 /root/phone-store 作为我的项目目录,然后将打包后的文件 .output(nuxt 项目的打包文件夹) 直接放入到 phone-store 这个目录下。

这里使用 xftp 有一个问题,就可能不会显示隐藏目录,所以我们需要开启 工具 -> 选项 -> : 在这里插入图片描述

然后正常启动这个项目,进入到项目目录下 执行 PORT=8080 node ./.output/server/index.mjs 就可以启动了!(因为我在安全组里开启的是 8080 端口,所以这里我在 8080 端口运行项目)

这里就会有一个问题,我在 执行node 命令才会启动项目,关掉命令行窗口就会终止项目,我们需要项目一直运行在后台,这时就需要 pm2 来变为后台进程(守护进程)。

下载 pm2 :

npm i -g pm2

然后进入项目目录,将项目运行到 8080 端口:

PORT=8080 pm2 start ./.output/server/index.mjs --name oppo-web

在这里插入图片描述


如果我们想实现负载均衡也是很简单的:

pm2 init simple

然后 :File /root/oppo-web/ecosystem.config.js generated

然后修改 ecosystem.config.js

module.exports = {
  apps : [{
    name : "oppo-web",
    script: "./.output/server/index.mjs",
    instance: 2, // 最大实例 string | number 直接写 "max" 会使用最大实例 也就是 cpu 核数
    exec_mode: "cluster", // 集群模式 负载均衡
    env: {
      PORT: 8080
    }
  }]
}

然后执行:

pm2 start ecosystem.config.js

pm2 常用命令:

pm2 --version
PORT=8080 pm2 start ./.output/server/index.mjs --name oppo-web
pm2 stop 0
pm2 stop oppo-web
pm2 delete all
pm2 delete 0
pm2 list
pm2 restart all


以下是其他相关知识,以阿里云为例

域名购买

域名查询结果_域名信息_域名交易-万网-阿里云旗下品牌 (aliyun.com)

备案

网站备案_ICP备案_备案迁移_App备案_小程序备案_备案-阿里云 (aliyun.com)

域名备案成功就可以让别人使用域名来访问自己的网站。

云服务器

云服务器ECS_云主机_服务器托管_计算-阿里云 (aliyun.com)

当然作为学生,各大云厂商都会实施不同的优惠政策,在各个活动购买更划算。

域名解析

解析设置,添加记录。云解析 DNS (aliyun.com)

配置 cdn。CDN管理控制台 (aliyun.com)

然后就可以将之前添加的解析将目标改为 cdn 配置后的 cname。此时看到网络请求发送的远程地址已经不再是我们的 ip 地址,而是配置后的 cdn 地址。将自己的 ip 进行隐藏,还对自己的网站进行加速。

SSL 证书

给自己的域名加上一个免费的 SSL 证书,看到网站由之前的不安全变为安全,说明证书的配置生效。SSL