CentOS7 + nginx WordPressでパーマリンクが設定出来ないときの対処法

apacheでパーマリンクの設定をするときに

AllowOverride All

と設定するのは当たり前すぎて、ブログのネタにもならない話。

nginxでは

#vi /etc/nginx/conf.d/default.conf

location / { ←この「location」の{}の中に
        try_files $uri $uri/ /index.php?$args;
         ↑これを追記

#systemctl restart nginx

参考サイト:【Nginx】WordPressのパーマリンクの設定で気をつけること

CentOS7 + nginx phpMyAdminのインストール

phpMyAdminのインストール

「phpMyAdmin」の公式サイトへ行き、アーカイブのダウンロードURLを確認する。

今回は
「phpMyAdmin-4.9.7-all-languages.tar.gz」をダウンロードしてインストールする。
「https://files.phpmyadmin.net/phpMyAdmin/4.9.7/phpMyAdmin-4.9.7-all-languages.tar.gz」のダウンロードURLを使用。

#cd /usr/share/nginx/html
htmlの下にphpmyadフォルダにインストールする。

#wget https://files.phpmyadmin.net/phpMyAdmin/4.9.7/phpMyAdmin-4.9.7-all-languages.tar.gz

#tar xvf phpMyAdmin-4.9.7-all-languages.tar.gz

#mv phpMyAdmin-4.9.7-all-languages phpmyad

初期設定

sessionディレクトリのパーミッション変更

#cd /var/lib/php
#ls -la

drwxrwx--- 2 root apache 4096 10月 28 01:30 session
パーミッション修正前

#chown root:nginx -R session

drwxrwx--- 2 root nginx 4096 10月 28 01:30 session
パーミッション修正後

php.iniの修正

#vi /etc/php.ini

1248行目あたり
;session.save_path = "/tmp"
↓
session.save_path = "/var/lib/php/session"
先程パーミッションを変更したディレクトリを指定

default.confの修正

#cd /etc/nginx/conf.d
#vi default.conf

location ~ \.php$ {
・・・
}
の記述の次あたりに下記を追記
location /phpmyad {
    root /usr/share/nginx/html/;
    index index.php index.html index.htm;

    #allow 許可IP;アクセス制限の設定
    #deny all;
}
location ~ ^/phpmyad/(.+\.php)$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME 
    $document_root$fastcgi_script_name;
    include fastcgi_params;
}
location ~* ^/phpmyad/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
    root /usr/share/nginx/html/;
}

php-mysqliのインストール

# yum install --enablerepo=remi,remi-php74 php-mysqli

nginxとphp-fpmの再起動

# systemctl restart php-fpm

# systemctl restart nginx

ブラウザで「http://000.000.000.000/phpmyad/」にアクセスしてログイン画面の表示確認

CentOS7 + nginx nginxのインストール

nginxのインストール

#vi /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

#yum install --enablerepo=nginx nginx
nginxのインストール

#firewall-cmd --zone=public --add-port=80/tcp --permanent
firewallのポート開放

#firewall-cmd --reload
firewallのリロード

#firewall-cmd --list-all
ポート開放の確認

#systemctl start nginx
#systemctl enable nginx

php-fpmの初期設定

#vi /etc/php-fpm.d/www.conf

-user = apache
+user = nginx
-group = apache
+group = nginx

#systemctl start php-fpm
#systemctl enable php-fpm
#systemctl status php-fpm

ブラウザで「Welcome to nginx!」の表示確認

PHPの動作確認

「default.conf」の修正

#vi /etc/nginx/conf.d/default.conf

-#location ~ \.php$ {
+location ~ \.php$ {
-    #    root    html;
+        root    /usr/share/nginx/html;
-    #    fastcgi_pass   127.0.0.1:9000;
+        fastcgi_pass   127.0.0.1:9000;
-    #    fastcgi_index  index.php;
+        fastcgi_index  index.php;
-    #    fastcgi_param  SCRIPT_FILENAME /scripts$fastcgi_script_name;
+        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
-    #    include        fastcgi_params;
+        include        fastcgi_params;
-    #}
+    }

修正後の「default.conf」

location ~ \.php$ {
        root    /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
vi /usr/share/nginx/html/index.php

<?php phpinfo(); ?>
追記
systemctl restart nginx
nginxの再起動

ブラウザで「http://000.000.000.000/index.php」にアクセスしてphpinfoが表示されるか確認

VirtualBox上のサーバーで、ある日突然MySQLが起動しなくなった時のチェック項目

PHPMyAdminでブログのデータベースをエクスポートしている最中だか、完了後だったかに強制ログアウトみたいな状況になり、その後、ログインできなくなってしまった。ブラウザを立ち上げなおしたりしてみても状況は変わらず・・。

CentOS6のMySQLのデーモンを再起動してみたところ、デーモンすら起動しなくなってしまっていた。さようなら自宅サーバー・・・。と全てを無に帰してあげようと思ったが、ダメもとでググる先生に聞いてみたところ、あるサイトのあるコメントが解決を導いてくれた。

「ディスク容量いっぱいになってないですか?」

そんなことでこんな状況になるんかい!?と半信半疑に思いながらも、思い当たらない節もないことはなく、「Logwatch」の「Disk Space」がかなり切迫していたことを放置しておいたことを思い出し、とりあえずディスクを圧迫しているバックアップ等の巨大な圧縮ファイル等を退避させてみたところ無事MySQLのデーモンも起動し、PHPMyAdminにもログインできるようになりました。

VirtualBoxの仮想ハードディスクが元々8GBしか設定してなくて、巨大なバックアップ等の圧縮ファイルがごろごろ放置してあったところへ、データベースのエクスポートファイルが終止符を打ったようです。

実機ではハードディスクに十分余裕があるから滅多にこういうことにはならないでしょう。VirtualBoxならではのトラブルでした。

再現する元気もなく日記程度に留めておこうっと。