#はじめに
SDカードの延命の為、logをramdisk(tmpfs)に移したり色々した時のメモ
swap無効化
$ sudo swapoff --all
$ sudo apt-get remove dphys-swapfile
tmpfsにするには、下記の様に追記していく。
tmpfs /var/log tmpfs defaults,size=16m,noatime,mode=0755 0 0
tmpfs /lib/ufw tmpfs defaults,size=1m,noatime,mode=0755 0 0
#自作の初期化script
/var/log
とだけ設定すると、nginxが/var/log/nginx
ディレクトリが無いとエラーになって
サービスが上がらない。
設定ファイルnginx.conf
で場所を変更しても、起動直後〜設定を読みに行く間のlogは、
コンパイル時に指定された場所を見に行く為、エラーを回避できない。
(自前でコンパイルすれば場所を変えられるがpiでは辛い、クロスコンパイルもめんどい)
ということで、/var/log
の下にディレクトリを掘るscriptを自作して、systemdで動かしてみる。
##systemdの現状を確認
各サービスが、現在どういった順序で起動してるか確認してみる。
参考
$ systemd-analyze plot > /tmp/sys.svg
このファイルをブラウザで見てみる。
##scriptの作成
[Unit]
Description=initialize '/var/log' directory
DefaultDependencies=no
Requires=var-log.mount
After=var-log.mount
[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/root/tool/var-log-init/var-log-init
[Install]
WantedBy=sysinit.target
#!/bin/bash
if [ ! -e /var/log/nginx ]; then
mkdir /var/log/nginx
fi
chown www-data:adm /var/log/nginx
#ufwの設定
自宅と実家のIPを固定してないので、UFWで許可するIPを動的に変えられる様にCRONで定期的に設定を更新している。
これもSDカードにダメージを与えるので、設定ファイルの更新先/lib/ufw
をtmpfsに置くことにする。
で、固定で保持しておきたい設定(ローカルエリアからのSSH許可等)は/lib/ufw.default.tgz
に固めておいて、boot時に/lib/ufw
に展開するようにしてみる。
[Unit]
Description=LSB: start firewall
DefaultDependencies=no
Requires=lib-ufw.mount
After=lib-ufw.mount
[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/root/tool/systemd/pre-ufw
[Install]
WantedBy=sysinit.target
#!/bin/bash
/bin/tar xfz /lib/ufw.default.tgz -C /lib/ufw/
[Unit]
Description=LSB: start firewall
DefaultDependencies=no
Requires=ufw.service
After=ufw.service
[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/root/tool/systemd/post-ufw
[Install]
WantedBy=sysinit.target
/usr/sbin/ufw allow proto tcp from xxx.xxx.xxx.xxx/32 to any port 443