无停机 Laravel 部署
No-downtime Laravel deployment
我想将一个 Laravel 应用程序从 Gitlab 部署到一台服务器,而不会停机。在服务器上,我使用 php artisan serve
为应用程序提供服务。目前,我想我会首先复制所有文件,然后停止服务器上的旧 php artisan serve
进程,并在服务器上的新文件目录中启动一个新进程。然而,这引入了一个小的停机时间。有没有办法避免这种情况?
如果您使用单台服务器服务,则无法实现 0 停机时间。如果停机时间是您系统的重要组成部分,那么请使用两台服务器并巧妙地在它们之间进行负载平衡。请记住,没有托管或 VPS 提供商可以确保您提供 100% 的可用性。所以如果你想在部署过程中获得 100% 的可用性,那么讽刺的是,你的站点可能在另一时间已经宕机了。我的意思是,如果重启 php artisan serve
的微小时刻很重要,那么可以扩展到不止一台服务器。
一个变通的解决方案是使用一些第三方服务(比如 CloudFlare),它可以智能地检测服务器停机情况并在服务器恢复时通知用户,我个人使用它。
如果你真的想要完整的正常运行时间,docker with kubernetes 是你的技术。
我想将一个 Laravel 应用程序从 Gitlab 部署到一台服务器,而不会停机。在服务器上,我使用 php artisan serve
为应用程序提供服务。目前,我想我会首先复制所有文件,然后停止服务器上的旧 php artisan serve
进程,并在服务器上的新文件目录中启动一个新进程。然而,这引入了一个小的停机时间。有没有办法避免这种情况?
如果您使用单台服务器服务,则无法实现 0 停机时间。如果停机时间是您系统的重要组成部分,那么请使用两台服务器并巧妙地在它们之间进行负载平衡。请记住,没有托管或 VPS 提供商可以确保您提供 100% 的可用性。所以如果你想在部署过程中获得 100% 的可用性,那么讽刺的是,你的站点可能在另一时间已经宕机了。我的意思是,如果重启 php artisan serve
的微小时刻很重要,那么可以扩展到不止一台服务器。
一个变通的解决方案是使用一些第三方服务(比如 CloudFlare),它可以智能地检测服务器停机情况并在服务器恢复时通知用户,我个人使用它。
如果你真的想要完整的正常运行时间,docker with kubernetes 是你的技术。