1 views

実現する機能

ブログサイトを運営するために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を入力して、ログイン画面が表示されるか確認。画面はダッシュボード画面。記事などのコンテンツは何も入っていなかったので、設定が必要十分条件を満たしているかはこれから確認。

以上

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください