V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
thenewbie
V2EX  ›  PHP

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

  •  
  •   thenewbie · 2013-08-28 18:07:25 +08:00 · 7175 次点击
    这是一个创建于 3887 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是应该:在生产环境的上安装 composer,用 composer 安装 Laravel 4 ,然后把写的代码放上去?
    还是说有什么 “打包” 的方式么?

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

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

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

    当然更高级的是持续集成系统(CI),当然这个用来作为测试部署的,一般不是用来作为最终的部署,但是可以大大减少部署的压力。
    caoglish
        20
    caoglish  
       2013-09-28 09:01:51 +08:00   ❤️ 2
    @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里面,要不然就不是自动化测试了
    joyce95
        21
    joyce95  
       2014-12-07 20:33:57 +08:00
    @thenewbie 我现在也遇到了相同的问题,想把laravel框架应用部署到新浪云平台上可以不知道该怎么部署,,请问前辈有没有什么解决办法啊~上面那些也没咋看懂。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1058 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:07 · PVG 07:07 · LAX 16:07 · JFK 19:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.