搭建 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显示出来即可,应该显示如下内容。

image.png

最后

我們這次使用 Apache + php-fpm 來建立環境。
我們編寫了設定檔案,將 Apache 上的 html、php 檔案處理交給 php-fpm 的進程。

Apache 和 php-fpm 都没有进行太多的配置,所以在使用这个步骤来操作 Web 服务器时,请进行详细的设置,如安全性和日志输出目标。

非常感谢您读到最后。

广告
将在 10 秒后关闭
bannerAds