轻松部署 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 协议》,转载必须注明作者和本文链接
看了这篇文章,才知道原来php是安装3个东西,感谢作者
@wanghan 欢迎继续关注😄
@Wi1dcard 一定继续关注~~
文章讲解的非常细致. 如果能将
NPM
yarn
redis
elasticserch
Memcached
弄一个扩展篇幅讲解就好了,毕竟开发中这些都是常用的软件.虽然说不难安装,对于文档来说,便于初学者学习@Flourishing 好的,列入后期计划。
用
ps aux | grep php|grep -v grep
多版本PHP用apt直接安装怎么分开来
@lovecn 嗯,是的,可以再连接一个管道,使用
grep -v
来排除不需要的行。不过由于增加了复杂度,并且没有带来非常显而易见的好处,鉴于面向的阅读群体,暂时不考虑修改此处的命令行。不过还是感谢提出建议。另外,不建议在一台服务器上安装多版本 PHP,容易造成混淆。我也暂时想不出什么场景需要多版本 PHP 的支持。
自己买的学习服务器是centos, 早知道买乌班图了。。。
@Wi1dcard 期待新的课程,centOS改成了乌班图果断跟着课程敲一遍,收货丰富