【问题标题】:Best way to deploy PHP website with Gulp [closed]使用 Gulp 部署 PHP 网站的最佳方式 [关闭]
【发布时间】:2015-07-27 10:03:25
【问题描述】:

使用 Bower 组件和 Gulp 任务部署 PHP 网站的最佳方式是什么?

  • 是否可以在生产服务器上安装 npm 以运行 Gulp 任务?
  • 如果不是,是否可以在 Git 中提交缩小文件(CSS、JavaScript、压缩图像)?
  • 如果不是,是否可以使用 rsync 准备和(推送)部署项目到远程服务器,然后使用部署后脚本设置 chmods、更新数据库等?

也许有更好的方法来做到这一点?

【问题讨论】:

  • 这不是为了在 Git 中提交东西,不。如果您想进行缩小,请在构建过程中使用 Gulp 来创建缩小和丑化版本,并且不要提交它们。您的 Bower 和 Composer 依赖项未提交,它们是相同的。
  • 您可以根据自己的选择在服务器上或关闭服务器上进行构建 - 我认为其中一个没有优势。 Rsync 作为一种传输机制很好。在新构建准备好之前不要让新构建生效 - 您可以切换符号链接,或修改虚拟主机并为此反弹 Apache,所有这些都作为部署后脚本的一部分。关于部署的广泛主题,也许是this will help?
  • @halfer 感谢您的回答。到目前为止,我使用 rsync 和用 bash 编写的 post-script。我的 post 脚本设置了 chmods、迁移、缓存等。这很好吗?
  • 听起来不错。如果它是健壮的,并且在出现问题时退出(例如迁移导致 SQL 错误) - 如果出现问题,该过程不得关闭您的服务。当然,您可以只在 staging 中进行测试部署,并且只有在 staging 干净返回时才实时运行它。
  • 谢谢,这些信息真的很有帮助。 phing + jenkins 怎么样? Jenkins 提供测试/构建工具,可以与 phing 集成。但对我来说缺点是重复工作。我的工作是海关。在某些日子里,我需要部署项目两次或更多次,其他时间为零。

标签: php git gulp web-deployment rsync


【解决方案1】:

确保生产服务器上一切正常的最安全方法是首先部署到临时环境。这很可能是同一台服务器,只是不是每个人都可以访问。

举个例子:我们有一个网站:www.website.com,就是直播环境。

假设我们有另一个名为 staging.website.com 的子域,它指向同一个服务器,但有自己的 DocumentRoot (more on DocumentRoot),但它受到某种形式的身份验证(或 IP 防火墙,在我们公司的案例。如果没有权限看staging,就直接指向www.website.com,很方便)。

您将首先部署到 staging,运行所有构建脚本(Composer、Gulp、minify),测试一切是否仍然有效。如果是这样,您可以轻松地将活动域的DocumentRoot 指向暂存目录并完成。

至于提交缩小文件,没有。您应该提交原始文件和构建器脚本。每次部署应用程序时都会构建缩小的脚本。

您可以使用 Rsync,但就像我建议的那样,您应该在部署期间构建您的应用程序(chmod、数据库等)。之后不会。

【讨论】:

  • 感谢您的回答。结论:我应该在生产服务器上安装 npm 和 bower 并在 staging 环境中使用它吗?
  • “你应该提交原始的 [JavaScript/CSS] 文件”——只有当它们是你的代码库的一部分时。如果它们是库,则应使用包管理器将它们引入而不是提交。
  • 如果您的登台服务器与生产服务器相同,那么可以。请记住,如果您有单独的服务器,则开发、登台和生产服务器在配置方面应该非常接近。感谢您编辑我的答案并添加上述澄清半边。
猜你喜欢
  • 2011-09-20
  • 2020-08-15
  • 2018-06-21
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-18
相关资源
最近更新 更多