2013年8月26日月曜日

リバースプロキシを使用して簡単にAipoを既存のApacheと連携させる+SSL対応+自動起動|成長の果実

リバースプロキシを使用して簡単にAipoを既存のApacheと連携させる+SSL対応+自動起動|成長の果実:
2012年02月09日(木) 10時25分22秒 
テーマ:
[検証環境]
OS: CentOS 5.7 x64
Aipoのバージョン: 6.0.2.0
Aipoインストール先: /usr/local/aipo

---------- 以下、記事 ----------


先日、色々なグループウェアを比較した結果、Aipoを使うことにした。

カレンダーがGoogleカレンダーに似ていて使いやすいし、スマートフォンにも対応していて無料、かつ構築が楽なのが決めて。

機能はだいたい揃っているので、他のグループウェアと比較してもそれほど大差ない。


グループウェア「アイポ」
http://www.aipo.com/




ここまでが前置き。


Aipoは、既にApacheやIIS等のWEBサーバが導入されている環境にインストールした場合、自動でポート81とかで起動してしまう。


できればポート80でアクセスしたいので、既存のApacheを使用してAipoを使うことにしたのでその手順をメモ。

Apacheとの連携ついでにSSL証明書も既存Apacheのものを使用するようにすれば、わざわざAipo用にSSL証明書を取得しないでいいというのもある。



以下、構築手順。

下記の順番で説明していく。


1.Aipoインストールに必要なコマンドやライブラリ群のインストール(下準備)

2.Aipoダウンロード&インストール

3.AipoをSSLに対応させる

4.AipoとApacheと連携させる(リバースプロキシ設定)

5.ログイン画面のユーザー一覧表示を無効化(ユーザ名は入力させるようにする)

6.Aipoのバックアップ設定

7.Aipoを自動起動に対応させる( 自動起動スクリプトの作成)



それではまず1番から。



1.Aipoインストールに必要なコマンドやライブラリ群のインストール(下準備)

# yum install make # yum install gcc # yum install readline-devel # yum install zlib-devel # yum install nmap



2.Aipoダウンロード&インストール

# cd /tmp/ # wget http://aipo.googlecode.com/files/aipo6020ja_linux64.tar.gz ← Aipoダウンロード # tar xzvf aipo6020ja_linux64.tar.gz # tar xzvf aipo6020.tar.gz # mv aipo/ /usr/local/. ← Aipoをインストール先ディレクトリへ移動 # sh /usr/local/aipo/bin/installer.sh ← Aipoインストール


コンパイルとかが始まって、正常にインストールが終わると下記が表示される。


==Aipo6.0.2.0インストール終了== user:aipo_postgres pass:xxxxxxxxxxxx directory:/usr/local/aipo/postgres port:5432 Aipo URL: http://xxx.xxx.xxx.xxx:81/aipo/


既にApacheが動いている環境なので、Aipoはポート81で起動される。



3.AipoをSSLに対応させる

◎SSL証明書の作成

ここではAipo用のSSL証明書を作成する。

SSLに対応させた場合、Aipo起動時にSSL証明書がないと起動に失敗するので、ただその回避のためだけに作成する。

後ほどApacheとの連携で、Apacheで使用しているSSL証明書を使用するようにするため、Aipo用のSSL証明書は適当に作成する。

# mkdir /usr/local/aipo/tomcat/cert/ # /usr/local/aipo/jre/bin/keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -keystore /usr/local/aipo/tomcat/cert/aipo_keystore ← SSL証明書作成コマンド キーストアのパスワードを入力してください: xxxxxxxxxxxxxxxx ← 適当な英数字を入力。このパスワードは後ほど使用する。 新規パスワードを再入力してください:  ← 空Enter 姓名を入力してください。 [Unknown]:  ← 空Enter 組織単位名を入力してください。 [Unknown]:  ← 空Enter 組織名を入力してください。 [Unknown]:  ← 空Enter 都市名または地域名を入力してください。 [Unknown]:  ← 空Enter 州名または地方名を入力してください。 [Unknown]:  ← 空Enter この単位に該当する 2 文字の国番号を入力してください。 [Unknown]:  ← 空Enter CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown でよろしいですか? [no]: yes ← yesを入力 の鍵パスワードを入力してください。 (キーストアのパスワードと同じ場合は RETURN を押してください):  ← 空Enter # ls -l /usr/local/aipo/tomcat/cert/aipo_keystore ← SSL証明書が作成されたか確認



◎AipoをSSLに対応させるよう設定を変更する(その1)

# vi /usr/local/aipo/tomcat/conf/server.xml


・変更前
<!-- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> -->





・変更後
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/local/aipo/tomcat/cert/aipo_keystore" ← AipoのSSL証明書のフルパス keystorePass="xxxxxxxxxxxxxxxx" /> ← SSL証明書を作成した際に入力したキーストアのパスワード



◎AipoをSSLに対応させるよう設定を変更する(その2)

# vi /usr/local/aipo/tomcat/webapps/aipo/WEB-INF/conf/JetspeedJResources.properties


・変更前
access.url.protocol=http





・変更後
#access.url.protocol=http access.url.protocol=https



◎Aipoを起動して、使用ポートを確認

# /usr/local/aipo/bin/startup.sh ← Aipo起動


# netstat -anp | grep ":::81" ← Aipo - HTTPポート確認 tcp 0 0 :::81 :::* LISTEN 2909/java


# netstat -anp | grep ":::8443" ← Aipo - HTTPSポート確認 tcp 0 0 :::8443 :::* LISTEN 2909/java




4.AipoとApacheと連携させる(リバースプロキシ設定)

◎リバースプロキシ設定(non SSL編)

バーチャルホスト環境のためバーチャルホスト用の記述をしているが、バーチャルホスト環境でない場合はhttpd.confとかに書けば良いはず。

# vi /etc/httpd/conf.d/virtualhost.conf


<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/html <IfModule mod_proxy.c> ProxyRequests Off # Proxy Mode OFF ProxyPreserveHost On # HTTP-HOSTをHTTP-X-FORWARDED-HOSTに書き換える ProxyPass /aipo http://localhost:81/aipo ProxyPassReverse /aipo http://localhost:81/aipo </IfModule> </VirtualHost>



◎リバースプロキシ設定(SSL編)

/etc/httpd/conf.d/ssl.conf の末尾、</VirtualHost> の一つ上辺りにでも記述する。

# vi /etc/httpd/conf.d/ssl.conf


<IfModule mod_proxy.c> ProxyRequests Off # Proxy Mode OFF ProxyPreserveHost On # HTTP-HOSTをHTTP-X-FORWARDED-HOSTに書き換える SSLProxyEngine On ProxyPass /aipo https://localhost:8443/aipo ProxyPassReverse /aipo https://localhost:8443/aipo </IfModule>



◎Apache再起動

# /etc/rc.d/init.d/httpd restart




5.ログイン画面のユーザー一覧表示を無効化(ユーザ名は入力させるようにする)

# vi /usr/local/aipo/tomcat/webapps/aipo/WEB-INF/conf/JetspeedJResources.properties


・変更前
action.login.enable.select.userlist=true





・変更後
action.login.enable.select.userlist=false



◎Aipo再起動して設定変更を適用

# /usr/local/aipo/bin/shutdown.sh ← Aipo停止 # /usr/local/aipo/bin/startup.sh ← Aipo起動




6.Aipoのバックアップ設定

# crontab -e 0 5 * * * /usr/local/aipo/bin/backup_handler.sh





7.Aipoを自動起動に対応させる( 自動起動スクリプトの作成)

◎sudoers設定変更

自動起動スクリプト作成の前に、sudoersの設定変更を行っておく。

sudoersのデフォルト設定では、requirettyフラグが立っているためログインしているユーザ以外はsudoできずにAipoが自動起動できない。

そのため、requirettyの設定をコメントアウトしてAipoを自動起動できるようにする。

# visudo ← sudoers編集


・変更前
Defaults requiretty





・変更後
#Defaults requiretty



◎自動起動スクリプト作成

# vi /etc/init.d/aipo ← 自動起動スクリプト作成

#!/bin/sh # # Starts and stops the Aipo # # chkconfig: - 86 14 # description: Starts and stops the Aipo AIPO_PATH=/usr/local/aipo/bin/ start () { ${AIPO_PATH}/startup.sh } stop () { ${AIPO_PATH}/shutdown.sh } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 2 esac exit $?


# chmod +x /etc/init.d/aipo ← 実行権限付与 # chkconfig --add aipo ← サービスを登録 # chkconfig aipo on ← 自動起動On # chkconfig --list aipo ← 設定確認 aipo 0:off 1:off 2:on 3:on 4:on 5:on 6:off




以上。


後はブラウザから http://example.com/aipo/ もしくは https://example.com/aipo/ へ接続すればAipoが表示される。

SSL証明書も既存Apacheのものが使用される。

$成長の果実-aipo_koutiku01


【注意点】
おそらくリバースプロキシが原因だとは思うが、アプリケーション管理でアプリ(ガジェット)をインストールすることができない。

「正しい 『 ガジェットURL 』 を指定してください。」と怒られてしまう。
リバースプロキシを使用しなくても、ポート81からアクセスすればインストールできる。但し、SSL通信でのポート8443からではインストール不可だった。

それと、「あなた宛のお知らせ」の件数が表示されないってのもある。

原因は不明。

「あなた宛のお知らせ」も件数が表示されないだけで内容はちゃんと届くから特に困らないし、アプリ(ガジェット)をインストールしなくてもデフォルトの機能で困らないのでひとまず捨ておくことに。気持ち悪いけど。

デメリットよりもApache連携とSSL証明書を使いまわせるメリットのほうが遥かに大きい。




あと以下の設定をApacheの設定に書き加えて、httpsしか許可しないようにするのもいいかも。

<IfModule mod_rewrite.c> RewriteEngine On RewriteLog "logs/rewrite_log" RewriteLogLevel 0 RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^/aipo(.*)?$ https://%{HTTP_HOST}/aipo [L,R] # Aipo </IfModule>



合わせて、以前書いた以下の記事の内容も実施。

Aipo: スケジュールの閲覧ユーザー数を増やす(制限解除)
http://ameblo.jp/welx/entry-11070086313.html


こんな感じでAipoライフを楽しんでいきます。
'via Blog this'

0 件のコメント:

コメントを投稿