linuxでcentosインストールからphpソース展開まで環境構築したけどブラウザエラー出る時の対処法


CASE1.nginxのエラーページが出た場合

以下のようなエラー、そもそもnginxの起動すら出来てない。

#nginxの再起動
sudo systemctl restart nginx
#このコマンドを使うと以下のようなエラーが発生する。

Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.

エラー内容としてはnginxは実行できなかった。
"systemctl status nginx.service" と "journalctl -xe"詳細をかくにんしてくれとのこと

[root@localhost www]# sudo systemctl -l status nginx.service
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 木 2020-08-13 15:42:14 JST; 5s ago
     Docs: http://nginx.org/en/docs/
  Process: 2591 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)

 8月 13 15:42:11 localhost nginx[2591]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
 8月 13 15:42:12 localhost nginx[2591]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
 8月 13 15:42:12 localhost nginx[2591]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
 8月 13 15:42:13 localhost nginx[2591]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
 8月 13 15:42:13 localhost nginx[2591]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
 8月 13 15:42:14 localhost nginx[2591]: nginx: [emerg] still could not bind()
 8月 13 15:42:14 localhost systemd[1]: nginx.service: control process exited, code=exited status=1
 8月 13 15:42:14 localhost systemd[1]: Failed to start nginx - high performance web server.
 8月 13 15:42:14 localhost systemd[1]: Unit nginx.service entered failed state.
 8月 13 15:42:14 localhost systemd[1]: nginx.service failed.

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
こちらのエラーで、80番ポートは既に使われてるので実行できないとある。
なので80番ポートで何が使われてるかを確認する。

sudo lsof -i :80

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   2776 apache    4u  IPv6  25135      0t0  TCP *:http (LISTEN)
httpd   2777 apache    4u  IPv6  25135      0t0  TCP *:http (LISTEN)
httpd   2778 apache    4u  IPv6  25135      0t0  TCP *:http (LISTEN)
httpd   2779 apache    4u  IPv6  25135      0t0  TCP *:http (LISTEN)
httpd   2780 apache    4u  IPv6  25135      0t0  TCP *:http (LISTEN)
httpd   2781 apache    4u  IPv6  25135      0t0  TCP *:http (LISTEN)

nginxで開きたかったのにapacheが80番を占領していました。
なので、apacheをアンインストールします。

sudo yum remove -y httpd apr apr-util httpd-tools

#nginxを再起動
sudo systemctl restart nginx

#nginxを自動起動登録
systemctl enable nginx

これで、nginxの起動は出来るはず。

最後に、nginx -tコマンドでnginx設定ファイルの構文に問題ないかを確認できる。

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

CASE2.nginxは起動できているが、php-fpmがうまく動いてない場合

An error occurred.
Sorry, the page you are looking for is currently unavailable.
Please try again later.

If you are the system administrator of this resource then you should check the error log for details.

Faithfully yours, nginx.

まず、エラーログを見て、原因を確認、解明する。

エラーログは/var/log/nginx/error.logか/var/log/php-fpm/error.logなので、

cat /var/log/nginx/error.log

2020/08/13 16:26:10 [crit] 2867#2867: *2 connect() to unix:/var/run/php-fpm/php-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.0.97, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "192.168.168.90"
2020/08/13 16:26:10 [error] 2867#2867: *2 open() "/var/www/html/favicon.ico" failed (2: No such file or directory), client: 192.168.0.97, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.168.90", referrer: "http://~~/"

エラー文の解説

/var/www/html/favicon.ico" failed
アイコンがないことのエラーはブラウザを開ける開けないに関係ないのでスルー

connect() to unix:/var/run/php-fpm/php-fpm.sock failed
unixソケットファイル受信できないのでエラーが来ている。これはphp-fpmの設定ファイルを書き換えることで解決する。

設定ファイルは大抵、以下にあるので開こう。

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

以下の行が;でコメントアウトされてたら消そう。

これで大抵開ける。