如何在没有 public 端点的情况下使用 Laravel 8 和 PHP 8 在 azure 中部署应用程序服务?

How to Deploy an App Service in azure with Laravel 8 and PHP 8 without public endpoint?

我正在使用 Laravel 8 和 PHP 8 在 azure 中部署应用程序服务,但我无法从 URL.

中删除 /public

一般我们用

解决这个问题
  1. 将域定向到 public 文件夹和 public 文件夹中的 .htaccess/web.config 文件

  2. 在根目录中放置一个 htaccess/web.config 文件

但是这里不行。

我正在为未来的用户回答这个问题,因为我花了大约 7-8 个小时来修复它。

我得到了schaako.de , cristopher and azureossd的帮助并写在这里。

打开SSH

通过 Azure Portal 导航至您的 App ServiceDevelopment Tools section下selectSSH.

默认站点配置

复制现有配置并使用此命令将文件放入 /home/site 目录

cp /etc/nginx/sites-available/default /home/site/default

现在编辑 /home/site/default 文件并按照 laravel documentation 服务器配置设置

中的说明进行更新
location / {
    index  index.php index.html index.htm hostingstart.html;
    try_files $uri $uri/ /index.php?$query_string;
}

自定义启动脚本

您现在需要创建自定义启动脚本并将文件另存为 /home/site/startupscriptbymoon.sh

在上面的文件中添加以下命令

cp /home/site/default /etc/nginx/sites-available/default
service nginx reload

启动命令和测试

现在通过 Azure Portal 导航回您的 App ServiceSettings section下selectConfiguration然后General Settings.

Startup Command文本框中输入以下内容:

/home/site/startupscriptbymoon.sh

导航回您的应用程序并重新加载。 享受!

我经历了同样的挣扎,并在我的博客 https://www.azurephp.dev/2021/09/php-8-on-azure-app-service/ 上记录了我的发现。

向 Linux 仅容器的迁移以及从 Apache 到 Nginx 的迁移增加了我在文章中报告的一系列问题。查看更多详情。