2つめのTracをホストしてみました

大学や仕事のこと、私的なことなどといったプライベートなあれこれもチケット管理しようといった考えから、公開用であるこのTracプロジェクトとは別に、認証もかけて自分専用のプロジェクトをホストしようと思いました。

同じホスト(同じサーバ)で2つのTracをホストした理由は、単にSSL証明書を節約するためです。


準備

例によって、任意のパスにTrac用のディレクトリを作成し、Trac化します。
詳細は以前の投稿を参照のほど。

trac@reimu ~:$ mkdir another_project
trac@reimu ~:$ trac-admin another_project initenv
trac@reimu ~:$ chown -R trac:www-data another_project
trac@reimu ~:$ chmod -R 775 another_project

失敗例

nginxの設定で、location /privateを設定し、パスを変える方法は失敗でした。
なぜかというと、Tracprivateというハンドラがないからです。

それから、uwsgiのSocketポートを変えただけでも、同様にだめでした。

そんなにたくさん試行錯誤はしていません。エンジニアたるものもっと失敗にぶち当たるべき。

成功例

結局、私的に使うやつなのでポート番号くらい非defaultでもいいだろということで、別のポートでlistenすることにしました。

/etc/nginx/sites-available/trac_private
server {
    listen 55555 ssl;
    server_name x86-64.jp;
    ssl_certificate /path/to/your/ssl/cert.pem;
    ssl_certificate_key /path/to/your/ssl/key.key;
    root /home/trac/another_project;
    
    location /favicon.ico { }
    location /robots.txt { }

    if ($scheme = http) {
    	return 301 https://$server_name$request_uri;
    }
    
    location / {
    	include uwsgi_params;
    	uwsgi_param REMOTE_USER $remote_user;
        uwsgi_param HTTPS on; # リクエストが勝手にHTTPになる現象をこの行で解決
    	include uwsgi_params;
    	uwsgi_pass 127.0.0.1:7778;
    	auth_basic "Trac";
    	auth_basic_user_file "/path/to/your/.htpasswd";
    }
}

uwsgi_passのSocketポート番号は、ほかに走っているuwsgiアプリケーションと違うのに気をつけてください。同じだと破滅が起こります。

このconfをsites-enabledにシンボリックリンク張って、uwsginginxを再起動して完了。

Comments

No comments.