輕鬆部署 Laravel 應用 | 《06. 手動部署 - 安裝 PHP-FPM》

Wi1dcard發表於2019-03-07

:clap: 本系列持續更新中,歡迎關注:https://github.com/wi1dcard/laravel-deploy...

由於課程上下文關聯比較緊密,在開始前請先閱讀 本文

你的支援是我寫作的動力;關注我的客官們,請在右上角點個贊,將會讓文章在首頁展示,幫助更多人。

感謝 :clap: !

PHP 環境是執行 Laravel 應用必不可少的元件之一,本節將帶領大家安裝 PHP 7.2。

配置第三方軟體源

由於 Ubuntu 的官方軟體源通常不包含最新版本的 PHP,因此需要新增一個包含最新 PHP 的第三方軟體源。

在新增之前,我們首先安裝名為 software-properties-common 的軟體包,它提供了快速管理軟體源的實用指令碼:

$ apt install -y software-properties-common

相比之前執行的 apt install 命令,這次我新增了 -y 選項,表示當 APT 遇到詢問時預設確認,避免再次輸入 Y 並回車。

隨後,執行以下指令碼新增第三方 PHP 軟體源:

$ add-apt-repository -y ppa:ondrej/php

成功後別忘記重新整理:

$ apt-get update

安裝 PHP

PHP 的安裝實際上分為三個軟體包:

  • PHP - PHP 自身。
  • PHP-CLI - PHP 的命令列介面,通俗地說,在命令列內執行 php 便依賴於此包。
  • PHP-FPM - 全稱為 PHP FastCGI Process Manager,用於管理 PHP 程式,並提供 FastCGI 介面與 Nginx 互動;瀏覽網頁時的請求便是由 Nginx 交由 PHP-FPM 處理的。

apt install 支援多引數,所以我們不必執行多次安裝,只需在單條命令內寫明多個軟體包即可:

$ apt install -y php7.2 php7.2-cli php7.2-fpm

按照 Laravel 5.8 安裝文件 的說明,接著安裝幾個必備的 PHP 擴充套件:

$ apt install -y php7.2-mbstring php7.2-xml php7.2-bcmath

注意:由於 PDO 等擴充套件已經內建在 PHP 中,故無需額外安裝。

對於不同專案的不同依賴,可能有必要安裝以下擴充套件,根據實際情況選擇即可:

$ apt install php7.2-curl php7.2-gd php7.2-mysql php7.2-opcache php7.2-zip php7.2-sqlite3

有個小技巧是,你可以通過 apt-cache 命令來搜尋當前軟體源內的包:

$ apt-cache search php7.2

例如以上命令,將會得到所有名稱、描述等資訊內包含 php7.2 字樣的軟體包:

php-amqp - AMQP extension for PHP
php-apcu - APC User Cache for PHP
php-geoip - GeoIP module for PHP
...

管理 PHP-FPM 服務

與管理 Nginx 服務類似,你同樣可以通過 servicesystemctl 命令管理 PHP-FPM 服務:

$ service php7.2-fpm restart # 重啟 PHP-FPM
$ service php7.2-fpm start # 啟動 PHP-FPM
$ service php7.2-fpm stop # 停止 PHP-FPM
$ systemctl enable php7.2-fpm # 啟用 PHP-FPM 開機啟動
$ systemctl disable php7.2-fpm # 禁用 PHP-FPM 開機啟動

注意:不同版本的 PHP-FPM 服務名是不一致的。例如 7.2 為 php7.2-fpm,7.3 為 php7.3-fpm,以此類推……

確認 PHP-FPM 正常執行

通過以下命令可確認 PHP-FPM 程式正在執行:

$ ps aux | grep php

其中:

  • ps aux 用於列出系統當前正在執行的所有程式的所有資訊。
  • | 名為管道操作符,將前一條命令的標準輸出連線到下一條命令的標準輸入。
  • grep 是一款文字搜尋工具,常用來過濾命令列輸出;php 是搜尋的關鍵詞。

ps 將程式資訊輸出到 grep 進行過濾,後者篩選出包含 php 字樣的行,再將它們輸出。於是,它們相結合,產生的效果便是這樣:

root      6546  0.0  3.8 315484 19340 ?        Ss   14:13   0:00 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
www-data  6550  0.0  1.0 315484  5260 ?        S    14:13   0:00 php-fpm: pool www
www-data  6551  0.0  1.0 315484  5260 ?        S    14:13   0:00 php-fpm: pool www
root      6566  0.0  0.1  15964   920 pts/0    S+   14:13   0:00 grep --color=auto php

忽略最後一行(這是我們正在執行的 grep 命令),可觀察到有 php-fpm 程式正在執行中。

若 PHP-FPM 程式不存在,那麼輸出將只有孤零零的 grep

root      6722  0.0  0.1  15964   920 pts/0    S+   14:24   0:00 grep --color=auto php

提示:你可以結合上文提到的 service 命令,將服務程式手動停止試試看;測試完畢不要忘記再次啟動。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Former WinForm and PHP Engineer. Now focus on #DevSecOps and global networking.

相關文章