如何将Angular+CodeIgniter PHP应用部署到指定域名并配置GitHub代码托管
Angular+CodeIgniter前后端分离项目部署全流程
1. GitHub代码仓库配置与日常提交
因为你的前后端是独立代码包,建议创建2个独立仓库分别管理,避免配置冲突:
- 仓库创建:登录GitHub,分别新建
your-project-frontend、your-project-backend两个公开/私有仓库,不要自动生成README、LICENSE文件 - 首次代码上传(以本地项目根目录为例):
前端目录执行:
后端目录执行相同逻辑,替换为后端仓库地址即可git init git add . git commit -m "feat: 首次提交Angular前端完整代码" git branch -M main git remote add origin 你的前端GitHub仓库地址 git push -u origin main - 日常提交规范:每次修改代码后执行
git add .→git commit -m "提交说明"→git push即可同步到GitHub
2. 托管主机前置准备
先确认你的主机满足以下基础要求:
- PHP版本符合你使用的CodeIgniter版本要求(CI4要求7.4+,CI3要求5.6+),同时安装好curl、mbstring、mysqlnd等必填扩展
- 已完成域名解析:将
www.abc.com(前端)、api.abc.com(后端,可自定义)两个域名的A记录指向你的主机公网IP - 主机已配置好Web服务(Nginx/Apache),并创建两个站点分别对应前后端域名
3. 后端CodeIgniter部署步骤
- 进入主机后端站点的根目录上层路径(避免敏感文件暴露到公网),执行
git clone 你的后端GitHub仓库地址拉取代码 - 将CI框架的
public目录设置为api.abc.com站点的Web根目录 - 复制项目根目录下的
env文件为.env,修改核心配置:CI_ENVIRONMENT = production app.baseURL = 'https://api.abc.com/' database.default.hostname = 你的数据库地址 database.default.database = 数据库名 database.default.username = 数据库账号 database.default.password = 数据库密码 - 配置伪静态规则:
Nginx配置添加到server段:
Apache配置添加到public目录下的.htaccess:location / { try_files $uri $uri/ /index.php?$query_string; }RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] - 权限配置:给
app/Config、writable目录设置755权限,避免读写报错 - 部署完成后访问
https://api.abc.com测试接口是否正常返回
4. 前端Angular部署步骤
- 修改前端项目里的API请求前缀为线上后端地址
https://api.abc.com,提交代码到GitHub - 在前端项目根目录执行
ng build --configuration production打包生产环境代码,打包完成后所有静态文件会生成在dist/你的项目名目录下 - 将dist目录下的所有文件上传到主机
www.abc.com站点对应的Web根目录 - 配置单页应用路由重写规则,解决刷新404问题:
Nginx配置添加到server段:
Apache配置添加到Web根目录下的.htaccess:location / { try_files $uri $uri/ /index.html; }RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] - 部署完成后访问
https://www.abc.com测试页面加载、接口请求是否正常
5. 日常提交自动部署可选配置
如果不需要手动拉代码/打包,可以配置GitHub Actions工作流,实现每次push代码到main分支后,自动打包前端、拉取后端代码并同步到你的主机,不需要额外第三方服务。
内容的提问来源于stack exchange,提问作者ImranShaik
相关产品推荐
相关产品推荐

