これから、さくらのVPSにApacheをインストールして、SSL化できるようになるまでを述べていきたいと思います。
1 下準備
・ドメイン(さくらでも、さくら以外のValue Domainとかでもいいです)を取得し、「さくらのVPS」→「グローバルネットワーク」→「アドレス」にあるIPアドレス(ピリオドで区切られた「123.456.789」のような文字列)が登録しているドメインサービスのDNS設定で割り当てられるようしておきます。ちなみに私はXdomainで取得しました。反映するには2~3日かかる場合がありますので、その場合はサーバーへのドメインの設定などについてはまだできないため、じっくり待ちます。SSLの設定もエラーになります。(IPでサーバーの設置を確認するなどは、反映してなくてもできます)
・電源をONにします。
・別途、ファイアーウォールを設定するので、「グローバルネットワーク」→「パケットフィルターの設定」は、「設定しない」にしておきます。ちなみに、もし設定しておくなら、サイトを閲覧できるようにするには、パケットフィルタのポート開放をする必要があります。
・コンソールを立ち上げる
このあとは、すべてコンソール上の作業になります。GUIが使えないので、かゆくなった足の裏を靴底から掻いているように、気分的にしんどくなりますが、がんばります。
・ログインする(2) パスワードを入力する
2 ファイアーウォールの設定
さきほど、パケットフィルタを設定しないことにしたので、ファイアーウォールを設定することにします。Ubuntuには、ufwというファイアーウォールのアプリケーションがありますので、下記コマンドを入力してufwをインストールします。
sudo apt install ufwufwは有効化しないと動きませんので、やっておきます。これは、セキュリティ的に必要なことだと思います。
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」のような文字列です。下記のページがブラウザに表示されれば成功です。
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 apache2mod rewriteの有効化をしておきます。 「/etc/apache2/apache2.conf」の中の、「<Directory /var/www/>」ディレクティブの中の「AllowOverride None」という記述を探し、「None」を「All」に直します。 そのうえで、下記のコマンドを実行します。
sudo a2enmod rewrite sudo systemctl restart apache2Let' Encryptを実行するためのcertbotやApacheと連動するアプリケーションcertbot python3-certbot-apacheを導入します。
sudo apt install certbot python3-certbot-apacheLet' Encryptを導入します。
sudo certbot --apache
このあたりのことは別記事
に載せたことと全く同じです。インストール中に質問が出てきて、それに答える形なのですが、最初の質問は有効なメールアドレスの記入、あとはたいていa(同意)かy(はい)、ドメインのリストが出たら番号をスペースを空けて書く、リダイレクトするかどうかに答える、などです。
そんなわけで、私もさくらのVPSでサーバー設置が無事できました。
この過程で当然サイトも設置しており、下記のURLになります(ずっと置いておくかどうかはわかりませんが)
コメント