專案倉庫:https://github.com/wi1dcard/laravel-deploy...,與 Laravel-China 保持同步。
簡介
專案開發完成,如何向世界展示你的作品?必不可少的一步就是 部署。
實際上,目前國內大多創業型公司,對於程式設計師技能樹的要求少不了部署。除了編寫高效穩定的程式碼外,你還需要將這份程式碼快速、安全地部署到線上以供演示和交付等。這對於長期與 Laravel 和 PHP 打交道的開發者來說確實存在一些門檻:
- 寶塔皮膚?一鍵包?手動部署?
- 一鍵指令碼都做了什麼?怎樣手動部署?
- 有沒有辦法簡化上述過程?
- 出現故障怎麼辦?如何快速回滾版本?
- ...
我早期一直從事 PHP 開發工作,對於以上問題曾經也感到困惑;近期轉型運維向,在這個「痛苦」的學習過程中,我發現多數 PHP 程式設計師對部署並不熟悉;就像「隔行如隔山」,原本十分簡易的流程,大家還在用著陳舊的工具、讀著過時的教程,最終讓部署成了一件難事兒。
目的
本課程內,我將盡全力降低對於運維以及 Shell 專業知識的要求,以儘可能貼近國內 PHP 工程師的方式講述部署過程。讀者可跟隨課程描述,邊學習邊操作,快速瞭解整套流程,一步一步地實現釋出上線。
同時,我將嘗試多種部署方式。在這個過程中,你將感受到不同方案帶來的優勢,同時也不可避免地存在一些缺點,希望大家能夠結合自身情況和實際需求,記住 適合即最優。
知識點
上線 Laravel 專案,在技術層面基本可以分為三大步驟:
- 安裝執行環境
- 配置執行環境
- 部署應用程式碼
以及可選項:
- 更新應用
- 回滾應用
預期大綱:
- [x] 常見一鍵 Web 皮膚
- [x] 常見一鍵配置指令碼
- [x] 手動安裝 Git、Nginx、Composer、PHP、PHP-FPM
- [ ] Envoy
- [ ] Deployer
- [ ] Ansible
- [ ] Terraform
- [ ] Lexicon
- ...
目錄結構
.
├── README.md --------- 導語
├── helpers ----------- 輔助指令碼目錄(無需關注)
│ ├── deploy
│ ├── image
│ └── lint
└── src --------------- 實際課程目錄
├── *.md ---------- Markdown 格式的文章
├── ...
└── images -------- 圖片目錄
├── *.png ----- 截圖、插圖等
└── ...
約定
在本課程中,若程式碼塊的行首字元為 $
,表示這是一行需要在命令列內執行的語句,例如:
$ echo "Hello deployment!"
在複製或輸入時,請去掉開頭的 $
。
在本課程中,將使用以下命令建立一個示例應用作為演示專案:
$ laravel new hello-deployment
在本課程中,如無特殊說明,將採用 Ubuntu Bionic 18.04 LTS
作為伺服器系統。
其它
常見注意事項如下:
- 更新節奏不固定,業餘時間寫作。暫時計劃 1-2 天每篇。
- 本課程將不再贅述雲服務購買等 基礎且具備商業支援 的步驟,如有疑問可參考 本文。
- 在開始學習前,請先了解一些基本概念,例如「什麼是 Linux」、「Nginx 是幹嘛的」。
- 對於 MySQL、Redis、ElasticSearch 等元件的安裝與調優不在本課程的大綱範圍內,建議使用現成的雲服務。
貢獻
如有任何建議或意見請 提交 Issue 指出,感謝您的關注。
本作品採用《CC 協議》,轉載必須註明作者和本文連結