搭建 Apache + php-fpm 的环境
背景
我在 Apache + php-fpm 上进行环境搭建的学习,现将步骤记录下来。之前尝试了使用 cgi 版本的 php,这次想尝试使用 FastCGI,所以着手进行了尝试。
由于这次工作中仅需确认一下配置文件且无需将其作为Web服务器公开,因此我们将使用yum进行安装,而不是从源代码中安装。
为了在安装后能够清理干净,我会在docker容器上进行操作。
环境
环境(Huan Jing)
主机操作系统:亚马逊Linux发行版2(Karoo)
容器操作系统:CentOS Linux发行版7.9.2009(Core)
Docker版本20.10.4
Apache/2.4.6
PHP 5.4.16(fpm-fcgi)
操作步骤
准备集装箱
创建并启动容器。
sudo docker run -tid -v /opt/app/:/var/www/html -p 80:80 centos:centos7
我要进入集装箱。
d5 是集装箱的ID。
sudo docker exec -ti d5 bash
安装Apache
首先执行 yum update。
yum update -y
然后,安装Apache。
yum install -y httpd
我将启动Apache并确认测试页面是否显示。
httpd -k start
当测试页面显示出来时,就代表通过了。
安装php-fpm
安装php-fpm。
yum install -y php-fpm
php-fpm -v
PHP 5.4.16 (fpm-fcgi)
编辑php-fpm的配置文件。
这次我们将使用UNIX域套接字与Apache进行交互。
另外,pm设为static,pm.max_children设为2。
这个设置表示在进程启动时会启动两个子进程,并且子进程的数量将保持不变。
请查阅以下网站以获取更详细信息。
这是 PHP 的官方页面。
我们已经对设置文件进行了如下更改,其他仍保持默认状态。
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = apache
listen.group = apache
listen.mode = 0660
pm = static
pm.max_children = 2
设置完成后,启动php-fpm。
nohup php-fpm &
编辑Apache的配置文件
编辑文档根目录的设置。
具有html或php扩展名的文件将被传递给php-fpm进行处理。
<Directory "/var/www/html">
<FilesMatch \.(html|php)$>
SetHandler "proxy:unix:/var/run/php-fpm/php-fpm.sock|fcgi://localhost"
</FilesMatch>
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
当设定完成后,重新启动 Apache。
httpd -k stop
httpd -k start
确认行动
展示phpinfo并确认其是否正常工作。
将php文件放置在文档根目录中。
vi /var/www/html/index.php
<?php echo phpinfo(); ?>
在浏览器中输入URL,并确保phpinfo显示出来即可,应该显示如下内容。
最后
我們這次使用 Apache + php-fpm 來建立環境。
我們編寫了設定檔案,將 Apache 上的 html、php 檔案處理交給 php-fpm 的進程。
Apache 和 php-fpm 都没有进行太多的配置,所以在使用这个步骤来操作 Web 服务器时,请进行详细的设置,如安全性和日志输出目标。
非常感谢您读到最后。