Apache HTTP Server環境の構築

IT

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

コメント

タイトルとURLをコピーしました