| 54 | | mod_wsgi の [http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac インストール例] に Trac の情報が掲載されています。 |
| 55 | | |
| 56 | | トラブルシューティングの Tips は [TracModPython#Troubleshooting mod_python のトラブルシューティング] セクションも参考になります。 Apache に関連する問題の多くは似通っていて、多くの場合 mod_wsgi を使用する [http://code.google.com/p/modwsgi/wiki/ApplicationIssues アプリケーション側の問題] です。 |
| 57 | | |
| 58 | | == Trac と PostgreSQL == #TracwithPostgreSQL |
| 59 | | |
| 60 | | mod_wsgi アダプタを使用し、 Trac のインスタンスを複数ホストしている場合に、 PostgreSQL (もしかすると MySQL も?) をデータベースバックエンドとして使用していると、大量のデータベース接続が生成され (PostgreSQL のプロセスも大量に発生し) てしまいます。 |
| 61 | | |
| 62 | | さしあたり動く解決方法として、 Trac が持つコネクションプールを無効化する方法があります。これは trac.db.postgres_backend の PostgreSQLConnection クラスで定義されている poolable を False に設定することで適用できます。 |
| 63 | | |
| 64 | | この方法を適用するために、 Trac のソースを変更する必要はありません。以下に示す行を trac.wsgi に追加してください: |
| 65 | | |
| 66 | | {{{ |
| 67 | | import trac.db.postgres_backend |
| 68 | | trac.db.postgres_backend.PostgreSQLConnection.poolable = False |
| 69 | | }}} |
| 70 | | |
| 71 | | この設定で Trac ページを生成した後にコネクションを捨てるようになり、データベースへの接続数は最小に保たれます。 |
| 72 | | |
| 73 | | == SSPI および 'Require Group' 使用時に Trac を動かす方法 == #GettingTractoworknicelywithSSPIandRequireGroup |
| | 97 | mod_wsgi の特定ディレクティブの使用方法についての詳細は、 [http://code.google.com/p/modwsgi/wiki/ mod_wsgi's wiki] または [http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac インストール例] を参照してください。 |
| | 98 | |
| | 99 | |
| | 100 | == 認証の設定 == #ConfiguringAuthentication |
| | 101 | |
| | 102 | このセクション内では認証の設定方法をいくつか記述します。 |
| | 103 | |
| | 104 | Apache ガイドの [http://httpd.apache.org/docs/2.2/howto/auth.html 認証、許可、アクセスコントロール] も参照してください。 |
| | 105 | |
| | 106 | === 基本認証 === #UsingBasicAuthentication |
| | 107 | |
| | 108 | Apache で認証を追加する最も簡単な方法は、パスワードファイルを作成することです。 `htpasswd` プログラムを使用してパスワードファイルを作成します: |
| | 109 | {{{ |
| | 110 | $ htpasswd -c /somewhere/trac.htpasswd admin |
| | 111 | New password: <type password> |
| | 112 | Re-type new password: <type password again> |
| | 113 | Adding password for user admin |
| | 114 | }}} |
| | 115 | |
| | 116 | 一番最初のユーザ以外は "-c" オプションは必要ありません: |
| | 117 | {{{ |
| | 118 | $ htpasswd /somewhere/trac.htpasswd john |
| | 119 | New password: <type password> |
| | 120 | Re-type new password: <type password again> |
| | 121 | Adding password for user john |
| | 122 | }}} |
| | 123 | |
| | 124 | '' `htpasswd` についての詳細は man を参照してください。'' |
| | 125 | |
| | 126 | ユーザを作成した後、TracPermissions の記述通りユーザに権限を設定することができます。 |
| | 127 | |
| | 128 | Apache の設定ファイルの中にパスワードファイルを記述し、認証を有効にする必要があります: |
| | 129 | {{{ |
| | 130 | <Location "/trac/login"> |
| | 131 | AuthType Basic |
| | 132 | AuthName "Trac" |
| | 133 | AuthUserFile /somewhere/trac.htpasswd |
| | 134 | Require valid-user |
| | 135 | </Location> |
| | 136 | }}} |
| | 137 | |
| | 138 | 複数のプロジェクトを持っている場合でも、共通のパスワードファイルを使用することができます: |
| | 139 | {{{ |
| | 140 | <LocationMatch "/trac/[^/]+/login"> |
| | 141 | AuthType Basic |
| | 142 | AuthName "Trac" |
| | 143 | AuthUserFile /somewhere/trac.htpasswd |
| | 144 | Require valid-user |
| | 145 | </LocationMatch> |
| | 146 | }}} |
| | 147 | Note: 'login' という名のファイルやディレクトリが必要なわけではありません。[[BR]] |
| | 148 | [http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html mod_auth_basic] も参照してください。 |
| | 149 | |
| | 150 | === ダイジェスト認証 === #UsingDigestAuthentication |
| | 151 | |
| | 152 | セキュリティ強化のために、SSL を有効にするか、少なくとも "基本認証" の代わりに "ダイジェスト認証" を使用することを推奨します。 |
| | 153 | |
| | 154 | 以下のように、`htpasswd` の代わりに `htdigest` コマンドを使用して `.htpasswd` ファイルを作成してください: |
| | 155 | {{{ |
| | 156 | # htdigest -c /somewhere/trac.htpasswd trac admin |
| | 157 | }}} |
| | 158 | |
| | 159 | 上記の "trac" パラメータは "realm" です。Apache の設定ファイルの !AuthName ディレクティブで再度指定してください: |
| | 160 | |
| | 161 | {{{ |
| | 162 | <Location "/trac/login"> |
| | 163 | |
| | 164 | AuthType Digest |
| | 165 | AuthName "trac" |
| | 166 | AuthDigestDomain /trac |
| | 167 | AuthUserFile /somewhere/trac.htpasswd |
| | 168 | Require valid-user |
| | 169 | </Location> |
| | 170 | }}} |
| | 171 | |
| | 172 | 複数の environment を持っている場合、上記に記述した方法で、同じ `LocationMatch` を使用することができます。 |
| | 173 | |
| | 174 | 必ず mod_auth_digest をアクティブにしてください。 Debian 4.0r1 (etch) の例: |
| | 175 | {{{ |
| | 176 | LoadModule auth_digest_module /usr/lib/apache2/modules/mod_auth_digest.so |
| | 177 | }}} |
| | 178 | |
| | 179 | |
| | 180 | [http://httpd.apache.org/docs/2.2/mod/mod_auth_digest.html mod_auth_digest] も参照してください。 |
| | 181 | |
| | 182 | === LDAP 認証 === #UsingLDAPAuthentication |
| | 183 | |
| | 184 | Apache の [http://httpd.apache.org/docs/2.2/mod/mod_ldap.html mod_ldap] 認証の設定ファイルは少し扱いにくいです。(httpd 2.2.x OpenLDAP: slapd 2.3.19) |
| | 185 | |
| | 186 | 1. Apache の httpd.conf に以下のモジュールをロードする必要があります |
| | 187 | {{{ |
| | 188 | LoadModule ldap_module modules/mod_ldap.so |
| | 189 | LoadModule authnz_ldap_module modules/mod_authnz_ldap.so |
| | 190 | }}} |
| | 191 | |
| | 192 | 2. httpd.conf は以下のようになります: |
| | 193 | |
| | 194 | {{{ |
| | 195 | <Location /trac/> |
| | 196 | # (if you're using it, mod_python specific settings go here) |
| | 197 | Order deny,allow |
| | 198 | Deny from all |
| | 199 | Allow from 192.168.11.0/24 |
| | 200 | AuthType Basic |
| | 201 | AuthName "Trac" |
| | 202 | AuthBasicProvider "ldap" |
| | 203 | AuthLDAPURL "ldap://127.0.0.1/dc=example,dc=co,dc=ke?uid?sub?(objectClass=inetOrgPerson)" |
| | 204 | authzldapauthoritative Off |
| | 205 | Require valid-user |
| | 206 | </Location> |
| | 207 | }}} |
| | 208 | |
| | 209 | |
| | 210 | 3. Microsoft Active Directory の LDAP インターフェースを使用することもできます: |
| | 211 | |
| | 212 | |
| | 213 | 以下を LDAP URL に使用します: |
| | 214 | {{{ |
| | 215 | AuthLDAPURL "ldap://directory.example.com:3268/DC=example,DC=com?sAMAccountName?sub?(objectClass=user)" |
| | 216 | }}} |
| | 217 | |
| | 218 | 認証情報をチェックするために Apache にアカウントを提供する必要があります。 |
| | 219 | このパスワードは設定ファイル内のプレーンテキストにリストアップされるので、 |
| | 220 | このタスク専用のアカウントを使用すべきです: |
| | 221 | {{{ |
| | 222 | AuthLDAPBindDN ldap-auth-user@example.com |
| | 223 | AuthLDAPBindPassword "password" |
| | 224 | }}} |
| | 225 | |
| | 226 | セクション全体はこのようになります: |
| | 227 | {{{ |
| | 228 | <Location /trac/> |
| | 229 | # (if you're using it, mod_python specific settings go here) |
| | 230 | Order deny,allow |
| | 231 | Deny from all |
| | 232 | Allow from 192.168.11.0/24 |
| | 233 | AuthType Basic |
| | 234 | AuthName "Trac" |
| | 235 | AuthBasicProvider "ldap" |
| | 236 | AuthLDAPURL "ldap://adserver.company.com:3268/DC=company,DC=com?sAMAccountName?sub?(objectClass=user)" |
| | 237 | AuthLDAPBindDN ldap-auth-user@company.com |
| | 238 | AuthLDAPBindPassword "the_password" |
| | 239 | authzldapauthoritative Off |
| | 240 | # require valid-user |
| | 241 | require ldap-group CN=Trac Users,CN=Users,DC=company,DC=com |
| | 242 | </Location> |
| | 243 | }}} |
| | 244 | |
| | 245 | Note 1: このケースでは LDAP 検索で複数の OU をまとめて取得するために、 AD のグローバルカタログサーバ (Global Catalog Server) に接続しています (ポート番号が通常 LDAP で使用される 389 ではなく 3268 であることに注意してください) 。 GCS は基本的に "平らな" ツリーであり、ユーザが、どの OU に属するか不明な場合でも検索することができます。 |
| | 246 | |
| | 247 | Note 2: 有効なログインを持っているかの代わりに、 |
| | 248 | LDAP グループに所属しているかを要求することができます。 |
| | 249 | {{{ |
| | 250 | Require ldap-group CN=Trac Users,CN=Users,DC=example,DC=com |
| | 251 | }}} |
| | 252 | |
| | 253 | 関連ページ: |
| | 254 | - [http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html mod_authnz_ldap], mod_authnz_ldap に関するドキュメンテーション。 |
| | 255 | |
| | 256 | - [http://httpd.apache.org/docs/2.2/mod/mod_ldap.html mod_ldap], mod_ldap に関するドキュメンテーション。コネクションプールや共有のキャッシュを提供します。 |
| | 257 | - [http://trac-hacks.org/wiki/LdapPlugin TracHacks:LdapPlugin], LDAP の TracPermissions を格納するプラグイン。 |
| | 258 | |
| | 259 | === SSPI 認証 === #UsingSSPIAuthentication |
| | 260 | |
| | 261 | Windows 上で Apache を使用しているのであれば、シングルサインオン機能を提供する mod_auth_sspi を使用することができます。 |
| | 262 | !SourceForge の [http://sourceforge.net/projects/mod-auth-sspi/ mod-auth-sspi プロジェクト] からモジュールをダウンロードし、 |
| | 263 | バーチャルホストに以下を追記してください。 |
| | 264 | {{{ |
| | 265 | <Location /trac/login> |
| | 266 | AuthType SSPI |
| | 267 | AuthName "Trac Login" |
| | 268 | SSPIAuth On |
| | 269 | SSPIAuthoritative On |
| | 270 | SSPIDomain MyLocalDomain |
| | 271 | SSPIOfferBasic On |
| | 272 | SSPIOmitDomain Off |
| | 273 | SSPIBasicPreferred On |
| | 274 | Require valid-user |
| | 275 | </Location> |
| | 276 | }}} |
| | 277 | |
| | 278 | SSPI 認証を使用すると、Trac のユーザ名が `DOMAIN\username` という形式になるので、 |
| | 279 | パーミッションなどを追加しなおす必要があります。ユーザ名にドメインを入れたくない場合は、 |
| | 280 | `SSPIOmitDomain On` と代わりに設定してください。 |
| | 281 | |
| | 282 | SSPI 認証に関する共通の問題: [http://trac.edgewall.org/ticket/1055 本家チケット 1055], [http://trac.edgewall.org/ticket/1168 本家チケット 1168], [http://trac.edgewall.org/ticket/3338 本家チケット 3338] 。 |
| | 283 | |
| | 284 | [trac:TracOnWindows/Advanced] も参照してください。 |
| | 285 | |
| | 286 | === !AccountManagerPlugin のログインフォームを使用した Apache 認証 === #UsingApacheauthenticationwiththeAccountManagerplugin'sLoginform |
| | 287 | |
| | 288 | まず、!AccountManagerPlugin の [http://trac-hacks.org/wiki/AccountManagerPlugin/Modules#LoginModule Login モジュール] と [http://trac-hacks.org/wiki/AccountManagerPlugin/AuthStores#HttpAuthStore HttpAuthStore authentication モジュール] の基本的な仕様を参照してください。 |
| | 289 | |
| | 290 | '''Note:''' acct_mgr-0.4 より前のバージョンの !AccountManager を使用していると、WSGI で !HttpAuthStore を動かすことは難しいです。アップグレードを推奨します。 |
| | 291 | |
| | 292 | 単一のプロジェクトに acct_mgr-0.4 を使用した例: |
| | 293 | {{{ |
| | 294 | [components] |
| | 295 | ; be sure to enable the component |
| | 296 | acct_mgr.http.HttpAuthStore = enabled |
| | 297 | |
| | 298 | [account-manager] |
| | 299 | ; configure the plugin to use a page that is secured with http authentication |
| | 300 | authentication_url = /authFile |
| | 301 | password_store = HttpAuthStore |
| | 302 | }}} |
| | 303 | Apache の設定ファイルはこのようになります: |
| | 304 | {{{ |
| | 305 | <Location /authFile> |
| | 306 | …HTTP authentication configuration… |
| | 307 | Require valid-user |
| | 308 | </Location> |
| | 309 | }}} |
| | 310 | '''authFile''' が存在する必要はありません。前述の !HttpAuthStore へのリンク先から、複数の Trac プロジェクトをサーバー上でホスティングした場合を説明する箇所などを参照してください。 |
| | 311 | |
| | 312 | === 例: バーチャルホストのルートが Trac である Apache/mod_wsgi 基本認証 === #Example:Apache/mod_wsgiwithBasicAuthentication,Trac beingattherootofavirtual host |
| | 313 | |
| | 314 | 上記の mod_wsgi のドキュメントには、 Apache の設定例 a) Trac のインスタンスをバーチャルホストでサブドメインを作成して動かす例と b) Trac の認証として、 Apache の基本認証を設定する例が記載されています。 |
| | 315 | |
| | 316 | |
| | 317 | 例えば、 trac を !http://trac.my-proj.my-site.org としてホストし、`/home/trac-for-my-proj` フォルダから起動する場合で、 {{{the-env}}} を作成するために、 `trac-admin the-env initenv` コマンドを使用し、 `the-deploy` フォルダを作成するために、 `trac-admin the-env deploy the-deploy` コマンドを使用した場合です: |
| | 318 | |
| | 319 | htpasswd ファイルを作成します: |
| | 320 | {{{ |
| | 321 | cd /home/trac-for-my-proj/the-env |
| | 322 | htpasswd -c htpasswd firstuser |
| | 323 | ### and add more users to it as needed: |
| | 324 | htpasswd htpasswd seconduser |
| | 325 | }}} |
| | 326 | (セキュリティのため、このファイルはドキュメントルートにおきます) |
| | 327 | |
| | 328 | 以下の設定を含んだファイルを作成します。例 `/etc/apache2/sites-enabled/trac.my-proj.my-site.org.conf` (ubuntu): |
| | 329 | |
| | 330 | {{{ |
| | 331 | <Directory /home/trac-for-my-proj/the-deploy/cgi-bin/trac.wsgi> |
| | 332 | WSGIApplicationGroup %{GLOBAL} |
| | 333 | Order deny,allow |
| | 334 | Allow from all |
| | 335 | </Directory> |
| | 336 | |
| | 337 | <VirtualHost *:80> |
| | 338 | ServerName trac.my-proj.my-site.org |
| | 339 | DocumentRoot /home/trac-for-my-proj/the-env/htdocs/ |
| | 340 | WSGIScriptAlias / /home/trac-for-my-proj/the-deploy/cgi-bin/trac.wsgi |
| | 341 | <Location '/'> |
| | 342 | AuthType Basic |
| | 343 | AuthName "Trac" |
| | 344 | AuthUserFile /home/trac-for-my-proj/the-env/htpasswd |
| | 345 | Require valid-user |
| | 346 | </Location> |
| | 347 | </VirtualHost> |
| | 348 | |
| | 349 | }}} |
| | 350 | |
| | 351 | Note: サブドメインが適切に動くにようにするには、 /etc/hosts ファイルの変更や、ホストサーバの DNS の A レコードにサブドメインを追加する必要があります。 |
| | 352 | |
| | 353 | |
| | 354 | == トラブルシューティング == #Troubleshooting |
| | 355 | |
| | 356 | === 最新バージョンを使う === #Usearecentversion |
| | 357 | |
| | 358 | `mod_wsgi` のバージョンは 1.6 か 2.4 かそれより新しいものを使用してください。2.4 以前のバージョン 2.X のブランチは WSGI ファイルラッパー拡張機能を使用する Apache の設定にいくつか問題があります。この拡張機能は Trac 内でスタイルシートのような添付ファイルや静的メディアファイルを提供するのに使用します。この問題の影響を受けると、添付ファイルは何もないように見えてしまったり、スタイルシートがうまくロードできなくなることで HTML ページのフォーマットが機能していないように見えてしまったりします。他に 2 進数の添付ファイルが省略されてしまうといった問題も頻繁に起こります。mod_wsgi に関するチケット [http://code.google.com/p/modwsgi/issues/detail?id=100 #100] と [http://code.google.com/p/modwsgi/issues/detail?id=132 #132] を参照してください。 |
| | 359 | |
| | 360 | ''Note: mod_wsgi 2.5 と Python 2.6.1 を使用していると、システム上 (Apache 2.2.11 と Trac 0.11.2.1) で Internal Server Error が発生しました。Python 2.6.2 にアップグレードすることで([http://www.mail-archive.com/modwsgi@googlegroups.com/msg01917.html こちら] で勧められています) 私の場合は解決しました。[[BR]]-- Graham Shanks'' |
| | 361 | |
| | 362 | もし 'mod_wsgi' を Windows の組み込みモードでの使用や Linux 上で MPM worker と併用することを予定している場合, バージョン 0.3.4 以上が必要です。 (詳細については、 [trac:#10675] を参照してください) |
| | 363 | |
| | 364 | === SSPI および 'Require Group' 使用時に Trac を動かす方法 === #GettingTractoworknicelywithSSPIandRequireGroup |