13,228
回編集
| 436行目: | 436行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
* listen | |||
** backlog | |||
**: ワーカーが作業中であっても、コネクションのリクエストを受理して待機しておくことができる個数である。 | |||
**: デフォルトは、1024である。 | |||
**: 例えば、1件平均30[mS]で捌く処理に対して1000個バックログによる待ちがある時、新たにリクエストした処理は結果が返るまで30[S]待たされることになる。 | |||
**: その場合、コネクションを受け付けずにエラーにした方がよいということがある。 | |||
**: <br> | |||
** tcp_nopush | |||
**: TCP_CORK(Linux)を制御する。 | |||
**: デフォルトは、<code>false</code>である。 | |||
**: <code>true</code>にする場合、TCPフレームの断片が小出しに送られることを抑止するため、リモートにあるNginXのタスクを早めに起こさずに済ませる。 | |||
*: <br> | |||
* timeout | |||
*: ワーカーがこの時間[秒]以上処理に費やす時はプロセスを落とす。 | |||
*: デフォルトは、60秒である。 | |||
*: 大抵の処理は60秒以内に完了するが、それ以上に時間の掛かる処理がある場合は処理時間に応じて値を増やす。 | |||
*: <br> | |||
*: 例えば、サイズの大きい添付ファイルのアップロードおよびダウンロードが該当する。 | |||
*: 添付ファイルのサイズ上限のファイルを実際にアップロードおよびダウンロードすることにより、それに掛かる時間を計測して、許容できる処理時間を設定する。 | |||
*: <br> | |||
*: ここで、Unicornのタイムアウト値とNginXのタイムアウト値が不整合だと動作が不安定となるため、両者のタイムアウト値を整合させるようにする。 | |||
*: (例. Unicornのタイムアウト値 + αをNginXのタイムアウト値にする。この時、αは1〜2秒程度等) | |||
*: <br> | |||
* pid | |||
*: Unicornを起動した時、そのプロセスIDを記録しておくファイルを指定する。 | |||
*: <br> | |||
* stderr_path および stdout_path | |||
*: Redmineのインストールディレクトリ下のlogディレクトリにログファイルを生成する。 | |||
*: <br> | |||
* preload_app | |||
*: <code>true</code>に設定する場合、マスタープロセス起動時にアプリケーションをロードして、ワーカープロセスをフォークするとアプリケーションが実行可能となる。 | |||
*: 複数のワーカープロセスでコードを共有するため、メモリ使用効率が良くなる。 | |||
*: <u>デメリットは、ワーカープロセスを再起動してもアプリケーションはロードされないことである。</u> | |||
*: <br> | |||
* before_fork | |||
*: ワーカープロセスをフォークする前に、マスタープロセスによって呼ばれる。 | |||
*: USR2シグナルで新旧マスタープロセスが共存する場合、旧マスタープロセスにQUITシグナルを送信して終了させる。 | |||
*: <br> | |||
* after_fork | |||
*: ワーカープロセスがフォークされた後に呼び出される。 | |||
<br> | |||
Unicornの設定ファイルを使用して、Unicornを起動する。<br> | |||
cd /<Redmineのインストールディレクトリ> | cd /<Redmineのインストールディレクトリ> | ||
bundle exec unicorn_rails -c config/unicorn.rb -E production | bundle exec unicorn_rails -c config/unicorn.rb -E production | ||
<br> | |||
==== Unicornのサービスユニットファイルの作成 ==== | |||
* [Unit]セクション | |||
** Afterキー | |||
**: Redmine(Unicorn)は、起動時にデータベースに接続できない場合は、エラーとなる。 | |||
**: そのため、mysql.serviceまたはmariadb.serviceを実行した後に、redmine-unicorn.serviceが起動するように順序を指定する。 | |||
*: <br> | |||
* [Service]セクション | |||
** Userキー および Groupキー | |||
**: 起動プロセスの実行ユーザおよびグループを指定する。 | |||
**: Systemdサービスで<code>ExecStart</code>により実行したプロセスの実行ユーザおよびグループをroot以外にする場合は指定する。 | |||
**: <br> | |||
** WorkingDirectory | |||
**: Redmineのインストールディレクトリを、実体パス(SELinuxを使用している場合は、シンボリックリンクは不可)で指定する。 | |||
**: <br> | |||
** PIDFile | |||
**: UnicornのプロセスIDファイルを、実体パス(SELinuxを使用している場合は、シンボリックリンクは不可)で指定する。 | |||
**: <br> | |||
** PermissionsStartOnly | |||
**: <code>true</code>を指定する場合、<code>User</code>キーおよび<code>Gourp</code>を指定していたとしても、<code>ExecStartPre</code>キーの値は、root権限で実行される。 | |||
<br> | |||
sudo vi /etc/systemd/system/redmine-unicorn.service | |||
<br> | |||
<syntaxhighlight lang="ini"> | |||
# /etc/systemd/system/redmine-unicorn.serviceファイル | |||
[Unit] | |||
Description=Redmine Unicorn Server | |||
# MySQLおよびMariaDBを通常インストールした場合 | |||
After=mysqld.service | |||
[Service] | |||
User=<ユーザ名> | |||
Group=<グループ名> | |||
WorkingDirectory=<Redmineのインストールディレクトリ> | |||
Environment=RAILS_ENV=production | |||
SyslogIdentifier=redmine-unicorn | |||
PIDFile=/<Redmineのインストールディレクトリ>/tmp/pids/unicorn.pid | |||
# MySQLおよびMariaDBを任意のインストールディレクトリにインストールした場合 | |||
ExecStartPre=/<MySQLまたはMariaDBのインストールディレクトリ>/support-files/mysql.server start | |||
# Rubyを通常インストールした場合 | |||
ExecStart=/<Rubyのインストールディレクトリ>/bin//bundle exec "/<Rubyのインストールディレクトリ>/unicorn_rails -c config/unicorn.rb -E production -D" | |||
# Rubyを任意のインストールディレクトリにインストールした場合 | |||
ExecStart=/bin/bash -c "PATH=/<Rubyのインストールディレクトリ>/bin:$PATH /<Rubyのインストールディレクトリ>/bin/bundle exec /<Rubyのインストールディレクトリ>/bin/unicorn_rails -c config/unicorn.rb -E production -D" | |||
ExecStop=/usr/bin/kill -QUIT $MAINPID | |||
# MySQLおよびMariaDBを任意のインストールディレクトリにインストールした場合 | |||
ExecStopPost=/<MySQLまたはMariaDBのインストールディレクトリ>/support-files/mysql.server stop | |||
ExecReload=/bin/kill -USR2 $MAINPID | |||
[Install] | |||
WantedBy=multi-user.target | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]] | [[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]] | ||