これから、さくらのVPSにApacheをインストールして、SSL化できるようになるまでを述べていきたいと思います。

1 下準備

・ドメイン(さくらでも、さくら以外のValue Domainとかでもいいです)を取得し、「さくらのVPS」→「グローバルネットワーク」→「アドレス」にあるIPアドレス(ピリオドで区切られた「123.456.789」のような文字列)が登録しているドメインサービスのDNS設定で割り当てられるようしておきます。ちなみに私はXdomainで取得しました。反映するには2~3日かかる場合がありますので、その場合はサーバーへのドメインの設定などについてはまだできないため、じっくり待ちます。SSLの設定もエラーになります。(IPでサーバーの設置を確認するなどは、反映してなくてもできます)
 ・電源をONにします。
2022-02-27
・別途、ファイアーウォールを設定するので、「グローバルネットワーク」→「パケットフィルターの設定」は、「設定しない」にしておきます。ちなみに、もし設定しておくなら、サイトを閲覧できるようにするには、パケットフィルタのポート開放をする必要があります。
2022-02-27
2022-02-27

・コンソールを立ち上げる
このあとは、すべてコンソール上の作業になります。GUIが使えないので、かゆくなった足の裏を靴底から掻いているように、気分的にしんどくなりますが、がんばります。
2022-02-27
・ログインする(1) 「ubuntu」と入力してEnter2022-02-27
・ログインする(2) パスワードを入力する
2022-02-27

2 ファイアーウォールの設定

さきほど、パケットフィルタを設定しないことにしたので、ファイアーウォールを設定することにします。Ubuntuには、ufwというファイアーウォールのアプリケーションがありますので、下記コマンドを入力してufwをインストールします。

sudo apt install ufw
ufwは有効化しないと動きませんので、やっておきます。これは、セキュリティ的に必要なことだと思います。
sudo ufw enable
次に、WEBサーバーに使うポート80を開放します。
sudo ufw allow 80
次に、WEBサーバー(SSL)に使うポート443を開放します。
sudo ufw allow 443
それから、FTPサーバーでよく使われるポートも一括して開放しておきます。(今回、FTPサーバーのインストールはまだしていませんが、将来に備えて)
sudo ufw allow 20:22/tcp

3 Apacheのインストール

以下のコマンドでApacheをインストールします
sudo apt install apache2
これで、一応WEBサイトらしきものができています。 確認するには、サーバーのグローバルIPをブラウザのアドレスバーに打ち込んでみます。具体的には「サーバー情報」→「基本情報」→「IPv4」のドットで区切られた「123.456.789」のような文字列です。下記のページがブラウザに表示されれば成功です。
2022-02-27

4 ドキュメントルートの設定

上記のUbuntu/Apacheのデフォルトページは「/var/www/html」というディレクトリの中にある「index.html」ファイルです。このファイルを格納している「html」ディレクトリを「ドキュメントルート」と呼びます。このままでもいいのですが、よくある「public_html」というディレクトリ名に変更しようと思います。ただ、そうすると、ブラウザにアクセスしても「Not Found」などになってしまうので、設定自体も変える必要もあります。
まず、ディレクトリ名変更は
sudo mv /var/www/html /var/www/public_html
設定変更は、
sudo vi /etc/apache2/sites-available/000-default.conf
で、「/etc/apache2/sites-available/000-default.conf」の「/var/www/html」のところを「/var/www/public_html」に書き換え、以下のコマンドを実行してApacheを再起動します。
sudo systemctl restart apache2

5 バーチャルホスト(バーチャルドメイン)の設定

このままでもすでにドメインが反映するのですが、Let’s EncryptのようなSSL設定をするにはバーチャルドメインの設定が必要なので、やっておきます。また、この考え方が理解できれば、同一のサーバーで複数のドメインやサブドメインを運用することが可能です。
なお、ドキュメントルートもドメイン(サブドメイン)ごとに割り当てます。場所は、ドメイン名が「hogehoge.com」ならば、ディレクトリ名も「/var/www/public_html/hogehoge.com」というように、ドメイン名とディレクトリ名を一致させたほうが、ドメインやサブドメインが増えたときに間違えずに済んでよさそうです。「public_html」ディレクトリを削除する考え方もあるようですが、私は上記のとおりにしています。
ディレクトリ作成は
sudo mkdir /var/www/public_html/hogehoge.com
のような感じでいいかな?ドメインサービスの設定でドメインのDNS設定をアスタリスクにしたりすると、サブドメイン用のディレクトリもたくさん作っていいですが、同じ数だけ設定ファイル(下記)が必要です。
設定方法には、/etc/apache2/site-availableディレクトリ内に「(ドメイン名がどれになっているか理解しやすいファイル名).conf」というファイルを、のちに述べるような内容で作成します。 ファイル名はなんでもいいのですが、一般には「example.com.conf」のようなファイル名が好まれています。「conf」という拡張子がないと動かないので要注意です。 ドメイン名が「hoge.com」の場合でご説明します。 下記のコマンドで、「hoge.com.conf」ファイルを新規作成します。
sudo vim /etc/apache2/sites-available/hoge.com.conf
下記の内容を記載します。下記のうち、「hoge.com」のところは、お持ちのドメインの内容に従って書き直してください。
ServerName hoge.com
<VirtualHost *:80>
        ServerName hoge.com
        ServerAlias www.hoge.com
	ServerAdmin webmaster@hoge.com
	DocumentRoot /var/www/public_html/example.com

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
この記述は下記のコマンドで有効化する必要があります。
sudo a2ensite hoge.com
この段階では、ブラウザのアドレスバーに設定したドメインを打ち込むと、index.htmlは作っていないので、空のディレクトリリストが表示されるかと思います。SSL化はしていないので、まだ「安全な接続ではありません」というブラウザの表示が出てしまっている状態です。

6 SSL化

WEBサイトを公開するにはSSL化が必須でしょうから、ここでは無料でUbuntuのコマンドでも導入できる「Let's Encrypt」を導入します(実は私はそれしか知らないので)。 まず、以下のコマンドでSSLを有効化します。
sudo a2enmod ssl
sudo systemctl restart apache2
mod rewriteの有効化をしておきます。 「/etc/apache2/apache2.conf」の中の、「<Directory /var/www/>」ディレクティブの中の「AllowOverride None」という記述を探し、「None」を「All」に直します。 そのうえで、下記のコマンドを実行します。
sudo a2enmod rewrite
sudo systemctl restart apache2
Let' Encryptを実行するためのcertbotやApacheと連動するアプリケーションcertbot python3-certbot-apacheを導入します。
sudo apt install certbot python3-certbot-apache
Let' Encryptを導入します。
sudo certbot --apache
このあたりのことは別記事
に載せたことと全く同じです。インストール中に質問が出てきて、それに答える形なのですが、最初の質問は有効なメールアドレスの記入、あとはたいていa(同意)かy(はい)、ドメインのリストが出たら番号をスペースを空けて書く、リダイレクトするかどうかに答える、などです。
そんなわけで、私もさくらのVPSでサーバー設置が無事できました。
この過程で当然サイトも設置しており、下記のURLになります(ずっと置いておくかどうかはわかりませんが)