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
$ 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

あとはテストで表示するウェブコンテンツを作成して実際にブラウザからアクセスしてみるとこうである。

$ vi /home/guro/public_html/index.html
<html><body><h1>OK!</h1></body></html>

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

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

参考:
AllowOverride ディレクティブ
PHP: 設定を変更するには

Similar Posts:

コメントを残す

メールアドレスが公開されることはありません。

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