在CPanel上自动部署Next JS应用:提交代码触发构建方案咨询
几种可行的自动构建方案
方案1:GitHub Action通过SSH远程执行构建命令(最实用)
这是最直接的路子,文件同步完直接连服务器跑构建和重启命令:
- 先在GitHub仓库的Secrets里存好cPanel服务器的SSH私钥(命名
SSH_PRIVATE_KEY)、服务器地址(SSH_HOST)、用户名(SSH_USER) - 然后在你的GitHub Action workflow文件里,加一段同步后的执行步骤:
- name: 远程执行构建与重启 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | cd /你项目在cPanel上的绝对路径 npm install npm run build pm2 restart 你的应用名称 # 要是用pm2管理进程的话 - 要是不用pm2,也可以用cPanel自带的Node.js应用管理器的重启命令,比如
passenger-config restart-app /你项目的路径,这个命令可以在cPanel的Node.js设置页面找到
方案2:调用cPanel UAPI触发构建
不想用SSH的话,可以通过cPanel的API来执行脚本:
- 先在cPanel里生成API令牌,得确保令牌有执行Shell命令的权限
- 然后在GitHub Action里加一个HTTP请求步骤,调用UAPI接口跑构建脚本:
- name: 调用cPanel API执行构建 run: | curl -u "${{ secrets.CPANEL_USER }}:${{ secrets.CPANEL_API_TOKEN }}" \ https://${{ secrets.CPANEL_HOST }}:2083/execute/Shell/exec \ -d command="cd /项目路径 && npm install && npm run build && pm2 restart 你的应用名称" - 注意:有些主机商可能禁用了Shell执行权限,得先确认你的主机支持
方案3:服务器端文件监控钩子(被动触发)
要是想让服务器自己检测文件变化再触发构建,可以用文件系统监控工具:
- 在cPanel服务器上装
inotify-tools,这个需要root权限,没有的话得找主机商开 - 写个监控脚本,监听项目目录的文件变更,一旦有更新就跑构建:
#!/bin/bash while inotifywait -r -e modify,create,delete /项目绝对路径; do cd /项目绝对路径 npm install npm run build pm2 restart 你的应用名称 done - 用
nohup ./监控脚本名 &或者pm2把这个脚本挂后台,保证一直运行
内容的提问来源于stack exchange,提问作者Gaurav Nepal
相关产品推荐
相关产品推荐

