Raspberry Pi 2 サーバー ★ 高速化 ① Apache2 から Nginx へ移行
Raspberry Pi 2 サーバー & WordPress で運用している当サイトですが、最近激重だったので高速化を図るべく Apache2 から Nginx に変更してみました。
(最初は、Nginx & PHP7 環境への移行を行っていましたが、PHP7では使用プラグインのいくつかが動かず… PHP7はおいおいということで一先ずNginxだけ… )
サイトはApacheで運用したまま、別ポートで Nginx の設定を進めて、切り替えました。
目次
バックアップ
何はともあれまずは現状のバックアップ… 当サーバーは、rsync で別の外付けHDDにバックアップしています。
1 2 |
sudo rsync -auP --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/etc/fstab","/var/share/*"} / /mnt/bk1 sudo rsync -auP --delete --exclude={"/lost+found"} /var/share/ /mnt/bk2 |
詳細はこちらです↓
Raspberry Pi ★ rsync でバックアップ(外付けHDD)
※ Raspberry Pi をサーバー運用するにあたって、ルートファイルシステムを外付けHDDに移行しています。その方法についてはこちらです↓
Raspberry Pi を HDD 起動(& NOOBSから通常のRaspbian構成に変更)
php5-fpm のインストール
NginxでPHPを動かす為に必要なパッケージです。
1 |
sudo apt-get install php5-fpm |
Nginx のインストール
1 |
sudo apt-get install nginx |
設定ファイル変更
デフォルトの設定ファイルをバックアップ
1 |
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.org |
今回は default をバックアップしてそのまま使います。(違う名前で作成する場合は、作成後にシンボリックリンクを貼る必要があります。)
設定ファイル変更
1 |
sudo vi /etc/nginx/sites-available/default |
まずは最低限の動作の為に下記のように設定しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# Default server configuration # server { listen 8080 default_server; listen [::]:8080 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/share/www; # Add index.php to the list if you are using PHP index index.html index.php; server_name homemadegarbage.0t0.jp; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.php?q=$uri&$args; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } |
- listen:ローカル環境で確認するため、ポートを 8080 にする
- root:公開ディレクトリの設定
- server_name:ドメインの設定
- try_files:「 /index.php?q=$uri&$args」
Nginx は .htaccess が使えないため、WordPress のURLを処理するための設定 - location ~ \.php$ {:phpの設定
- location ~ /\.ht {:.htaccess にアクセス不可にさせる設定(これをしないと.htaccess がDL可能になります。)
Nginx、php5-fpmの再起動
1 2 |
sudo service nginx restart sudo service php5-fpm restart |
当環境ではこれだけで、 http://IPアドレス:8080/ で表示されるようになりました。
※ Nginx 、php5-fpm の実行ユーザについて
デフォルトで「www-data」となっていて、現状のWordPress環境と同じなのでそのままにしました。
※ Chrome のキャッシュについて
最初、Chromeでキャッシュが残り、「設定を変更しても変わらない」状態になりました。(phpファイルがDLされてしまう)
「設定を変えたのに上手く行かない」場合はキャッシュを削除してみるのも良いかと思います。
因みに私は Cache Killer という拡張機能を入れているのですが、ボタンを「ON」「OFF」するだけで切り替えられるので便利です。
Apache から Nginx に切り替えてみる
ローカルで表示が確認できたら、Nginx に切り替えてみます。
Nginxのポートを80番に変更
1 |
sudo vi /etc/nginx/sites-available/default |
1 2 |
listen 80 default_server; listen [::]:80 default_server; |
apache を終了
1 |
sudo service apache2 stop |
Nginx 再起動
1 |
sudo service nginx restart |
切り替え完了!
上手く動かなかった場合は戻す
NginXのポート変更
再度8080に戻す
1 |
sudo vi /etc/nginx/sites-available/default |
1 2 |
listen 80 default_server; listen [::]:80 default_server; |
Nginx 再起動
1 |
sudo service nginx restart |
apache を起動
1 |
sudo service apache2 start |
自動起動の設定
設定確認
自動起動になっているサービスを確認
1 |
ls /etc/rc2.d/ |
何もしていないですが nginx と php5-fpm はすでに自動起動になっていました。
1 2 3 4 |
README S01php5-fpm S02apache2 S03mysql S03ssh S05plymouth S01bootlogs S01php7.0-fpm S03cron S03nginx S04avahi-daemon S05rc.local S01dhcpcd S01rsyslog S03dbus S03ntp S04bluetooth S05rmnologin S01motd S01triggerhappy S03dphys-swapfile S03rsync S04lightdm |
Apache2 削除
1 |
sudo update-rc.d -f apache2 remove |
再度 ls /etc/rc2.d/ で確認して S02apache2 が無くなっていることを確認。
再起動
1 |
sudo reboot |
再起動後、サイトの表示を確認。
適当に https://homemadegarbage.com/a.php とか存在しないURLを叩いてみたりすると 404 Not Found nginx/1.6.2 と表示されてます。
Nginx で動かすまでの最低限の設定でした。ちょこちょこ設定を整備していきたいなと思います。
肝心の速度に関してですが、ただ Nginx に切り替えただけでは早くなりませんでした。(管理画面なんかは少し軽くなった感じはします。)
なので、Proxy Cache を設定しました。
サーバ移転
XSERVER に移転しました。