SELinux 有効(enforcing)で Apache + Passenger のもと Rails で Redmine を動作させる 〜 CentOS6

SELINUX 有効時(enforcing)に Redmine を動作させるための設定を行います。前ページ SELinux 有効(enforcing)で VirtualHost を /var/www/html 配下以外でも動作させる の続きです。

スポンサーリンク

このエントリーは、CentOS 6.4 インストール~設定手順の目次 の一部です。

SELinux を Enforcing にした後、Apache の error log を確認

Permissive で Redmine にて test プロジェクトを作成します。その後、http://redmine.centos/projects/test/issues/new (Redmine の test プロジェクトに新しくチケットを発行するページ)にアクセスしてみたところで、再び SELinux を Enforcing にします。

Enforcing に戻して httpd 再起動。

http://redmine.centos/projects/test/issues/new をリロードしてみると、再びアクセスできず Redmine は動作しなくなりました。ここで、Apache の error log を確認してみます。

以下のメッセージが確認できるので、アクセスが拒否されているのだろう。

Passenger の root に httpd_sys_content_t を設定

ここで公式ドキュメントを参照。

Phusion Passenger users guide, Apache version

ドキュメント通りに、Passenger の root に httpd_sys_content_t を設定して、httpd restart。

再び、Redmine にアクセスするも動作しません… 凹みます。

SELinux Permissive で取得した audit.log からポリシーモジュールを作成

ここで、SELinux の Permissive で取得した audit.log からセキュリティポリシー設定を作成する方法を試します。実は、最初からこの方法を使うのが簡単なのですが、できれば一個ずつ設定したかったのでここまで使いませんでした。

以下のページが分かりやすいです。

Phusion Passenger with Apache on RHEL 6 / CentOS 6 / SL 6 with SELinux | Sergiy Kyrylkov
Redmine/PassengerをSELinux下で動かす

audit2allow コマンドが入っていなかったので、あらかじめインストールしておきます。依存パッケージとともにインストールされます。

SELinux を Permissiv に変更し、古い audit.log を削除して、デーモン再起動。

ここで、Redmine(Railsアプリ)を動作させます。ログイン・ログアウトしたり、チケット発行したり、適当に操作させます。

その後、ログからポリシーモジュールを作成します。

ここで、semodule: Failed on passenger! とエラーが出てしまいました。よく分からないので、もう一度最初からやり直したら、今度はエラーが出ずにOK。

SELinux を Enforcing にして httpd 再起動。

そして Redmine(http://redmine.centos/)にアクセス。きたーーーーー!動きました。若干はまりましたけど、Railsアプリを SELinux 有効時(Enforcing)に、Apache の VirtualHost で動かすには、以上の手順で動作させることができます。

スポンサーリンク
サーバ構築研究会の CentOS 本は、昔からお世話になっています。Linux の教科書は Linux の基本を学ぶのにおすすめです。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!