実現する機能
ブログサイトを運営するためにWordPress(ワードプレス)が、GoogleやYahoo!やHotmailなどのメールを一括管理するためにRainloop(レインループ)が自宅のWebサーバーで動いています。WebサーバーはApache(アパッチ)です。今回、このWebサーバーを大量アクセスに威力を発揮するNginx(エンジンエックッス)に変えたところ、手順を誤ったので、WordPressもRainloopも使えなくなってしまいました。復旧までに丸1日を要しました。
復旧を急いだため、下記サイトの設定をほぼ借用しました。ありがとうございました。
Server World
それは仕様です。
Linux入門
WordPress Codex 日本語版
以下は、復旧までの備忘録です。
変更前のサーバー構成
※Webサーバー(Apache)、WordPress(ワードプレス)、Rainloop(レインループ)
NginxのInstall
[tu@ufuso ~]$ su- ← PCの設定には、ユーザー(tuは例示)から管理者(root)に変 更するためのコマンド(黄色)。 password: ← ここに管理者(root)パスワードを入力(パスワードは表示されない)。 [root@ufuso ~]# systemctl stop httpd ← Apacheを停止。Nginxもport80を使うので 起動できない事態を回避。 [root@ufuso ~]# systemctl disable httpd ← Apacheの自動起動も停止。PCを再起動 するとApacheが起動してしまうので。 [root@ufuso ~]# yum --enablerepo=epel -y install nginx ← NginxのInstall。 epelが使えなければ、yum -y install nginxでもOK。 読み込んだプラグイン:fastestmirror, priorities ... ... ... インストール: nginx.x86_64 1:1.10.2-1.el7 依存性関連をインストールしました: fontconfig.x86_64 0:2.10.95-10.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 gd.x86_64 0:2.0.35-26.el7 gperftools-libs.x86_64 0:2.4-8.el7 libX11.x86_64 0:1.6.3-3.el7 libX11-common.noarch 0:1.6.3-3.el7 libXau.x86_64 0:1.0.8-2.1.el7 libXpm.x86_64 0:3.5.11-3.el7 libjpeg-turbo.x86_64 0:1.2.90-5.el7 libpng.x86_64 2:1.5.13-7.el7_2 libunwind.x86_64 2:1.1-5.el7_2.2 libxcb.x86_64 0:1.11-4.el7 libxslt.x86_64 0:1.1.28-5.el7 nginx-all-modules.noarch 1:1.10.2-1.el7 nginx-filesystem.noarch 1:1.10.2-1.el7 nginx-mod-http-geoip.x86_64 1:1.10.2-1.el7 nginx-mod-http-image-filter.x86_64 1:1.10.2-1.el7 nginx-mod-http-perl.x86_64 1:1.10.2-1.el7 nginx-mod-http-xslt-filter.x86_64 1:1.10.2-1.el7 nginx-mod-mail.x86_64 1:1.10.2-1.el7 nginx-mod-stream.x86_64 1:1.10.2-1.el7 perl.x86_64 4:5.16.3-291.el7 perl-Carp.noarch 0:1.26-244.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-2.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-Pod-Escapes.noarch 1:1.04-291.el7 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-4.el7 perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-291.el7 perl-macros.x86_64 4:5.16.3-291.el7 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 完了しました! [root@ufuso ~]# vi /etc/nginx/nginx.conf ← nginx.confファイルの編集 # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ ... ... ... server { listen 80 default_server; listen [::]:80 default_server; server_name ufuso.org; ← 「_」(アンダーバー)を削除して自サーバー のDomain名又はHost名を入力 root /usr/share/nginx/html; [root@ufuso ~]# systemctl start nginx ← nginxを起動 [root@ufuso ~]# systemctl enable nginx ← nginxを自動起動に設定 Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service. |
nginx.confで登録したサーバーにアクセスして、下の画面が表示されれば Install は成功(画像はクリックすると拡大表示。以下同)
Nginx で PHP スクリプトが利用できるようPHP-FPM(PHP FastCGI Process Manager)をインストール
(1)WordPress(ワードプレス)もRainloop(レインループ)もPHPが無いと動かないので、以下の手順でPHPを設定します。
[root@ufuso ~]# yum --enablerepo=epel -y install php php-mbstring php-pear php-fpm ← 必要なphpのソフト(スクリプト言語)をインストール インストール: php-fpm.x86_64 0:5.4.16-42.el7 php-pear.noarch 1:1.9.4-21.el7 php.x86_64 0:5.4.16-42.el7 php-mbstring.x86_64 0:5.4.16-42.el7 依存性関連をインストールしました: libzip.x86_64 0:0.10.1-8.el7 php-common.x86_64 0:5.4.16-42.el7 apr.x86_64 0:1.4.8-3.el7 apr-util.x86_64 0:1.5.2-6.el7 httpd.x86_64 0:2.4.6-45.el7.centos.4 httpd-tools.x86_64 0:2.4.6-45.el7.centos.4 php-cli.x86_64 0:5.4.16-42.el7 php-process.x86_64 0:5.4.16-42.el7 php-xml.x86_64 0:5.4.16-42.el7 完了しました! [root@ufuso ~]# systemctl start php-fpm ← php-fpmの起動 [root@ufuso ~]# systemctl enable php-fpm ← php-fpmの自動起動設定 [root@ufuso ~]# vi /etc/nginx/nginx.conf ← nginx.confの編集 ※以下を最終行に追加 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } [root@ufuso ~]# systemctl reload nginx ← nginxを再ロード [root@ufuso ~]# echo "<?php phpinfo() ?>" > /usr/share/nginx/html/info.php ← info.phpを作成してWebディレクトリへ配置 |
http://your-server/info.phpにアクセスして、下の画面が表示されれば Install は成功
Nginx で Rainloop(レインループ)とWordPress(ワードプレス)が利用できるようnginx.confをカスタマイズ
[root@ufuso ~]# vi /etc/nginx/nginx.conf ← nginx.confファイルを Rainloop (レインループ)とWordPress(ワードプレス)用に編集 # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; use epoll;#I/O多重化指定 } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; #機能やレベルの設定 sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; gzip on; include /etc/nginx/mime.types; default_type application/octet-stream; #アプリごとにconfファイルを作成する必要があるため include /etc/nginx/conf.d/*.conf; #server名を指定しない場合に適用される原則的設定 server { listen 80 default_server; listen [::]:80 default_server; #通信の暗号化(ssl)。rainloopはhttps://接続なので必要 listen 443 ssl; #Webサーバーの指定 server_name ufuso.org; #Webフォルダの指定 root /var/www/html; index index.php index.html index.htm; #暗号化方式の指定 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #サーバのSSL暗号設定をクライアントのそれより優先 ssl_prefer_server_ciphers on; #暗号技術の組み合わせを指定 ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS; #自己証明書の場所を入力(事例はmod-sslの場合) ssl_certificate /etc/pki/tls/certs/server.crt; #秘密鍵の場所を入力(事例はmod-sslの場合) ssl_certificate_key /etc/pki/tls/certs/server.key; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; #phpを使うための設定。fastcgi経由なのでその設定がメイン location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2 default_server; # listen [::]:443 ssl http2 default_server; # server_name ufuso.org; # root /var/www/html; # index index.php index.html index.htm; # ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # ssl_prefer_server_ciphers on; # ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS; # ssl_certificate /etc/pki/tls/certs/server.crt; # ssl_certificate_key /etc/pki/tls/certs/server.key; # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } } [root@ufuso ~]# systemctl reload nginx ← nginxを再ロード |
Nginx で Rainloop(レインループ)が利用できるようrainloop.confを作成
[root@ufuso ~]# vi /etc/nginx/conf.d/rainloop.conf ← rainloop.confの作成と設定 ※以下を入力 server { listen 80; # rainloopのあるディレクトリを指定 root /var/www/html/rain; index index.php; # rainloopのURLを指定 server_name ufuso.org/rain; location / { try_files $uri $uri/ /index.php$is_args$args; } # nginx.confで設定していれば不要だが、念の為設定 location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } [root@ufuso ~]# chown -R nginx:nginx /var/www/html/rain ← rain以下での権限を apcheからnginxにユーザーもグループも変更 [root@ufuso ~]# systemctl reload nginx ← nginxを再ロード |
赤枠にserver-nameとしたURLを入力して、ログイン画面が表示されるか確認。
ログイン後送受信も行ったが問題なくできている。
Nginx で wordpress(ワードプレス)が利用できるようwordpress.confを作成
[root@ufuso ~]# vi /etc/nginx/conf.d/wordpress.conf ← wordpress.confの作成と設定 ※以下を入力 server { listen 80; server_name ufuso.org; root /var/www/html; index index.php; access_log /var/log/nginx/ufuso.org.access.log main; error_log /var/log/nginx/ufuso.org.error.log error; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\. { deny all; } location ~* /(?:uploads|files)/.*\.php$ { deny all; } location / { try_files $uri $uri/ /index.php?$args; } rewrite /wp-admin$ $scheme://$host$uri/ permanent; location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|js|JS|css|html?)$ { access_log off; log_not_found off; expires 1d; } location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } include fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } } [root@ufuso ~]# chown -R nginx:nginx /var/www/html ← html以下での権限をapche からnginxにユーザーもグループも変更 [root@ufuso ~]# systemctl reload nginx ← nginxを再ロード |
赤枠にserver-nameとしたURLを入力して、ログイン画面が表示されるか確認。画面はダッシュボード画面。記事などのコンテンツは何も入っていなかったので、設定が必要十分条件を満たしているかはこれから確認。
以上
コメントを残す