起動スクリプトはプロジェクトルートディレクトリのbinディレクトリ以下にあります。
次のように起動できます。
./bin/ocean-start
デーモン化したい場合は次のようにしてください。
設定ファイルでpidが適切に設定されていることを事前に確認しておくとよいでしょう。
詳しくはコンフィギュレーションガイド [ サーバーセクション ]を参考にしてください。
./bin/ocean-start --daemonize
デーモン化したプロセスを停止するには、次のようにocean-stopを利用してください。
./bin/ocean-stop
デーモン化してしまった場合、ログを標準出力などに出していたら意味がありません。
設定ファイルを編集し、ログタイプをprintではなく、fileなどにしておくとよいでしょう。こちらについても詳しくはコンフィギュレーションガイド [ ログセクション ]を参照してください。
ただしdaemontoolsなどを利用する場合はこの限りではありません。
SRVレコードの利用が推奨されています。
C2S用のサーバーにはxmpp-client、S2S用のサーバーにはxmpp-serverというサービス名を利用します。
_xmpp-client._tcp.im.example.org. 86400 IN SRV 10 20 5222 im.example.orgS2S Server
_xmpp-server._tcp.im.example.org. 86400 IN SRV 20 0 5269 im.example.org
当然ながら、クライアントアプリケーションが、DNSのSRVレコードを利用したルックアップに対応してなければ利用できません。
サーバーを複数台ならべる場合は、次のように分散できます
_xmpp-client._tcp.im.example.org. 86400 IN SRV 10 20 5222 im1.example.org _xmpp-client._tcp.im.example.org. 86400 IN SRV 10 5 5222 im2.example.org
ただし、サーバーの性能などを基準にした静的な分散設定であり、サーバーの負荷状況をリアルタイムに反映するような動的なロードバランシングではありません。
分散処理について詳しくはクラスターガイドを参考にしてください。
サービスの規模次第では、サーバーに対するクライアントソケットの同時接続数がかなり増えることが予想されます。
Linuxでは、ファイルディスクリプタの数にあらかじめ制限がかけられています。制限を変更するには、次のうちのどれかを行う必要があります。
ulimitコマンドを実行する場合は次のように設定できます。ソフト値(S)とハード値(H)があり、ソフトが実際に採用されている値で、ハードはユーザーが変更可能な最大値です。
ソフト値の変更ulimit -SN 100000ハード値の変更
ulimit -Hn 100000
ユーザーのログインシェルで設定する場合は/etc/security/limits.confで設定します。
/etc/security/limits.conf* hard nofile 100000 * soft nofile 100000
サーバー起動時にプロセスを自動起動してそれに反映させる場合は、/etc/initscriptで設定します。
/etc/initscriptulimit -Hn 100000 ulimit -Sn 100000 eval exec "S4"
ちなみに設定できる最大値は1048576です。
サービスを提供する際のサーバーやクライアントのネットワーク環境を考慮し、必要であれば 再送タイムアウトの秒数やリトライ数などを始めとする各種パラメータを利用して、 チューニングを行うとよいでしょう。
TLSをサポートしてサービスを公開するためには、証明書を準備しなくてはなりません。
ここではopensslコマンドを利用して必要な書類を揃える例を挙げておきます。
あくまで一例なので細かいパラメータの解説はしません。詳しくはopensslなどのドキュメントをあたるとよいでしょう。
次のように、まずは秘密鍵を作成します。パスフレーズが要求されるので適切なパスワードを入力します。このフレーズは忘れないように覚えておきましょう。
openssl genrsa -des3 -out server.key 2048
秘密鍵であるserver.keyファイルが作成されました。
パスフレーズ無しのものを作成したい場合は、今作成したばかりのserver.keyを指定して、次のようにコマンドを実行します。
openssl rsa -n server.key -out server.nopass.key
パスフレーズなしの秘密鍵であるserver.nopass.keyファイルが作成されました。
上で作った秘密鍵であるserver.keyを元にして、署名要求書を作成します。
openssl req -new -days 365 -key server.key -out csr.pem
いくつかの項目について入力を求められるので適切に回答して下さい。
これで、署名要求書であるcsr.pemファイルが作成されました。
上で作った署名要求書であるcsr.pemを認証局運営事業者に送って、署名済みの証明書を作成してもらいます。
認証局運営事業者に作成してもらった証明書を適切に配置して、コンフィグファイルの設定を行うとよいでしょう。詳しくはコンフィギュレーションガイド [ TLSセクション] を参照して下さい。
これで準備は完了ですが、ここではテストのために、認証局を自分で作成して、自己署名を行う方法も解説しておきます。
自己署名の証明書はプロジェクトテンプレートとして生成されるので、本来であれば一から作成する必要はないですが、自分で作ってみたい場合のみ、以降の解説を参照するとよいでしょう。
まず自分でCA (認証局) を用意しなければなりません。
CA作成のための設定ファイルテンプレートや、シェルスクリプトは、たいていの環境で準備されています。
まず自分の環境から、設定ファイルのテンプレートを探してきます。
これを任意の場所にコピーして、中身を編集します。各種ディレクトリパスや暗号強度などを適切に編集して下さい。
編集された設定ファイルが利用されるように、環境変数を設定しておくとよいでしょう。
export OPENSSL_CONF=/path/to/testCA/conf/openssl.cnf
次にCA作成スクリプトを探してきます。
これを任意の場所にコピーしてきて次のような箇所を編集しておきます。
SSLEAY_CONFIG="-config /path/to/testCA/conf/openssl.cnf" CATOP=/home/foobar/testCA CAKEY=cakey.pem CAREQ=careq.pem CACERT=cacert.pem
編集が完了したら、このスクリプトを実行しましょう。
./CA -newca
このコマンドの結果、次のファイルが生成されます。
これでCAの準備が出来ました。
署名要求書であるcsr.pemから、証明書を生成するには次のようにします。
openssl ca -config /path/to/testCA/conf/openssl.cnf -in path/to/csr.pem -out path/to/cert.pem
これで証明書であるcert.pemが生成されました。この証明書を適切に設置して、コンフィグファイルの設定を行うとよいでしょう。
Diffie-Hellmanで鍵交換する場合には次のようにパラメータを生成します。
512bit版
openssl dhparam -check -text -5 512 -out dh512.pem
1024bit版
openssl dhparam -check -text -5 1024 -out dh1024.pem