| 50 | | 動かしたい Trac のインスタンス毎に `fastcgi.server` のエントリを追加する必要があります。別の方法として、、上記の `TRAC_ENV` の代わりに `TRAC_ENV_PARENT_DIR` を使用できます。 |
| | 85 | 動かしたい Trac のインスタンス毎に `fastcgi.server` のエントリを追加する必要があります。別の方法として、、上記の `TRAC_ENV` の代わりに `TRAC_ENV_PARENT_DIR` を使用でき、 |
| | 86 | `lighttpd.conf` に設定する代わりに `trac.fcgi` ファイルに |
| | 87 | `bin-environment` (上記の Apache の設定 に書かれています) の2つのうちのどちらかを設定します。 |
| | 88 | |
| | 89 | lighttpd で2つのプロジェクトを動かすには、 `lighttpd.conf` に以下の設定を追加します: |
| | 90 | {{{ |
| | 91 | fastcgi.server = ("/first" => |
| | 92 | ("first" => |
| | 93 | ("socket" => "/tmp/trac-fastcgi-first.sock", |
| | 94 | "bin-path" => "/path/to/cgi-bin/trac.fcgi", |
| | 95 | "check-local" => "disable", |
| | 96 | "bin-environment" => |
| | 97 | ("TRAC_ENV" => "/path/to/projenv-first") |
| | 98 | ) |
| | 99 | ), |
| | 100 | "/second" => |
| | 101 | ("second" => |
| | 102 | ("socket" => "/tmp/trac-fastcgi-second.sock", |
| | 103 | "bin-path" => "/path/to/cgi-bin/trac.fcgi", |
| | 104 | "check-local" => "disable", |
| | 105 | "bin-environment" => |
| | 106 | ("TRAC_ENV" => "/path/to/projenv-second") |
| | 107 | ) |
| | 108 | ) |
| | 109 | ) |
| | 110 | }}} |
| | 111 | 各フィールドの値が異なることに注意して下さい。もし `.fcgi` スクリプトに |
| | 112 | 環境変数を設定するほうが好ましい場合は、 `trac.fcgi` をコピー / 名前変更をして下さい。例として、 |
| | 113 | `first.fcgi` と `second.fcgi` が上記の設定では参照されるようにします。 |
| | 114 | 上記の設定で、両方のプロジェクトが 同じ `trac.fcgi` スクリプトで起動していても、 |
| | 115 | 異なるプロセスになることに注意して下さい。 |
| | 116 | {{{ |
| | 117 | #!html |
| | 118 | <p style="background: #fdc; border: 2px solid #d00; font-style: italic; padding: 0 .5em; margin: 1em 0;"> |
| | 119 | <strong>Note from c00i90wn:</strong> server.modules をロードする順番はとても重要です。もし、 mod_auth が mod_fastcgi より <strong> 先に </strong> ロードされる設定になっていない場合、サーバはユーザの認証に失敗します。 |
| | 120 | </p> |
| | 121 | }}} |
| | 122 | 認証のために lighttpd.conf の 'server.modules' 中で mod_auth を有効にして、 auth.backend と認証方法を選択して下さい: |
| | 123 | {{{ |
| | 124 | server.modules = ( |
| | 125 | ... |
| | 126 | "mod_auth", |
| | 127 | ... |
| | 128 | ) |
| | 129 | |
| | 130 | auth.backend = "htpasswd" |
| | 131 | |
| | 132 | # Separated password files for each project |
| | 133 | # See "Conditional Configuration" in |
| | 134 | # http://trac.lighttpd.net/trac/file/branches/lighttpd-merge-1.4.x/doc/configuration.txt |
| | 135 | |
| | 136 | $HTTP["url"] =~ "^/first/" { |
| | 137 | auth.backend.htpasswd.userfile = "/path/to/projenv-first/htpasswd.htaccess" |
| | 138 | } |
| | 139 | $HTTP["url"] =~ "^/second/" { |
| | 140 | auth.backend.htpasswd.userfile = "/path/to/projenv-second/htpasswd.htaccess" |
| | 141 | } |
| | 142 | |
| | 143 | # Enable auth on trac URLs, see |
| | 144 | # http://trac.lighttpd.net/trac/file/branches/lighttpd-merge-1.4.x/doc/authentication.txt |
| | 145 | |
| | 146 | auth.require = ("/first/login" => |
| | 147 | ("method" => "basic", |
| | 148 | "realm" => "First project", |
| | 149 | "require" => "valid-user" |
| | 150 | ), |
| | 151 | "/second/login" => |
| | 152 | ("method" => "basic", |
| | 153 | "realm" => "Second project", |
| | 154 | "require" => "valid-user" |
| | 155 | ) |
| | 156 | ) |
| | 157 | |
| | 158 | |
| | 159 | }}} |
| | 160 | パスワードファイルがない場合、 lighttpd (確認したバージョンは 1.4.3) が停止するので注意して下さい。 |
| | 161 | |
| | 162 | バージョン 1.3.16 以前では lighttpd は 'valid-user' をサポートしていないので注意してください。 |
| | 163 | |
| | 164 | 条件付の設定は静的リソースをマッピングするときに便利です。例として FastCGI を経由せずに直接イメージファイルや CSS を参照するときなどです。: |
| | 165 | {{{ |
| | 166 | # Aliasing functionality is needed |
| | 167 | server.modules += ("mod_alias") |
| | 168 | |
| | 169 | # Setup an alias for the static resources |
| | 170 | alias.url = ("/trac/chrome/common" => "/usr/share/trac/htdocs") |
| | 171 | |
| | 172 | # Use negative lookahead, matching all requests that ask for any resource under /trac, EXCEPT in |
| | 173 | # /trac/chrome/common, and use FastCGI for those |
| | 174 | $HTTP["url"] =~ "^/trac(?!/chrome/common)" { |
| | 175 | # Even if you have other fastcgi.server declarations for applications other than Trac, do NOT use += here |
| | 176 | fastcgi.server = ("/trac" => |
| | 177 | ("trac" => |
| | 178 | ("socket" => "/tmp/trac-fastcgi.sock", |
| | 179 | "bin-path" => "/path/to/cgi-bin/trac.fcgi", |
| | 180 | "check-local" => "disable", |
| | 181 | "bin-environment" => |
| | 182 | ("TRAC_ENV" => "/path/to/projenv") |
| | 183 | ) |
| | 184 | ) |
| | 185 | ) |
| | 186 | } |
| | 187 | }}} |
| | 188 | 複数のプロジェクトのそれぞれにエイリアスを作れば、複数のプロジェクトを動かすのは技術的には簡単です。 fastcgi.server を条件ブロックの中で宣言しラッピングします。 |
| | 189 | 複数のプロジェクトをハンドルするもう一つの方法があります。 TRAC_ENV_PARENT_DIR を TRAC_ENV の代わりに使用し、グローバルの認証機構を使用します。サンプルを見てみましょう: |
| | 190 | {{{ |
| | 191 | # This is for handling multiple projects |
| | 192 | alias.url = ( "/trac/" => "/path/to/trac/htdocs/" ) |
| | 193 | |
| | 194 | fastcgi.server += ("/projects" => |
| | 195 | ("trac" => |
| | 196 | ( |
| | 197 | "socket" => "/tmp/trac.sock", |
| | 198 | "bin-path" => "/path/to/cgi-bin/trac.fcgi", |
| | 199 | "check-local" => "disable", |
| | 200 | "bin-environment" => |
| | 201 | ("TRAC_ENV_PARENT_DIR" => "/path/to/parent/dir/of/projects/" ) |
| | 202 | ) |
| | 203 | ) |
| | 204 | ) |
| | 205 | #And here starts the global auth configuration |
| | 206 | auth.backend = "htpasswd" |
| | 207 | auth.backend.htpasswd.userfile = "/path/to/unique/htpassword/file/trac.htpasswd" |
| | 208 | $HTTP["url"] =~ "^/projects/.*/login$" { |
| | 209 | auth.require = ("/" => |
| | 210 | ( |
| | 211 | "method" => "basic", |
| | 212 | "realm" => "trac", |
| | 213 | "require" => "valid-user" |
| | 214 | ) |
| | 215 | ) |
| | 216 | } |
| | 217 | }}} |
| | 218 | |
| | 219 | lighttpd では環境変数の LC_TIME を上書きして、日付/時間のフォーマットを変更することも出来ます。 |
| | 220 | {{{ |
| | 221 | fastcgi.server = ("/trac" => |
| | 222 | ("trac" => |
| | 223 | ("socket" => "/tmp/trac-fastcgi.sock", |
| | 224 | "bin-path" => "/path/to/cgi-bin/trac.fcgi", |
| | 225 | "check-local" => "disable", |
| | 226 | "bin-environment" => |
| | 227 | ("TRAC_ENV" => "/path/to/projenv", |
| | 228 | "LC_TIME" => "ru_RU") |
| | 229 | ) |
| | 230 | ) |
| | 231 | ) |
| | 232 | }}} |
| | 233 | 使用言語指定の詳細については [http://trac.lighttpd.net/trac/wiki/TracFaq TracFaq] の 2.13 の質問を参照して下さい。 |
| | 240 | |
| | 241 | 制限された権限で lighttpd を起動するにあたって気をつけること: |
| | 242 | |
| | 243 | もし、 trac.fcgi が lighttpd の設定で __server.username = "www-data"__ や __server.groupname = "www-data"__ を設定しても起動せずどうしようもないときは、 `bin-environment` セクションの `PYTHON_EGG_CACHE` を `www-data` のホームディレクトリまたは `www-data` アカウントで書き込みが可能なディレクトリに設定して下さい。 (訳注: debian 系 Linux に限定した話だと思われます。 `www-data` は lighttpd を起動するユーザに適宜読み替えてください。) |
| | 244 | |
| | 245 | |
| | 246 | == 簡単な [http://trac.edgewall.org/wiki/LiteSpeed LiteSpeeed] の設定 == |
| | 247 | |
| | 248 | FastCGI フロントエンドは最初 [http://www.litespeedtech.com/ LiteSpeed] のような、 Apache 以外の Web サーバのために開発されました。 |
| | 249 | |
| | 250 | [http://trac.edgewall.org/wiki/LiteSpeed LiteSpeed] Web サーバはイベント駆動、非同期型であり、Apache に代わるものとしてセキュアで拡張可能になるようにゼロからデザインされています。そして、最低限のリソースで操作できます。 [http://trac.edgewall.org/wiki/LiteSpeed LiteSpeed] は Apache の設定ファイルから直接操作でき、ビジネスに不可欠な環境をターゲットにしています。 |
| | 251 | |
| | 252 | セットアップ |
| | 253 | |
| | 254 | 1) 最初に Trac プロジェクトをインストールして動作することを確認して下さい。最初のインストールでは、 "tracd" を使用します。 |
| | 255 | |
| | 256 | 2) このセットアップでは仮想ホストを作成します。以下、この仮想ホストのことを !TracVhost と呼びます。このチュートリアルで、先ほど作ったプロジェクトが以下の URL 経由でアクセスできると仮定します: |
| | 257 | |
| | 258 | {{{ |
| | 259 | http://yourdomain.com/trac/ |
| | 260 | }}} |
| | 261 | |
| | 262 | 3) "!TracVhost → External AApps" タブへ移動し、新しい "External Application" を作成します。 |
| | 263 | |
| | 264 | {{{ |
| | 265 | Name: MyTracFCGI |
| | 266 | Address: uds://tmp/lshttpd/mytracfcgi.sock |
| | 267 | Max Connections: 10 |
| | 268 | Environment: TRAC_ENV=/fullpathto/mytracproject/ <--- path to root folder of trac project |
| | 269 | Initial Request Timeout (secs): 30 |
| | 270 | Retry Timeout (secs): 0 |
| | 271 | Persistent Connection Yes |
| | 272 | Connection Keepalive Timeout: 30 |
| | 273 | Response Bufferring: No |
| | 274 | Auto Start: Yes |
| | 275 | Command: /usr/share/trac/cgi-bin/trac.fcgi <--- path to trac.fcgi |
| | 276 | Back Log: 50 |
| | 277 | Instances: 10 |
| | 278 | }}} |
| | 279 | |
| | 280 | 4) (非必須) "!TracVhost → Security" タブへ移動し、新しいセキュリティ "Realm" を作成することができます。 |
| | 281 | |
| | 282 | {{{ |
| | 283 | DB Type: Password File |
| | 284 | Realm Name: MyTracUserDB <--- any name you wish and referenced later |
| | 285 | User DB Location: /fullpathto/htpasswd <--- path to your htpasswd file |
| | 286 | }}} |
| | 287 | |
| | 288 | もし、 htpasswd ファイルを持っていない、もしくは作り方を知らない場合は、 http://sherylcanter.com/encrypt.php にアクセスし、ユーザ名:パスワード の一対を生成して下さい。 |
| | 289 | |
| | 290 | 5) "!PythonVhost → Contexts" へ移動し、新しい "FCGI Context" を作成します。 |
| | 291 | |
| | 292 | {{{ |
| | 293 | URI: /trac/ <--- URI path to bind to python fcgi app we created |
| | 294 | Fast CGI App: [VHost Level] MyTractFCGI <--- select the trac fcgi extapp we just created |
| | 295 | Realm: TracUserDB <--- only if (4) is set. select ream created in (4) |
| | 296 | }}} |
| | 297 | |
| | 298 | 6) /fullpathto/mytracproject/conf/trac.ini を修正します。 |
| | 299 | |
| | 300 | {{{ |
| | 301 | #find/set base_rul, url, and link variables |
| | 302 | base_url = http://yourdomain.com/trac/ <--- base url to generate correct links to |
| | 303 | url = http://yourdomain.com/trac/ <--- link of project |
| | 304 | link = http://yourdomain.com/trac/ <--- link of graphic logo |
| | 305 | }}} |
| | 306 | |
| | 307 | 7) [http://trac.edgewall.org/wiki/LiteSpeed LiteSpeed] を "lswsctrl restart" で再起動し、新しい Trac プロジェクトに以下の URL でアクセスします: |
| | 308 | |
| | 309 | {{{ |
| | 310 | http://yourdomain.com/trac/ |
| | 311 | }}} |
| | 312 | |