MantisBT

From ArchWiki
Jump to navigation Jump to search

MantisBT (Mantis Bug Tracker) は PHP で書かれたバグトラッカーです。MantisBT が備えている機能一覧はウェブサイトを見てください。

インストール

mantisbtAUR パッケージをインストールしてください。

ウェブサーバーやアプリケーションサーバー (UWSGI など) を選択してアプリケーションを使えるようにします。

設定

mantisbt には正規の 管理ガイド が存在し、ガイドに従ってセットアップすることができます。

警告: 現在パッケージにはバグが存在し FS#49141、新規セットアップ時に管理者アカウントを使って初期サインアップをすることができません。バグレポートに書かれているフィックスを適用することで問題は解決します。

全ての設定は /etc/webapps/mantisbt/config_inc.php に記述します。

  • 互換性のある DBMS をセットアップして 'Database Configuration' セクションを使って mantisbt と DBMS を接続してください。
  • サインアップ時の CAPTCHA を無効化しない場合 'Anonymous Access / Signup' セクションに特別な注意が必要です (#PHP 拡張#TTF フォントを参照)。
  • SMTP を使いたい場合は 'Email Configuration' セクションでセットアップしてください。mantisbt はデフォルトで phpmailer を使用しますが、グレイリスティングを使用するメールサーバーにメールを遅れません。

どんな場合でも、mantisbt を正しく動作させるには満たさなくてはいけない要件が存在します:

PHP 拡張

  • mysqli (MySQL/MariaDB を使用する場合)
  • gd (ユーザーのサインアップ時に CAPTCHA を使用する場合)

TTF フォント

  • CAPTCHA の作成に使用する TrueType フォントをインストールしてください。
  • 使用したいフォントのパスと名前を設定してください:
/etc/webapps/mantisbt/config_inc.php
# trailing slash is important!
$g_system_font_folder = '/usr/share/fonts/TTF/';

# here DroidSans.ttf from the package ttf-droid is used for illustration
$g_font_per_captcha = 'DroidSans.ttf';
ノート: Make sure to also include the TTF path (e.g. /usr/share/fonts/TTF) in the open_basedir of your PHP instance!

ウェブサーバー

nginx + uwsgi

以下はバグトラッカーでサブドメインを使用する設定例です。以下で記述しているファイルは /etc/nginx/nginx.conf の中で読み込む必要があります。mantisbt でサブフォルダを使う構成の場合、多少の修正が必要です。

/etc/nginx/nginx.conf
server {
  listen 80;
  listen [::]:80;
  server_name bugs.mydomain.org www.mydomain.org;
  return 301 https://bugs.mydomain.org$request_uri;
}
server {
  listen 443 ssl;
  listen [::]:443 ssl;
  server_name www.bugs.mydomain.org;
  return 301 https://bugs.mydomain.org$request_uri;
}
server {
  listen 443 ssl;
  listen [::]:443 ssl;
  server_name bugs.mydomain.org;
  include tls.conf;
  root /usr/share/webapps/mantisbt;
  access_log /var/log/nginx/access.bugs.mydomain.log;
  error_log /var/log/nginx/error.bugs.mydomain.log;
  include letsencrypt-challenge.conf;

  location ~ ^/(admin|core|doc|lang) {
    deny all;
  }

  location / {
    index index.php;
    try_files $uri $uri/ @mantisbt;
  }

  location @mantisbt {
    include uwsgi_params;
    uwsgi_modifier1 14;
    uwsgi_pass unix:/run/uwsgi/mantisbt.sock;
  }

  location ~  \.php?$ {
    include uwsgi_params;
    uwsgi_modifier1 14;
    uwsgi_pass unix:/run/uwsgi/mantisbt.sock;
  }

  # Deny serving files beginning with a dot, but allow letsencrypt acme-challenge
  location ~ /\.(?!well-known/acme-challenge) {
    access_log off;
    log_not_found off;
    deny all;
  }
}

UWSGI を使うことでリソースの消費量が少ないセットアップを構築できます。

/etc/uwsgi/mantisbt.ini
[uwsgi]
procname-master = mantisbt
plugins = php
master = true
socket = /run/uwsgi/%n.sock
uid = http
gid = http
processes = 10
cheaper = 2
cheaper-step = 1
idle = 600
die-on-idle = true

php-allowed-ext = .php
php-docroot = /usr/share/webapps/mantisbt
php-index = index.php
php-set = date.timezone=Europe/Berlin
php-set = open_basedir=/tmp/:/usr/share/fonts/TTF:/usr/share/webapps/mantisbt:/usr/share/webapps/mantisbt/core:/etc/webapps/mantisbt
php-set = session.save_path=/tmp
php-set = session.gc_maxlifetime  21600
php-set = session.gc_divisor      500
php-set = session.gc_probability  1
php-set = post_max_size=64M
php-set = upload_max_filesize=64M
php-set = always_populate_raw_post_data=-1
php-set = extension=curl
php-set = extension=gd
php-set = extension=imagick
php-set = extension=intl
php-set = extension=mysqli

上記のファイルを修正した場合、systemd を使って nginx を再起動して mantisbtuwsgi ソケットを起動・有効化してください。

データベース

アプリケーションが利用できるようになったら、/admin/install.php からデータベースをセットアップしてください。ページの指示に従えば mantisbt はテーブルを作成します。

ノート: #ウェブサーバーの設定を一時的に編集してページを表示できるようにする必要があります。#nginx + uwsgi を使用する例の場合:
/etc/nginx/nginx.conf
location ~ ^/(core|doc|lang) {
  deny all;
}

管理者

mantisbt によって最初に作成されるアカウントは administrator でパスワードは root です。

警告: ログインしたらすぐに administrator ユーザーのパスワードを変更して設定を行ってください。
ノート: #ウェブサーバーの設定を再度変更して、admin 設定が使えなくなるようにしてください。#nginx + uwsgi を使用する例を見てください。

使用方法

これで mantisbt のセットアップは全て終了です。administrator ユーザーは新しいプロジェクトを作成してユーザーに権限を与えることができます。

参照