あたらしくサーバを立てるのだけど、アップグレードが面倒なのでなるべく新しいバージョンが良い。でも、安定していてほしい。ということで、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 180
と ClientAliveCountMax 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 の許可、ディレクトリインデックスの設定、クライアントへ返すサーバ情報、サーバ名、管理者のメールアドレスの設定を行った。DirectoryIndex
は index.html index.cgi index.pl index.php
あたりに。ServerTokens
は Prod
に。
$ 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
コメント