Apache 2.4 のインストール
さくらインターネットのさくらの VPS に FreeBSD 13.1-RELEASE をセットアップして、無料SSL証明書を取得したので、今回の記事ではウェブサーバの立ち上げを行う。もちろん、ウェブサーバを使わない場合は不要。
以下、作業は ssh で行っている。プロンプトが # の場合は rootユーザで作業する。プロンプトが % なら一般ユーザでよい。
Apache 2.4 のインストール
pkg からインストール。
# pkg install apache24
/etc/rc.conf に以下を追加。
apache24_enable="YES"
基本的な設定
基本的な設定を追加する。デフォルトで用意される、/usr/local/etc/apache24/httpd.conf は編集せず、/usr/local/etc/apache24/Includes ディレクトリ以下に、拡張子 .conf のファイルを置いておくことで設定を追加することができる。
まず、モジュールの有効化などの基本動作のための設定。
私はこのあたりの設定を、/usr/local/etc/apache24/Includes/000.server.conf というファイルに記述している。
LoadModule include_module libexec/apache24/mod_include.so
LoadModule ssl_module libexec/apache24/mod_ssl.so
LoadModule http2_module libexec/apache24/mod_http2.so
#LoadModule proxy_http2_module libexec/apache24/mod_proxy_http2.so
LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_connect_module libexec/apache24/mod_proxy_connect.so
LoadModule proxy_http_module libexec/apache24/mod_proxy_http.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
LoadModule proxy_balancer_module libexec/apache24/mod_proxy_balancer.so
LoadModule slotmem_shm_module libexec/apache24/mod_slotmem_shm.so
LoadModule lbmethod_byrequests_module libexec/apache24/mod_lbmethod_byrequests.so
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
ServerName SEVERNAME.example.net
ServerAdmin webmaster@SERVERNAME.example.net
ServerTokens OS
ServerSignature On
Mutex sem
DirectorySlash On
Define IPV6_PREFIX 2403:3a00:202:1109
Define IP6A_PREFIX 2403-3a00-202-1109
Listen 49.212.143.184:80
Listen 49.212.143.184:443
Listen [${IPV6_PREFIX}:49:212:143:184]:80
Listen [${IPV6_PREFIX}:49:212:143:184]:443
LogFormat "%V %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost
AddHandler cgi-script .cgi
AddType text/html;charset=UTF-8 .includehtml
<Directory />
Allow from all
Options +Includes -Indexes
Require all granted
</Directory>
Listen で listenする IPv4アドレス、IPv6アドレス、ポートを明示している。デフォルトでインストールされる httpd.conf の中に、Listen 80 という項目があって、これが有効なままだとインタフェイスに割り当てられたすべての IPアドレスの TCP/IP 80ポートで listen してしまうので、コメントアウトしておく。
VPS に割り当てられた IPv4アドレス、IPv6アドレスはコントロールパネルからも確認できる。
デフォルトサイトと VirtualHost の設定
私はデフォルトサイトと VirtualHost の基本設定を、/usr/local/etc/apache24/Includes/001.default.conf というファイルに記述している。
<VirtualHost \
49.212.143.184:80 \
[${IPV6_PREFIX}:49:212:143:184]:80 \
>
ServerName ${IP6A_PREFIX}-49-212-143-184.ip6a.net
DocumentRoot /usr/local/www/SERVERNAME.example.net
CustomLog "|/usr/local/sbin/rotatelogs /var/log/httpd/SERVERNAME.example.net_log.%Y%m 1M +540" vhost
UseCanonicalName On
Protocols h2 http/1.1
DirectoryIndex index.php index.html
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/HTTP_
RewriteRule ^(.+) /usr/local/www/%{HTTP_HOST}$1 [L]
ErrorDocument 403 /HTTP_FORBIDDEN.html
ErrorDocument 404 /HTTP_NOT_FOUND.html
</VirtualHost>
<VirtualHost \
49.212.143.184:443 \
[${IPV6_PREFIX}:49:212:143:184]:443 \
>
ServerName ${IP6A_PREFIX}-49-212-143-184.ip6a.net
DocumentRoot /usr/local/www/SERVERNAME.example.net
CustomLog "|/usr/local/sbin/rotatelogs /var/log/httpd/ssl_SERVERNAME.example.net_log.%Y%m 1M +540" vhost
UseCanonicalName On
Protocols h2 http/1.1
DirectoryIndex index.php index.html
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/HTTP_
RewriteRule ^(.+) /usr/local/www/%{HTTP_HOST}$1 [L]
ErrorDocument 403 /HTTP_FORBIDDEN.html
ErrorDocument 404 /HTTP_NOT_FOUND.html
SSLEngine On
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4
SSLCertificateFile /usr/local/etc/letsencrypt/live/SERVERNAME.example.net/cert.pem
SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/SERVERNAME.example.net/privkey.pem
SSLCertificateChainFile /usr/local/etc/letsencrypt/live/SERVERNAME.example.net/chain.pem
</VirtualHost>
TCP/IP 80ポートは非SSL の http、TCP/IP 443ポートは SSL化した https で使うので、それぞれに独立した設定を行う。
中身についてはほぼ同じだが、ログファイルを分けているのと、TCP/IP 443ポートの方には SSL関連に設定を加えている。
SSLCertificateFile、SSLCertificateKeyFile、SSLCertifiCateChainFile は無料SSL証明書を取得したSSL証明書への path を記述する。
以上の設定で、/usr/local/www 以下に FQDN名のディレクトリがあればそのディレクトリが参照され、もしなければ /usr/local/www/SERVERNAME.example.net のディレクトリが Document Root として使われる。
service apache24 start コマンドで起動する。
動作確認
まずは、非SSL の TCP/IP 80ポートから。
次に、SSL の TCP/IP 443ポート。
ブラウザでアクセスすると、Let's Encrypt で署名された SSL証明書を使って暗号化通信していることが確認できる。
次回はさくらの VPS のセットアップ最後の記事として、named の BIND 9.18 をインストールしてセットアップする。
さいごに
技術的な小難しい話題でしたが、最後まで読んでいただいてありがとうございました。
よければ ↓ にある、♡ をクリックしていただけると励みになります。質問のコメントも歓迎です。
この記事が気に入ったらサポートをしてみませんか?