有机化学、化学信息学、生物化学、生物信息学、机器学习、深度学习、药物设计、网站建设关注我!Bilibili
前端项目使用NextJS编写,需要代理服务
该文章默认项目路径为:/home/aiochem/client,请自行更改
# 全局安装pm2
sudo npm install -g pm2
# 安装日志轮转
pm2 install pm2-logrotate
在前端的项目根目录(package.json同级),新建ecosystem.config.js
文件
module.exports = {
apps: [
{
name: 'aiochem-client', // 在 PM2 中的进程名
cwd: '/home/aiochem/client', // ← 指定nodeJS项目根目录
script: 'npm', // 启动命令
args: 'start',
// --- 如果你直接用 node 启动,请改成下面两行并删除 script/args:
//script: 'server.js', // 入口文件
//args: '', // 无额外参数
// —— 负载均衡(Cluster Mode)——
exec_mode: 'cluster', // cluster 模式:开启多进程
instances: 'max', // 根据 CPU 核数自动 fork 等量子进程
exec_mode: 'fork', // 单进程
instances: 1,
env: {
NODE_ENV: 'production', // 指定生产环境
HOST: '0.0.0.0',
PORT: 3000
},
// PM2 默认会写到 ~/.pm2/logs/下,也可在这里自定义路径:
error_file: '/home/aiochem/logs/client/web-aiochem-err.log',
out_file: '/home/aiochem/logs/client/web-aiochem-out.log',
log_date_format: 'YYYY-MM-DD HH:mm Z'
},
]
};
这样就配置完成了,一般项目是本地build以后,把.next文件夹上传进来
项目目录如下:源码可以不放在生产环境的服务器内,几个配置文件和静态资源需要放进来。
每天凌晨 0 点轮转、保留最近 7 天、大小超过 100 MB 也轮转、并压缩旧文件
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'
pm2 set pm2-logrotate:retain 7
pm2 set pm2-logrotate:max_size 100M
pm2 set pm2-logrotate:compress true
# 进入项目目录
cd /home/aiochem/client
# 启动所有在 ecosystem.config.js 定义的应用
pm2 start
# 保存当前进程列表,以便重启机器时可自动恢复
pm2 save
# 生成开机自启脚本(输出一行 systemd/startup 命令,复制并执行它)
pm2 startup
在本机构建项目后,压缩.next文件夹,上传到服务器即可。
unzip的命令
unzip -o /home/aiochem/version/.next001.zip -d /home/aiochem/client/
-o 参数表示直接覆盖
-d 指定覆盖位置
重启项目
然后重新load项目,这里的your_prj_name是配置中写的那个name参数,自行替换
pm2 reload your_prj_name
pm2也可以代理其他服务,比如django、celery等,写对应的配置就可以(不推荐代理数据库)
使用--only参数可以仅启动单个任务
pm2 start ecosystem.config.js --only aiochem-server
没有推荐的文章...
没有对应的文章...