Linux

如何將網站部署自動化到生產環境,包括縮小 CSS/JS?

  • January 10, 2018

目前,我正在使用以下手動過程將我的 PHP 網站從登台部署到生產:

  • 使用線上 YUI 壓縮工具縮小 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 腳本來完成一些工作。

到目前為止,我可以看到的一些改進是:

  • 向我的網站添加一些程式碼,以便它檢測它是在暫存還是生產中,然後根據環境使用原始或縮小的 CSS/JavaScript 文件。這將節省我手動交換文件的時間。
  • 使用命令行 YUI 壓縮器並在需要時從腳本文件執行它。
  • 使用類似 rsync 的東西,這樣它只會將更改的文件從我的登台伺服器複製到生產伺服器,而不是覆蓋每個文件

我工作過的一家公司使用Fabric 命令行工具來自動化部署並執行此類操作。然而,這是一個好的選擇還是有更好的工具?

織物將是此類任務的理想選擇。如果您熟悉 python,那麼您可以靈活地做些什麼。

Capistrano 是另一個可能有用的選項,我已經將它用於 Rails 部署並且沒有任何問題。允許您輕鬆地在遠端主機上執行 shell 命令。

另一種選擇可能是使用 Ant (使用織物的 python 方式在 imo 中要好得多)。

你在使用 git 之類的原始碼控制嗎?當您將其中一些任務推送到“生產”分支時,您可以將其中一些任務添加為送出後掛鉤。

Rsync 將是最快和最安全的選擇。確保排除任何不應在生產中的文件(備份文件、vim .swp 文件等)。

引用自:https://serverfault.com/questions/424725