正确部署用 Laravel 4 写的程序的方法是?

2013-08-28 18:07:25 +08:00
 thenewbie
是应该:在生产环境的上安装 composer,用 composer 安装 Laravel 4 ,然后把写的代码放上去?
还是说有什么 “打包” 的方式么?

有没有一些简单的方式... 比如,类似用 Codeigniter‎ 框架时,直接复制粘贴上去就能跑...
7371 次点击
所在节点    PHP
21 条回复
haiyang416
2013-08-28 18:14:28 +08:00
你可以在本地安装好,然后打包复制提交到服务器,服务器就不用装composer。
thenewbie
2013-08-28 18:24:04 +08:00
@haiyang416 原来也是直接复制粘贴就好啊~ thx
PS: 第一次接触 Laravel 4 和 composer 什么的... 总担心会不会出问题... >_<
KiseXu
2013-08-28 18:38:19 +08:00
从某种意义上说composer就是个下载软件,把各种包下载到vendor文件夹中,下载完后直接把所有文件上传到服务器上是可以运行的啊
PrideChung
2013-08-28 18:42:30 +08:00
直接用FTP上传整个网站目录是可以,但是就失去了使用composer做包管理的好处了,例如区分开发和生产环境启用的包。
比较好的做法是把composer生成的vendor目录加入.gitignore,通过git来部署到服务器,在服务器跑composer install。
再正式一点的话可以用Mina之类的部署工具。
thenewbie
2013-08-28 19:06:49 +08:00
@PrideChung 这个看起来好赞~
holystrike
2013-08-28 19:27:13 +08:00
自己另写一个安装脚本,把composer安装vendor的指令放进去,用自己的脚本来安装
thenewbie
2013-08-28 19:33:18 +08:00
@holystrike 这个... 自己写个装,和直接用 composer 装... 有什么不同么...
sobigfish
2013-08-28 19:50:28 +08:00
用 composer 装:服务器下载快啊,比直接上传方便很多啊
thenewbie
2013-08-28 19:55:02 +08:00
@sobigfish 会不会有什么安全方面的设置需要注意呢?
holystrike
2013-08-29 12:54:56 +08:00
没什么大的区别,无非就是加点其他的指令进去,比如设置目录权限、清空缓存、备份之类的,这就看你的习惯了。
也可以用 Composer 的 script 这项配置来加载执行vendor安装、更新完后的其他指令,效果差不多
holystrike
2013-08-29 12:56:05 +08:00
接上,
区别就是,composer 的 script 是让你写php,自己写脚本那就直接shell语句了
brikhoff
2013-08-29 13:41:00 +08:00
@PrideChung 那岂不是要在服务器上面装git?
darkyoung
2013-08-29 13:44:26 +08:00
用git同步上去,composer install/update
PrideChung
2013-08-29 15:54:32 +08:00
@brikhoff 服务器不用装git,开发机在repo上面git add remote,通过SSH指定服务器上的一个目录就行。
hizhou
2013-08-30 10:40:51 +08:00
composer 是包依赖管理软件,开发时才用到。和部署,没啥关系。
chuck911
2013-09-06 22:12:56 +08:00
vendor里面的代码的确可以一起推上服务器去,只是显得稍傻。vendor里面的代码都是第三方的,下载了又上传...
参考 https://github.com/andrew13/Laravel-4-Bootstrap-Starter-Site
/vendor文件夹都直接写在.gitignore里了
caoglish
2013-09-27 21:57:55 +08:00
个人感觉用composer部署很危险,因为composer可能已经吧依赖更新了,而你自己的程序因为某些关系,吧依赖已经hack了,这样就必定产生冲突了。

部署还是用专门的部署工具吧。
thenewbie
2013-09-27 22:57:36 +08:00
@caoglish 专门的部署工具 ... 是指git之类?
caoglish
2013-09-28 08:39:10 +08:00
@thenewbie git不是部署工具,它是版本控制工具。当然部署工具的基础之一。

你要研究PHP部署,可以从phing开始看起,这个比较简单。它是build和部署工具,现在还比较流行,类似javascript的grunt和java的ant。

当然更高级的是持续集成系统(CI),当然这个用来作为测试部署的,一般不是用来作为最终的部署,但是可以大大减少部署的压力。
caoglish
2013-09-28 09:01:51 +08:00
@thenewbie 我之前也是用git部署的,但是git部署有个很大的问题,就是下载的是开发版本,所以很多配置和很多调整,还有很多删除。每次git部署后的调整可能会很麻烦。而且必须保留一份git的文件夹在正式版的文件夹内。

所以我现在是先在最终部署好后,git保存所有部署的设置文档(新建一个独立的文件夹来保存),然后用phing进行build,一般就是
1.先下载git,
2.复制需要的文件,
3.copy最终部署好的设置
4.删除不必要的文件(log,unit test,还有本地git的folder)

(phing可以设置更多的步骤,比如对javascipt和css进行压缩,测试,上传ftp等等)

build后的package有了之后(还在本地),我一般会用sync软件(freefilesync)和正式版本比较,尽量只sync不一样的文件。用sync软件部署的好处是,不会破坏正式版本产生的一些文件(如log文件)。

其实phing也可以吧sync这个步骤包含在里面,只是最终部署的时候谨慎一点比较好。如果是持续集成测试的话,就一定要吧sync步骤放在phing里面,要不然就不是自动化测试了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/80535

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX