全国大会に出場します。2012年度全国大会」に、チームifconfigとして参加してきます。(0)2つめのTracをホストしてみました大学や仕事のこと、私的なことなどといったプライベートなあれこれもチケット管理しようといった考えから、公開用であるこのTracプロジェクトとは別に、認証もかけて自分専用のプロジェクトをホストしようと思いました。同じホスト(同じサーバ)で2つのTracをホストした理由は、単にSSL証明書を節約するためです。例によって、任意のパスにTrac用のディレクトリを作成し、Trac化します。詳細は以前の投稿を参照のほど。/privateを設定し、パスを変える方法は失敗でした。いうと、Tracにprivateというハンドラがないからです。それから、uwsgiのSocketポートを変えただけでも、同様にだめでした。そんなにたくさん試行錯誤はしていません。使うやつなのでポート番号くらい非defaultでもいいだろということで、別のポートでlistenすることにしました。}}uwsgi_passのSocketポート番号は、ほかに走っているuwsgiアプリケーションと違うのに気をつけてください。同じだと破滅が起こります。このconfをsites-enabledにシンボリックリンク張って、uwsgiとnginxを再起動して完了。(0)Tracの設定を見なおしたりしてみました自分のアカウントでhttp-basic認証でログインしていても、どうもAdminメニューからTracの一般設定ができないと思っていました。結局何が問題だったかというと、自分のアカウントにTRAC_ADMINが設定されていなかっただけでした。次のコマンドにて解決。TRAC_ADMIN先日のブログエントリに記載したコマンドを、自分で実行するのを忘れていたとは。検証してみると、TRAC_ADMINでなかったのにAdminメニューが選択できたのは、自分がBLOG_ADMINだったからでした。あれ?と思ったら、まずは設定から見なおしてみると十中八九なんか見つかります。それはそうと、​SharingButtonsPluginを導入してみました。Wikiにはボタンが設置されたことを確認しましたが、Blogはどうやら外部プラグインを使っているため非対応なのか、表示されません。暇があったら、様々なプラグインにも対応できるようにこれを改造してみてもいいかもしれませんね。(0)nginxとuwsgiを使ってTracをホストしようこのTracをセットアップするのに多くの時間を費やし、文献を読みあさったのでここに手順やハマりどころをまとめておきます。そこらの文献というのはなぜかコマンドをどの権限やパスで実行するか明記していないケースがあるので、この記事ではコマンドの説明をするときはbashっぽくプロンプトの部分から記述します。12.04.2)以降、ホスト名はreimuと表します(このホストがreimu.x86-64.jpだから)必要なものをパッケージマネージャなり公式サイトなりから引っ張ってきます。わたしはaptを使って手を抜きました。依存環境などもまるまる降ってくるし、アップデートの適用もシステムと一緒にできるという恩恵にあずかれます。trac-gittrac-gitはTracでgit使いたいから入れておいたもので、必須ではありません。Uwsgi?わたしはWebサイトごとにユーザを作るスタイルを採用しているので、Trac用にユーザを作っちゃいます。tracnginxが走るグループは、環境によってはwww-dataではないかもしれません(httpdとか)ユーザ分けとかどうでもいい場合はwww-dataさんが参照できるディレクトリを用意するだけで大丈夫です。Tracのプロジェクトが入るディレクトリを適当に作り、Tracに付属しているTrac-admin?コマンドでそのディレクトリをTrac化します。Trac用のユーザを作らなかった場合はwww-data)で行います。initenvinitenvを行っているときに、プロジェクトの名称とデータベースファイルのパスを決められます。これがTracのタイトルとして反映されます。このTracなら真剣な悪ふざけになっています。UTF-8なら2バイト文字でもいいみたいです。このへんでTracの管理者アカウントを登録しておきましょう。TRAC_ADMINこれで、ユーザfooが管理者になりましたので、fooとしてhttp-auth-basic(以下Basic認証と記述)でログインできるように設定します(後述)。Tracについての、uwsgi用とnginx用のconfigを作ります。}}uwsgi用のconfで書いたソケットはportが7777なので、こちらのconfでもuwsgi_passを7777に設定しておきます。このようにして、nginxにアクセスがあったとき、uwsgiを通してTracのコンテンツを引っ張りにいく設定にします。ちなみにこのTracはSSL-enabledなので、ところどころSSLに関する設定が入っています。htpasswdを使って、Basic認証に使うアカウントを生成します。/path/to/your/.htpasswdこれによってユーザfooが含まれる.htpasswdが生成されたので、このユーザでログインすることでTracのWebインタフェースからの管理ができるようになりました。個人的にはここでroot以外が.htpasswdを読めるのがきもい。上で書いたconfigをenableします。/etc/uwsgi/apps-enabled/trac.xmluwsgiとnginxをrestartして完成。restartああそういえば:エラーが発生したときは、結構な確率でパーミッションがおかしいです。Tracを運用するにあたってwww-dataが読み書きできなくてはいけないファイルは、your_trac_project/conf/trac.iniyour_trac_project/db/trac.dbが大事です。これらのファイルについてwww-dataがrとwの権限を持っているかチェックしましょう。それからハマりどころとして、uwsgiの設定にてPythonのプラグインを使うことを明記しないとちゃんと動かなかったのでメモ。なんか抜けがある気がするので暇な時に検証します。リファレンスコメントはdisableしていますので、ご意見がありましたらTwitterにて​@x86_64までお願いします。athttp://trac.edgewall.org/。