タンバリンとの短い序曲の後、私はこのドキュメントを作成しました。これは、Tracプロジェクトを展開するためのほぼ段階的な指示です。 これが他の誰かに役立つことを願っています。
この手順は、基本的なLinux管理の知識とPythonパッケージのインストールシステムを持つユーザーを対象としています。 Ubuntu 12.04ディストリビューションを新たにインストールしたシステムでの展開プロセスについてはすぐに説明しますが、この情報は他のLinuxアセンブリのファンにとって役立つと思います。
Tracプロジェクトの初期化
Tracがシステムにインストールされていない場合、次の手順に従ってください。
- Python Pipをインストールします。
- インターフェイスのローカライズが必要な場合はBabelをインストールします。
- Trac自体をバージョンとともにインストールします。この記事ではバージョン1.0のインストールについて説明しています。
sudo apt-get install python-pip sudo pip install babel sudo pip install "Trac==1.0"
次に、プロジェクトの場所ディレクトリを初期化する必要があります。 次の手順に従ってください:
- tracユーザーを作成します。
- tracsysグループを作成し、tracと自分をその中に含めます。
- プロジェクトの配置場所を準備します。
- プロジェクトディレクトリを初期化します。
- 所有者と必要な権利を任命する。
- 実行して、何が起こったのかを見てください。
sudo adduser --disabled-password --gecos 'Trac' trac sudo addgroup tracsys sudo adduser trac tracsys sudo adduser `whoami` tracsys sudo mkdir -p /var/www/trac sudo trac-admin /var/www/trac initenv sudo chown -R nobody:tracsys /var/www/trac sudo chmod -R g+rwXs /var/www/trac tracd -p 8000 /var/www/trac/
tracsysグループの操作とプロジェクトディレクトリへの権限の割り当てを除いて、すべてが非常に簡単です。 しかし、これは、gitoliteとの統合と、Nginx + UWSGIバンドルに基づいたプロジェクトをホストする組織に影響を及ぼしました。
NginxとUWSGIを使用したホスティング
UWSGIはWSGIアプリケーションサーバーです。 Tracプロジェクトをその下で実行するには、WSGIアプリケーションの形式で提示する必要があります。 以下のスクリプトを使用してこれを行うことは難しくありません。 ファイル/home/trac/wsgi_trac.pyにコピーし、ユーザーtracを所有者にします。 次に、NginxおよびUWSGI構成ファイルを作成する必要があります。 Nginxの場合、このような場合のファイルは標準ですが、UWSGIの場合は微妙です。 WSGIは、ユーザーtracおよびグループtracsysの権限で開始されます。 wsgi_trac.nginxおよびwsgi_trac.uwsgi構成ファイルを以下にリストします。
wsgi_trac.py
import os import sys import trac.web.main sys.stdout=sys.stderr os.environ['TRAC_ENV'] = '/var/www/trac' application = trac.web.main.dispatch_request
wsgi_trac.nginx
server { listen 80; server_name trac.local; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:5544; } }
wsgi_trac.uwsgi
[uwsgi] uid=trac gid=tracsys chmod-socket=777 chown-socket=trac chdir = /home/trac socket = 127.0.0.1:5544 module = wsgi_trac:application processes = 2 master = 1
Nginxおよび/またはUWSGIがインストールされていない場合は、インストールします。 シンボリックリンクを使用して、構成ファイルをアクティブにし、サービスを再起動します。
sudo apt-get install nginx uwsgi uwsgi-plugin-python sudo ln -s /home/trac/wsgi_trac.nginx /etc/nginx/sites-enabled/trac.conf sudo ln -s /home/trac/wsgi_trac.uwsgi /etc/uwsgi/apps-enabled/trac.ini sudo service nginx restart sudo service uwsgi restart
AccountManagerPluginプラグインのインストール
Trac 1.0ディストリビューションには、ユーザーアカウントを管理できるコンポーネントは含まれていません。 このために、さまざまなプラグインが使用されます。 この例では、 AccountManagerPluginプラグインが使用されます。 それをダウンロードして、卵の配布のようにビルドします。 結果のファイルを拡張子.eggでプラグインディレクトリにコピーします。この例では/ var / www / trac / pluginsです。 行をtrac.iniファイルに追加します。
[components] trac.web.auth.LoginModule = disabled acct_mgr.web_ui.LoginModule = enabled acct_mgr.web_ui.RegistrationModule = enabled
HtDigest形式のファイルはパスワードの保存に使用されます。このため、 trac.iniファイルにも次の行を追加します。
[account-manager] authentication_url = force_passwd_change = False hash_method = HtDigestHashMethod htdigest_realm = trac htpasswd_hash_type = crypt password_file = /var/www/trac/db/users.htdigest password_store = HtDigestStore persistent_sessions = False refresh_passwd = False user_lock_max_time = 0 verify_email = False
その後、ユーザーの登録を許可するアイテムがWebインターフェイスに表示されます。 ユーザーを登録します。 そして、コマンドを実行して管理者を任命します。
trac-admin /var/www/trac permission add < > TRAC_ADMIN
これで管理者ができました。管理者の下で、他のユーザーに権限を作成、削除、割り当てることができます。 新しいユーザー登録フォームへのリンクがWebインターフェースでアクティブになっていることに注意してください。ユーザーがプロジェクトに独立して登録していない場合は、無効にします。 AccountManagerPluginプラグイン構成の形式でc RegistrationModuleのチェックを外すことにより、プラグイン管理のadminセクションでこれを既に行うことができます。
Gitoliteの統合
Gitリポジトリを管理するための優れたGitoliteツールがあり、これはTracプロジェクトと統合することもできます。 これを行うには、次の手順を実行します。
- Gitoliteディストリビューションを展開し、作業ディレクトリ/ home / gitoliteで gitユーザーを作成し、 tracsysグループに追加します。
- tracユーザーのSSHキーを作成し、公開キーを/tmp/trac.pubにコピーします。
sudo apt-get install gitolite sudo adduser --home /home/gitolite --disabled-password --gecos 'Git' git sudo adduser git tracsys sudo su trac cd ~ ssh-keygen -t rsa cp ~/.ssh/id_rsa.pub /tmp/trac.pub exit
次のステップは、gitユーザーとしてgitolite作業ディレクトリーを初期化することです。 これにより、「$ REPO_UMASK = 0077;」行を修正する必要がある構成ファイルが開きます。 「$ REPO_UMASK = 0007;」へ。 vimに問題がある場合は、ZZを押してください。 ファイル/home/gitolite/.gitolite.rcを編集することで、後でマスクを変更できます。 Tracプロジェクトのディレクトリに割り当てられた権限と同じ権限をリポジトリのディレクトリに割り当てます。
sudo su git cd ~ gl-setup /tmp/trac.pub exit sudo chown -R git:tracsys /home/gitolite/repositories/ sudo chmod -R g+rwXs /home/gitolite/repositories/
TracプロジェクトのGitとの統合を可能にするために残っています。 これを行うには、 trac.iniに次の行を追加します。
[components] tracopt.versioncontrol.git.* = enabled [trac] repository_type = git
管理パネルの[リポジトリ]セクションで、テストリポジトリgitolite /home/gitolite/repositories/testing.gitを名前testingに、コントロールリポジトリ/ home / gitolite / repositories / gitolite-admin.gitを名前gitolite-adminに接続します。 すべてが正しく行われた場合、両方が表示されるWebインターフェイスメニューに[ソースコード]セクションが表示されます。
すべて順調ですが、Tracプロジェクトのインターフェースを介してGitoliteリポジトリを管理したいと思います。 問題ではありませんが、 trac-GitolitePluginプラグインはこの問題に役立ちます。 上記のページからダウンロードして、eggディストリビューションのようにビルドします。 結果のファイルをプラグインディレクトリにコピーし、 trac.iniファイルに次の行を追加してアクティブにします。
[components] trac_gitolite.* = enabled [trac] permission_policies = GitolitePermissionPolicy, AuthzPolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy [trac-gitolite] admin_reponame = gitolite-admin admin_real_reponame = gitolite-admin admin_ssh_path = git@localhost:gitolite-admin.git admin_system_user = trac default_private = True all_includes_anonymous = False
その後、管理パネルに新しいセクションが表示され、ユーザーをGitoliteに追加して、リポジトリに権限を割り当てることができます。 ただし、最初のユーザーの追加中に、git cloneコマンドgit @ localhost:gitolite-admin.git / tmp / bla-blaを実行するとエラーが発生しました。 ユーザーtracの下からこのコマンドを実行し、キーの追加を手動で確認する必要がありましたが、すべて問題なく動作しました。
TracとGitの最も興味深い統合機能の1つを実装することは残っています。これにより、コミットでコードワードを指定してチケットをクローズします。 たとえば、「close#777」という行を含むコミットは、対応するチケットを自動的に閉じます。 これを行うには、まず管理パネルから、またはtrac.iniファイルに次の行を追加して、 CommitTicketUpdaterコンポーネントをアクティブにする必要があります。
[components] tracopt.ticket.commit_updater.* = enabled
次に、ディレクトリ/ var / www / trac / hooksなどに、対応するフックを実装するPythonスクリプトをダウンロードします。 特定のTracプロジェクトの場所と設定に基づいて設定する必要がある設定セクションがあります。 この場合、次のようになります。
# config TRAC_ENV = '/var/www/trac' GIT_PATH = '/usr/bin/git' TRAC_ADMIN = '/usr/local/bin/trac-admin' #REPO_NAME = '(default)' # if you are using gitolite or sth similar, you can get the repo name from envir REPO_NAME = os.getenv('GL_REPO')
Gitoliteには、適切に登録されたフックを整理するための独自のシステムがあり、制御するすべてのリポジトリで機能します。これはまさに必要なものです。 これを行うには、ユーザーgitとして次のコンテンツを含む〜/ .gitolite / hooks / post-receiveファイルを作成します。
#!/bin/bash python /var/www/trac/hooks/trac-post-receive-hook-0.12-new-commits-from-all-branches.py
最後に、次のコマンドを実行してこのフックをアクティブにします。
sudo su git cd ~/.gitolite/hooks/ chmod 755 post-receive gl-setup
おわりに
私の記事が誰かがこの問題に対処するのに役立つか、少なくとも時間を節約することを願っています。