6
8

More than 3 years have passed since last update.

Apache + php-fpm の環境構築

Last updated at Posted at 2021-06-28

背景

Apache + php-fpm で環境構築する勉強をしたので手順として残します。
以前に、php を cgi版で動かしてみたので、次は FastCGI で動かしてみようと思い、取り組みました。

仕事ではソースコードからインストールするのですが、今回はWebサーバとして公開しないのと設定ファイルの確認程度なので、yum でインストールします。

インストール後にきれいに後片付けできるように docker のコンテナ上で作業します。

環境

ホストOS:Amazon Linux release 2 (Karoo)
コンテナOS:CentOS Linux release 7.9.2009 (Core)
Docker version 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 を起動して、testページが表示されるか確認します。

httpd -k start

testページが表示されたらOKです。

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 にしてます。
この設定はプロセス起動時に 2つの子プロセスを起動して、子プロセスの数は変動しないという設定です。

詳しくは以下サイトを参照してください。
php の公式ページです。

設定ファイルは以下のように変更しております。
他はデフォルトのままです。

/etc/php-fpm.d/www.conf
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 が表示されればOKです。
以下のように表示されているはずです。

image.png

最後に

今回は Apache + php-fpm で環境構築しました。
php-fpm のプロセスに html, php ファイルの処理を Apache から渡すように設定ファイルを書いています。

Apache, php-fpm どちらも設定はほとんどしていないので、運用するWebサーバにこの手順を使う際はセキュリティやログの出力先など詳細な設定をしてください。

最後まで読んでいただきありがとうございました。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8