从 Git 的 运行 项目中提取更新

Pulling updates from Git on running project

我在 ubuntu VM 中的 apache2 服务器上部署了一个 laravel 应用程序。 设置花了很多时间,但我想对网站进行更多更改,例如现在我添加了一个页脚。

pull 在存储库中以便在项目上安装更新然后重新启动 apache 是否安全/可能?

我做了 google 但没有找到任何具体的东西,因此我为什么要在这里问。

因为设置花了这么长时间,我害怕我破坏了一些东西。

是的,您可以提取代码和 运行 这些命令来删除旧版本缓存。

php artisan view:clear
php artisan route:clear
php artisan cache:clear
php artisan view:cache
php artisan route:cache

您不需要重新启动 apache 服务。

确保文件权限和所有权正确。如果文件归 www-data 所有,并且您 git 使用您自己的用户拉取,并创建一个新文件,则新文件将归您自己的用户所有,而不是 www-data。可以创建一个 git 挂钩来为您 chown 归档文件,但您也可以在提取更改后在自己的脚本中执行此操作(例如 chown -R www-data)。您还可以使用 sudo 到 运行 git 操作作为 www-data 用户,例如sudo -u www-data git pull --ff-only.

此外,请确保使用 git pull --ff-only--ff-only 如果由于某种原因服务器上的存储库和上游的存储库因冲突(例如强制推送)而不同,则将拒绝合并。这将防止 git pull 在文件中创建合并冲突标记,这可能会因语法错误而破坏您的代码。

将您的 git 存储库移动到另一个文件夹可能更安全,在那里执行 git 操作,然后修复文件权限等,然后 rsync 或以其他方式覆盖文件中的文件Apache 正在使用的目录。

至于 Laravel,您需要遵循部署步骤 outlined in the documentation

composer install --no-interaction --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache
php artisan view:cache

:cache 命令清除现有缓存并重新缓存配置文件、路由列表和已编译的 Blade 模板。如果您以前使用过缓存命令,则需要 运行 这些,否则与配置、路由和视图相关的新代码更改将不会生效。如果您以前没有使用过这些,您可能不需要使用它们。

如果您有新的数据库迁移,您可能还需要 运行 php artisan migrate。例如,如果您使用 Laravel Mix,您可能还需要 运行 npm installnpm run prod 或其他与 npm 相关的构建命令。

在此之后,您最终需要重新加载 Apache2 实例 (sudo service apache2 reload) 以清除 Apache2 opcache(如果您正在使用 opcache)。

最后,如果您正在使用队列,则需要重新启动队列工作程序。这里的程序会有所不同,具体取决于您使用什么来保持工人的生命。例如,如果您使用 supervisor 作为记录 here,您可能会使用 sudo supervisorctl restart laravel-worker:*。在所有之前的操作之后执行此操作,以便工作人员运行正在使用最新代码。