ラズパイで作る自宅WEBサーバ構築
第3回 Ubuntu Server 詳細設定 2019.10.27
ubuntu-18.04 server の詳細設定を行います。
YouTube 動画でポイントを説明しています。上記画像をクリックすると再生できます。
Ubuntu サーバの詳細設定は WindowsパソコンからSSHクライアントを使って行います。
ブロードバンドルータ: | 192.168.11.1 |
ラズパイ: | 192.168.11.21 |
Windowsパソコン: | 192.168.11.20 |
として説明します。
パソコンにローカルIPアドレスを設定せず、ルータへのDHCP接続で、ラズパイにアクセスすることも可能ですが、
WEBサーバー公開時には、パソコンを開発環境として使用するので、固定ローカルIP設定を行っています。
Windows10の場合:右クリック
→[ネットワーク接続]→[アダプターのオプションを変更する]→[Wi-Fi]右クリック→[ショートカットの作成]
これでディスクトップに[Wi-Fi]のショートカットが作成されます。
ショートカットをクリック→[プロパティ]→[インターネットプロトコルバージョン4 (TCP/IPv4)]→[プロパティ]で設定を行います。
※メールサーバの設定で、パソコンにLAN側固定IPアドレスを割り振らないと、メール送信できないように設定しています →メールサーバ(Postfix/Dovecot)設定・前編 参照
WindowsパソコンのIP構成を確認します。コマンドラインから
> ipconfig
---(省略)---
Wireless LAN adapter Wi-Fi:
接続固有の DNS サフィックス . . . . .:
リンクローカル IPv6 アドレス. . . . .: xxxx::xxxx:xxxx:xxxx:xxxxxxx
IPv4 アドレス . . . . . . . . . . . .: 192.168.11.20
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.11.1
Tera Term(テラターム)はSSH2プロトコルをサポートしているリモートログオンクライアントです。
https://ja.osdn.net/projects/ttssh2/
[ダウンロードファイル一覧]をクリック → teraterm-4.104.zip
解凍してインストールしてください。
インストールフォルダーにあるTERATERM.INIの[HOST]にラズパイのローカルIPアドレスを追加します。
[Hosts]
Host1=192.168.11.21
ttermpro.exe を起動し、ラズパイのローカルIPアドレスを選択します。
ユーザ名:ubuntu / パスワード:初期設定時に指定したパスワード でログインします。
◇ロケール確認・設定
現在のロケール確認します
$ locale
LANG=C.UTF-8
LANGUAGE=
.....
対応しているロケール一覧を表示します
$ locale -a
C
C.UTF-8
POSIX
en_US.utf8
日本語ロケールがサポートされてるかを確認します
$ grep ja /usr/share/i18n/SUPPORTED
ja_JP.UTF-8 UTF-8
ja_JP.EUC-JP EUC-JP
ロケールを追加します
$ sudo locale-gen ja_JP.UTF-8
Generating locales (this might take a while)...
ja_JP.UTF-8... done
Generation complete.
ロケール追加を確認します
$ locale -a
C
C.UTF-8
POSIX
en_US.utf8
ja_JP.utf8
設定を反映させます
$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
確認します
$ cat /etc/default/locale
LANG=ja_JP.UTF-8
LANGUAGE=ja_JP:ja
ログインし直します
$ locale (あるいは $ localectl status)
LANG=ja_JP.UTF-8
LANGUAGE=ja_JP:ja
....
◇時刻合わせ
タイムサーバを追加します
$ sudo vi /etc/systemd/timesyncd.conf
NTP=ntp.nict.jp
FallbackNTP=ntp.ubuntu.com
※FallbackNTPに複数サーバを指定する場合はスペース区切りで続けて記述する
$ timedatectl set-ntp true
$ sudo systemctl enable systemd-timesyncd.service
$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo systemctl restart systemd-timesyncd.service
◇ホスト名の設定
現在のホスト名を確認します。
$ hostname
ubuntu
ドメイン名を example.jp として設定した場合は下記のようになります。
$ sudo hostnamectl set-hostname ns.example.jp
$ hostnamectl
Static hostname: ns.example.jp
Icon name: computer
Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Boot ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Operating System: Ubuntu 18.04.2 LTS
Kernel: Linux 4.15.0-1048-raspi2
Architecture: arm64
※ホスト名先頭の ns は Name Server の意味で、DNSサーバ設定に合わせた一般的な表記のようです
◇/bootディレクトリの整理
/bootには基本的にカーネルに関するファイルしか置かれてません。
/boot 容量の確認(microSDHC 32GBを使用した場合)
$ df /boot
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mmcblk0p2 30471000 2086776 27111980 8% /
基本領域のブートディレクトリにある不要なカーネルを削除します。
起動中のカーネルのバージョンを確認します。
$ uname -a
Linux ns.example.jp 4.15.0-1048-raspi2 #52-Ubuntu SMP PREEMPT Wed Jan 16...
インストールされているカーネルの一覧を表示します。
$ dpkg --get-selections | grep linux-image
linux-image-4.15.0-1031-raspi2 install
linux-image-4.15.0-1048-raspi2 install
linux-image-raspi2 install
カーネルは現在起動中のものと、念のため1つ前のものを残しておけば十分です。
linux-image-raspi2 は BCM2709用のカーネルのようです。
まずは --dry-run を付け、実際に処理を実行せずに、テストを実施してみます。
$ sudo apt-get autoremove --purge linux-image-raspi2 --dry-run
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
linux-image-raspi2* linux-raspi2*
アップグレード: 0 個、新規インストール: 0 個、削除: 2 個、保留: 78 個。
Purg linux-raspi2 [4.15.0.1036.34]
Purg linux-image-raspi2 [4.15.0.1036.34]
※カーネル削除時のオプションについて
autoremove : 削除しても問題ない不要なパッケージ (依存関係のないパッケージ) を自動的に削除する
--purge : カーネル・パッケージを削除する際に、設定ファイルも含めて削除する
--dry-run : 実際に処理を実行せずに、テストを実施する (動作確認用)
--dry-run を外して実行します。
再度、インストールされているカーネルの一覧を表示します。
$ dpkg --get-selections | grep linux-image
linux-image-4.15.0-1031-raspi2 install
linux-image-4.15.0-1048-raspi2 install
◇カーネルのバージョン更新
最新のカーネルにこだわる必要はないと思いますが、サーバーを公開してからカーネルを更新するのはリスクがあり過ぎなので、最新のカーネルにするのならばこのタイミングです。
インストール可能なカーネルをチェックします。
$ sudo apt-cache search linux-image | grep raspi2
linux-image-4.15.0-1010-raspi2 - Linux kernel image for version 4.15.0 on ARMv8 SMP
linux-image-raspi2 - Linux kernel image for the BCM2709 architecture.
---- (中略) ----
linux-image-4.15.0-1045-raspi2 - Linux kernel image for version 4.15.0 on ARMv8 SMP
linux-image-4.15.0-1047-raspi2 - Linux kernel image for version 4.15.0 on ARMv8 SMP
linux-image-4.15.0-1048-raspi2 - Linux kernel image for version 4.15.0 on ARMv8 SMP
linux-image-4.15.0-1049-raspi2 - Linux kernel image for version 4.15.0 on ARMv8 SMP
カーネルをインストールします
$ sudo apt-get install linux-image-4.15.0-1049-raspi2
リブートすると、新しいカーネルに自動的に変わっています。
$ uname -a
Linux ns.example.jp 4.15.0-1049-raspi2 #52-Ubuntu SMP PREEMPT Wed Jan 16...
ブートディレクトリーを表示します。
$ ls -l /boot
dtb -> dtbs/4.15.0-1049-raspi2/bcm2710-rpi-3-b-plus.dtb
dtb-4.15.0-1031-raspi2 -> dtbs/4.15.0-1031-raspi2/bcm2710-rpi-3-b-plus.dtb
dtb-4.15.0-1048-raspi2 -> dtbs/4.15.0-1048-raspi2/bcm2710-rpi-3-b-plus.dtb
dtb-4.15.0-1049-raspi2 -> dtbs/4.15.0-1049-raspi2/bcm2710-rpi-3-b-plus.dtb
initrd.img -> initrd.img-4.15.0-1049-raspi2
initrd.img-4.15.0-1031-raspi2
initrd.img-4.15.0-1048-raspi2
initrd.img-4.15.0-1049-raspi2
initrd.img.old -> initrd.img-4.15.0-1048-raspi2
vmlinuz -> vmlinuz-4.15.0-1049-raspi2
vmlinuz-4.15.0-1031-raspi2
vmlinuz-4.15.0-1048-raspi2
vmlinuz-4.15.0-1049-raspi2
vmlinuz.old -> vmlinuz-4.15.0-1048-raspi2
新しいカーネルへのリンクに張り替えられ、古いカーネルへのリンクには、リンク名に.oldが付加されているのがわかります。Ubuntu Server は、ブートローダーとして u-boot を使用していて、使い勝手が非常に悪いです。ディスクトップ版ubuntuと違い、GRUB2でのカーネル選択画面とかはありません。手動でこの.old付きリンクとdtbを元に戻せば、以前のカーネルに戻っているのかもしれませんが、カーネル情報は最新のままです。
カーネルのダウングレードは非常にやっかいですので、カーネルを更新すると元に戻せないと思った方が無難です。
◇パッケージの更新
ここまできたら一旦、インストール可能なパッケージ一覧を更新して、インストールされているパッケージを更新します。
$ sudo apt-get update
$ sudo apt-get upgrade
最後にラズパイ3 model B+の32GB SDカードと1Gメモリの使用状況です。
このSDカードには既にWEBサーバー、データベースマネージメントシステム、DNSサーバー、メールサーバーを組み込んだ状態です。
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 450572 0 450572 0% /dev
tmpfs 93400 4488 88912 5% /run
/dev/mmcblk0p2 30471000 3190128 26008628 11% /
tmpfs 466984 0 466984 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 466984 0 466984 0% /sys/fs/cgroup
/dev/mmcblk0p1 258095 96789 161307 38% /boot/firmware
tmpfs 93396 0 93396 0% /run/user/1000
$ free -t
total used free shared buff/cache available
Mem: 933968 317920 125976 6144 490072 594804
Swap: 0 0 0
Total: 933968 317920 125976
次に、拡張領域をUSB接続の128GBハードディスクに移した公開サーバーの状況です。
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 450380 0 450380 0% /dev
tmpfs 93396 4512 88884 5% /run
/dev/sda1 114854020 4780388 104196284 5% /
tmpfs 466972 0 466972 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 466972 0 466972 0% /sys/fs/cgroup
/dev/mmcblk0p1 258095 97663 160433 38% /boot/firmware
tmpfs 93392 0 93392 0% /run/user/1000
$ free -t
total used free shared buff/cache available
Mem: 933944 469584 40272 6916 424088 442260
Swap: 0 0 0
Total: 933944 469584 40272
ディスクにはかなり余裕があります。デスクトップ版ではないので、使用可能なメモリーも十分残っています。
また、Ubuntu 18.04ではスワップ領域をスワップファイル /swap.img に確保するため、スワップパーティションを作成する必要がなくなったようです。
このスワップファイルが必要に応じて自動的に利用されるのか、設定が必要なのかは現段階では不明です。
以前、Fedora Core で、CPUは Celeron、メモリー512Mのサーバーをデータセンターに借りていましたが、それですら全然余裕で稼働していました。
ubuntu server では、余計なパッケージも減り、ラズパイもメモリー1Gですので、いまのところ快適です。
◇その他の設定
起動時に表示される画面上部のロゴを消す
$ sudo vi /boot/firmware/cmdline.txt
net.ifnames=0 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait logo.nologo
※logo.nologo を追記します。
sshdでrootのパスワードログインを許可する(非推奨)
Ubuntuではデフォルトでrootはパスワードが設定されておらず、アカウントはロックされています。rootのパスワードを設定することでロックが解除され、rootのログインが可能となります。
$ sudo passwd root
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully
再度、rootアカウントをロックする場合
$ sudo passwd -l root
Ubuntuのsshdはrootのパスワードログインを許可していません。リモートからsshd経由でrootへログインするにはSSH公開鍵を使うべきです。
rootのパスワードを設定した状態で以下を実行することで、リモートからsshd経由でrootへログインできるようになります。
$ sudo vi /etc/ssh/sshd_config
#PermitRootLogin prohibit-password
↓変更
PermitRootLogin yes
$ sudo systemctl restart sshd
|