環境
- ホスト:Windows 10 Pro
- VM環境:Virutalbox+Vagrant
目標
ゲストOSのCentOS8.1にNginx、php、MySQL、phpMyAdminを入れて動作を確認する。
ウェブサイトの動作確認用に使用するVM環境であるため(開発はWindows上で行っている)、Vagrantの共有フォルダ機能を用いてソースファイルを共有し、ゲストへのUpload作業をしないでいいようにします。
※これまでにLAMPでやっていたのを、LEMPで構築したいので、ついでにCentOS8.1を試したという経緯です。
作業内容
Nginxのインストール
- Version: 1.16
CentOSは8.1だが、元々は8.0を入れてからの更新であるためか、8.1でもそうなのか、nginx1.14がデフォルトになっていたので、どうせならと思い、1.16を入れてみる。
dnf module reset nginx
dnf module enable nginx:1.16
dnf -y module install nginx
を実行しました。
phpのインストール
- Version : 7.4
Centos8のデフォルトはPHP7.2とか、8.1はPHP7.3なのかな?なので、
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf module reset php
dnf list php
dnf -y module install php:remi-7.4
でPHP7.4をremiから入れました。
MySQLのインストール
- Version: 8.0
バージョンについては本当はMySQL5.7を入れた方が実環境なのだけど、Centos8.1にMySQL5.7は面倒っぽかったのと、新しいものを入れて試しておきたい気持ちもあって、8.0を入れてみる。
よくわかってないけど、CentOSに入ってるmysqlってCommunity-Serverじゃないのかな?ライセンスとかどうなんだ?ということでCommunity-Serverを入れてみる。
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.tar.gz
tar -zxvf phpMyAdmin-5.0.2-all-languages.tar.gz
mv phpMyAdmin-5.0.2-all-languages /usr/share/phpMyAdmin
cd /usr/share/phpMyAdmin/
これで配置は終わったので、nginxのVirtualhostかaliasでのアクセス設定が必要ですね。
NginxでのAlias設定
- 対象はphpMyAdminのみ
- アクセス先は http://192.168.33.10/phpmyadmin
- 実体は /usr/share/phpMyAdmin
さて、ここで問題発生です。ずっとApacheしか触って来てないので、全くわかりません。ググります。
簡単な記述でできることが判明したので、
location /phpmyadmin {
alias /usr/share/phpMyAdmin;
index index.php;
}
そして、Virtualhostの設定も
server {
listen 80;
server_name test.centos81.vm;
access_log /var/log/nginx/access_logs/test.vm.log main;
location / {
root /projects/test;
index index.html index.php;
}
}
で終わったと思いきや、、、動かないですね-、両方とも。。。
403エラー出ってますねー。failed (13: Permission denied)というのがerror.logに残ってますねー。
ここから数時間経過します
そして、原因がいくつか判明。
原因その1) PHPをAliasで動かすには fastcgiの設定が必要
下記のサイトを参考にさせて頂きました。
んで、
location /phpmyadmin {
alias /usr/share/phpMyAdmin;
index index.php;
location ~ \.php$ {
include fastcgi_params;
fastcgi_read_timeout 360;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
fastcgi_pass の表記は参考にさせて頂いたサイトもどこのサイトも
unix:/var/run/php-fpm/php-fpm.sock; とか unix:/var/run/php5-fpm/php-fpm.sock; とかってなってたけど、今回の環境は7.4だしCentOS8.1だしで、違うので、/var/run/ の中を確認してwww.sockを見つけた。これは正解なのかわかりません。
でもやっぱり動かない。
原因その2)SELinuxっていう守護神
これは、エラーが403なので、ユーザー変えたり、chmodしたり、chownしたりしても解決できずに諦めかけた時に見つかりました。
こちらのページで、まさに私の探していた情報がありました。※ハマッたので、記載ありがとうございます。
というわけで、
getenfoece
> Enforcing
setenforce 0
getenfoece
> Permissive
の後、無事にVirtualhostも表示できたし、phpの実行も確認できました。なので、SELinuxはおやすみなさい。
vi /etc/selinux/config
-SELINUX=Enforcing
+SELINUX=Permissive
おまけ
Aliasは動くようになったけど、mysqliが無いって怒られたので、
dnf -y install php-mysqlnd
これで、phpMyAdmin 動いた。
結果
NginxやCentOSの常識を書いてるかもしれないけれど、私には常識ではなかったので勉強になりました。
NginxとApache、どっちがいいとかはないんだろうけど、両方知ってた方がいいんだろう。