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(設定)ファイルは作成していないが、問題なく動いているのでしばらくは様子見。
以上
コメントを残す