如何将PHP项目部署到Azure且无需将所有文件放在web根目录
方案1:直接指定Azure App Service自定义Web根目录(无需调整现有项目结构)
- 进入Azure门户对应App Service的「配置」页面,在「应用程序设置」板块新增配置项:
键为WEBSITE_DOCROOT,值为/home/site/wwwroot/public_html,保存配置后重启应用即可生效。 - 配置后Web服务只会对外暴露
public_html目录下的内容,你可以保留原项目的目录结构:根目录存放composer.json满足Azure构建要求,resources目录和构建生成的vendor目录都存放在站点根目录,不会被外部访问,符合安全要求。 - 如果你使用的是自定义NGINX运行时,可额外添加自定义启动命令:
cp /home/site/wwwroot/nginx.conf /etc/nginx/sites-available/default && service nginx restart,自行编写的NGINX配置文件中将root路径指向public_html即可。
方案2:调整为通用PHP规范项目结构(兼容性更强)
你可以将项目调整为PHP生态通用的目录结构,后续迁移到其他托管平台也无需额外修改:
项目根目录 ├── composer.json ├── resources/ (原非公开资源目录,保留原有内容) ├── public/ (原public_html重命名,符合主流PHP框架命名规范) │ ├── index.php │ └── 其他公开静态文件、可执行PHP文件 └── vendor/ (构建自动生成,无需提交到Git)
调整后按方案1的方法将WEBSITE_DOCROOT的值改为 /home/site/wwwroot/public 即可正常运行。
可选:自定义部署规则
如果需要自定义部署流程,可在项目根目录新增.deployment文件指定构建规则:
[config] SCM_DO_BUILD_DURING_DEPLOYMENT = true WEBROOT_PATH = public_html
Azure内置的Kudu部署服务会自动按照配置执行构建、目录映射逻辑。
内容的提问来源于stack exchange,提问作者zeke
相关产品推荐
相关产品推荐

