Apache2.4.35をソースからインストール

OS: Ubuntu Server 18.04.1 LTS
Apache 2.4.35

Apache HTTP Serverをソースからインストールすることが然程頻繁には無いから、いざという際にすっかりやり方を忘れてしまう。configureスクリプトを実行してはエラーに出会い、調べてはまたconfigureスクリプトを実行するのはいい加減厄介に感じるから、ひとつインストールの手引きをしたためておこうという算段である。まずはソースコードをダウンロードして展開する。

$ wget -c http://ftp.tsukuba.wide.ad.jp/software/apache//httpd/httpd-2.4.35.tar.bz2
$ wget -c https://www.apache.org/dist/httpd/httpd-2.4.35.tar.bz2.asc

$ gpg --recv-key 995E35221AD84DFF
$ gpg --verify httpd-2.4.35.tar.bz2.asc

$ tar jxvf httpd-2.4.35.tar.bz2
$ cd httpd-2.4.35/

configureスクリプトを実施するまえに予め必要とされるライブラリを導入しておく。オプションによって必要とされるものは変わるけれども、毎回概ねこのようなエラーメッセージに見舞われている。

メッセージ必要なパッケージ
configure: error: APR not found.
Please read the documentation.
libapr1-dev
configure: error: APR-util not found.
Please read the documentation.
libaprutil1-dev
configure: error: pcre-config for
libpcre not found. PCRE is required and
available from http://pcre.org/
libpcre3-dev
checking whether to enable
mod_deflate… configure: error:
mod_deflate has been requested but can
not be built due to prerequisite failures
zlib1g-dev
checking whether to enable
mod_ssl… configure: error:
mod_ssl has been requested but can not be
built due to prerequisite failures
libssl-dev
表1. エラーメッセージと必要なパッケージ
$ sudo apt install libapr1-dev libaprutil1-dev libpcre3-dev zlib1g-dev libssl-dev
$ ./configure --enable-so --enable-cache --enable-disk-cache --enable-mem-cache --enable-deflate --enable-expires --enable-headers --enable-usertrack --enable-unique-id --enable-ssl --enable-rewrite --enable-logio
$ make
$ sudo make install

恙無くインストールが全うされたら次は設定に関する手続きを進める。httpdをapacheユーザで実行したいから此れを予め作成する。そうしたらhttpd.confに手を入れてゆく。

$ sudo useradd -s /bin/false apache
$ cd /usr/local/apache2/conf/
$ sudo cp -av httpd.conf httpd.conf.orig

ログフォーマットにcombinedioを適用するためにmod_logio.soをロードしたり Invalid command 'UserDir', perhaps misspelled or defined by a module not included in the server configuration というエラーメッセージを避けるためにmod_userdir.soをロードした。

$ sudo vi httpd.conf
#LoadModule logio_module modules/mod_logio.so
LoadModule logio_module modules/mod_logio.so

#LoadModule userdir_module modules/mod_userdir.so
LoadModule userdir_module modules/mod_userdir.so

#User daemon
#Group daemon
User apache
Group apache

#ServerAdmin you@example.com
ServerAdmin guro@localhost

#ServerName www.example.com:80
ServerName 192.168.0.58

#Include conf/extra/httpd-userdir.conf
Include conf/extra/httpd-userdir.conf

#Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-vhosts.conf

その次にhttpd-userdir.confを触る。のちにphp.iniの設定を.htaccessから変更するためにAllowOverrideディレクティブへOptionsも足す。けれどもそうすると結局全てのディレクティブタイプを指定することと同義であるからAllに置き換えた。

$ cd extra/
$ sudo vi httpd-userdir.conf
(snip)
    #AllowOverride FileInfo AuthConfig Limit Indexes
    AllowOverride All

今度はhttpd-vhosts.confを編集する。DocumentRootが見つからないと AH00112: Warning: DocumentRoot [/home/guro/public_html] does not exist というようなエラーメッセージが現れてしまうからこれも予め作成してから手を付ける。

$ mkdir /home/guro/public_html
$ sudo vi httpd-vhosts.conf
<VirtualHost *:80>
    ServerAdmin guro@localhost
    DocumentRoot "/home/guro/public_html"
    ServerName 192.168.0.58
    ErrorLog "logs/error_log.guro"
    CustomLog "logs/access_log.guro" combinedio
</VirtualHost>

ここまで調えたら設定ファイルに誤りがないか確かめるためにconfigtestを実施する。Syntax OKがもらえるまではエラーの内容を熱心に点検して修正せねばならない。

$ sudo /usr/local/apache2/bin/apachectl configtest
Syntax OK

問題をすべて潰したらhttpdを起動する。起動に成功してもapachectlからはまるきりメッセージが表示されないから実際にhttpdプロセスが生成されているかを確認しておくと良さそうである。

$ sudo /usr/local/apache2/bin/apachectl start
$ ps axuwf | grep http[d]
root      36536  0.0  0.0  79848  4012 ?        Ss   05:37   0:00 /usr/local/apache2/bin/httpd -k start
apache    36537  0.0  0.1 2011824 4508 ?        Sl   05:37   0:00  \_ /usr/local/apache2/bin/httpd -k start
apache    36538  0.0  0.1 2011824 4508 ?        Sl   05:37   0:00  \_ /usr/local/apache2/bin/httpd -k start
apache    36539  0.0  0.1 2011824 4508 ?        Sl   05:37   0:00  \_ /usr/local/apache2/bin/httpd -k start

あとは多方面からの叱責が見込まれるHTML文法でテスト用のウェブコンテンツを用意して実際にブラウザからアクセスしてみるとこうである。

$ vi /home/guro/public_html/index.html
<html><body><h1>OK!</h1></body></html>
図1. テスト用コンテンツの表示

正常に表示されることを散々確認したらひとまずhttpdを停止してのちにどこへ出しても恥ずかしいコンテンツに差し替えてゆく手筈を整えて全ては終いである。

$ sudo /usr/local/apache2/bin/apachectl stop
$ ps axuwf | grep http[d]

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください