Almalinux 9 でwordpress 環境構築してみた① (nginx + php-fpm)

# 前提

- TeraTerm 5 系が使用できること (ssh 接続できればなんでも大丈夫です)

# 記事目次

- nginx + php-fpm インストールと設定 <- 今回の記事


- MySQL の設定とWordpress インストールなど


# nginx をインストールしてみよう

デフォルトでインストールできるのが nginx 1.22 みたいなので、それをインストールしていくことにします。
```
dnf module list nginx
Last metadata expiration check: 0:03:22 ago on Tue 05 Mar 2024 02:28:47 PM UTC.
AlmaLinux 9 - AppStream
Name                                Stream                               Profiles                                Summary
nginx                               1.22                                 common [d]                              nginx webserver

```

```
dnf install nginx
```
complete となっていればオッケーです。


参考記事:

https://sixwish.jp/Linux-Note/AlmaLinux-8_6/section051/

# php をインストールしてみよう

今回は、php 7.4 系をインストールしたいので、デフォルトバージョンを確認したところ、php 8.1 しかデフォルトでインストールできないみたいです。

```
dnf module list php
Last metadata expiration check: 0:08:23 ago on Tue 05 Mar 2024 02:28:47 PM UTC.
AlmaLinux 9 - AppStream
Name                         Stream                         Profiles                                           Summary
php                          8.1                            common [d], devel, minimal                         PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
```

PHP 7.4 をインストールするためにrepo とremi をインストールしていきます。サードパーティーのレポをいれて、インストールできる幅を増やそうという魂胆です。

```
# EPEL repo
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

# Remi repo
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
```

インストールしたところで、PHP のインストールできるバージョンをきいてみます。PHP 7.4 をインストールできるようになっていますね。
```
dnf module list php
Remi's Modular repository for Enterprise Linux 9 - x86_64                                                                    154 kB/s | 655 kB     00:04
Safe Remi's RPM repository for Enterprise Linux 9 - x86_64                                                                   211 kB/s | 989 kB     00:04
AlmaLinux 9 - AppStream
Name                         Stream                           Profiles                                          Summary
php                          8.1                              common [d], devel, minimal                        PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name                         Stream                           Profiles                                          Summary
php                          remi-7.4                         common [d], devel, minimal                        PHP scripting language
php                          remi-8.0                         common [d], devel, minimal                        PHP scripting language
php                          remi-8.1                         common [d], devel, minimal                        PHP scripting language
php                          remi-8.2                         common [d], devel, minimal                        PHP scripting language
php                          remi-8.3                         common [d], devel, minimal                        PHP scripting language
```
普通にインストールすると、PHP 8 系がインストールされるので、それを避けるために、remi のPHP を指定してあげましょう。
```
# 普通にphp install する場合
dnf install php

# module を指定した場合
dnf module install php:remi-7.4

# package 一覧
Installing group/module packages:
 php-cli                                 x86_64                        7.4.33-10.el9.remi                          remi-modular                        4.5 M
 php-common                              x86_64                        7.4.33-10.el9.remi                          remi-modular                        784 k
 php-fpm                                 x86_64                        7.4.33-10.el9.remi                          remi-modular                        1.6 M
 php-mbstring                            x86_64                        7.4.33-10.el9.remi                          remi-modular                        519 k
 php-xml                                 x86_64                        7.4.33-10.el9.remi                          remi-modular                        171 k
Installing dependencies:
 httpd-filesystem                        noarch                        2.4.57-5.el9                                appstream                            12 k
 libxslt                                 x86_64                        1.1.34-9.el9                                appstream                           240 k
 oniguruma5php                           x86_64                        6.9.9-1.el9.remi                            remi-safe                           219 k
 php-json                                x86_64                        7.4.33-10.el9.remi                          remi-modular                         35 k
Installing module profiles:
 php/common
Enabling module streams:
 php                                                                   remi-7.4
```

# nginx とPHP を繋げてみよう

```
# conf file 作成
touch /etc/nginx/conf.d/example.com.conf

# /var/www/html のドキュメントルートにファイル配置
touch /var/www/html/index.php

```

nginxのconf ファイルの中身


```
server {
        listen 80;
        server_name example.com;
        keepalive_timeout 5;
        access_log /var/log/nginx/example-com-access.log;
        error_log /var/log/nginx/example-com-error.log;

        location  / {
                root /var/www/html;
                index index.php index.html;
                try_files $uri $uri/ /index.php?$args;
                include /etc/nginx/mime.types;
        }

        location  ~ \.php$ {
                  root /var/www/html;
                  fastcgi_pass unix:/var/run/php-fpm/www.sock;
                  fastcgi_index index.php;
                  include fastcgi_params;
                  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                  fastcgi_param PATH_INFO $fastcgi_path_info;
        }
}
```

php-fpm で修正したのは、user とgroup をnginx ユーザに修正したのみです。それをやらないとどうも無理みたいでした。。

# 備忘録

以下のエラーがでてかなり困りました。
原因は、php-fpm のディレクティブに root を記述してあげることでした。
私の場合、phpファイルにアクセスした時に、file not found 表示が出るみたいでした。

```
Primary script unknown" while reading response header from upstream,,,,
```

```
# 修正前

        location  ~ \.php$ {
                  fastcgi_pass unix:/var/run/php-fpm/www.sock;
                  fastcgi_index index.php;
                  include fastcgi_params;
                  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                  fastcgi_param PATH_INFO $fastcgi_path_info;
        }

# 修正後

                location  ~ \.php$ {
                  root /var/www/html;
                  fastcgi_pass unix:/var/run/php-fpm/www.sock;
                  fastcgi_index index.php;
                  include fastcgi_params;
                  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                  fastcgi_param PATH_INFO $fastcgi_path_info;
        }
```

# 参考サイト


https://www.server-world.info/query?os=AlmaLinux_9&p=nginx&f=2

https://qiita.com/shohei_ot/items/8606c5457533b3532cb2

https://qiita.com/MiyaseTakurou/items/923c28f7ac60b2ce761a