【CentOS stream 9】Nginxでphp、phpMyAdminを使う
CentOS stream 9にNginxとMariaDB、PHPをインストールした後、phpMyAdminを使えるようにします。
VPSはConoHa VPSを使用しています。
関連記事 Nginx系インストール 1.ConoHa VPS のSSHセキュリティを強化する 2.【CentOS stream 9】 Nginxをインストールする 3.【CentOS stream 9】 Maria DBをインストールする 4.【CentOS stream 9】 phpをインストールする 5.【CentOS stream 9】 Nginxでphp、phpMyAdminを使う 6.【CentOS stream 9】 composerをインストールする 7.【CentOS stream 9】 Nginxに let's encrypt SSL証明書インストール
関連記事 ドメイン ConoHa WING VPS に サブドメインを追加する
Nginxでphpを使うための手順
【CentOS stream 9】 phpをインストールするの続きです。
Nginxでphpを使えるようにするために、まずは
「php-fpm.d/www.conf」ファイルを編集します。
# vi /etc/php-fpm.d/www.conf
24行目と26行目をapacheからnginxに変更します。
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache
変更後
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
phpセッションの保存先を変更する
phpのアップデートがあると、「/var/lib/php/session」のグループがnginxからapacheに変わってしまいPHPセッションが効かなくなるため、phpセッションの保存先を変更します。
参考サイト:phpのアップデートがあるたびに/var/lib/php/sessionのパーミッションを変更してたけどめんどくさいので恒久対策をした – 絶望の麺ジニア
# vi /etc/php-fpm.d/www.conf
436行目あたりを変更します。
php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache ;php_value[opcache.file_cache] = /var/lib/php/opcache
↓変更後
php_value[session.save_handler] = files ;php_value[session.save_path] = /var/lib/php/session php_value[session.save_path] = /var/lib/php/nginx_session php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache ;php_value[opcache.file_cache] = /var/lib/php/opcache
新しいセッションの保存先を作成
# mkdir /var/lib/php/nginx_session
グループ変更
# chown root:nginx /var/lib/php/nginx_session/
パーミッション変更
# chmod 770 /var/lib/php/nginx_session/
変更後の確認
# ls -la /var/lib/php/ total 28 drwxr-xr-x 7 root root 4096 Jun 2 01:37 . drwxr-xr-x. 38 root root 4096 Jun 2 00:46 .. drwxrwx--- 2 root nginx 4096 Jun 2 01:37 nginx_session drwxrwx--- 2 root apache 4096 Dec 22 21:53 opcache drwxr-xr-x 2 root root 4096 Dec 22 21:53 peclxml drwxrwx--- 2 root apache 4096 Dec 22 21:53 session //こちらは使わない drwxrwx--- 2 root apache 4096 Dec 22 21:53 wsdlcache
php-fpm再起動
# systemctl restart php-fpm
php-fpmサービスの状態確認
# systemctl status php-fpm ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2022-05-26 04:33:56 JST; 13min ago Main PID: 157189 (php-fpm) Status: "Processes active: 0, idle: 6, Requests: 13, slow: 0, Traffic: 0req/sec" Tasks: 7 (limit: 2702) Memory: 47.4M CPU: 857ms CGroup: /system.slice/php-fpm.service ├─157189 "php-fpm: master process (/etc/php-fpm.conf)" ├─157190 "php-fpm: pool www" ├─157191 "php-fpm: pool www" ├─157192 "php-fpm: pool www" ├─157193 "php-fpm: pool www" ├─157194 "php-fpm: pool www" └─157227 "php-fpm: pool www" May 26 04:33:56 systemd[1]: Starting The PHP FastCGI Process Manager... May 26 04:33:56 systemd[1]: Started The PHP FastCGI Process Manager.
php-fpmの自動化
# systemctl enable php-fpm Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
nginxの再起動
# systemctl restart nginx
phpファイルの作成
# touch /usr/share/nginx/html/info.php
phpファイルを編集
# vi /usr/share/nginx/html/info.php
「i」を押してインサートモードへ、
<?php session_start(); phpinfo(); ?>
このように記述して、「:wq」を入力、エンター押下で保存して終了
ブラウザのアドレスバーに「http://160.251.100.96(VPSのIPアドレス)/info.php」と入力してアクセス
セッションが作られているか確認
# ll /var/lib/php/nginx_session/ total 0 -rw------- 1 nginx nginx 0 Jun 2 01:46 sess_tj0a1ureo3alvunnop1fbvbjqk
セッションが作られていないことを確認
# ll /var/lib/php/session/ total 0
もしあれば、古いセッション削除
# rm -rf /var/lib/php/session/*
phpでディレクトリを作りたい
下記のようなphpファイルにブラウザアクセスして、ディレクトリを作りたい時、
<?php $new_dir = './testdir'; mkdir($new_dir); ?>
こんなエラーログが出てディレクトリが作れないときは
2022/05/28 01:29:33 [error] 157632#157632: *1567 FastCGI sent in stderr: "PHP message: PHP Warning: mkdir(): Permission denied in /usr/share/nginx/html/dircopytest.php on line 3" while reading response header from upstream, client: 210.2XX.XX.XXX, server: _, request: "GET /dircopytest.php HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/www.sock:", host: "160.251.XXX.XXX"
nginxのドキュメントルートの所有者をnginxにすることで解決します。
# chown -R nginx:nginx /usr/share/nginx/html/
# ls -la /usr/share/nginx/
total 20
drwxr-xr-x 5 root root 4096 May 27 04:29 .
drwxr-xr-x. 108 root root 4096 May 26 04:17 ..
drwxr-xr-x 13 nginx nginx 4096 May 28 01:43 html
drwxr-xr-x 3 root root 4096 May 27 04:24 __MACOSX
drwxr-xr-x 2 root root 4096 Feb 3 05:10 modules
NginxでphpMyAdminを使うための手順
phpMyAdminのインストールから行います。
dnf installコマンドでphpMyAdminをインストールします。
php8.1をremiからインストールしている場合は「dnf –enablerepo=remi install phpMyAdmin」コマンドでインストールします。
# dnf install phpMyAdmin
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use subscription-manager to register.
Last metadata expiration check: 0:13:49 ago on Thu 02 Jun 2022 03:10:16 AM JST.
Dependencies resolved.
================================================================================================================
Package Architecture Version Repository Size
================================================================================================================
Installing:
phpMyAdmin noarch 5.2.0-1.el9 epel 7.5 M
Installing dependencies:
gd x86_64 2.3.2-3.el9 appstream 132 k
jbigkit-libs x86_64 2.1-23.el9 appstream 53 k
libXpm x86_64 3.5.13-7.el9 appstream 59 k
libtiff x86_64 4.2.0-3.el9 appstream 194 k
libwebp x86_64 1.2.0-3.el9 appstream 278 k
libzip x86_64 1.7.3-7.el9 appstream 64 k
php-gd x86_64 8.0.13-1.el9 appstream 46 k
php-intl x86_64 8.0.13-1.el9 appstream 154 k
php-mysqlnd x86_64 8.0.13-1.el9 appstream 155 k
php-pecl-zip x86_64 1.19.2-6.el9 appstream 58 k
php-process x86_64 8.0.13-1.el9 appstream 48 k
Transaction Summary
================================================================================================================
Install 12 Packages
Total download size: 8.7 M
Installed size: 47 M
Is this ok [y/N]:y
yを入力してエンター
Downloading Packages:
(1/12): jbigkit-libs-2.1-23.el9.x86_64.rpm 1.5 MB/s | 53 kB 00:00
(2/12): libXpm-3.5.13-7.el9.x86_64.rpm 1.6 MB/s | 59 kB 00:00
(3/12): gd-2.3.2-3.el9.x86_64.rpm 2.9 MB/s | 132 kB 00:00
(4/12): libtiff-4.2.0-3.el9.x86_64.rpm 13 MB/s | 194 kB 00:00
(5/12): libzip-1.7.3-7.el9.x86_64.rpm 7.1 MB/s | 64 kB 00:00
(6/12): libwebp-1.2.0-3.el9.x86_64.rpm 12 MB/s | 278 kB 00:00
(7/12): php-gd-8.0.13-1.el9.x86_64.rpm 5.0 MB/s | 46 kB 00:00
(8/12): php-intl-8.0.13-1.el9.x86_64.rpm 13 MB/s | 154 kB 00:00
(9/12): php-pecl-zip-1.19.2-6.el9.x86_64.rpm 8.0 MB/s | 58 kB 00:00
(10/12): php-mysqlnd-8.0.13-1.el9.x86_64.rpm 10 MB/s | 155 kB 00:00
(11/12): php-process-8.0.13-1.el9.x86_64.rpm 4.6 MB/s | 48 kB 00:00
(12/12): phpMyAdmin-5.2.0-1.el9.noarch.rpm 15 MB/s | 7.5 MB 00:00
----------------------------------------------------------------------------------------------------------------
Total 5.1 MB/s | 8.7 MB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Running scriptlet: phpMyAdmin-5.2.0-1.el9.noarch 1/1
Preparing : 1/1
Installing : libwebp-1.2.0-3.el9.x86_64 1/12
Installing : php-process-8.0.13-1.el9.x86_64 2/12
Installing : php-mysqlnd-8.0.13-1.el9.x86_64 3/12
Installing : php-intl-8.0.13-1.el9.x86_64 4/12
Installing : libzip-1.7.3-7.el9.x86_64 5/12
Installing : php-pecl-zip-1.19.2-6.el9.x86_64 6/12
Installing : libXpm-3.5.13-7.el9.x86_64 7/12
Installing : jbigkit-libs-2.1-23.el9.x86_64 8/12
Installing : libtiff-4.2.0-3.el9.x86_64 9/12
Installing : gd-2.3.2-3.el9.x86_64 10/12
Installing : php-gd-8.0.13-1.el9.x86_64 11/12
Installing : phpMyAdmin-5.2.0-1.el9.noarch 12/12
Running scriptlet: phpMyAdmin-5.2.0-1.el9.noarch 12/12
Verifying : gd-2.3.2-3.el9.x86_64 1/12
Verifying : jbigkit-libs-2.1-23.el9.x86_64 2/12
Verifying : libXpm-3.5.13-7.el9.x86_64 3/12
Verifying : libtiff-4.2.0-3.el9.x86_64 4/12
Verifying : libwebp-1.2.0-3.el9.x86_64 5/12
Verifying : libzip-1.7.3-7.el9.x86_64 6/12
Verifying : php-gd-8.0.13-1.el9.x86_64 7/12
Verifying : php-intl-8.0.13-1.el9.x86_64 8/12
Verifying : php-mysqlnd-8.0.13-1.el9.x86_64 9/12
Verifying : php-pecl-zip-1.19.2-6.el9.x86_64 10/12
Verifying : php-process-8.0.13-1.el9.x86_64 11/12
Verifying : phpMyAdmin-5.2.0-1.el9.noarch 12/12
Installed products updated.
Installed:
gd-2.3.2-3.el9.x86_64 jbigkit-libs-2.1-23.el9.x86_64 libXpm-3.5.13-7.el9.x86_64
libtiff-4.2.0-3.el9.x86_64 libwebp-1.2.0-3.el9.x86_64 libzip-1.7.3-7.el9.x86_64
php-gd-8.0.13-1.el9.x86_64 php-intl-8.0.13-1.el9.x86_64 php-mysqlnd-8.0.13-1.el9.x86_64
php-pecl-zip-1.19.2-6.el9.x86_64 php-process-8.0.13-1.el9.x86_64 phpMyAdmin-5.2.0-1.el9.noarch
Complete!
「Complete!」と表示されればOK
Nginxの再起動
systemctl restart nginx
phpMyAdminにアクセス
ブラウザのアドレスバーに「http://(VPSのIPアドレス)/phpMyAdmin」と入力してアクセス
phpMyAdminセキュリティ対策
phpMyAdminのアクセスURLをデフォルト「/phpMyAdmin/」から変更してセキュリティを強化します。
「/etc/nginx/default.d/phpMyAdmin.conf」を編集
# vi /etc/nginx/default.d/phpMyAdmin.conf
編集前
location = /phpMyAdmin { alias /usr/share/phpMyAdmin/; } location /phpMyAdmin/ { root /usr/share; index index.php index.html; location ~ ^/phpMyAdmin/(.+\.php)$ { try_files $uri =404; fastcgi_intercept_errors on; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass php-fpm; } }
編集後
location = /phpMyAdmin { alias /usr/share/phpMyAdmin/; } location /change-here { root /usr/share; index index.php index.html; allow 許可IPアドレス; #アクセス元のIPアドレスを制限したい場合はこの行も追記する deny all; #アクセス元のIPアドレスを制限したい場合はこの行も追記する location ~ ^/change-here/(.+\.php)$ { try_files $uri =404; fastcgi_intercept_errors on; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass php-fpm; } }
phpMyAdminのルートディレクトリ名を変更
# mv /usr/share/phpMyAdmin/ /usr/share/change-here/
Nginxのコンフィグ正常性確認
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginxの再起動
# systemctl restart nginx
ブラウザのアドレスバーに「http://(VPSのIPアドレス)/change-here」と入力してアクセス確認する
「change-here」の部分はランダムな英数字記号の組み合わせが良いです。
次やること 6.【CentOS stream 9】 composerをインストールする
参考サイト
NginxでphpMyAdminを使用する [CentOS]
NginxでPHP7(PHP-FPM)を動作させる [CentOS]
簡単に nginx でhttpsを実施する方法 – Opensourcetechブログ
centos stream 9 に nginx と php8.1 をインストール – Qiita
ディスカッション
コメント一覧
まだ、コメントがありません