如何在 VPS 上部署 Laravel 项目以及如何管理更改?

Posted

技术标签:

【中文标题】如何在 VPS 上部署 Laravel 项目以及如何管理更改?【英文标题】:How to Deploy Laravel project on VPS and How to manage changes? 【发布时间】:2016-11-19 21:17:41 【问题描述】:

在开发 Web 应用程序(使用 Laravel)时,我使用 WindowsXAMPP。另外,我使用 Git 进行版本控制。当我完成一个项目时,我必须将它部署在 VPS (LAMP) 上。怎么做?目前,我想到了两个想法:

    SFTP - 例如,我会使用 MobaXterm 的图形 SFTP 浏览器,我会复制我的项目(文件)...然后我会导入mysql 数据库(或运行迁移)。

    Git/GitHub - 我会在我的 VPS 上安装 Git,然后我会:

    在 GitHub 上创建一个远程存储库(应该是私有的吗?) git push(从本地主机到 GitHub) 然后,在 VPS 上,我会执行 git clone(从 GitHub 到 VPS) 最后,我只需要导入 MySQL 数据库(或运行迁移)。

您是这样工作的,还是有更好的解决方案?我认为第二种方式(Git/GitHub)比第一种方式(SFTP)更好,因为如果我必须添加一些新功能或修复错误 - 我将拥有在服务器上要做的是:git pull(来自 GitHub)。


编辑:

现在看到有envoyer.io、forge等服务,但不是免费的。那么,我在问题中描述的第二种方式(2. Git/GitHub )有什么缺点,它是免费的?

【问题讨论】:

【参考方案1】:

有很多工具可以帮助您部署 Laravel 或几乎任何应用程序。

我过去使用过https://deploybot.com/ 和https://envoyer.io/。

您也可以使用https://forge.laravel.com/ 来管理您的 VPS 并部署您的 laravel 应用程序。

【讨论】:

使用 envoyer.io 和我在问题中描述的第二种方式(2. Git/GitHub)有什么区别,我意思是使用 envoyer.io 而不是那种免费的方式有什么好处? 如果您在负载均衡器后面运行多个 VPS 服务器,则无需手动在所有服务器上运行 git pull。此外,如果您有一个团队,您不希望他们访问 VPS 服务器只是为了部署。如果你使用命令行没问题,你可以使用完全免费的deployer.org。 好的,但是如果我没有在负载均衡器后面运行多个 VPS 服务器 - 那么我在问题中描述的第二种方式(2. Git/GitHub)完全没问题,对吧?另外,如果我有一个团队,当团队中只有一个人(例如我)可以在添加新功能或修复错误时从 GitHub 进行部署(拉取)时,为什么他们需要访问 VPS 服务器... ?我不明白他们为什么需要访问 VPS? 是的,只使用 git/github 进行部署就可以了。如果您不在并且有人需要部署代码,您必须提供服务器访问权限才能部署代码。这就是我赋予团队访问权限的意思。【参考方案2】:

这个问题将主要吸引基于意见的答案,因为每个人都喜欢以不同的方式工作。

最基本的、免费的方法是使用 Git 来完成。这将为您提供强大的版本控制,并允许您将在本地开发中所做的所有更改推送到您的存储库,然后将它们拉到您的 VPS。

您甚至可以设置 webhook 以在每次将更改推送或合并到主分支时自动更新 VPS 上的版本。

由于需要处理的过程,通过 SFTP 执行此操作可能会非常缓慢,并且您会失去版本控制。这意味着如果您不小心弄坏了某些东西,那么您将无法轻松撤消它。使用 Git,您可以回滚到之前的提交。

如果您想要创建私人仓库并且不想为它们付费,那么您可以考虑使用 GitLab 而不是 GitHub。 GitLab 允许您使用它们托管存储库,或者您可以在您的 VPS 上部署自己的 GitLab 实例并将其托管在您的所有 VPS 中。

这里有很多选择,最好的方法就是你认为适合目的的方法。

【讨论】:

以上是关于如何在 VPS 上部署 Laravel 项目以及如何管理更改?的主要内容,如果未能解决你的问题,请参考以下文章

使用 BitBucket Pipelines 通过 SSH 访问部署到 VPS

我如何在我的 nuxt vps 上使用 laravel csrf 令牌

如何在服务器上上传我的 .War 文件

如何设置别名或 VirtualHost 以在 Apache2 上运行 laravel 项目

Laravel如何在主机上部署项目后访问公共文件

使用 apache 在单个 VPS 上托管多个 laravel 5.5 项目?