SELinuxが有効な状態でRedmineを動かす
VirtualBoxにインストールしたCentOSでいろいろ実験するシリーズ。
SELinuxが有効な状態で、Redmineが動作するようにするメモ。
問題なのは、Redmineと言うよりPassengerだったり。
Passengerが使用するディレクトリの権限を設定
Passengerのディレクトリ
以下のコマンドで、Passengerが入っているディレクトリを調査。
# passenger-config --root
権限を変更する。
# chcon -R -h -t httpd_sys_content_t [Passengerのディレクトリ]
Redmineを配置したディレクトリ
こっちも、権限を変更しておく。
# chcon -R -h -t httpd_sys_content_t [Redmineを配置したディレクトリ]
Redmineを動かして調査
Passengerは他にもいろいろ使ってて設定しきれないので、実際に動作させて、問題になる箇所を調査。調査した結果からポリシーモジュールを作成して、SELinuxが有効な状態でもPassengerが動作するように設定。・・・面倒だなぁ。
ポリシーモジュールの管理に必要になるパッケージをインストール
# yum install policycoreutils-python
古いログを削除
過去のログにPassengerと関係ないエラーが混ざってても邪魔なので、調査の前にばっさり削除。
# rm /var/log/audit/audit.log
# service auditd restart
SELinuxをPermissiveモードに設定
SELinuxをPermissiveモードに設定。これで、エラーが出てもアクセスは続けられるようになる。
# setenforce 0
# service httpd restart
Redmineでいろいろ操作
PCからRedmineに接続していろいろ操作を行う。この間、SELinuxでは監視ログがどんどんたまってる、はず。
何回か、ログイン・ログアウトをやっておくのが吉?
監視ログからポリシーモジュールを作成
Redmineの監視ログからポリシーモジュールを作成。ついでにインストール。
# grep httpd /var/log/audit/audit.log | audit2allow -M passenger
# semodule -i passenger.pp
SELinuxをEnforcedモードに戻す
# setenforce 1
# service httpd restart
Redmineが動作することを確認
Enforcedモードで接続できないようなら、Permissiveモードに戻して動くかどうかを確認。これで動くようなら、ポリシーモジュールを再作成しておく。
Permissiveモードでも動かないようなら・・・ インストールから見直しで。
情報元
Redmine 2.3をCentOS 6.4にインストールする手順 | Redmine.JP Blog
http://blog.redmine.jp/articles/2_3/installation_centos/
Redmine/PassengerをSELinux下で動かす
http://www.02.246.ne.jp/~torutk/swetools/redmine/passenger_selinux.html
Phusion Passenger users guide, Apache version
http://www.modrails.com/documentation/Users%20guide%20Apache.html