CentOS 7NginxWordPress LNMP自宅サーバ

CentOS 7 に最新の LNMP 環境を構築する

happy-dog CentOS 7
スポンサーリンク

現状・条件

  • CentOS 7 の自宅サーバ環境です。
  • LAMP 環境 ( 開発環境 ) は 構築済み であり、加えて LNMP 環境 ( 本番環境 ) を追加する予定です。
  • 構築手順は LAMP 環境通りですが、Apache 設定を Nginx 設定に変更し、LNMP 環境を追加します。

Nginx を設定

Nginx 本家の RHEL/CentOS ガイドラインに沿って設定します。

Nginx のリポジトリをセットアップし、リポジトリから Nginx をインストールおよび更新できます。

必要なパッケージをインストールします。

[admin@centos7 ~]$ sudo yum install yum-utils

yum リポジトリをセットアップします。

Nginx 用のリポジトリファイルを下記のように作成します。

[admin@centos7 ~]$ sudo vi /etc/yum.repos.d/nginx.repo

↓ 以下をコピペします。

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

[nginx-mainline]
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
module_hotfixes=true
[admin@centos7 ~]$

※ デフォルトで Stable パッケージ が使用されますが、Mainline パッケージ を使用する際は、sudo yum-config-manager –enable nginx-mainline コマンドを使用できます。

Nginx をインストールします。

sudo yum install nginx コマンドでインストールします。
途中、GPG キー のインポート処理が行われますが、Fingerprint 値が 573b fd6b 3d8f bc64 1079 a6ab abf5 bd82 7bd9 bf62 と一致すれば y を入力して進めます。

[admin@centos7 ~]$ sudo yum install nginx

総ダウンロード容量: 766 k
Is this ok [y/d/N]: y   << ここ!

https://nginx.org/keys/nginx_signing.key から鍵を取得中です。
Importing GPG key 0x7BD9BF62:
Userid : “nginx signing key signing-key@nginx.com”
Fingerprint: 573b fd6b 3d8f bc64 1079 a6ab abf5 bd82 7bd9 bf62
From : https://nginx.org/keys/nginx_signing.key
上記の処理を行います。よろしいでしょうか? [y/N]y   << ここ!
Running transaction check
Running transaction test
Transaction test succeeded

これで、Nginx のインストールは完了です。
以下はインストール情報と主なパス情報です。

  • 設置られたパッケージ名:nginx.x86_64
  • 実行ファイル:/sbin/nginx
  • ドキュメントルート:/usr/share/nginx/html/
  • 設定ファイル:/etc/nginx
[admin@centos7 ~]$ sudo which nginx
/sbin/nginx

[admin@centos7 ~]$ sudo yum list installed | cut -d " " -f 1  | grep nginx
nginx.x86_64

Nginx を起動 & サービス自動起動を有効にします。

[root@centos7 ~]# systemctl enable nginx
[root@centos7 ~]# systemctl start nginx

NginxConfig ファイル作成は、当記事の最後に行います。

PHP を設定

WordPress に必要な PHP を使用するため設定を行います。

上記の記事通りPHP-FPM設定まで行えば良いですが、1つだけ下記の設定に変更してください。php-fpm の実行ユーザやグループを nginx 用に変更することです。

[root@centos7 ~]# vi /etc/php-fpm.d/www.conf
user = apache
group = apache

 ↓↓↓
user = daemon
group = daemon

 ↓↓↓
user = nginx
group = nginx

SSL 証明書を設定

無料の SSL証明書 を取得および更新設定を行います。

MySQL 設置・設定

WordPress 用の MySQL データベースを設定します。

WordPress 用データバースとユーザを作成

MySQL の設定で デフォルトの認証プラグインを mysql_native_password に変更したか確かめてください。変更方法は こちら

CREATE DATABASE your-wordpress-database-name;
CREATE USER your-user-id@localhost IDENTIFIED BY ‘your-password’;
GRANT ALL ON your-wordpress-database-name.* TO your-user-id@localhost;

    [root@centos7 ~]# mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 9
    Server version: 8.0.16 MySQL Community Server - GPL
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    mysql> CREATE DATABASE your-wordpress-database-name;     #  << WP用 DBを作成
    Query OK, 1 row affected (0.10 sec)
    mysql> CREATE USER your-user-id@localhost IDENTIFIED BY ‘your-password';   # << adminユーザを作成
    Query OK, 0 rows affected (0.07 sec)
    mysql> GRANT ALL ON your-wordpress-database-name.* TO your-user-id@localhost;      #  <<  作成したDBに権限を付与
    Query OK, 0 rows affected (0.07 sec)
    mysql> \q
    Bye

最新の WordPress を設定

WordPress最新版 を確認できます。

WordPress の最新版を解凍し、NginxDocumentRoot ( ドキュメントルート ) にコピーまたは移動するだけで、インストールが完了します。

mkdir /usr/local/src
cd /usr/local/src

wget https://wordpress.org/latest.tar.gz
tar xvzf latest.tar.gz
cd wordpress/

# すべてのファイルとディレクトリを DocumentRoot ディレクトリに移動
mkdir /usr/share/nginx/html/example.com
cp -R ./* /usr/share/nginx/html/example.com

# 所有者を nginx に変更
chown -R nginx /usr/share/nginx/html/example.com

コピーが終わったら下記のように WordPress ファイルは見られます。

[root@centos7 example.com]# ls
index.php        wp-admin              wp-content         wp-load.php      wp-signup.php
license.txt      wp-blog-header.php    wp-cron.php        wp-login.php     wp-trackback.php
readme.html      wp-comments-post.php  wp-includes        wp-mail.php      xmlrpc.php
wp-activate.php  wp-config.php         wp-links-opml.php  wp-settings.php
[root@centos7 example.com]# 

WordPress 用の設定ファイルを編集

cd /usr/share/nginx/html/example.com
mv -i wp-config-sample.php wp-config.php
vi /usr/share/nginx/html/example.com/wp-config.php

# 先ほど設定した DB の情報を入力します。
define('DB_NAME', 'your-wordpress-database-name');
define('DB_USER', 'your-user-id');
define('DB_PASSWORD', 'your-password');

# 認証用ユニークキーは設定ファイル内に書かれているリンク↓↓↓をクリックしてコピペします。
# https://api.wordpress.org/secret-key/1.1/salt/

define('AUTH_KEY', 'kDSR^2:!)sdfsdfsdfRY8nB<lVpgZ/sxF[xFO;_)RF1 0I{fNZ43M');
define('SECURE_AUTH_KEY', '<^ *+~kmW&|f,XnD6da=sdfsdfsdfsWvB,1sdfsf-i_5)Ch');
define('LOGGED_IN_KEY', 'wya;Kf=Oz-UO+Xsdfsdfsdffsdfs&!PTRtpPGm]&=sdfi+[0B_TPR)Y');
define('NONCE_KEY', 'JnP+.x|(9,3n5_n:C5E#;lsdfsdfs<wd{}ia}#2_Yg+Asdfn=lse6u^L');
define('AUTH_SALT', 'A-Z`6>!v|BO&5sdfsdfsdt.W,JdK:a}J9FNosdfsdf/,T&2${UPN-S');
define('SECURE_AUTH_SALT', 'PnOojakOe/k|#9L0`:;75hsdfsdfsdfGn23ewds//sZ5}_s>C#>b%_x<sIf');
define('LOGGED_IN_SALT', 'VxuB(>As_=h322EwKRnIc)21?p|kqsdfsdfAkcRXw&VWGX61');
define('NONCE_SALT', '|O?)ZZ|</-g_m,1213asdfsdfsdJ#DLLxd3HU];C+UmNZ[ZsY{');

所有者だけが見れるように権限を変更しておきます。

[root@centos7 html]# chmod 600 /usr/share/nginx/html/example.com/wp-config.php
[root@centos7 html]# ll /usr/share/nginx/html/example.com/wp-config.php
-rw------- 1 nginx root 3162 Oct  1 12:07 /usr/share/nginx/html/example.com/wp-config.php

WordPress の WEB 設定

詳細は下記の記事をご参考ください。

これで、WordPressNginx 上で動かすことができました。

それでは、Nginx の詳細な設定を行います。

Nginx Config ファイルを設定

example_com_nginx.conf ( ファイル名は任意 ) ファイルを作成します。
主に SSL 証明書指定HTTPS 設定301リダイレクト設定PHP-FPM 設定 を追加します。

[admin@centos7 ~]$ cd /etc/nginx/conf.d
[admin@centos7 conf.d]$ vi example_com_nginx.conf  # ファイル名は任意

server {
    listen 80;
    server_name www.example.com example.com;
    # 301 Redirect
    return 301 https://$host$request_uri;
}

server {
    listen              443 ssl;
    server_name 	www.example.com example.com;
    ssl_certificate 	/etc/letsencrypt/live/example.com/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    charset utf-8;

    # max upload size
    client_max_body_size 75M;   # Size は任意

    access_log  /var/log/nginx/access.log  main;
    
    # favicon ファイル関連ログを記録しない。
    location = favicon.ico { access_log off; log_not_found off; }

    location / {
        root   /usr/share/nginx/html/example.com;
        index  index.html index.htm index.php;
	try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        root		/usr/share/nginx/html/example.com;
	fastcgi_pass   	unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  	index.php;

	# Scrpits ディレクトリが存在しませんので、/scripts を $document_root に変更
        fastcgi_param 	SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        include        	fastcgi_params;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

WordPress サイトを確認

Nginx を再起動します。

[admin@centos7 conf.d]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[admin@centos7 conf.d]$
[admin@centos7 conf.d]$ sudo systemctl restart nginx
[admin@centos7 conf.d]$
[admin@centos7 conf.d]$ sudo systemctl status nginx
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-10-15 18:13:42 JST; 17s ago
     Docs: http://nginx.org/en/docs/
  Process: 4712 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 4715 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 4716 (nginx)
   CGroup: /system.slice/nginx.service
           ├─4716 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─4717 nginx: worker process

Oct 15 18:13:42 centos7 systemd[1]: Starting nginx - high performance web server...
Oct 15 18:13:42 centos7 systemd[1]: Started nginx - high performance web server.
[admin@centos7 conf.d]$

wp-admin にアクセスします。

https://example.com/wp-admin/ へアクセスし、新しい記事を作成して見ましょう!

スポンサーリンク

コメント

タイトルとURLをコピーしました