Ploneをサービスとして公開する方法を書きます。
実運用に合わせて各種設定を調整する必要はありますが、最低限の方法として以下のとおりです。
前提
以下の環境とする
- OS: CentOS 6.0 / RHEL 6.0
- Plone 4.3.4
- Unified Installer を用いて、サービスとしてインストール(sudoしてインストール)
- Plone のインスタンス(Zope上のルートフォルダのPloneオブジェクト)の名前を
Plone
とする
Plone の設定
概要
Ploneの設定には、 buildout.cfg
にて行います。
Plone 2のころは、 etc/zope.conf
に書いていた起動設定やプロダクトの導入などすべてを、 buildout.cfg
または base.cfg
に設定を記載します。
buildout.cfg
を書き換えたら、 buildout
コマンドで設定を反映させます。
重要な設定項目
zserver-threads の変更
同時にアクセスが多い場合、thread数の変更を行います。
base.cfgの[instance_base] セクションに追記
zserver-threads = 10
プロダクトのインストール
eggs =
...
PACKAGE_NAME
独自プロダクトのインストール
egg形式のパッケージをインストールします。
-
zinstance/src
以下にパッケージを設置します。 -
設定を書きます。
eggs =
...
YOUR_PACKAGE
...
develop =
...
src/YOUR_PACKAGE
必要に応じて変更する設定項目
起動ユーザの変更
デフォルトでPloneユーザになっているはずです。
effective-user = plone
ポート番号の変更
http-address = 8080
設定変更の反映コマンド
$ cd /usr/local/Plone/zinstance
$ sudo vi buildout.cfg # ここで設定を記載
$ sudo ./bin/buildout -N
これで、 zope.conf
が、一旦削除され、新規に作成されます。同時に必要なモジュールのインストールなども行われます。
-N オプションは、必要以上に新バージョンのモジュールをインストールしないというオプションです。
Plone の起動方法
単独で起動
起動コマンド
$ cd /usr/local/Plone/zinstance
$ ./bin/plonectl start
停止コマンド
$ cd /usr/local/Plone/zinstance
$ ./bin/plonectl stop
サービスの登録
起動スクリプトの設置
Unified Installerを解凍したフォルダ内に init_scripts/RedHat-FedoraCore/plone-standalone
がある。
plone-standalone
ファイルを plone
というファイル名で /etc/init.d/
に配置。
その後、chkconfigでサービスへの登録
具体的な方法
$ sudo cp plone-standalone /etc/rc.d/init.d/plone
$ sudo chmod 755 /etc/rc.d/init.d/plone
$ sudo /sbin/chkconfig --add plone
起動
$ sudo service plone start
HTTP(S) ポートでのサービス
Ploneは標準で、8080番ポートで立ち上がるアプリケーションです。
HTTP(S) つまり、80番ポート / 443番ポートでサービスを行うために、フロントのHTTPサーバと組合せます。
HTTPサーバの種類
以下の2つで使いやすい方を選べば良いです。
Apache
多くのサービスで使われているHTTPサーバ。多くの機能を持つ物。
以下に設定の例を示します。詳しくはApacheのドキュメントを確認ください。
<VirtualHost *:80>
ServerName www.example.com
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/%{SERVER_NAME}:80/Plone/VirtualHostRoot/$1 [L,P]
</IfModule>
</VirtualHost>
再起動
$ sudo service httpd restart
nginx
高速に動作するHTTPサーバ。静的コンテンツとリバースプロキシーに特化した物。設定ファイルを簡潔に記載できる。
以下に設定の例を示します。詳しくはnginxのドキュメントを確認ください。
server {
listen 80;
server_name www.example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:8080/VirtualHostBase/http/www.example.com:80/Plone/VirtualHostRoot/;
}
}
再起動
$ sudo service nginx restart