RaspiOS Apache2のインストール

Raspberry Pi OSに「apache2」をインストールする方法です。

apache2のインストール

$ sudo apt install apache2 ← aptでインストール
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  apache2-bin apache2-data apache2-utils libapr1 libaprutil1
  libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 libjansson4 liblua5.2-0
  ssl-cert
Suggested packages:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser
  openssl-blacklist
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1
  libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1 libjansson4 liblua5.2-0
  ssl-cert
0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,365 kB of archives.
After this operation, 7,397 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
   : (割愛)
$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-12-03 06:22:18 JST; 3min 43s ago
     Docs: https://httpd.apache.org/docs/2.4/
 Main PID: 1651 (apache2)
    Tasks: 55 (limit: 4915)
   CGroup: /system.slice/apache2.service
           ├1651 /usr/sbin/apache2 -k start
           ├1653 /usr/sbin/apache2 -k start
           └1654 /usr/sbin/apache2 -k start
   : (割愛)
$ apache2 -v ← バージョンの確認
Server version: Apache/2.4.38 (Raspbian)
Server built: 2020-08-25T20:08:29

初期動作の確認

適当なブラウザーに「http://サーバのIPアドレス/」を入れることで動作の確認ができます。

設定ファイルについて

設定ファイルを触る前に、ある程度、設定ファイルの構成を、知っておく必要があるかと思います。私のように、RHEL系のLinuxに慣れている人は、最初のうちは戸惑うかも知れません。

$ tree -d -L 1 /etc/apache2
/etc/apache2
 ├ conf-available   ← 利用可能な設定ファイル群がある
 ├ conf-enabled     ← 有効な設定ファイル群がある
 ├ mods-available   ← 利用可能なモジュールをロードするための設定ファイル群がある
 ├ mods-enabled     ← 有効なモジュールをロードするための設定ファイル群がある
 ├ sites-available  ← 利用可能な仮想ホストの設定ファイル群がある
 └ sites-enabled    ← 有効な仮想ホストの設定ファイル群がある

6 directories

Raspberry Pi OS(debian系)のApache2では、定義が用途ごとに分けられていて、必要なものを有効にして利用するという考え方です。

定義ファイルの構成は、利用可能なファイル群にあるものに対してシンボリックリンクを行うことで、その設定が有効になります。シンボリックリンクは、専用のコマンドで行います。

対象ディレクトリーリンク作成(有効)リンク削除(無効)
conf-*a2enconfa2disconf
mods-*a2enmoda2dismod
sites-*a2ensitea2dissite
a
$ ls -F /etc/apache2 | grep -v /
apache2.conf ← メインとなる設定ファイル
envvars      ← 環境変数を指定する設定ファイル
magic        ← MIMEタイプを判断するための設定ファイル
ports.conf   ← 待ち受けポートを指定する設定ファイル

設定ファイルの内容

メインとなる設定ファイルをコメント文を除いて表示させてみました。

$ cat /etc/apache2/apache2.conf | sed -e "/^# /d" | sed -e "/^$/d" | sed -e "/^#$/d" | sed -e "/#\t/d"
#ServerRoot "/etc/apache2" ← インストールされているディレクトリーの指定
#Mutex file:${APACHE_LOCK_DIR} default ← Mutexによる排他制御の指定
DefaultRuntimeDir ${APACHE_RUN_DIR} ← ランタイム情報を出力するディレクトリーの指定
PidFile ${APACHE_PID_FILE} ← デーモンのプロセスIDを出力するファイルの指定
Timeout 300 ← タイムアウト時間(秒)の指定
KeepAlive On ← キープアライブ(接続持続性)を有効にするかどうかの指定
MaxKeepAliveRequests 100 ← キープアライブ有効時の許可される要求数の指定
KeepAliveTimeout 5 ← キープアライブ有効時の待機時間(秒)の指定
User ${APACHE_RUN_USER} ← 子プロセスのユーザー属性の指定
Group ${APACHE_RUN_GROUP} ← 子プロセスのグループ属性の指定
HostnameLookups Off ← クライアントIPアドレスのDNSルックアップを有効にするかどうかの指定
ErrorLog ${APACHE_LOG_DIR}/error.log ← エラーログを出力するファイルの指定
LogLevel warn ← ログレベルの指定
IncludeOptional mods-enabled/*.load ← 有効なモジュールの設定ファイル(.load)を読み込む
IncludeOptional mods-enabled/*.conf ← 有効なモジュールの設定ファイル(.conf)を読み込む
Include ports.conf ← 待ち受けポートの設定ファイルを読み込む
<Directory /> ← 指定されたディレクトリーとサブディレクトリーのみに適用させるディレクティブを囲む
        Options FollowSymLinks ← ディレクトリー「/」配下のシンボリックリンクファイルをたどれるようにする
        AllowOverride None ← .htaccessファイルを読み込まないようにする
        Require all denied ← ディレクトリー「/」配下のすべてのアクセスを拒否する
</Directory>
<Directory /usr/share>
        AllowOverride None
        Require all granted ← ディレクトリー「/usr/share」配下のすべてのアクセスを許可する
</Directory>
<Directory /var/www/>
        Options Indexes FollowSymLinks ← インデックス表示がされるようにしてシンボリックリンクをたどれるようにする
        AllowOverride None
        Require all granted
</Directory>
#<Directory /srv/>
#</Directory>
AccessFileName .htaccess ← 「AllowOverride None」の設定がなければ.htaccessファイルの設定ファイルを読み込む
<FilesMatch "^\.ht"> ← 指定された正規表現にマッチするファイル名のみに適用させるディレクティブを囲む
        Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf ← 有効な設定ファイル(*.conf)を読み込む
IncludeOptional sites-enabled/*.conf ← 有効な仮想ホストの設定ファイル(*.conf)を読み込む

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