2020年末のサーバ構築

2020-12-29 17:38:00 +09:00 Post Comments

サーバにしていたマシンが故障し、 その影響で当サイトは3週間ほどアクセス不能になりました。

現在、マシンを替えて仮復旧させております。 なお、現在コメントが表示されておりません。 データは存在しますが、 コメント欄用のプログラムの再設定ができていないためです。 後ほど復旧方法を検討します。

環境

  • ハードウェア:Raspberry Pi 4 Model Bを使用します。
    • 月に1MBも転送しないサイトなので、あまり強いハードウェアは用いません。
    • 安定性に問題があれば別の方法を検討します。
  • OS:標準のOSであるRaspbian Liteを使用します。

設定手順

SSH接続まで

  • NOOBS でインストールしたところから始めます。
  • まず、設定をまともに行うために、キーボードを設定します。
    raspberrypi Login: pi
    Password: 〈入力しても見えない〉raspberry
    pi@raspberrypi:~ $ sudo raspi-config
    
    • メニューで5 Localisation Options→L3 Keyboardと進んで、設定
  • パスワードを設定します。
    pi@raspberrypi:~ $ passwd
    Current Password: 〈入力しても見えない〉raspberry
    New Password: (新しいパスワードを入力)
    Retype Password: (新しいパスワードを入力)
    
  • SSHサーバを起動します。
    pi@raspberrypi:~ $ sudo raspi-config
    
    • メニューで3 Interface Options→P2 SSHと進んで、設定
  • IPアドレスを調べておきます
    pi@raspberrypi:~ $ ip addr
    〈略〉
    3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 〈略〉 brd ff:ff:ff:ff:ff:ff
        inet 〈略〉.0.152/24 brd 192.168.0.255 scope global noprefixroute wlan0
           valid_lft forever preferred_lft forever
        〈略〉
    
  • SSHの公開鍵認証を設定します。
    • クライアントの鍵を作成
      sakai@myPC ~ % ssh-keygen -t ed25519 -f ~/.ssh/id_raspi
      ()
      Passphrase: (何も入力しない)
      Retype Passphrase: (何も入力しない)
      sakai@myPC ~ % cat ~/.ssh/id_raspi.pub
      ssh-ed25519 〈略〉 sakai@myPC
      
    • サーバに格納
      sakai@myPC ~ % ssh pi@〈略〉.0.152
      (ここでサーバ証明書の確認画面が出る。本当はサーバの証明書と照合するべきだが今回は忘れていた。)
      〈この証明書を受け入れますか? yes/no/[fingerprint]〉: yes
      pi@raspberrypi:~ $ mkdir .ssh
      pi@raspberrypi:~ $ vi .ssh/authorized-keys # viでもnanoでもOK
      〈上記cat ~/.ssh/id_raspi.pubで読み取った内容を書き込む。保存して終了〉
      
    • サーバのパスワード認証を無効化
      sudo vi /etc/ssh/sshd_config
      
      • 次のように設定
        PasswordAuthentication no
        ChallengeResponseAuthentication no # デフォルトでこうなっているはず
        

基本設定

  • IPアドレスを固定します。
    pi@raspberrypi:~ $ vi /etc/dhcpcd.conf
    
    • 次のように設定
      interface wlan0
      static ip_address=〈固定するIPアドレス〉/24
      static routers=〈ルータのIPアドレス〉
      static domain_name_servers=〈DNSサーバのIPアドレス〉
      
    • 再起動するとIPアドレスが変わるので忘れず追従します。
  • RAMディスクを使うように設定します。
    • (Raspberry Piの記録メディアであるmicroSDカードの劣化を遅らせるため。)
    • スワップの無効化
      pi@raspberrypi:~ $ systemctl disable dphys-swapfile
      pi@raspberrypi:~ $ sudo dphys-swapfile swapoff
      pi@raspberrypi:~ $ sudo rm /var/swap
      
    • RAMディスクの作成
      pi@raspberrypi:~ $ vi /etc/fstab
      
      • 次のように設定
        # use tmpfs for temporary files
        tmpfs	/tmp	tmpfs	defaults,size=32m,noatime,mode=1777	0	0
        tmpfs	/var/tmp	tmpfs	defaults,size=16m,noatime,mode=1777	0	0
        # use tmpfs for log files
        tmpfs	/var/log	tmpfs	defaults,size=32m,noatime,mode=0755	0	0
        

Webサーバの設定

  • インストールします。
    pi@raspberrypi:~ $ sudo apt install nginx
    〈実行して良いですか[y/N]?〉y
    
  • 設定します。
    pi@raspberrypi:~ $ sudo vi /etc/nginx/sites-available/〈設定名(半角英字など)
    • 次のように設定
      # 〈ドメイン名〉 server configuration
      #
      server {
      	listen 80;
      
      	root /var/www/〈設定名〉;
      
      	index index.html index.htm;
      
      	server_name 〈ドメイン名〉;
      }
      
  • RAMディスクにログファイル用フォルダを作る設定をします。
    pi@raspberrypi:~ $ vi /etc/rc.local
    
    • 次のような処理をexit 0の前に追加
      mkdir /var/log/nginx