[XOOPS] XOOPS Cube(Xoops X)をuser_dir以下 かつ SELinux有効の環境でインストールする方法


XOOPS Cube (Xoops X)をユーザーディレクトリ以下に配置して、なおかつSELinuxが有効(Enforcing)な環境でインストーるする方法です。
多分SELinux周りは他の方法があると思いますが参考までに。

ApacheのUserDirの設定は完了していることを前提とします。
設定していない場合は設定してから行なってください。
SELinuxのboolean(httpd_enable_homedirs)の設定も忘れずに。

#途中でroot権限要求されるので注意。root権限で操作できないならtrustを公開ディレクトリに置いた上で適切な設定をすればおk
環境:

[user@server ~]$ cat /etc/redhat-release 
CentOS release 6.3 (Final)
[user@server ~]$ httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Feb 13 2012 22:31:42
[user@server ~]$ php -v
PHP 5.3.3 (cli) (built: Jul  3 2012 16:53:21) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
[user@server ~]$ mysql -u hoge -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 6521899
Server version: 5.5.29-log MySQL Community Server (GPL)

1, ファイル配置
最新のXoops Xをhttps://github.com/XoopsX/から取得・展開します。
展開したあとのディレクトリ構成は以下のようになっていると仮定します。

/home/user/stable/
               ../docs
               ../extras
               ../html
               ../xoops_trust_path
               ../README.md

今回は単純に公開ディレクトリ(public_html)をXOOPSのルートとして配置します。サブディレクトリ以下に配置する場合は適宜読み替えてください。
また、extras以下のファイルを使う場合も適宜配置してください。

最低限必要な、html/以下のファイルとxoops_trust_pathをコピーします。
xoops_trust_pathディレクトリは、安全性を考慮してホームディレクトリ直下に配置します。
~/public_htmlを作成していない場合は作成してから行なってください。

[user@server ~]$ cp legacy/html/* public_html/ -R
[user@server ~]$ cp legacy/xoops_trust_path ~ -R

配置が完了すると、ディレクトリは次のようになります。

/home/user/public_html/
                    ../class/
                    ../common/
                    (snip)
/home/user/xoops_trust_path

2, パーミッション・SELinuxラベル設定
パーミッションの設定はインストールウィザード中に示されたディレクトリに対して行いますが、
X-Updateによる配置をダイレクトで行う場合は $ sudo chown apache. -R ~/public_html ~/xoops_trust_pathなどとして所有権を変更すればパーミッションの設定は不要です。

そうでない場合、次のディレクトリとファイルに大して書き込みを許可します。
()内はパーミッションを示します。適宜chmodコマンドでパーミッションを変更してください。

~/public_html/uploads (777)
~/public_html/mainfile.php (666)
~/xoops_trust_path/cache (777)
~/xoops_trust_path/templates_c (777)
~/xoops_trust_path/uploads (777)
~/xoops_trust_path/uploads/xupdate (777)
~/xoops_trust_path/modules/protector/configs (777)

パーミッションとは別に、SELinuxのラベル付けが必要です。
ホームディレクトリ以下で展開しているため、user_home_tが設定されていますが、Apacheにアクセスさせるためにはhttps_user_content_tである必要があります。
この設定をしていないと、HTTP 403や、xoops_trust_path以下のディレクトリに書き込みができない事態になります。

public_html以下は、単純に再ラベリングで問題ありません。

[user@server ~]$ restorecon -R ~/public_html

xoops_trust_pathは、公開ディレクトリの外にあるため、最ラベリングの意味がありません。
semanageコマンドを使って、httpd_user_content_tを割り当てるように設定した上で再ラベリングを行います。
この際root権限が必要です。rootユーザーを利用できない場合、xoops_trust_pathディレクトリの名称を変更した上で公開ディレクトリ以下に配置することで動作させることは可能です。おすすめしませんが。

[user@server ~]$ sudo semanage fcontext -a -t httpd_user_content_t '/home/user/xoops_trust_path(/.*)?'
[user@server ~]$ restorecon -R ~/xoops_trust_path

3, インストール
http://サーバーのドメイン/~user/にアクセスし、ウィザードに従ってインストールします。
あとはあなたの思うままにモジュールを組み合わせてサイトを構築しましょう!

以上で完了です。
重要なのはhttpd_user_content_tラベルをつけるよう設定することです。
これさえ出来れば問題なく構築出来ます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です