从 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 install
和 npm run prod
或其他与 npm 相关的构建命令。
在此之后,您最终需要重新加载 Apache2 实例 (sudo service apache2 reload
) 以清除 Apache2 opcache(如果您正在使用 opcache)。
最后,如果您正在使用队列,则需要重新启动队列工作程序。这里的程序会有所不同,具体取决于您使用什么来保持工人的生命。例如,如果您使用 supervisor
作为记录 here,您可能会使用 sudo supervisorctl restart laravel-worker:*
。在所有之前的操作之后执行此操作,以便工作人员运行正在使用最新代码。
我在 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 install
和 npm run prod
或其他与 npm 相关的构建命令。
在此之后,您最终需要重新加载 Apache2 实例 (sudo service apache2 reload
) 以清除 Apache2 opcache(如果您正在使用 opcache)。
最后,如果您正在使用队列,则需要重新启动队列工作程序。这里的程序会有所不同,具体取决于您使用什么来保持工人的生命。例如,如果您使用 supervisor
作为记录 here,您可能会使用 sudo supervisorctl restart laravel-worker:*
。在所有之前的操作之后执行此操作,以便工作人员运行正在使用最新代码。