linux – 如何自动化网站部署到生产,包括缩小CSS / JS?

目前,我正在使用以下手动过程将我的 PHP网站从登台部署到生产:

>使用online YUI compressor tool缩小CSS和JavaScript文件.
>将原始CSS和JavaScript文件移动到另一个目录(备份它们),然后用缩小的CSS和JavaScript CSS文件替换它们.
>开始将我的登台服务器中的所有文件复制到Windows PC.
>删除暂存.htaccess和索引文件,以便它们不会被复制到生产服务器(这些文件具有登台环境的特定内容).
>打开WinSCP并转到生产服务器上的Web根目录,然后将主索引文件切换为“正在进行更新”,这样如果有任何访问者访问该站点,则会收到一条消息,说明它已暂时关闭.
>然后使用WinSCP从我的PC复制到生产Web服务器(这会覆盖服务器上的所有现有文件),大约需要4分钟才能看到有大量文件.
>使用SSH登录生产服务器并运行大约5个命令,为各种可写目录设置适当的权限,并确保所有内容仍在www-root组下.我认为使用SSH的上传过程会更改所有现有权限.
>将“正在进行更新”索引文件切换回正常索引.

所有这一过程都非常复杂,需要大约5-10分钟,每次我对网站进行更改时都必须这样做,因此它已成为一件苦差事.

现在有没有办法使用一些脚本工具自动化这个过程?或者是否有一个很好的部署工具,人们可以使用它来完成所有这些工作?我的登台和生产机器是基于Ubuntu 12.04服务器的,所以我可以使用bash脚本来完成一些工作.

到目前为止我可以看到的一些改进是:

>在我的网站上添加一些代码,以便检测它是否在Staging或Production中,然后根据环境使用原始或缩小的CSS / JavaScript文件.这将节省我手动交换文件.
>使用命令行YUI压缩器并在需要时从脚本文件中运行它.
>使用像rsync之类的东西,这样它只会将更改的文件从我的登台服务器复制到生产服务器而不会覆盖每个文件

我工作过的一家公司使用Fabric command line tool来实现部署的自动化并完成这类工作.不过,这是一个不错的选择,还是有更好的工具?

解决方法

面料将是这类任务的理想选择.如果您熟悉python,那么您可以灵活地使用它.

Capistrano是另一个可能有用的选项,我已经将它用于Rails部署并且没有任何问题.允许您在远程主机上轻松运行shell命令.

另一个选择可能是使用Ant(python方式与fabric更好的imo).

你是否像git一样使用源代码控制?当您将其推送到“生产”分支时,可以将其中一些任务添加为提交后挂钩.

Rsync将是最快和最安全的选择.确保排除任何不应该在生产中的文件(备份文件,vim .swp文件等).

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...