こんばんは。Phabricatorって聞いたこと有りますか?
Facebookが開発しているコードレビューツールらしいです。
もともとFacebookが内部で使っていたツールがオープンソース化したんだとかなんだとか。
こんかいはこいつをインストールしてみたのでその時のメモです。
はじめに
実はタイトルにも有るとおり、実はインストールを試すのは3回目です。つまり過去に2回ほど失敗して挫折していました。
1回目はそもそもインストールがうまくいかず、2回目はインストールはできたんですがなんか上手く動いてくれなくてしばらく放置してたのですが、ふと思い出して改めてやってみることにしました。
因みに殆どの操作を自動でやってくれるインストールスクリプトも配布されていますので黒い画面恐怖症のひとでも最小限のコマンド入力でインストールできます。さくっとインストールして使いたい場合もどうぞ。
今回は(今回も?)自分自身がもっとコマンドに慣れたいということや、何をしているのかを把握しておきたいというのもあり、手動でインストールしていくことにしました。
この記事は一度セットアップが済んでから記憶を頼りに書いてる部分があるんでもしかしたら自分がハマった部分で治せたところでも飛んじゃってるところがあるかもしれません。
早速インストールします
PhabricatorはPHPとMySQLを利用します。インストールしてない場合はまずそこから初めて下さい。あと、インストール段階でGitも必要ですので入ってなければ入れておいてください。
まずはじめに、インストール先のフォルダを作ります。どこでもいいと思うんですが、今回は
/var/www/html/phabricator
にインストールしました。セキュリティとか考えるとここじゃないほうが安全なのかもしれませんが。
インストール先のフォルダを作る
まずはインストールするためのフォルダを用意します。場所はどこでもいいですが、今回は上にも書いたように、 /var/www/html/phabricator にインストールしました。
1 2 3 |
$ cd /var/www/html $ mkdir phabricator $ chown nagi:nagi phabricator |
サブドメインで運用する場合、このタイミングでDNSの設定とかもやっとくといいかも?
必要なファイルを取得する
今作ったフォルダにはいって、Githubから必要なファイルをいただいてきます。
1 2 3 |
$ git clone git://github.com/facebook/libphutil.git $ git clone git://github.com/facebook/arcanist.git $ git clone git://github.com/facebook/phabricator.git |
クローンできたら、新たに増えている phabricator フォルダにはいって、更にコマンドを入れます
1 2 |
$ cd phabricator $ git submodule update --init |
設定ファイルの作成
続いて、あとから出来た phabricator フォルダの中にある conf フォルダのなかに、 custom フォルダを作成し、 myconfig.conf.php というファイルを作成します。さっきの続きならそのまま conf に移動すればOKなはず。
1 2 3 |
$ cd conf $ mkdir custom $ vim custom/myconfig.conf.php |
このファイルに書く内容ですが、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php return array( // Important! This will put Phabricator into setup mode to help you // configure things. 'phabricator.setup' => true, // This will be the base domain for your install, and must be configured. // Use "https://" if you have SSL. See below for some notes. 'phabricator.base-uri' => 'http://phabricator.example.com', // Connection information for MySQL. 'mysql.host' => 'localhost', 'mysql.user' => '(MySQLに接続するためのユーザー名)', 'mysql.pass' => '(MySQLに接続するためのパスワード)', // Basic email domain configuration. 'metamta.default-address' => 'phabadmin@example.com', 'metamta.domain' => 'example.com', 'metamta.mail-adapter' => 'PhabricatorMailImplementationPHPMailerAdapter', 'phpmailer.mailer' => 'smtp', 'phpmailer.smtp-host' => 'smtp.example.com', 'phpmailer.smtp-port' => '465', 'phpmailer.smtp-user' => 'phabadmin@example.com', 'phpmailer.smtp-password' => 'your email password' // NOTE: Check default.conf.php for detailed explanations of all the // configuration options, including these. ) + phabricator_read_config_file('production'); ?> |
順番にポイントを。
// Connection information for MySQL.
Phabricatorが使用するデータベースに関する情報です。データベースは勝手に作るみたいなんで事前に用意する必要はありません。 インストールすると「phabricator_」から始まる大量のデータベースが増えます。
// Basic email domain configuration.
こちらはメールの設定です。メールの送信方法もいろいろ用意されてるようですので自分の環境にあった方法を選択します。
自分はさくらのVPSに構築してますが、メール関連は別で借りてるロリポップに丸投げしちゃってますので、SMTP送信する設定にしました。
(こんな使い方アリなんかな?って気もしますが、ムームードメインのムームーDNS設定にもメールだけロリポップを使うみたいな設定があるし、セーフ…だと信じたい)
ということでロリポップのコンパネからPhabricator用のメールアドレスを作成しておき、その接続情報を控えておきます。
他の方法でメール設定をする場合は、Configuring Outbound Email (Article) | Phabricatorを参考にしてください。
metamta.default-address
デフォルトでシステムが送信してくるメールアドレスになるようです。「admin@example.com」とか「noreply@example.com」とか?
metamta.domain
見たまんま、ドメインですね。上の例なら「example.com」と指定します。
metamta.mail-adapter
今回は、上にも書いたとおり、SMTP送信を利用しますので、「PhabricatorMailImplementationPHPMailerAdapter」を指定します。
尚、メール機能を利用しない場合は、「PhabricatorMailImplementationTestAdapter」を指定します。
以下はSMTP用の設定値になります。他の方法でも似たようなパラメータがあるので注意。
phpmailer.mailer
繰り返しになりますが、今回はSMTP送信なのでこの欄は「smtp」です。
phpmailer.smtp-host
SMTPホストですね。ロリポップの場合は「smtp.lolipop.jp」です
phpmailer.smtp-port
SMTPサーバーのポート番号です。サーバーのマニュアルとか確認してみてください。
phpmailer.smtp-user
ユーザー名です。@より前の文字列だけの場合もあれば、ドメインまで含めた全文の場合もあります。ロリポップだとメアド全文ですね。
phpmailer.smtp-password
メールアドレス作るときに設定したパスワードです。
設定は以上です。最後にこれを設定として読み込むように ~/bashrc にいれときます。
1 2 |
vi ~/.bashrc export PHABRICATOR_ENV=custom/myconfig |
ここまでできたら、データベースの初期化を行います。
1 2 |
$ cd /var/www/html/phabricator/phabricator/ $ ./bin/storage upgrade |
最後にバーチャルホストの設定をしてサーバーを再起動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ vi /etc/httpd/conf.d/vhost.conf <VirtualHost *:80> DocumentRoot /var/www/html/phabricator/phabricator/webroot/ ServerName phabricator.example.com RewriteEngine on RewriteRule ^/rsrc/(.*) - [L,QSA] RewriteRule ^/favicon.ico - [L,QSA] RewriteRule ^(.*)$ /index.php?__path__=$1 [B,L,QSA] SetEnv PHABRICATOR_ENV custom/myconfig <Directory "/var/www/html/phabricator/phabricator/webroot/"> Order allow,deny Allow from all </Directory> </VirtualHost> |
で、再起動
1 |
$ service httpd restart |
問題なければ、設定したドメイン(例えば今回なら phabricator.example.com)にアクセスすると続きの設定をブラウザでできるようになります。
以前は黒い画面からしか管理者アカウントは作れなかったんですが、いつのまにかブラウザからできるようになったようです。
アカウントを作ると自動的にログインされ利用できるように見えますが、よくみると、上のほうに「You have X unresolved setup issues…」みたいなことが書かれてると思います。
まだ利用できるようになるまでこんだけ設定しないといけないことがあるよーってことですので、そこをクリックましょう。すると残りの設定項目の一覧が出てきますので順番に片付けていきます。
ところでこのなかで1つだけ絶対先に設定したほうが良い物があります。
setup issue のリストでいうならこれ↓
これは認証プロバイダの設定で、ユーザーアカウントの作成とか管理とかログインとか、そのへんのことをやってる部分の設定です。これ設定しないままログアウトするとログインできなくなります。
自分も一度見落としててログアウトしてしまい、ログインできなくなってしまいました。
認証プロバイダが設定されていない状態だと、ログアウト状態ではこのような画面になりログインフォームすら表示されません。
こうなった場合の対処法ですが、まぁそこに書いてあるとおりで、黒い画面から復帰することができます。
1 2 |
$ cd /var/www/html/phabricator/phabricator ./bin/auth recover <管理者のログインID> |
例えば、管理者のIDが phabadmin だったとしたら、
1 |
./bin/auth recover phabadmin |
ですね。
すると、緊急ログイン用のURLが黒い画面上に発行されますので、それをブラウザに入力することでログインできます。
ログインしたら、先ほどの issue list か左のいろんなボタンが並んでるパネルから「ADMINISTRATION」にある「Auth」をクリックします。
No Providers Configured: You have not added authentication providers yet. Use “Add Authentication Provider” to add a provider, which will let users register new Phabricator accounts and log in.
というメッセージの「Add Authentication Provider」がリンクになってるのでそこをクリックします。
対応してる様々な認証方法 ((id/pass方式以外にもTwitterやFacebookをはじめとした様々なアカウントを紐付けることができるようです。参考:Configuring Accounts and Registration (Article) | Phabricator)) が書かれていますので利用したい認証方法を選択します。
今回はソーシャルログインは使わないので「Username/Password」を選択して「Continue」をクリックします。
すると、認証プロバイダの設定画面になります。
限られた人だけで使いたい場合(自由にユーザー登録出来ないようにする場合)は、Allow Registratio のチェックを外すとアカウントの作成リンクが消えます。身内だけとか社内だけで運用したい場合は外しといてもいいかもしれません。
この場合は管理者のアカウントからユーザーを発行することになります。
あとは特に変更はいらないと思うのでそのまま「Add Provider」をクリックします。
これでログイン画面が表示されるようになります。不安な場合は別のブラウザかシークレットモードでアクセスしてみてください。「Login to Phabricator」と出ていれば大丈夫です。
感想
インストール全般について
インストールにはコマンド打つ必要がありますが案外簡単にできました。というか基本殆どサンプルのコピペでいけます。
ただ、認証プロバイダの設定とかはもうちょっと分かりやすく警告して欲しいですね。それか管理者アカウント作成の流れの中でどれか1つはかならず設定しないと先に進めなくするとか。
ログインできたところで「続きは後でやるかー」とログアウトしてしまったり、なんかの弾みにブラウザが落ちたりセッションが飛んだりしたら、かなり焦りますw
全体を見た感じ
かなりこまかくモジュールに分けられているので設定次第では同じPhabricatorでもかなり使い勝手が変わってくるような気がします。
ソーシャルログイン機能はユーザー登録とセットなイメージがあったんですがOAuthのプロバイダでも Allow Registratio のON / OFF が選べたので多分ログイン専用で使うことも出来ると思います。その場合事前に別の方法でログインしておいてアカウント設定から接続する形になるのかな?多分。
あとシステム全体の設定変更ログも残されるのは面白いなと思いました。
コードレビューツールとして
まだきちんとプロジェクトをまわしてないんでなんとも言えませんが、デモとかスクリーンショットを見た感じではかなり使いやすそうには感じました。ただ、各機能をあまり馴染みのない呼び方をしたりするんでこのへんは好みがわかれるかもしれませんね。
とりあえず折角なのでこれでなんかやってみようかと思います。
コメントする