CentOS 6にApache HTTP Server 2.4.16をインストールする


mod_proxy_wstunnel.soを使って、WebSocketのリバースプロキシをしたいと思いCentOS 6にApache HTTP Server 2.4.16をインストールすることにしました。
その手順のメモです。

ソースのダウンロード

次のソースをWebサイトから/usr/local/srcにダウンロードします。

Perl Compatible Regular Expressionsのインストール

yumコマンドでpcre-develをインストールします。

# yum install pcre-devel

コンパイルとインストール

tarコマンドでソースを展開します。

# cd /usr/local/src
# tar xvzf apr-1.5.2.tar.gz
# tar xvzf apr-util-1.5.4.tar.gz
# tar xvzf httpd-2.4.16.tar.gz

apr-1.5.2のコンパイルとインストール

# cd /usr/local/src/apr-1.5.2
# ./configure
# make
# make install

apr-util-1.5.4のコンパイルとインストール

# cd /usr/local/src/apr-util-1.5.4
# ./configure --with-apr=/usr/local/apr
# make
# make install

Apache HTTP Server 2.4.16のコンパイルとインストール

# cd /usr/local/src/httpd-2.4.16
# ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr
# make
# make install

自動起動の設定

以下のシェルスクリプトを/etc/init.dにコピーします。

# cd /usr/local/src/httpd-2.4.16/build/rpm
# cp httpd.init /etc/init.d/httpd-2.4.16

コピーしたhttpd-2.4.16の60行目、61行目、67行目を次のように編集します。

60: httpd=${HTTPD-/usr/local/apache2/bin/httpd}
61: pidfile=${PIDFILE-/usr/local/apache2/logs/httpd.pid}

67:         CONFFILE=/usr/local/apache2/conf/httpd.conf
# chkconfig --add httpd-2.4.16
# chkconfig httpd-2.4.16 on
# service httpd-2.4.16 start

PROXYモジュールの有効化

/usr/local/apache2/conf/httpd.confの次のモジュールをロードするようにコメントをはずしています。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

リバースプロキシの設定


* リバースプロキシ(WebSocket): ws://www.example.com/test/sample
* リバースプロキシ(HTTP): http://www.example.com/test
* Webサーバ(WebSocket): ws://localhost:8080/sample
* Webサーバ(HTTP): http://localhost:8080/

/usr/local/apache2/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/web"
    ServerName www.example.com
    ServerAdmin [email protected]
    ErrorLog "logs/www.example.com-error_log"
    CustomLog "logs/www.example.com-access_log" common
    ProxyPreserveHost On
    ProxyPass /test/sample ws://localhost:8080/sample
    ProxyPassReverse /test/sample ws://localhost:8080/sample
    ProxyPass /test http://localhost:8080
    ProxyPassReverse /test http://localhost:8080
</VirtualHost>

2.2系とのアクセス許可の違い

2.2系では次のように書いていた部分、

Order allow,deny
Allow from all

2.4系では次のようになります、

Require all granted