webサーバーのためのRaspberry Piの最適化

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を最適化できたと思う。

コメントを残す

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

CAPTCHA