轻松部署 Laravel 应用 | 《06. 手动部署 - 安装 PHP-FPM》
: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 服务类似,你同样可以通过 service
和 systemctl
命令管理 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 协议》,转载必须注明作者和本文链接
推荐文章: