Ubuntu 22.04 を自分サーバで使う #1

あたらしくサーバを立てるのだけど、アップグレードが面倒なのでなるべく新しいバージョンが良い。でも、安定していてほしい。ということで、Ubuntu 22.04 を使ってみることにした。
普通のレンタルサーバという感じで、メールサーバと Web サーバとして動けば良いと考えている。

環境

余っている、さくらの VPS (v4) を使う。この VPS は、仮想 3 Core のメモリ 2 GB、ディスク 200 GB というもの。

昔のサーバって極貧メモリで動いていたんだけど、最近はどうなんだろう?メールサーバにしたいが、Anti Virus は必須とかいうとすごくメモリ食いそう。

インストール

とりあえず、ISO ファイルをアップロードしてインストールするが、その前に下準備。
使うドメインの DNS にホストを追加して、VPS 側で逆引きの設定。
ISO を SFTP でアップロードして、インストール開始。「Choose type of install」で「Ubuntu Server (minimized)」を選択したのと、「Network connection」で固定 IP アドレスを設定、「Configure ubuntu archive mirror」で理研を指定した。
で、インストール自体は特になんということもなく完了。

SSH

とりあえず、コントロールパネルのコンソールではあまりに使いづらいので、ssh サーバをインストール。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install openssh-server

sshd の設定をする。とりあえず、ポート番号を変える。/etc/ssh/sshd_config が設定ファイル。Port 30000 と設定。あと、切断防止に ClientAliveInterval 180ClientAliveCountMax 5 も追記。

$ sudo cp /etc/ssh/sshd_config{,.orig}
$ sudo vi /etc/ssh/sshd_config
$ sudo systemctl restart ssh

ユーザの ~/.ssh/authorized_keys に公開鍵を入れておく。
以降、別のターミナルから ssh で設定を続行。

諸々

最初にあったほうが良いものを入れる。

  • vim-nox
$ sudo apt install vim-nox
$ sudo update-alternatives --config editor

ufw

ufw を設定する。

$ sudo ufw enable
$ sudo ufw default DENY
$ sudo ufw allow <ssh のポート番号>

時刻合わせ

最近は NTP をインストールじゃないんだね。timesyncd というものでやるみたい。接続先は NTP サーバみたいですが。
/etc/systemd/timesyncd.conf#NTP= の行を NTP=ntp.nict.jp にする。

$ sudo vi /etc/systemd/timesyncd.conf
$ sudo systemctl restart systemd-timesyncd.service
$ sudo systemctl status systemd-timesyncd.service
$ timedatectl timesync-status

タイムゾーン

タイムゾーンを東京にする。

$ timedatectl
               Local time: Mon 2022-09-19 03:08:12 UTC
           Universal time: Mon 2022-09-19 03:08:12 UTC
                 RTC time: Mon 2022-09-19 03:08:12
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl
               Local time: Mon 2022-09-19 12:09:42 JST
           Universal time: Mon 2022-09-19 03:09:42 UTC
                 RTC time: Mon 2022-09-19 03:09:42
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Apache

まず Apache からインストールする。このあと証明書を Let’s Encrypt で取得しようと思っているんだけど、更新かけるときに使うような感じがあるので(これは作業メモでもあるので、実際にそこまで進んでいない)。

とりあえず、ufw で http と https の許可、ディレクトリインデックスの設定、クライアントへ返すサーバ情報、サーバ名、管理者のメールアドレスの設定を行った。
DirectoryIndexindex.html index.cgi index.pl index.php あたりに。ServerTokensProd に。

$ sudo apt install apache2
$ sudo ufw allow 80
$ sudo ufw allow 443
$ sudo vi /etc/apache2/mods-available/dir.conf
$ sudo vi /etc/apache2/conf-available/security.conf
$ sudo vi /etc/apache2/apache2.conf
$ sudo vi /etc/apache2/sites-enabled/000-default.conf
$ sudo systemctl restart apache2

CGI の設定とテスト(ブラウザから http://<hostname>/cgi-bin/testCgi にアクセス)。

$ sudo a2enmod cgid
$ sudo systemctl restart apache2
$ sudo vi /usr/lib/cgi-bin/testCgi
$ chmod 705 /usr/lib/cgi-bin/testCgi
$ sudo chmod 705 /usr/lib/cgi-bin/testCgi

ホスト名の他に、収容するホストをバーチャルホストで設定する。

$ sudo cp /etc/apache2/sites-available/{000-default.conf,newvirtualhost.conf}
$ sudo vi /etc/apache2/sites-available/newvirtualhost.conf
$ sudo a2ensite newvirtualhost.conf
$ sudo systemctl restart apache2

Certbot

Let’s Encrypt から証明書を取得する。
Certbot をインストールして起動。

$ sudo apt install certbot
$ sudo certbot certonly --webroot -w /var/www/html -d <host fqdn> -w /home/webadm/Sites/<virtualHostDir> -d www.<domain> -d <domain>

HTTPS の設定と SSL 有効化。

$ sudo vi /etc/apache2/sites-available/default-ssl.conf
$ sudo a2ensite default-ssl
$ sudo a2enmod ssl
$ sudo systemctl restart apache2

コメント

タイトルとURLをコピーしました