たまにやるのでメモ。
Ubuntu18.04だけどGCPのComputeEngineでやるのでufwは使わない。
Firewall設定の [Allow HTTP/HTTPS traffic] をONにしとく。
そして、先にDNSにAレコード登録しておく。
おまじない
sudo apt update -y; sudo apt upgrade -y
Apache2インストール
sudo apt install apache2 -y
サーバーバージョンは隠したいのでServerSignatureを無効にする。
/etc/apache2/apache2.conf に下記を追記。
ServerSignature Off ServerTokens Prod
VirtualHost設定
以下www2は適宜書き換える。
ディレクトリを用意する。
そしてsudoしなくても操作できるようにオーナーを自分にする。
cd /var/www mkdir www2 sudo chown ${USER}:${USER} www2 sudo chmod 755 www2
conf作る。
cd /etc/apache2/sites-available sudo cp 000-default.conf www2.conf
/etc/apache2/sites-available/www2.confにvirtual host設定を追記する。
ServerNameはDNSにAレコード登録したFQDNにする。
<VirtualHost *:80> ServerAdmin root@localhost ServerName www2.kwonline.org DocumentRoot /var/www/www2 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
conf切り替えてApache再起動。
sudo a2ensite www2.conf sudo a2dissite 000-default.conf sudo systemctl restart apache2
SSL化
LetsEncryptのcertbotを使う
sudo add-apt-repository ppa:certbot/certbot
確認メッセージが出るので[Enter]キーを押す。
以下www2のFQDNは適宜書き換える
sudo apt install python-certbot-apache -y sudo certbot --apache -d www2.kwonline.org
メアドやHTTPのリダイレクトについて質問されるので適宜答える。
BASIC認証
htpasswdコマンドの初回実行時のみ[-cオプション]を付ける
cd /etc/apache2 sudo htpasswd -c .htpasswd myuser1
/etc/apache2/sites-enabled/www2-1-le-ssl.conf というファイルがあるので下記を 「VirtualHostディレクティブの中」に追記する。
外に書いても動かない。
もし特定のディレクトリのみBASIC認証をかけたい場合は指定すればOK。
正規表現も使える。
詳しくはここに書いてある。
<Directory "/var/www/www2/"> AuthType Basic AuthName "Password Required" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory>
最後にApache2を再起動して完了
sudo systemctl restart apache2