能否实现GitHub推送后自动构建React应用并部署到GoDaddy服务器
GoDaddy类共享主机React应用自动构建部署方案
完全可以实现和Netlify一致的「推代码到GitHub就自动发布」的效果,不用每次手动build、传文件,根据你的主机权限选下面的方案就行,最通用的方案对主机几乎没额外要求。
方案一:GitHub Actions 自动构建+SFTP上传(最推荐,90%以上共享主机可用)
这个方案不需要你在共享主机上装任何环境,构建过程在GitHub的服务器上跑,构建完自动把产物传到你主机的对应目录,只要你的主机开了SFTP/FTP就能用。
- 先准备必要信息
- 确认主机SFTP/FTP地址、账号、密码,cPanel面板里的「FTP账户」选项里就能查到
- 确认站点根目录路径,根域名一般是
/public_html/,子域名/子目录对应调整路径就行
- 给GitHub仓库配置密钥
打开你React项目的GitHub仓库,进入Settings -> Secrets and variables -> Actions,新建以下几个仓库密钥:HOST:SFTP服务器地址USERNAME:SFTP登录账号PASSWORD:SFTP登录密码REMOTE_PATH:站点根目录的绝对路径
- 写工作流配置
在项目根目录新建路径.github/workflows/deploy.yml,粘贴下面的配置,根据自己的项目情况改注释里提到的参数就行:
name: 自动部署React应用 on: push: branches: [ main ] # 改成你实际用来部署的分支,比如main、master,推代码到这个分支就自动触发流程 jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: 拉取代码 uses: actions/checkout@v4 - name: 配置Node环境 uses: actions/setup-node@v4 with: node-version: 20 # 和你本地开发用的Node大版本保持一致,避免构建出问题 cache: 'npm' - name: 安装依赖 run: npm ci - name: 构建项目 run: npm run build - name: 上传构建产物到主机 uses: appleboy/sftp-action@v1 with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: 22 # SFTP默认端口是22,如果你主机改了端口对应修改 source: ./build/* # Create React App生成的项目默认产物在build文件夹,Vite项目改成./dist/* target: ${{ secrets.REMOTE_PATH }} overwrite: true delete: true # 上传前先清空目标目录的旧文件,避免旧缓存、旧文件导致站点异常
配置完提交一次代码到对应分支,GitHub就会自动跑构建、部署流程,后续所有推送到该分支的代码都会自动发布,和Netlify的体验一致。
方案二:cPanel自带Git部署(适合主机已预装Node的情况)
如果你的GoDaddy共享主机cPanel里有「Git Version Control」和「Setup Node.js App」两个功能,可以直接用主机自带的部署能力,不用走GitHub Actions:
- 在cPanel里打开Git Version Control,创建新仓库,关联你GitHub上的React项目仓库,填好部署分支、部署目录
- 在项目根目录新建
.cpanel.yml配置文件,定义主机拉取代码后的执行步骤:
--- deployment: tasks: - export PATH=/opt/cpanel/ea-nodejs20/bin:$PATH # 改成你主机上Node的实际路径 - npm ci - npm run build - rm -rf /home/你的主机账户名/public_html/* - cp -r build/* /home/你的主机账户名/public_html/ # Vite项目把build改成dist
配置完之后,每次你推代码到GitHub,cPanel会自动拉取最新代码,执行构建命令,把产物拷到站点目录,完成部署。
常见问题处理
- 部署完刷新前端路由报404:在站点根目录放一个
.htaccess文件,配置React Router的重写规则,把所有请求都重定向到index.html就行 - SFTP连接失败:先在本地用FileZilla这类SFTP客户端测试能不能正常连主机,部分主机会默认开启SSH IP白名单,要么把白名单关掉,要么把最后上传步骤的SFTP换成FTP协议,对应换FTP的action就行,配置逻辑完全一致
- 构建出来的页面白屏:检查配置里的构建产物路径是不是写对了,Create React App是build目录,Vite是dist目录,别搞混
内容的提问来源于stack exchange,提问作者Naima Ghulam.M
相关产品推荐
相关产品推荐

