CentOS6のApacheでRailsとPassengerをSELinux Enforcingで動かす

Redmineの設定だが
http://www.redmine.org/projects/redmine/wiki/RedmineAndSELinuxOnCentOS
が参考になった

調べてみると
Permissiveにしてaudit.logの拒否出力を
許可するモジュールを作れという大雑把なものが多く
それはあんまりかなと思い
ひとつひとつディレクトリやファイルの権限を変えてみた

インストールは下記

% ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
% sudo gem update --system 1.6.2
% sudo gem install rails -v 2.3.14
% sudo gem install passenger -v 2.2.15
% sudo passenger-install-apache2-module

最後のコマンドではApacheモジュールをコンパイルするので
事前にいろいろなdevelやaprなど入れておく必要あり

1.passengerの権限変更

% cd /usr/lib64/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2
% sudo chcon -t bin_t ApplicationPoolServerExecutable
% sudo chcon -t httpd_modules_t mod_passenger.so

前者は実行するのでbin_tに
後者はApacheモジュールなのでhttpd_modules_tに変更

2.Apacheの設定変更

PassengerTempDir /var/tmp/passenger

としてソケットを出すディレクトリを変更後

% sudo mkdir /var/tmp/passenger
% sudo chcon -t httpd_tmpfs_t /var/tmp/passenger

3.railsコンテンツの権限変更

% sudo chcon -R -t httpd_sys_content_t ${RAILS_ROOT}
% cd ${RAILS_ROOT}
% sudo chcon -R -t httpd_log_t log
% sudo chcon -R -t httpd_tmpfs_t tmp

最後のコンテンツ権限変更は不要かもしれない