Laravel部署...有标准方法吗?

22

我开始在我的项目中认真使用Laravel 4。我了解到这个框架在开发RESTful应用程序时提供了许多优势。但是我知道,关于如何部署/发布和使用Laravel应用程序还没有达成共识。我仍然使用FTP将文件传输到我的生产主机。但我的问题是,从Laravel中是否有标准方法来执行相同的操作?我坚信只要有点创意,就可以创建像php artisan publish [生产服务器名称和SSH凭据]这样的参数。

我从Anahkiasen/rocketeerChristopher Pitt这两个很棒的资源中读到了一些有趣的东西,但是有没有关于使用laravel发布应用程序的共识或标准方式呢?


Capistrano非常棒!试试看吧。 - Goldentoa11
为什么不编写一个Bash(或Powershell)脚本,从Git / SVN中提取文件并安装到生产服务器上呢? - msturdy
我的担忧是Capistrano更适用于Ruby应用程序。它是否可以用于Laravel? - James
你可以为Artisan创建自定义命令.. 你看过这个吗?http://laravel.com/docs/commands - msturdy
1
是的,这就是相信“php artisan publish [生产服务器名称和SSH凭据]”是完全可行的原因。现在我正在探索这个选项。 - James
5个回答

20

这并不是一个Laravel的问题或者疑问,你需要在一个开发运维论坛上询问他们如何部署像你这样的PHP应用程序。

你的Laravel应用程序基本上是一个PHP应用程序,一些包是由Composer提供的,所以它更像是一个Composer应用程序而不是Laravel,但是你可能有一些Laravel的需求,比如执行 php artisan migrate 或任何其他artisan命令来发布部署您的应用程序,或者不需要,因此,这更多是您的应用程序的要求,而不是Laravel的要求,对吗?

我开发了一个部署包,名为Deeployer。这个包的意图是,每次我将应用程序推送到生产(或分支)分支时,GitHub都会触发一个钩子,告诉我的服务器执行任何必要的操作来将我的应用程序部署到我的VPS。在基本的部署中,它将:

1)git pull存储库

2)执行 composer update 更新我的vendor文件夹

3)执行bower update下载我安装的任何js或css

4)执行php artisan migrate升级我的数据库架构

5)执行chmodchown来修复这些命令在下载文件时可能对我的目录造成的权限混乱

明白了吗?这些都是非常特定于我的部署结构的事情,这就是为什么我不认为您会找到关于部署应用程序的一致意见。当Anahkiasen首次构建Rocketeer时,有人大声喊道:“如果我们已经有Capistrano,你为什么还要这样做?”。

昨天我遇到了这个:http://www.deployhq.com/packages,由Cartalyst的Ben Corlet和其他不错的家伙使用。

还有Rocketeer:http://rocketeer.autopergamene.eu/

不要忘记 Laravel 自带 SSH 远程组件(我在 Deeployer 上使用过它,Rocketeer 也使用它),这可能有助于您部署应用程序所需的任何内容。因此,最好考虑您的部署需求,并找到适合您的方式,使用软件包、应用程序或仅使用 Laravel。

非常好的信息。真正回答了我的疑问,感谢您清晰的回答。有了所有这些信息,我有足够的工作材料了。再次感谢! - James
GIT支持自动部署非常简单。例如:git push origin deploy => 部署完成。参考链接:http://www.sitepoint.com/deploy-website-using-laravel-git/ - Jonny Vu
1
我不建议在生产环境中运行 composer update,因为它会安装满足 composer.json 版本限制的每个软件包的最新可用版本。这些版本通常与您在开发和测试中安装的版本不同。相反,您应该使用 composer install 安装在 composer.lock 中指定的确切版本,该文件已在您的版本控制系统中进行了跟踪,并针对其运行测试。 - jsphpl

6
有很多部署工具,比如Capistrano。我建议你看一下Deployer:它有一个简单的API,附带了流行框架和应用程序的配方,并且可以进行100%并行任务执行。此外,它仅需要PHP。 以下是一个简单任务的示例:
task('my_task', function () {
    // Your tasks code...
});

它还有一个高质量的代码:

Code Quality Code Climate Code Coverage

Deployer


1
两年后,今天我尝试了deployer,并在短短几个小时内完美地完成了全部设置。易于使用和简单的API肯定是它的优点。 - Xander Luciano

2

Vaprobash是用于开发环境的自动化配置脚本,而不是部署脚本。 - Antonio Carlos Ribeiro
@AntonioCarlosRibeiro 是的,我应该明确说明。为了避免混淆,我已经将其删除了。 - fl3x7

0
如果你在问是否有标准,我认为没有。但是,除了FTP之外,你考虑过使用git将你的网站部署到生产环境中吗?

以下是具体步骤: http://danbarber.me/using-git-for-deployment/(链接已失效) https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

基本上,你有一个裸的git仓库,你自己的本地仓库和你的生产仓库。现在通过配置正确的钩子,当你推送到裸的git仓库时,其中的一个钩子将告诉生产仓库将你提交的最新更改拉取到生产环境中。此外,在你的配置中设置正确的凭据,根据环境创建一个新的文件夹,例如app/config/productionapp/config/stage,这样你可以轻松地在两个服务器之间切换运行应用程序。


感谢@AryehArmon的指出。我已经提供了Digital Ocean的另一个资源。 - reikyoushin

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接