見出し画像

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 をインストールしてセットアップする。


さいごに


技術的な小難しい話題でしたが、最後まで読んでいただいてありがとうございました。

よければ ↓ にある、♡ をクリックしていただけると励みになります。質問のコメントも歓迎です。


この記事が気に入ったらサポートをしてみませんか?