apache 2.4系のwebsocketが通るまでの構築手順


apacheの最新版インストール

### リポジトリ追加
$ sudo yum erase httpd

### pcreをインストール
$ sudo yum install pcre pcre-devel

$ cd /tmp

### aprインストール。これがないと、httpdインストール時に下記エラーが出る。
### configure: error: APR not found.  Please read the documentation.
$ wget http://ftp.tsukuba.wide.ad.jp/software/apache//apr/apr-1.5.1.tar.gz
$ tar zxvf apr-1.5.1

### apr-utilのインストール。同様
$ wget http://ftp.kddilabs.jp/infosystems/apache//apr/apr-util-1.5.4.tar.gz 
$ tar zxvf apr-util-1.5.4.tar.gz

### httpdインストール
$ wget http://ftp.riken.jp/net/apache//httpd/httpd-2.4.12.tar.gz
$ tar zxvf httpd-2.4.12.tar.gz

### 移動した後も、apr apr-utilと名前を変えないとインストール出来ないというね。。
$ sudo cp -Rp apr-1.5.1 httpd-2.4.12/srclib/apr
$ sudo cp -Rp apr-util-1.5.4 httpd-2.4.12/srclib/apr-util

$ cd httpd-2.4.12
### 2.4からはデフォルトではevent_mpmです。今まで通りpreforkを使いたい場合は、--with-mpm=preforkを付けてください
$ sudo ./configure --enable-rewrite --enable-so --enable-ssl --with-mpm=prefork --with-included-apr
$ sudo make
$ sudo make install

### /usr/local/apache2/にインストールされます
### ServerNameを決めて、起動します
$ vim /usr/local/apache2/conf/httpd.conf
-#ServerName www.example.com:80
+ServerName www.example.com:80

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

### 起動 
$ sudo /usr/local/apache2/bin/apachectl start

動いた!

websocketが通るように設定する

### websocketが通すようにする
$ vim /usr/local/apache2/conf/httpd.conf
-#LoadModule proxy_module modules/mod_proxy.so
-#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
-#LoadModule proxy_http_module modules/mod_proxy_http.so
-#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

+LoadModule proxy_module modules/mod_proxy.so
+LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
+LoadModule proxy_http_module modules/mod_proxy_http.so
+LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so


-#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
+LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

### 今回はrailsでwebsocketを使った簡易アプリを10.29.7.5に建てました。
### そこに通す設定です。 
+ProxyPass / ws://10.29.7.5:3000/
+ProxyPassReverse / ws://10.29.7.5:3000/

### テスト 
$ sudo /usr/local/apache2/bin/apachectl configtest
Syntax OK

### 再起動
$ sudo /usr/local/apache2/bin/apachectl restart

アクセスできた!

websocketも通りました。