開発メモ

開発関係のメモをいろいろと。たぶん。

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