Apache HTTP Server(アパッチ エイチティーティーピー サーバ)は、Webサーバソフトウェアです。1995年から存在し、ウェブサーバとしては古株です。
インストール
バージョンを確認するには、以下のコマンドを実行します。
apachectl -v
インストールされている場合は、以下の様にバージョンなどが表示されます。
Server version: Apache/2.4.58 (Ubuntu)
Server built: 2024-04-18T15:13:41
インストールするには、以下のコマンドを実行します。
PHPと連携するためには、libapache2-mod-phpも指定します。
sudo apt install apache2 libapache2-mod-php
以下のパッケージがインストールされます。
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php
libapache2-mod-php8.3 libapr1t64 libaprutil1-dbd-sqlite3 libaprutil1-ldap
libaprutil1t64 libsodium23 php-common php8.3-cli php8.3-common
php8.3-opcache php8.3-readline
削除する場合は、以下のコマンドを実行します。
sudo apt purge apache2*
自動起動
OS起動時に自動実行させるためには、以下のコマンドを実行します。
sudo systemctl enable --now apache2
起動状態を確認するには、以下のコマンドを実行します。
sudo systemctl status apache2
起動中であれば、「active (running)」と表示されます。
● apache2.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
Active: active (running) since Wed 2024-05-01 10:11:53 JST; 1h 52min ago
表示を終了させるには、ctrl+zを押します。
サーバの設定
設定の管理方法は、-availableディレクトリに設定ファイルを保管し、有効にする場合は-enabledディレクトリにシンボリックリンクを置くという方法です。
設定ファイルはapache2.confです。/etc/apache2/にあります。
このファイルを編集しても良いのですが、バージョンアップなどで変更されると再度設定する必要が出てくるかもしれません。そこで、変更部分のみのファイルを作成し、反映することにします。
以下のパスへファイル「overwrite.apache2.conf」を作成します。
/etc/apache2/conf-available
今回は、以下の内容を反映させるとします。
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride FileInfo
Require all granted
</Directory>
内容は、AllowOverride の設定をNoneからFileInfoへ変更しています。こうすることで、/var/www/以降のディレクトリに.htaccessファイルが存在すると、その内容を実行するようになります。
overwrite.apache2.confを有効にするために、以下のコマンドを実行します。
sudo a2enconf overwrite.apache2.conf
/etc/apache2/conf-enabled/にファイルのシンボリックリンクができていれば成功です。
記述に問題がないか確認するには、以下のコマンドを実行します。
sudo apache2ctl configtest
エラーが無ければ「Syntax OK」と表示されます。
モジュールの設定
SSLモジュールが有効でない場合は、有効にします。
sudo a2enmod ssl
サイトの設定
http用の設定ファイルは、/etc/apache2/sites-available/000-default.conf です。
https用の設定ファイルは、/etc/apache2/sites-available/default-ssl.conf です。
これらも変更部分のみのファイルを作成し、反映することにします。
http用の設定ファイルとして「http.conf」を作成して、/etc/apache2/sites-available/へ保存します。
内容は、以下の方な感じです。
<VirtualHost *:80>
ServerName fuga.example.test
ServerAdmin webmaster@test
DocumentRoot /var/www/html/fuga/webroot
ErrorLog /var/www/html/logs/fuga_error_log
CustomLog /var/www/html/logs/fuga_access_log common
</VirtualHost>
https用の設定ファイルとして「https.conf」を作成して、/etc/apache2/sites-available/へ保存します。
内容は、以下の方な感じです。
<VirtualHost *:443>
ServerName fuga.example.test
DocumentRoot /var/www/html/fuga/webroot
ErrorLog /var/www/html/logs/fuga_ssl_error_log
CustomLog /var/www/html/logs/fuga_ssl_access_log combined
SSLEngine on
SSLCertificateFile /home/hoge/easy-rsa/pki/issued/example.test.crt
SSLCertificateKeyFile /home/hoge/easy-rsa/pki/private/example.test.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
SSLCertificateの部分は、通信の暗号化の際に使用する証明書です。詳細は、本サイトのプライベート証明書の作り方のページを参照してください。
これら設定ファイルを有効にするために、以下のコマンドを実行します。
sudo a2ensite http.conf
sudo a2ensite https.conf
default-ssl.confが有効でない場合は、こちらも有効にします。
sudo a2ensite default-ssl.conf
/etc/apache2/site-enabled/にファイルのシンボリックリンクができていれば成功です。
記述に問題がないか確認するには、以下のコマンドを実行します。
sudo apache2ctl configtest
エラーが無ければ「Syntax OK」と表示されます。
Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
と表示される場合は、以下のコマンドを実行してホスト名の設定ファイルを作成します。
sudo -s
echo ServerName $HOSTNAME > /etc/apache2/conf-available/fqdn.conf
exit
有効にするため、シンボリックリンクを作成します。
sudo a2enconf fqdn
設定をウェブサーバへ反映するためには、以下のコマンドを実行します。
sudo systemctl restart apache2
コメント