webサーバーは基本24時間365日稼働し続ける。そのため少しでも軽量化を試みようと思う。
webサーバーとして運用するためにいらない要素を削ぎ落とし、最適なRaspberry Piの設定を行っていく。
最適化の目標は
①不要な機能を取り除き、軽量化
②microSDカードの負担軽減
とする。
今回使用している機器の環境は以下となります。
- Raspberry Pi Model 3
Bluetoothの無効化
webサーバーにBluetoothは必要ないので、停止する。
Bluetooth関連サービスの停止。
sudo systemctl stop hciuart.service
sudo systemctl stop bluealsa.service
sudo systemctl stop bluetooth.service
Bluetooth関連サービスの自動起動を無効化。
sudo systemctl disable hciuart.service
sudo systemctl disable bluealsa.service
sudo systemctl disable bluetooth.service
Wi-Fiの無効化
webサーバーは、有線LANで稼働させるため、Wi-Fiを無効化。
sudo iwconfig wlan0 txpower off
仮想メモリのSWAP領域を2GBに広げる
Raspberry Piのメモリ容量が気になる場合、仮想メモリであるSWAPファイルの設定容量を変更する。
メモリの使用量の確認コマンド。
free -h
確認すると、SWAP領域が”99mi”となっている。
仮想メモリのSWAP領域を2GBに広げる。
sudo sed -i -e "s/^CONF_SWAPSIZE=.*/CONF_SWAPSIZE=2048/g" /etc/dphys-swapfile
cat /etc/dphys-swapfile | grep CONF_SWAPSIZE
sudo service dphys-swapfile restart
確認してみると2GBに拡張することができました。
SWAPの無効化
SDカードへの負担を軽減することを優先するなら、スワップを無効化にする。
sudo swapoff --all
これだけだと、リブートしたときに復活するのでswapが起動しないように、パッケージを削除。
sudo apt-get remove dphys-swapfile
ブート設定でも、自動起動しないように”dphys-swapfile”をオフにする。
sudo chkconfig dphys-swapfile off
dphys-swapfile オフの確認。
sudo chkconfig dphys-swapfile -list
swapファイルの削除。
sudo rm /var/swap
ログの最小限化
“rsyslog.conf”ファイルを編集し、必要最低限のログ(auth、syslog、messages)のみを記録させるようにして、ディスクへの書き込みを減らす。
sudo nano /etc/rsyslog.conf
必要最低限なところだけを残し、他はコメントアウトする。
tmpフォルダのRAMディスク化
tmpフォルダのマウント状況を確認。
df -h
“fstab”ファイルを編集します。
sudo nano /etc/fstab
以下の2行を追記します。
tmpfs /tmp tmpfs defaults,size=32m 0 0
tmpfs /var/tmp tmpfs defaults,size=16m 0 0
再起動。
sudo reboot
もう一度、tmpフォルダのマウント状況を確認します。
上記で追加したtmpファイルがマウントされていることが確認できました。
これでRAMディスク化ができたので、SDカード上のtmpファイルを削除します。
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
cronにより一日に一回システムをリブート
RAMをクリアするために、システムを自動でリブートする設定を行います。
sudo crontab -e
初回起動時はCronを編集するためのエディタの選択画面が表示されます。お好きなエディタを選んでください。
一番下に以下の内容を追記することで毎日午前2時に再起動がかかるようになります。
02*** /sbin/reboot
Chkconfigのインストールと不要サービスの無効化
chkconfigコマンドは、サービスのシステム起動時の挙動設定を行う。システム起動時に自動起動するサービスの設定や不必要なサービスを停止するなどの設定を行う。例えば、サーバ起動時にApacheも同時に起動させたいとき、chkconfigで設定を行うことで実現できる。
sudo apt-get install chkconfig
sudo chkconfig triggerhappy off # ショートカットキー
sudo chkconfig alsa-utils off #サウンド関係
sudo chkconfig lightdm off #ディスプレイ関係
sudo chkconfig plymouth off #グラフィック関係
不要パッケージの削除
sudo apt-get autoremove -y python-pygame
sudo apt-get autoremove -y debian-reference-common
sudo apt-get autoremove -y libraspberrypi-doc
- - - - -
sudo rm -rf /home/pi/python_games/
sudo rmdir /usr/local/games/
sudo rmdir /usr/games/
- - - - -
sudo apt-get autoremove -y man manpages
sudo apt-get autoremove -y git git-man
sudo apt-get autoremove -y galculator
まとめ
これである程度はwebサーバーとして運用していくうえでRaspberry Piを最適化できたと思う。