カテゴリ: Linux

Tracのサイトのヘッダーロゴを変えようと思ったんですが、何処で変えるのかにちょっと悩ました。 プロジェクトホーム/conf/trac.ini に [header_logo]って項目があって此処を変えればいんですが、問題は何処に画像ファイルを置けばいいか?って所です。 そこでデフォルトのヘッダーロゴが何処にあるかfindしてみたところ、 /usr/share/trac/htdocs下にありました。 ・・・でもコレ、グローバル設定だよねぇ。 そこには入れたくないなぁ・・・と思っていたら、 プロジェクトホーム/htdocsというフォルダが有ることを発見。 此処に画像を置いてtrac.iniを編集
[header_logo]
alt =
height = -1
link = http://192.168.11.6/main/
src = common/trac_banner.png
width = -1
srcを変えれば良いわけですが・・・common? そんあフォルダないぞ。Apacheのtrac.confでも定義してないし、trac.cgiで定義されているんだろうなぁ。 結局、マニュアル読んでいたら、 commonを指定すると、グローバルの/usr/share/trac/htdocsを見に行って、 プロジェクトホーム/htdocsを見に行くときは、site/画像ファイル名と書いてあげれば良いことを発見。
[header_logo]
alt =
height = -1
link = http://192.168.11.6/main/
src = site/hoge.png
width = -1
と書いておいた。なるほどぉ。 cssとかも同様に行けるのかな?
このエントリーをはてなブックマークに追加

Tracをインストールしたものの、ロードマップが編集できなかったり、あれこれ制限があって、 なんでだろう?とか思ってたら、permissionの設定を忘れていたらしい。 結構こまかく設定できるようで、
リポジトリブラウザ

BROWSER_VIEW  リポジトリブラウザ でディレクトリの一覧表示を行う
LOG_VIEW	  リポジトリブラウザ でファイルとディレクトリのリビジョンログを表示する
FILE_VIEW	  リポジトリブラウザ でファイルを表示する
CHANGESET_VIEW	リポジトリへのチェックイン を表示する

チケットシステム

TICKET_VIEW	 登録済みの チケット を表示し、 チケットクエリ を実行する
TICKET_CREATE   新規 チケット を登録する
TICKET_APPEND  チケット にコメントや添付ファイルを追加する
TICKET_CHGPROP   チケットの概要フィールドを除いた チケット 属性(優先度, 担当者, キーワードなど) を変更する
TICKET_MODIFY  TICKET_APPEND と TICKET_CHGPROP の両方に加え、 チケット の解決を可能にする
TICKET_ADMIN	 全ての TICKET_* 権限に加え、チケットへの添付ファイルの削除や
                           チケットの概要フィールドの変更を可能にする

ロードマップ

MILESTONE_VIEW	 マイルストーンを表示する
MILESTONE_CREATE	 新しいマイルストーンを作成する
MILESTONE_MODIFY	 既に存在するマイルストーンを編集する
MILESTONE_DELETE	 マイルストーンを削除する
MILESTONE_ADMIN	 全ての MILESTONE_* 権限を持つ
ROADMAP_VIEW	 ロードマップ を表示する

レポート

REPORT_VIEW	         レポート を表示する
REPORT_SQL_VIEW	レポート の SQL を表示する
REPORT_CREATE	新しい レポート を作成する
REPORT_MODIFY	既に存在する レポート を編集する
REPORT_DELETE	レポート を削除する
REPORT_ADMIN	全ての REPORT_* 権限を持つ

Wiki システム

WIKI_VIEW	 既に存在する Wiki ページを表示する
WIKI_CREATE	 新しい Wiki ページを作成する
WIKI_MODIFY	Wiki ページを編集する
WIKI_DELETE	Wiki ページと添付ファイルを削除する
WIKI_ADMIN	 全ての WIKI_* 権限に加え、読み込み専用 ページを管理する

その他

TIMELINE_VIEW	タイムライン を表示する
SEARCH_VIEW	検索 の表示と実行
CONFIG_VIEW	Trac について のページに追加して、現在のコンフィグやインストールされている
                          プラグインの表示を可能にする
なんてあります。 とりあえず全権限はTRAC_ADMINで付与できるようなので、
$ trac-admin /home/trac/project permission [ユーザー名] TRAC_ADMIN
とかしておいた。
このエントリーをはてなブックマークに追加

Tracはスウェーデンにある EdgeWall Software が開発した プロジェクト管理ツールです。 Python で作成された Web アプリケーションであり、ソフトウェア開発のプロジェクト管理に特化しています。 最近ではOpenSourceプロジェクトをTracで管理する事が非常に多いです。 バグ情報や、変更依頼をチケットと呼ぶもので管理して、タスクやマイルストーンとして管理出来ます。 ちょっと使ってみただけですが、かなり良い感じです。また、SVNリポジトリのブラウザ機能まで付いています。

インストール

yumを使ってインストールします。 yumでインストールすると日本語化が一部されません。 Trac日本語化の準備で紹介している日本語版を最初から入れましょう。
$ yum -y install trac

Trac日本語化の準備

先に日本語化の準備をしておきます。 日本語化パッチはインタアクト株式会社さんから出ていますので、それを使わせて頂きました。 解凍したフォルダ内の、templatesと、wiki-defaultフォルダを/usr/share/trac/に移動するだけです。 最近のバージョンは日本語化パッチはなく、trac本体を含めているようです。 trac-0.10.3-ja-1というファイルをダウンロードして、付属のINSTALLに書いてある通り、インストールします。
$ python ./setup.py install

tracサイトの作成

$ mkdir /home/trac
$ trac-admin test initenv
 Project Name => [プロジェクト名]
 Path to repository => [ローカルリポジトリパス]
他にも聞かれますがデフォルトにしました。 DBはデフォルトでSQLiteを使うようですがPostgreを使う事もできるようです。今回はデフォルトにしてあります。 Apatchから使いたい場合はchown忘れずに。 seLinux使っているかたは、chconを。
$ chown -R apache:apache /home/trac
$ chcon -R system_u:object_r:httpd_sys_content_t /home/trac
tracdで動作確認。 $ tracd --port 8080 /home/trac/test http://localhost:8080/にアクセスしてtracの画面が出れば成功です。 ここで、[パス] does not appear to be a Subversion repositoryとか怒られた方はSVNリポジトリの設定が間違っていると考えられます。リポジトリはローカルのパスを設定します。 "/home/trac/test/conf/trac.ini"が設定ファイルですので、ここを参考に設定を見直してください。他にも色々設定できるので、いじってみるとイイかも。

Apacheでtrac公開

mod_pythonが入ってい無ければインストール $ yum -y install mod_python /etc/httpd/conf.d/trac.confの編集 最終行に以下を追加
$ vim /etc/httpd/conf.d/trac.conf
ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi
<Location "/main">
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnv /home/trac/BizTrip
  PythonOption TracLocale "ja_JP.utf8"
  PythonOption TracUriRoot /main
</Location>
<Location "/main/login">
  AuthType Basic
  AuthName "Trac Autentication"
  AuthUserFile /home/trac/.htpasswd
  Require valid-user
</Location>
<Location "/main/svn_repos">
  DAV svn
  SVNPath "/home/svn/test"
  AuthType Basic
  AuthName "svn Autentication"
  AuthUserFile /home/svn/test/.htpasswd
  Require valid-user
</Location>
この例では/home/svnにリポジトリが有るものと想定しています。 Apacheを再起動
$ /sbin/servise httpd restart
Apache経由でアクセスしてみましょう。 上の設定ならhttp://localhost/mainですね。
このエントリーをはてなブックマークに追加

Subversion(以下svn)はバージョン管理ツールです。 CVSとかVSSなどと同様、複数人で開発を行う際に、バージョン管理やロック、マージ、チェックアウト機能を持つ必須ツールです。 WebDAVを使って運用するのが定番なので、WebDAVの設定も同時に行います。

svn導入

初めはとりあえず targeted ポリシーでの SELinux の運用を考えます。 SELinuxといっても、selinux-policy-targeted-1.17.30-2.34 からは apache に関する制限もゆるくなったため、 標準の状態でもポリシーの変更なしに利用できるになっているようです。 まずは selinux-policy-targeted を最新の状態に更新します。
$ yum -y update selinux-policy-targeted
WebDAV/Subversion 関連のパッケージを一括インストール。
$ yum -y install mod_dav_svn

リポジトリ作成

次に管理DBを作成してゆきます。 Apachから見える用にしたい+tracを使いたいので、chownとSELinux用にchconを忘れずに行います。
$ svnadmin create --fs-type=fsfs /home/svnroot
$ htpasswd -cm /home/svnroot/.htpasswd test
パスワードの設定を求められる。
$ chown -R apache:apache /home/svnroot
$ chcon -R system_u:object_r:httpd_sys_content_t /home/svnroot
最後に、WebDAV の設定。設定ファイルは、/etc/httpd/conf.d/subversion.conf ですので、 コメントを消して設定を有効にします。
$ vim /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
#
# Example configuration to enable HTTP access for a Subversion
# repository, "/home/svnroot".  This repository must be readable
# and writable by the 'apache' user.
#
<Location /svn/repos>
   DAV svn
   SVNPath /home/svnroot
   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      # Require SSL connection for password protection.
      # SSLRequireSSL
      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /home/svnroot/.htpasswd
      Require valid-user
   </LimitExcept>
</Location>
これで一通りの設定は完了です。httpd を再起動しましょう。
$ service httpd restart
http://localhost/svn/repos/につないで、svnの画面が出れば成功です。
このエントリーをはてなブックマークに追加

自宅サーバーを公開してみました。 とはいってもグローバルIPは1アドレス年間1万以上するので、ちょっと敷居が高い。 そこでダイナミックDNSを遣って公開することにしました。

ダイナミックDNSとは

一般家庭でネットに接続している方はどこかのプロバイダと契約していると思うのですが、ネットにつないでいる以上、プロバイダからグローバルIPが割り当てられています。原理的には此のIPアドレスを打てば、グローバルIPがなくても、外から自宅のサーバーにつなぐ事が可能です。 問題は、時折此のIPアドレスが変わってしまう事です。 此のIPを固定に出来れば問題はないのですが、別の方法も有ります。ドメイン(hoge.example.comのような文字でIPを表す)をDNS(ドメインとIPアドレスを結びつけるサービス)に登録して、IPアドレスが変わる度に更新してあげれば良いわけです。 それがダイナミックDNSです。 無料でサービスを公開しているところもありますので、こちらのサイトを参考にしてみてください。

ダイナミックDNSに登録

今回はDynDNSというサイトを使うことにしました。 リンクをたどるとDynDNSのホームページが開くと思いますが、サイト右上のCreate Accountをクリックして、必要な項目を入力してアカウントを作成してください。といっても名前とメールアドレスとパスワードと希望するドメイン位なので、非常に簡単です。 Create Accountボタンを押したら、登録確認メールが来るまで待ちましょう。 登録確認メールが来たら、一番上のリンクをクリックしてアカウントをアクティブにします。 そのあと、トップページから先ほど登録したアカウントとパスワードでログインしてください。 ログインしたら左側のメニューにあるMyServiceをクリックして、Host Level Servicesの横にあるAdd Host Servicesをクリック。 追加画面でDynamicDNSを登録してドメインを作成してください。 以上でDDNSの設定は終わりです。自分が使っているグローバルIPは自動的に取得してくれます。

DiCEでDDNSの自動更新

DDNSは登録したものの、自宅サーバーのグローバルIPが変わった場合に通知するソフトが必要です。 DiCEや、ddclientが有名ですが、今回はDiCEをFedora Coreで使ってみます。 こちらから最新版をダウンロードしてLinux版をダウンロードします。適当なフォルダで解答してください。 DiCEを起動します。
# ./DiCE/diced
対話モードに入るのでコマンドを入力して行きます。 わからなくなったらとりあえず"?"を入力しましょう。
:?
*** 起動オプション ***

diced [-s|-d|-h|-e] [-b] [-l]

 -s           起動と同時に開始します
 -d           起動と同時にバックグラウンドで開始します
 -h           コマンドオプションを表示します
 -b           イベント実行時にビープ音を鳴らします
 -l           ログを作成します
 -e  指定のイベントを実行して終了します


*** コマンド一覧 ***

exit             DiCEを終了します
start            DiCEを開始します
startd           DiCEをバックグラウンドで開始します
setup            DiCEの環境設定を行います
list             登録済のイベント一覧を表示します
add              イベントを追加します
ed[it] <番号>    イベントを編集します
del <番号>       イベントを削除します
en[able] <番号>  イベントを有効にします
dis[able] <番号> イベントを無効にします
ev[ent] <番号>   イベントの情報を表示します
ex[ec] <番号>    イベントを今すぐ実行します
logcr            ログをクリアします

:add
新しくイベントを追加します

DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
対応しているサービスを表示してみる
>?
            ZoneEdit               unicc             MyIP.US               DtDNS
             BIGLOBE                dnip              Now.nu         StaticCling
              theBBS                ysdn          Netservers                dyns
              Dynamx             GetmyIP          onamae.com               IPDYN
                  yi           my-domain            MyDNS.JP              JPN.ch
              instat         VALUEDOMAIN            cheapnet              Dyn.ee
              DNS2Go              dyndns              @nifty            SelfHOsT
             ddns.ca           ZENNO.COM                 p2p             miniDNS
            MyServer                todd               Earth              ddo.jp
            livedoor                 dhs            ieServer           dynDNS.it
 
=================================================
新しくイベントを追加します

DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
>dyndns
-------------------------------------------------
<< dyndns.org >>
URL: http://www.dyndns.org/
*** 情報 ***
dyndns.orgのオプションについて
「オフライン」オプションは、
dyndns.orgドナー登録者のみ利用できます。
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
ドメイン一覧を表示
>?
          dyndns.org          homeip.net              ath.cx            itacs.to
        dnsalias.net        dnsalias.org         dyndns.info           dyndns.tv
           dyndns.ws         homedns.org         homeftp.net         homeftp.org
       homelinux.com       homelinux.net       homelinux.org        homeunix.com
        homeunix.net        homeunix.org       kicks-ass.net       kicks-ass.org
        serveftp.net        serveftp.org
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
Dynamic Network Services(DynDNS.org)で設定したドメインを入力
>homelinux.com
=================================================
ホスト名を入力してください
(P)戻る
ホスト名を入力
>hoge
(このホスト名とドメイン名をくっつけたものがDNSです)
=================================================
ログインユーザ名を入力してください
(P)戻る
(DynDNSのログインするユーザ名を入力します)
>xxxxxxxxxx
=================================================
ログインパスワードを入力してください
(P)戻る
(DynDNSのログインパスワードを入力)
>xxxxxxxxxx
=================================================
登録するIPアドレスを入力してください
空白にすると現在のIPアドレスを自動検出します
(P)戻る
IPアドレスを自動検出させる為何も入力しない
>
=================================================
このイベントに題名を付けてください
(P)戻る
何でもかまいません。分かりやすいイベント名を入力します
>DynDNS_Update
=================================================
このイベントを実行するスケジュールを設定します
-------------------------------------------------
実行する頻度を指定してください (番号入力)
(0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回
(4)その他の周期 (5)IPアドレス変化時 (6)起動時
(P)戻る
> 5
-------------------------------------------------
IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると
アカウントを削除されてしまうことがあります
IPアドレスの変化が無い時に実行する間隔を指定してください
(0)7日毎   (1)14日毎  (2)21日毎  (3)28日毎
(4)35日毎  (5)56日毎  (6)84日毎
(P)戻る
> 0
=================================================
詳細オプションを設定します
-------------------------------------------------
[ ワイルドカード ]
(0)OFF (1)ON
番号>1
ワイルドカード(www)を有効にすることにより、「www.linux.homeip.net」になります
-------------------------------------------------
[ メールエクスチェンジャ ]
入力>
-------------------------------------------------
[ バックアップMX ]
(0)NO (1)YES
番号>0
-------------------------------------------------
[ オフライン ]
(0)NO (1)YES
(0)NOを選択
番号>0
-------------------------------------------------
[ システム ]
(0)dyndns (1)statdns (2)custom
番号>0
=================================================
このイベントを有効にしますか? (Y/N)
(イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
有効にする
>y
=================================================
イベントを保存しますか? (Y/N)
保存する
>y
イベント"DynDNS_Update"を保存しました
=================================================
:

イベントリストを表示
:list
(No.)   (イベント名)                   (スケジュール)             (次回予定)
  0 *  DynDNS_Update               IPアドレス変化時 (7日毎)    02/28 21:14
イベント詳細を表示
:ev 0
-------------------------------------------------
[イベント名        ] DynDNS_Update
[状態              ] 有効
[DNSサービス       ] dyndns
[更新ホスト        ] hoge.homelinux.com
[ユーザ名          ] xxxxxxxxxx
[IPアドレス        ]
[スケジュール      ] IPアドレス変化時 (7日毎)

[次回更新日時      ] 2005年2月21日、21:14:06
[最終実行日時      ] 1899年12月30日、0:00:00
[最終更新IPアドレス] *
[最終更新結果      ] コマンドが実行されました
(ID:000000)
-------------------------------------------------

:exit
さて、自動的にIP更新にしてもIPがとれない方もいるかもしれません。 私がそうでした。 そこで、設定をもう一つします。
# ./DiCE/diced
:setup
IPアドレスの検出方法を指定してください
(0)自動検出
(1)ローカルのネットワークアダプタから検出
(2)外部のスクリプトから検出
>2
------------------------------------------------
スクリプトのURLを入力してください
(www.ugtop.comの確認くんを使わせていただきます。)
>http://www.ugtop.com/spill.shtml
------------------------------------------------
プライベートIPアドレスも検出対象ですか?(Y/N)
>N
------------------------------------------------
IPアドレスの検出をテストしますか?(Y/N)
>Y
検出IPアドレスxx.xxx.xx.xxx
------------------------------------------------ 

デーモンの起動

デーモンの起動と自動起動を設定します。
# ./DiCE/diced -d
# vi /etc/rc.d/rc.local
最終行に以下を追加
[DiCEをおいたディレクトリ]/DiCE/diced -d -l
以上で終了です〜。 あとはモデムルーターにスタティックIPマスカレードをしていしてあげればOKです。 ルーターによって設定が違うので、詳しくはお使いのルーターのマニュアルを読んでください。
このエントリーをはてなブックマークに追加

↑このページのトップヘ