Debian 9: プロジェクト管理ツールのTracをインストールする

Tracのインストール方法を記載します。ダイジェスト認証でユーザを管理します。

1 Tracのインストール

以下のスクリプトはTracをインストールし、testという名前のプロジェクトを作成します。

  • Digest認証経由でTracへログインします。
  • ADMIN_PASSWDはDigest認証で使うadminユーザのパスワードです。
  • USER_NAMEはDigest認証で使う一般ユーザのユーザ名です。
  • USER_PASSWDはDigest認証で使う一般ユーザのパスワードです。
#!/bin/sh

[ -z "${ADMIN_PASSWD}" ] && ADMIN_PASSWD="admin_passwd"
[ -z "${USER_NAME}" ] && USER_NAME="guest"
[ -z "${USER_PASSWD}" ] && USER_PASSWD="guest_passwd"

trac_install()
{
  sudo apt install -y trac libapache2-mod-wsgi apache2

  sudo a2enmod auth_digest

  sudo mkdir /var/lib/trac
  sudo mkdir /var/www/html/trac
  sudo chown www-data:www-data /var/www/html/trac

  sudo apt install -y expect
}

create_digest()
{
  filename=$1
  realm=$2
  username=$3
  password=$4
  htdigest=$5
  options=

  [ ! -f "${filename}" ] && options=-c

  expect -c "
set timeout -1
spawn sudo ${htdigest} ${options} ${filename} ${realm} ${username}
expect \"New password: \"
send \"${password}\n\"
expect \"Re-type new password: \"
send \"${password}\n\"
expect eof
EOF"
}

trac_create_project()
{
  proj=$1

  sudo trac-admin /var/lib/trac/"${proj}" initenv "${proj}" sqlite:db/trac.db
  sudo trac-admin /var/lib/trac/"${proj}" deploy /var/www/html/trac/"${proj}"
  sudo chown -R www-data:www-data /var/lib/trac/"${proj}"
  sudo chown -R www-data:www-data /var/www/html/trac/"${proj}"

  sudo apt install -y expect
  create_digest /var/lib/trac/"${proj}"/.htdigest "${proj}" \
                admin ${ADMIN_PASSWD} htdigest
  sudo trac-admin /var/lib/trac/"${proj}" permission add admin TRAC_ADMIN
  create_digest /var/lib/trac/"${proj}"/.htdigest "${proj}" \
                ${USER_NAME} ${USER_PASSWD} htdigest

  cat <<EOF | sudo tee /etc/apache2/sites-available/${proj}.conf
<VirtualHost _default_:443>
  SSLEngine on
  SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
  SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

  WSGIScriptAlias /trac/${proj} /var/www/html/trac/${proj}/cgi-bin/trac.wsgi
  <Location /trac/${proj}>
    AuthType Digest
    AuthName "${proj}"
    AuthUserFile /var/lib/trac/${proj}/.htdigest
    Require valid-user
  </Location>
</VirtualHost>
EOF

  sudo a2enmod ssl
  sudo a2ensite "${proj}"
  sudo systemctl restart apache2
}

trac_main()
{
  trac_install
  trac_create_project test
}

trac_main

2 Tracへのアクセス

以下のURLにブラウザでアクセスします。ブラウザでこのページの証明書を許可してください。

https://<server>/trac/test

ダイジェスト認証のダイアログが表示されます。ユーザ名をadmin、パスワードをADMIN_PASSWDの値に設定します。

0001_DigestAuth.png

Tracのページが表示されました。adminユーザでログインしています。

0002_Trac.png