輕鬆部署 Laravel 應用 | 《開篇》

Wi1dcard發表於2019-03-04

專案倉庫:https://github.com/wi1dcard/laravel-deploy...,與 Laravel-China 保持同步。

簡介

專案開發完成,如何向世界展示你的作品?必不可少的一步就是 部署

實際上,目前國內大多創業型公司,對於程式設計師技能樹的要求少不了部署。除了編寫高效穩定的程式碼外,你還需要將這份程式碼快速、安全地部署到線上以供演示和交付等。這對於長期與 Laravel 和 PHP 打交道的開發者來說確實存在一些門檻:

  • 寶塔皮膚?一鍵包?手動部署?
  • 一鍵指令碼都做了什麼?怎樣手動部署?
  • 有沒有辦法簡化上述過程?
  • 出現故障怎麼辦?如何快速回滾版本?
  • ...

我早期一直從事 PHP 開發工作,對於以上問題曾經也感到困惑;近期轉型運維向,在這個「痛苦」的學習過程中,我發現多數 PHP 程式設計師對部署並不熟悉;就像「隔行如隔山」,原本十分簡易的流程,大家還在用著陳舊的工具、讀著過時的教程,最終讓部署成了一件難事兒。

目的

本課程內,我將盡全力降低對於運維以及 Shell 專業知識的要求,以儘可能貼近國內 PHP 工程師的方式講述部署過程。讀者可跟隨課程描述,邊學習邊操作,快速瞭解整套流程,一步一步地實現釋出上線。

同時,我將嘗試多種部署方式。在這個過程中,你將感受到不同方案帶來的優勢,同時也不可避免地存在一些缺點,希望大家能夠結合自身情況和實際需求,記住 適合即最優

知識點

上線 Laravel 專案,在技術層面基本可以分為三大步驟:

  1. 安裝執行環境
  2. 配置執行環境
  3. 部署應用程式碼

以及可選項:

  1. 更新應用
  2. 回滾應用

預期大綱:

  • [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 協議》,轉載必須註明作者和本文連結
Former WinForm and PHP engineer. Now prefer Golang and Rust, and mainly working on DevSecOps and Kubernetes.

相關文章