Raspberry Pi セットアップ
Webサーバーの為の 最適化
Webサーバーの為の 最適化
Raspberry Pi を、Webサーバーとして運用するために、
①.不要な機能をそぎ落とし、軽量化。
②.24時間365日稼働するので、マイクロSDカードの負荷軽減。
を、徹底的に施した。
①.不要な機能をそぎ落とし、軽量化。
②.24時間365日稼働するので、マイクロSDカードの負荷軽減。
を、徹底的に施した。
軽量化やSDカードの延命対策
以下に、Raspberry Pi の最適化事項を記載。
スポンサー リンク
Raspberry Pi の 最適化
1. Bluetoothを無効にする
2. WiFiを無効にする
3. 仮想メモリの SWAP領域を 2GBに広げる
4. swap の無効化
5. ログの最少限化
6. tmpフォルダ の RAMディスク化
7. cron により一日に一回システムをリブート
8. Chkconfig のインストールと不要デーモンの無効化
9. 不要パッケージの削除
10. 本番に向けてのその他設定
2. WiFiを無効にする
3. 仮想メモリの SWAP領域を 2GBに広げる
4. swap の無効化
5. ログの最少限化
6. tmpフォルダ の RAMディスク化
7. cron により一日に一回システムをリブート
8. Chkconfig のインストールと不要デーモンの無効化
9. 不要パッケージの削除
10. 本番に向けてのその他設定
systemctl コマンド
「systemctl」は【systemd】を操作するコマンドで、サービスの起動や停止、状態確認などを行うことが出来る。
サービスの停止
# systemctl stop {ユニット名}
サービス自動起動を無効にする
# systemctl disable {ユニット名}
# systemctl stop {ユニット名}
サービス自動起動を無効にする
# systemctl disable {ユニット名}
【systemd】とは。
Linuxの「起動処理」や「システム管理」を行う仕組み。
定義ファイルの場所
/etc/systemd/system
定義ファイルの場所
/etc/systemd/system
1. Bluetoothを無効にする
Webサーバーに Bluetooth は不要なので、停止する。
bluetooth関連サービスの停止。
sudo systemctl stop hciuart.service
sudo systemctl stop bluealsa.service
sudo systemctl stop bluetooth.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
sudo systemctl disable bluealsa.service
sudo systemctl disable bluetooth.service
【bluealsa】はインストールされていない。
「/boot/config.txt」を編集することでも、停止できる。
sudo nano /boot/config.txt で、次の行を追記する
dtoverlay=disable-bt
dtoverlay=disable-bt
「dtoverlay=disable-wifi」は、#WiFiを無効にする記述。
2. WiFiを無効にする
Webサーバーは、有線LANで稼働させているので「WiFi」は不要。
上記と同じく「/boot/config.txt」を編集することでも、停止できる。
WiFiの有効/無効を切り替えるコマンド。
・WiFi無効化
sudo iwconfig wlan0 txpower off
・WiFi有効化
sudo iwconfig wlan0 txpower auto
sudo iwconfig wlan0 txpower off
・WiFi有効化
sudo iwconfig wlan0 txpower auto
3. 仮想メモリの 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
cat /etc/dphys-swapfile | grep CONF_SWAPSIZE
sudo service dphys-swapfile restart
仮想メモリは、「dphys-swapfile」というサービスで管理されており、この設定ファイルを編集することでも、サイズを変更することが出来る。
sudo service dphys-swapfile stop
sudo nano /etc/dphys-swapfile
→ このファイル内の CONF_SWAPSIZE の値を変更する
sudo service dphys-swapfile start
sudo nano /etc/dphys-swapfile
→ このファイル内の CONF_SWAPSIZE の値を変更する
sudo service dphys-swapfile start
仮想メモリの量を確認するコマンド。
swapon -s
4. swap の無効化
SDカードへの負荷を軽減することを優先するなら、スワップを無効にする。
freeで確認すると、スワップが100MBほどある。
pi@yaopi70:~ $ free
total used free shared buff/cache available
Mem: 949576 31020 555188 6312 363368 851112
Swap: 102396 0 102396
swapを無効化。( --all は - - a l l )
sudo swapoff --all
再度、freeで確認。スワップがゼロになった。
pi@yaopi70:~ $ free
total used free shared buff/cache available
Mem: 949576 31104 555088 6312 363384 851028
Swap: 0 0 0
これだけだと、リブートしたときに復活するので swap が起動しないようにパッケージを削除。
sudo apt-get remove dphys-swapfile
ブート設定でも、自動起動しないように dphys-swapfile をオフにする
sudo chkconfig dphys-swapfile off
dphys-swapfile オフの確認。
pi@yaopi70:~ $ sudo chkconfig dphys-swapfile -list
dphys-swapfile 0:off 1:off 2:off 3:off 4:off 5:off 6:off
swap ファイルの削除
sudo rm /var/swap
5. ログの最少限化
rsyslog.confを編集し、必要最少限のログ(auth , syslogとmessages)のみを記録させるようにして、ディスクへの書き込みを減らす。
sudo nano /etc/rsyslog.conf
最低限必要なところだけを残し、他はコメントアウトする 。
###############
#### RULES ####
###############
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
#daemon.* -/var/log/daemon.log
#kern.* -/var/log/kern.log
#lpr.* -/var/log/lpr.log
#mail.* -/var/log/mail.log
#user.* -/var/log/user.log
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info -/var/log/mail.info
#mail.warn -/var/log/mail.warn
#mail.err /var/log/mail.err
#
# Some "catch-all" log files.
#
#*.=debug;\
# auth,authpriv.none;\
# news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
#
# Emergencies are sent to everybody logged in.
#
*.emerg :omusrmsg:*
6. tmpフォルダ の RAMディスク化
tmpフォルダのマウント状況確認。
pi@yaopi70:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 3.4G 25G 13% /
devtmpfs 460M 0 460M 0% /dev
tmpfs 464M 0 464M 0% /dev/shm
tmpfs 464M 6.2M 458M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 464M 0 464M 0% /sys/fs/cgroup
/dev/mmcblk0p1 42M 21M 21M 52% /boot
tmpfs 93M 0 93M 0% /run/user/1
sudo nano /etc/fstab で次の2行を追記。
# tmp files put on RAM disk
tmpfs /tmp tmpfs defaults,size=32m 0 0
tmpfs /var/tmp tmpfs defaults,size=16m 0 0
#
tmpfs /tmp tmpfs defaults,size=32m 0 0
tmpfs /var/tmp tmpfs defaults,size=16m 0 0
#
再起動。
sudo reboot
df -h で tmp がマウントされているか再確認。上記で追加したtmp がマウントされている。
pi@yaopi70:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 3.4G 25G 13% /
devtmpfs 460M 0 460M 0% /dev
tmpfs 464M 0 464M 0% /dev/shm
tmpfs 464M 6.2M 458M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 464M 0 464M 0% /sys/fs/cgroup
tmpfs 16M 0 16M 0% /var/tmp
tmpfs 32M 0 32M 0% /tmp
/dev/mmcblk0p1 42M 21M 21M 52% /boot
tmpfs 93M 0 93M 0% /run/user/1000
これでRAMディスク化ができたので、SDカード上の tmpファイルを削除する。
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
sudo rm -rf /var/tmp/*
7. cron により一日に一回システムをリブート
RAMをクリアするために、システムを自動でリブートする設定を行う。
sudo crontab -e
2. /bin/nanoでcrontabファイルの編集ができる。
最後の行に下記を追加する。ここでは午前3時5分に再起動がかかるようにした。
5 3 * * * /sbin/reboot
2. /bin/nanoでcrontabファイルの編集ができる。
最後の行に下記を追加する。ここでは午前3時5分に再起動がかかるようにした。
5 3 * * * /sbin/reboot
8. Chkconfig のインストールと不要デーモンの無効化
sudo apt-get install chkconfig
- - - - -
$ sudo chkconfig triggerhappy off
$ sudo chkconfig alsa-utils off
$ sudo chkconfig lightdm off
$ sudo chkconfig plymouth off
- - - - -
$ sudo chkconfig triggerhappy off
$ sudo chkconfig alsa-utils off
$ sudo chkconfig lightdm off
$ sudo chkconfig plymouth off
9. 不要パッケージの削除
Raspbian Buster with desktopの場合。
$ 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
10. 本番に向けてのその他設定
cron で MyDNSにIPアドレスを自動通知:
マイクロSDカードのバックアップ運用:
次のステップ:
Raspberry Pi WordPress Webサーバー 構築手順
1-3. Raspberry Pi の 最適化
以上。
(2019.05.11)
(2019.05.11)
スポンサー リンク