代码之家  ›  专栏  ›  技术社区  ›  Munavir Chavody

Laravel在药物治疗中的应用

  •  0
  • Munavir Chavody  · 技术社区  · 8 年前

    我有一个大型项目。我通过将文件复制到服务器来将其部署到Apache服务器上。有没有其他类似jar文件的方法可以使用phar?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Magus    8 年前

    最简单的方法是将文件rsync到服务器。有一个更复杂但效果很好的方法是在所需的服务器上使用capistrano,jenkins的部署脚本将构建文件上传到s3,ssh到服务器中并运行

    bundle exec cap deploy 
    

    在所需的服务器上。

    这样可以让服务器自行部署,在我使用它的情况下,计算机上的capistrano使用git存档进行构建和部署,但是您可以将构建步骤和部署步骤分开。

    基本上,您将有一个私有的s3 bucket来上传您的构建,它们总是命名为application-latest.zip

    您的jenkins服务器将始终构建、上载和触发部署

    你的应用服务器会有一个capistrano下载zip,解压并“部署”

    我为什么这么提卡皮斯特拉诺?因为它可以让您从许多部署难题中解脱出来,例如: -它将对名为application timestamp的文件夹执行上述步骤 -此文件夹与包含以前部署的其他文件夹一起保存 -有一个名为release的符号链接指向您的最新部署 -一旦capistrano完成您的步骤,它将更改符号链接以指向新部署的文件夹

    这种方法和技术选择的好处:

    • 您可以选择保留“x”最后一次部署,这让您可以立即回滚部署,因为这只是从当前部署到当前-1部署的符号链接更改

    • 它还通过清理最旧的文件夹来控制资产占用的磁盘空间,如果选择保留5个展开以进行回滚,则在第六次部署时,将删除最旧的文件夹

    • 当nginx/apache/php无法访问当前由部署脚本更新的文件时,它会阻止您出现死亡的白色屏幕
    • 它允许您创建这台机器的映像,比方说在aws上,并将它放到一个autoscale组中,一旦启动了这台机器,它就可以通过从s3下载最新的zip文件来更新自己,而不需要jenkins妨碍,您只需设置autoscale in it脚本就可以在您选择的任何提供程序上触发部署
    • 在构建和部署之间有一个非常清晰的界限

    希望能有帮助!

    推荐文章