はじめての Apache on Ubuntu その1
大体のことはここ↓を見れば分かる。
CentOS ではなく Ubuntu を選択したのは、そこに Ubuntu machine があったから。特に深い意味はない。
ドメインの取得
サーバーはすでに所有しているものとする。筆者はさくらの VPS をサーバーとして使う。
まず、どこかからドメインを買ってくる。筆者は お名前.com で hunamizawa.com を購入。
DNSの設定
正引き
FQDN (hunamizawa.com) から IPアドレスを得る、基本的な設定。お名前.com の管理画面から、サーバーのIPアドレスをAレコード・AAAAレコードに設定する。メールは使う予定がないのでMXレコードは設定しない。
DNS がある程度浸透するまで数時間待つ。
逆引き
IPアドレスから FQDN (hunamizawa.com) を得るための設定。
nslookup hunamizawa.com
が通るようになったので、さくらのVPSの管理画面から、ホスト名逆引き登録で hunamizawa.com を設定する。
この後、DNS が完全に浸透するまで3日ぐらい必要なので、その間にローンチの準備をするのが吉。
Apache のセットアップ
とりあえずここ↓を見て、http://hunamizawa.com/ にアクセスすると "It works!" と言ってくれる状態にする。
で、冒頭に申し上げた通り Ubuntu を使っているので、よく使われる CentOS とは細かい違いがある。
- Apache のユーザー名は
www-data
(apache
ではない) - 設定ファイルの置き場は
/etc/apache2
SSL 証明書を取得
HTTP over SSL に必要な証明書を、Let's Encrypt から貰ってくる。ちょっと前なら SSL 証明書を貰うのにウン万円必要だったのに、すごい時代になったなぁ。
まず、certbot
を入れる。apt-get
で入るやつは古いから使わないほうが良いとのこと。
apt-get install python3 pip3 pip3 install certbot
依存関係で足りないモジュールがあれば都度 pip3 install
する。自分の場合は「cryptography
が古いよ」と言われたので install --upgrade cryptography
した。
次に、80番ポートを一瞬開けておいて、次を実行する。
certbot certonly --webroot -w /var/www/html -d hunamizawa.com
連絡先のメアドを入れたり、利用規約への同意にチェックしたら、ACME によるドメイン名所有の認証が行われて、証明書が発行される。
Apache のセットアップ(続き)
以降は HTTPS で serve すればよいが、ACME の仕様上 HTTP も開けておかないと証明書の更新ができない。サイト利用者の利便性も考えて、HTTP (80) 宛のリクエストを全部 HTTPS (443) にリダイレクトするように設定しておく。
RewriteEngine on RewriteCond %{HTTP_HOST} ^hunamizawa\.com RewriteRule ^/(.*)$ https://hunamizawa.com/$1 [R=301,L]
SSL 証明書のパスを適切に設定する。
SSLCertificateFile /etc/letsencrypt/live/hunamizawa.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/hunamizawa.com/privkey.pem
設定ファイルの構文チェック。
apachectl configtest
必要なモジュールをロードし、サイトの設定ファイルを読み込ませる。a2en**/a2dis**
は *-enabled
にシンボリックリンクを張ったり剥がしたりするコマンド。
a2enmod ssl a2enmod rewrite a2dissite 000-default a2ensite hunamizawa.com systemctl restart apache2
80番と443番を開けて、SSL 関係のエラーが出ないこと、HTTP 宛リクエストが正常に 301 リダイレクトされることを確認する。
certbot を cron で回す
crontab に1行書き加えれば良い。
certbot renew
ここまで来れば、static なコンテンツを HTTPS で配信できる状態になった。後は PHP なり何なりのセットアップをすればよい。