Ubuntuを最小限のサーバとしてセットアップする場合のメモ。
もくじ:
インストール自体は特に落とし穴はないと思いますが、
デフォルトではsshdが選択されない場合があるので、必要に応じてOpenSSH-Serverを追加します。
ネットワーク設定
インストール時に指定しなかった場合(または最近のバージョン)、NIC設定はinterfacesファイルを編集して設定します。
1 2 | $ ip a $ sudo vi /etc/network/interfaces |
デフォルトではDHCPで自動取得。固定したければeth0 (または環境依存で他の名前)の記述を変更します。
1 2 3 4 5 6 7 8 | # DHCP iface eth0 inet dhcp # 固定IPアドレス iface eth0 inet static address 192.168.100.10 netmask 255.255.255.0 gateway 192.168.100.1 dns-nameservers 192.168.100.1 |
Ubuntu 17で固定IPアドレスを設定する場合(netplan)
Ubuntu Server 17ではこのinterfaces
ファイルを書き換えるやり方では固定できなくなったようです。
インストール直後のinterfaces
ファイルはこんな感じ。eth0の記述がなくなっていますね。
1 2 3 4 5 6 | # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # Generated by debian-installer. # The loopback interface auto lo iface lo inet loopback |
代わりに/etc/netplan/
にあるYAMLファイルから設定します。
変更前のDHCPが設定されているもの↓
1 2 3 4 5 6 7 8 | # This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: eth0: dhcp4: yes |
DHCPを無効化して、固定アドレスを入力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ sudo vi /etc/netplan/99_config.yaml network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no dhcp6: no addresses: [192.168.100.10/24] gateway4: 192.168.100.1 nameservers: addresses: [192.168.100.1] |
初期状態のYAMLファイル名はセットアップ時に自動的に生成されるので、環境によって異なります。
システムの領域なので、正式には自動生成された既存のYAMLファイルを変更するよりも、新たにファイル(上の例では99_config.yaml
)を作成して設定を書くほうが推奨されています。
netplan
の動作としては、/etc/netplan/*.yaml
に該当するファイルを全て読んでおり、英数でソートした順に上書きされていくようですので、自動生成のファイルは残しつつ、順序的に後に来る新規のファイル名にすれば良いということですね。
netplan
コマンドを使って設定を適用します。--debug
スイッチをつけると設定ファイルに入力ミスがあった場合にエラーとして表示されます。
問題なく成功すれば、即座にアドレスが変更されます。前のアドレスでSSHしている場合は接続しなおして下さい。
1 2 | $ sudo netplan --debug generate $ sudo netplan apply |
パッケージ設定
インストール時に自動更新を選択しなかった場合、念のため手動でパッケージを更新しておきます。
1 2 | $ sudo apt update $ sudo apt upgrade |
一通り必要なツールは入っているので、特に追加でインストールするようなものはないかも。
Pythonインストール
UbuntuではPython3がデフォルトになっているので、それでいい場合は特に何もしなくても使えますが、パスはpython3 (/usr/bin/python3
)に通っているようです。
Python2を使用する際は、python-minimal
を追加でインストールするとpython (/usr/bin/python
)にパスが通ります。
1 2 3 4 5 6 7 | # python2 $ sudo apt install python-minimal $ python --version # python3 $ sudo apt install python3 $ python3 --version |
pipのインストール
pip (python3-pip
)をインストールする場合もaptでいけます。
1 2 | $ sudo apt update $ sudo apt install python3-pip |
ただし、注意が必要なのは、レポジトリの設定次第ではapt経由でインストールできない場合があることです。そんなときは以下の手順を試してuniverseレポジトリを追加してみるといいかもしれません。
1 2 3 4 5 6 7 8 9 10 11 | $ sudo vi /etc/apt/sources.list # 下記のようにuniverse を追加 deb http://archive.ubuntu.com/ubuntu bionic main universe deb http://archive.ubuntu.com/ubuntu bionic-security main universe deb http://archive.ubuntu.com/ubuntu bionic-updates main universe # または下記のコマンドでレポジトリ追加 $ sudo apt-add-repository universe $ sudo apt update $ sudo apt install python3-pip -y |
問題なくインストールできていればpip3コマンドが使えるようになります。
1 2 3 | $ pip3 --version # 例) pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6) $ sudo pip3 install psutil |
rootによるsshログインの有効化
やらなくても特に困らないものの、ごく稀に必要になるrootログイン。
Ubuntuではrootアカウントが無効化されているので、デフォルトではsshログインができません。
一般ユーザからrootアカウントにスイッチするだけならばsudo su -
を使います。
その場合はrootアカウントのパスワード作成は不要ですが、rootアカウントでSSHログインするには、以下の設定が必要です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # 一般ユーザでログイン $ ssh (user)@(target) # rootにパスワードを作成 $ sudo passwd root # 設定ファイルを編集 $ sudo vi /etc/ssh/sshd_config # "PermitRootLogin" を"yes"に変更 PermitRootLogin without-password # ↓ PermitRootLogin yes # sshdを再起動 $ sudo service ssh restart |
時刻同期
時刻の同期が必要な環境ではNTPクライアントを設定します。
Ubuntuではtimesyncd
を採用しているようですね。
1 2 3 4 | # サービスを確認 $ sudo systemctl status systemd-timesyncd # 現在の状態を確認 $ sudo timedatectl status |
timesyncdはsystemdの一部なので、設定は/etc/systemd/timesyncd.conf
にあります。環境に合わせて参照したいNTPサーバを書いておきます。
1 2 3 4 5 6 7 8 9 10 | # サービスを確認 $ sudo vi /etc/systemd/timesyncd.conf [Time] NTP={NTP server address} # サービスを再起動 $ sudo systemctl restart systemd-timesyncd # タイムゾーン設定 $ sudo timedatectl set-timezone Asia/Tokyo # 現在の状態を確認 $ sudo timedatectl status |
おわり。