1 views

実現する機能

ブログサイトを運営するためにWordPress(ワードプレス)が、GoogleやYahoo!やHotmailなどのメールを一括管理するためにRainloop(レインループ)が自宅のWebサーバーで動いています。WebサーバーはApache(アパッチ)です。今回、このWebサーバーを大量アクセスに威力を発揮するNginx(エンジンエックッス)に変えました。
以下は、その備忘録です。

変更前のサーバー構成

Webサーバー(Apache)WordPress(ワードプレス)Rainloop(レインループ)

Nginxとphp-fpmのInstall

以下の黒背景部分はGNOME端末を表示しています。紫色はキーボードから入力するコマンド(コピペした方が楽ですが、コマンドは覚えられません)、緑はコマンドや処理内容の説明、白は自動表示する部分、赤は注意書きです。

#ユーザー(tuは例示)から管理者(root)に変更
[tu@ufuso ~]$ su-
#管理者(root)パスワードを入力(パスワードは表示されない)。
password:

#Apacheを停止。Nginxもport80を使うので起動できない事態を回避。
[root@ufuso ~]# systemctl stop httpd

#Apacheの自動起動も停止。PCを再起動するとApacheが起動してしまうので。
[root@ufuso ~]# systemctl disable httpd

#NginxのInstall。epelが使えなければ、yum -y install nginxでもOK。
[root@ufuso ~]# yum --enablerepo=epel -y install nginx
インストール:
  nginx.x86_64 1:1.12.2-1.el7_4.ngx                                             

完了しました!

#nginxを起動
[root@ufuso ~]# systemctl start nginx

#nginxを自動起動に設定
[root@ufuso ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service
 to /usr/lib/systemd/system/nginx.service.

#必要なphpのソフト(スクリプト言語)をインストール
[root@ufuso ~]# yum --enablerepo=epel -y install php php-mbstring php-pear php-fpm

インストール:
  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 

完了しました!

#php-fpmの起動
[root@ufuso ~]# systemctl start php-fpm

#php-fpmの自動起動設定
[root@ufuso ~]# systemctl enable php-fpm

nginx.confの編集

以下の黒背景部分はGNOME端末を表示しています。紫色はキーボードから入力するコマンド(コピペした方が楽ですが、コマンドは覚えられません)、緑はコマンドや処理内容の説明、白は自動表示する部分、赤は注意書きです。

#nginx.confファイルの編集
[root@ufuso ~]# vi /etc/nginx/nginx.conf
#フォルダの所有者を変えるのが面倒なので、#を付加し、user apacheを追記
#user  nginx;
user  apache;
#1をautoに変更するために、#を付加し、worker_processes auto;を追記
#worker_processes  1;
worker_processes auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    #I/O多重化指定に変更するために、#を付加し、use epoll;を追記
    use epoll; 
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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;

    keepalive_timeout  65;

    gzip  on;

    include /etc/nginx/conf.d/*.conf;
    
    #nginxのhtmlフォルダへのアクセス設定
    server {
        listen       80 ;
        listen       [::]:80;
        listen       443 ssl;
        #Webサーバーの指定
        server_name  localhost;
        root   /usr/share/nginx/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;
    }
    #apacheのhtmlフォルダへのアクセス設定
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        #通信の暗号化(ssl)。rainloopはhttps://接続なので必要
        listen       443 ssl;
        #Webサーバーの指定
        server_name  ufuso.dip.jp;
        #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 {
        }
    }
    #別PCのufuso.orgへの転送設定を追記
    server {
        #クライアントがアクセスするドメイン
        server_name ufuso.org; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        location / {
        #転送先のIPアドレス
        proxy_pass http://192.168.24.240; 
        }
    }
        server {
        listen       443 ssl;
        #クライアントがアクセスするドメイン
        server_name ufuso.org; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        location / {
        #転送先のIPアドレス
        proxy_pass https://192.168.24.240; 
        }
    }
}

Nginx で Rainloop(レインループ)が利用できるようrainloop.confを作成

#rainloop.confの作成と設定
[root@ufuso ~]# vi /etc/nginx/conf.d/rainloop.conf
#以下を新規作成

server {
        listen 80;
        listen       443 ssl;
        # rainloopのあるディレクトリを指定
        root /var/www/html/rain;
        index index.php;
        # rainloopのURLを指定
        server_name rain;
        access_log /var/www/html/rain/access.log;
        error_log /var/www/html/rain/error.log;
        # serve static files
        location ~ ^/(images|javascript|js|css|flash|media|static)/  {
        root    /var/www/html/rain;
        expires 30d;
        }
        #location / {
        #index index.html index.htm index.php;
        #autoindex on;
        #autoindex_exact_size off;
        #autoindex_localtime on;
#}

        location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

        location ^~ /data {
        deny all;
}
        #暗号化方式の指定
        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;

        # 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;
        }
}


#nginxを再ロード
[root@ufuso ~]# systemctl reload nginx

赤枠にserver-nameとしたURLを入力して、ログイン画面が表示されるか確認。

ログイン後送受信も行ったが問題なくできている。

wordpress用のconf(設定)ファイルは作成していないが、問題なく動いているのでしばらくは様子見。

以上

コメントを残す

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

CAPTCHA


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