CentOS7に最新のApache(2.4.23)をソースコードからインストール+Systemd化まで

CentOS7のレポジトリのApacheは2.4.6なのですが、2.4.7以降に導入された機能が使いたかったので、最新安定版のApache 2.4.23をインストールしました。

ソフトウェアバージョン

$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
ソフトウェア バージョン 関連URL
Apache httpd 2.4.23 https://httpd.apache.org/download.cgi
apr 1.5.2 http://apr.apache.org/download.cgi
apr-util 1.5.4 http://apr.apache.org/download.cgi
pcre 8.39 http://pcre.org/

ソフトウェアダウンロード

まずはコンパイルに必要なソフトウェアをインストールしておきます。

yum install gcc gcc-c++

それぞれ関連URLからダウンロードリンクを取得してダウンロードします。

cd /tmp
wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//httpd/httpd-2.4.23.tar.gz
wget http://ftp.riken.jp/net/apache//apr/apr-1.5.2.tar.gz
wget http://ftp.riken.jp/net/apache//apr/apr-util-1.5.4.tar.gz
wget http://downloads.sourceforge.net/project/pcre/pcre/8.39/pcre-8.39.tar.gz

ソフトウェア展開

ダウンロードしたソフトウェアは /usr/local/src に展開します。

cd /usr/local/src
tar xf /tmp/httpd-2.4.23.tar.gz
tar xf /tmp/apr-1.5.2.tar.gz
tar xf /tmp/apr-util-1.5.4.tar.gz
tar xf /tmp/pcre-8.39.tar.gz

APRインストール

cd /usr/local/src/apr-1.5.2/
./configure -prefix=/usr/local/apr/apr-1.5.2
make
make install
cd /usr/local/apr
ln -s apr-1.5.2 current

APR-UTILインストール

cd /usr/local/src/apr-util-1.5.4
./configure --prefix=/usr/local/apr-util/apr-util-1.5.4 --with-apr=/usr/local/apr/current
make
make install
cd /usr/local/apr-util/
ln -s apr-util-1.5.4 current

PCREインストール

cd /usr/local/src/pcre-8.39
./configure -prefix=/usr/local/pcre/pcre-8.39
make
make install
cd /usr/local/pcre
ln -s pcre-8.39 current

Apache Httpdをインストール

今までインストールしたソフトウェアのディレクトリを指定して、ついにHTTPDをインストールします。

インストール

cd /usr/local/src
cd /usr/local/src/httpd-2.4.23
./configure --prefix=/usr/local/apache2/httpd-2.4.23 \
            --enable-mpms-shared=all \
            --enable-mods-shared=reallyall \
            --with-apr=/usr/local/apr/current \
            --with-apr-util=/usr/local/apr-util/current \
            --with-pcre=/usr/local/pcre/current/bin/pcre-config 

make
make install
cd /usr/local/apache2
ln -s httpd-2.4.23 current

ユーザ設定

groupadd apache
useradd -s /sbin/nologin apache
usermod -G apache apache
chown -R apache:apache /usr/local/apache2/

モジュールの一覧

Module Index - Apache HTTP Server Version 2.4

--enable-mods-shared--enable-mods-shared に関しては以下を参考にさせていただきました。

自明かもしれない: Apache 2.4 系をソースからインストールする際の DSO に関して

デフォルトはEvent MPM

httpd -V の結果見るとデフォルトでEvent MPMになっているのがわかります。

Server version: Apache/2.4.23 (Unix)
Server built:   Oct 28 2016 06:50:13
Server's Module Magic Number: 20120211:61
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     event
threaded:     yes (fixed thread count)
forked:     yes (variable process count)

設定ファイル編集

省略

Systemd登録

最後にSystemdに登録します。

mod_systemd - Apache HTTP Server Version 2.5

vim /etc/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/apache2/current/bin/apachectl -k start
ExecReload=/usr/local/apache2/current/bin/apachectl -k graceful
ExecStop=/usr/local/apache2/current/bin/apachectl -k stop
PrivateTmp=true


[Install]
WantedBy=multi-user.target

Systemdをリロードして起動します。

systemctl daemon-reload
systemctl start httpd.service

起動できました。

# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/etc/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 金 2016-10-28 07:25:24 EDT; 18min ago
 Main PID: 6156 (httpd)
   CGroup: /system.slice/apache2-httpd.service
           ├─16915 /usr/local/apache2/httpd-2.4.23/bin/httpd -k start
           ├─16916 /usr/local/apache2/httpd-2.4.23/bin/httpd -k start
           └─16917 /usr/local/apache2/httpd-2.4.23/bin/httpd -k start

参考URL

公式インストール手順

Compiling and Installing - Apache HTTP Server Version 2.4

全体参考にさせていただきました

d.hatena.ne.jp