Phabricator(コードreview)サーバインストールの導入
14323 ワード
PhabricatorはFacebookのオープンソース可視化のコード審査ツールであり、審査コード、コード(git/svn)管理、文法検査、ユニットテスト、wikiなどの機能を含む一連のオープンソースのWebアプリケーションを統合し、bug追跡も可能であり、jiraを直接コードreviewに関連付け、2つのコード審査ワークフロー:「review」(提出前審査)と「audit」をサポートする.(提出後審査).
一、据付
1、スクリプトによるインストール
CentOSインストールスクリプトを開く:https://secure.phabricator.co...入/opt,新規ファイルinstall_rhel-derivs.sh、コピースクリプトの内容保存、ファイル権限の変更、実行:
インストール内容はapache,mysql,php;その後gitはphabricator,arcanist,libphutilをダウンロードし、linuxがhttpsモードをサポートしていない場合は、インストールスクリプトのhttp://git://モードを変更できます.
macにインストールすると
スクリプトのインストールはできません.手動:nginx+php+php+php-fpm+mysql、macはphpとphp-fpmを持っていますが、phpプラグインphp-pcntlをインストールする必要があります.
nginx構成:
2、phabricator関連ファイルをapacheのパブリケーションディレクトリの下に移動する:
プロジェクトディレクトリを新規作成します.たとえば、code-review:
3、ファイアウォールとSELinuxを閉じる
a.)ファイアウォールを閉じる
b.)ファイアウォールを修正する(ファイアウォールが必要で、閉じることができない)
c.)SELinuxを閉じる
4、apacheの構成を変更する:
システム変数(非ユーザ変数)のPath変数に、以下の2つのパスを追加します(win 7および以下は中間用;分離).
apcheアクセスを開始しても情報にアクセスできない場合は、リスニングポートが間違っていることを示し、Listenフィールドを検索し、対応するポートを変更します.apcheを起動して内部エラーが発生した場合、RewriteEngineに問題があることを示します.コマンドを起動すると、サーバNameに関するエラーが表示され、仮想マシン上の行のサーバName localhostコメントが削除されます.apacheログパス:/var/log/http
5、データベースの構成:
a.)データベースrootパスワードを設定する:
b.)データベースのアップグレード:
デフォルトでインストールされているデータベース5.1のissuesプロンプトは5.6+:
c.)データベースの更新:
d.)データベースのデフォルト符号化を変更する:
ps:データベースがデータを同期または転送する場合は、navicatの高度な文字セットを削除することを覚えておいてください.
6、phabricatorの構成を変更する:
phabricatorの主な構成はプロジェクトディレクトリの下にあります./conf/local/local.jsonでは、データベースアクセス、自動メールなどを構成できます.
またはphabricatorディレクトリの下に./bin/config set mysql.pass 00000で1つずつ設定します.
7、ウェブサイトにアクセスし、メールを配置する
上記のプロファイルでメールボックス構成を設定した後、Webページで左側のメニューconfig->mailに入り、デフォルトのメールボックスmetamta.default-address値を設定し、metamta.mail-adapter値を:P h a b r i c a t o r MailImplementationPHPMailerAdapterに設定してメールサービスを再起動します.
メールを送信してみて、メールが正常に送信されているかどうかを確認します.
8、ログイン許可方式の設定
左側のメニュー-auth、ユーザー名/パスワードの登録方式を設定して、もし設定していないならば、退出した後に登録することができなくて、実行します:
ヒントに従ってウェブサイトを開き、ログイン後authメニューに入り、ログイン許可方式を追加します.
9、中国語のサポートを追加
phabricator/src/extensions/ディレクトリの下、rm-fr READMEに入り、次のgitコマンドを実行し、クライアント設定で言語中国語を選択すればよい.
9、issueを解決する
主な関連書類:
修正が終わったら、対応するhttpdとmysqldサービスを再起動してください.
二、倉庫管理
1、既存のリモート倉庫を観察する
Phabricatorにgitウェアハウスを管理させたくない場合は、既存のgitプロジェクトをオブザーバーモードでインポートし、ユーザーがコミットしている場合に監査ポリシーがトリガーされ、コードreviewが実装されます.具体的な作成手順は次のとおりです.
1)観察倉庫の作成
a.新しい倉庫(Create a new repository)を作成する.b.左側のメニューURURをクリックし、右側にAdd NewIsURIを追加し、URI(既存のリモート倉庫)を記入し、I/OモードをObserveに設定する.c.必要に応じて、認証(秘密鍵など)を構成する.d.Basics項目で倉庫を有効にし、直ちに更新し、インポートを開始する.
2.)Heraldルールの作成
より多くのアプリケーションでは、左側の一般的なメニューにHeraldを追加し、Heraldに入り、commit Hook以外の「コミット」タイプのルールを革新します.たとえば、mergeコミットを傍受するルールを作成します.
2、ssh方式管理Git倉庫
1)アカウント構成
2.)Phabricator構成の変更
phabricatorディレクトリに入ります.
3)gitアカウントの実行権限の構成
visudoコマンドを実行するか、vi/etc/sudoersを実行するか、soduがないか、yum install sudoインストールを実行する必要があります.Defaults requirettyフィールドを検索します.コメントがない場合は、コメントを削除し、ファイルの末尾に次のコードを追加します.
4)sshポートの構成
すべて設定されている場合は、ポートがリモートで占有されているか、phabricator sshサービスが開始されているかどうかを考慮します.
5)スクリプトおよびsshサービスの追加
phabricatorの下resources/sshd/ディレクトリa)に入り、phabricator sshスクリプトを追加します.
b.)phabricator sshプロファイルを追加する:
c.)phabricator sshサービスを起動する:まずデバッグモードで起動し、エラーとポートバインドが成功したかどうかを確認する.
6.)ssh公開鍵の追加
a.)ssh鍵を生成する:
b.)~/.ssh/config 1本追加:
c.)phabricator監査サイトにログインし、個人管理ページ、SSH Public Keysメニューにphabricator.pub公開鍵を追加する
3、http方式管理Git倉庫
1)apache権限の変更
visudoを実行し、sudoersでapache(www-userユーザー)に次の権限を追加します.
2.)phabricator構成
更にウェブサイトのconfigメニューに入ります->all settingsの中で、diffusion.allow-http-authを探し当てて、つけて、値を設定します:Allow HTTP Basic Auth
3.)git httpアクセスパスワードの設定
SettingsでVCS Passwordメニューに設定
4)ローカルにログイン情報を保存する
修正~/Netrcファイル、追加:
5)デバッグ
HTTP/1.0 500 Internal Server Errorがある場合、git-http-backendパスが間違っていることを示します(倉庫->statusで見ることができます)、environment.append-paths構成を追加する必要があります.上記の手順2を参照してください.
3、倉庫管理
1.倉庫のデフォルトストレージパスを変更するには:
2.)倉庫を削除します.
公式サイトドキュメント:https://secure.phabricator.co...
三、関連問題
1、mysql rootパスワードを消去する
ここで注意しなければならないのは、各コマンドがセミコロン";"で終わる必要があり、以上の操作を実行するとrootのパスワードが空になります.
ERROR 1044(42000):Access denied for user''@'localhost'to database'mysql'エラー:原因:mysqlデータベースのuserテーブルに、ユーザー名が空のアカウントである匿名アカウントが存在し、ログイン時にrootを使用していたが、実際には匿名ログインしていた.処理案:
2、mysqlリモートrootアカウントにログインできない
まず、以下を確認します.
権限:
3、mysqlデフォルトデータ保存の修正
4、mysqlデータベースのバックアップ/リカバリ
5、sshリモートでrootアカウントにログインできない
ssh構成の変更:
6、git倉庫PHPを点けて間違いを報告する
説明SELinux構成が開始されましたので、上記の電源投入禁止を参照してください.
7、killプロセス
公式参考:https://secure.phabricator.co...
一、据付
1、スクリプトによるインストール
CentOSインストールスクリプトを開く:https://secure.phabricator.co...入/opt,新規ファイルinstall_rhel-derivs.sh、コピースクリプトの内容保存、ファイル権限の変更、実行:
$ chmod 777 install_rhel-derivs.sh
$ ./install_rhel-derivs.sh
インストール内容はapache,mysql,php;その後gitはphabricator,arcanist,libphutilをダウンロードし、linuxがhttpsモードをサポートしていない場合は、インストールスクリプトのhttp://git://モードを変更できます.
macにインストールすると
スクリプトのインストールはできません.手動:nginx+php+php+php-fpm+mysql、macはphpとphp-fpmを持っていますが、phpプラグインphp-pcntlをインストールする必要があります.
nginx構成:
server {
listen 8000;
server_name 127.0.0.1;
root /Users/xxx/phabricator/phabricator/webroot;
try_files $uri $uri/ /index.php;
location / {
index index.php;
if ( !-f $request_filename ){
rewrite ^/(.*)$ /index.php?__path__=/$1 last;
break;
}
}
location /index.php {
fastcgi_pass localhost:9000; # Fast CGI, :$ php-fpm
fastcgi_index index.php;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
}
}
2、phabricator関連ファイルをapacheのパブリケーションディレクトリの下に移動する:
プロジェクトディレクトリを新規作成します.たとえば、code-review:
$ mv /opt/arcanist /var/www/html/code-review
$ mv /opt/libphutil /var/www/html/code-review
$ mv /opt/phabricator /var/www/html/code-review
3、ファイアウォールとSELinuxを閉じる
a.)ファイアウォールを閉じる
$ service iptables status #
$ service iptables stop #
$ chkconfig iptables off # ,
b.)ファイアウォールを修正する(ファイアウォールが必要で、閉じることができない)
$ service iptables status #
$ vi /etc/sysconfig/iptables
web , :
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
$ service iptables restart #
c.)SELinuxを閉じる
$ getenforce # SELinux sestatus
$ setenforce 0 # SElinux
$ vi /etc/selinux/config # SELINUX=disabled,
4、apacheの構成を変更する:
システム変数(非ユーザ変数)のPath変数に、以下の2つのパスを追加します(win 7および以下は中間用;分離).
$ vi /etc/httpd/conf/httpd.conf
: /etc/httpd/conf.d/vhost.conf # httpd.conf Include
:
ServerName localhost
Listen 8800
ServerName localhost
DocumentRoot "/var/www/html/code-review/phabricator/webroot"
DirectoryIndex index.php index.html index.html.var
RewriteEngine on
RewriteRule ^/rsrc/(.*) - [L,QSA]
RewriteRule ^/favicon.ico - [L,QSA]
RewriteRule ^(.*)$ /index.php?__path__=$1 [B,L,QSA]
$ service httpd restart # apache
$ chkconfig httpd on #
apcheアクセスを開始しても情報にアクセスできない場合は、リスニングポートが間違っていることを示し、Listenフィールドを検索し、対応するポートを変更します.apcheを起動して内部エラーが発生した場合、RewriteEngineに問題があることを示します.コマンドを起動すると、サーバNameに関するエラーが表示され、仮想マシン上の行のサーバName localhostコメントが削除されます.apacheログパス:/var/log/http
5、データベースの構成:
$ service mysqld restart # mysql
$ chkconfig mysqld on #
a.)データベースrootパスワードを設定する:
$ mysql -u root # , , 、
Mysql> use mysql;
Mysql> update user set password=password(" ") where user="root"; # password=" "
Mysql> flush privileges;
Mysql> quit;
b.)データベースのアップグレード:
デフォルトでインストールされているデータベース5.1のissuesプロンプトは5.6+:
$ more /etc/redhat-release # linux
$ rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm # http://repo.mysql.com/
$ yum -y upgrade mysql
c.)データベースの更新:
$ ./bin/storage upgrade
# :
$ ./bin/storage destory
d.)データベースのデフォルト符号化を変更する:
$ service mysqld stop
$ vi /etc/my.cnf # mysql
# :
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
$ service mysqld restart #
ps:データベースがデータを同期または転送する場合は、navicatの高度な文字セットを削除することを覚えておいてください.
6、phabricatorの構成を変更する:
phabricatorの主な構成はプロジェクトディレクトリの下にあります./conf/local/local.jsonでは、データベースアクセス、自動メールなどを構成できます.
またはphabricatorディレクトリの下に./bin/config set mysql.pass 00000で1つずつ設定します.
$ vi ./conf/local/local.json
# ( ):
{
"phabricator.base-uri": "http:\/\/192.168.4.168:8800\/",
"mysql.pass": "123456",
"mysql.user": "root",
"mysql.host": "localhost",
"mysql.port": "3306",
"differential.require-test-plan-field": false,
"cluster.mailers": [
{
"key": "my-mailer",
"type": "smtp",
"options": {
"host": "smtp.exmail.qq.com",
"port": 465,
"user": "[email protected]",
"password": "123456",
"protocol": "ssl"
}
}
],
"metamta.default-address": "[email protected]"
}
7、ウェブサイトにアクセスし、メールを配置する
上記のプロファイルでメールボックス構成を設定した後、Webページで左側のメニューconfig->mailに入り、デフォルトのメールボックスmetamta.default-address値を設定し、metamta.mail-adapter値を:P h a b r i c a t o r MailImplementationPHPMailerAdapterに設定してメールサービスを再起動します.
$ ./bin/phd restart
メールを送信してみて、メールが正常に送信されているかどうかを確認します.
$ ./bin/mail list-outbound
8、ログイン許可方式の設定
左側のメニュー-auth、ユーザー名/パスワードの登録方式を設定して、もし設定していないならば、退出した後に登録することができなくて、実行します:
$ ./bin/auth recover
ヒントに従ってウェブサイトを開き、ログイン後authメニューに入り、ログイン許可方式を追加します.
9、中国語のサポートを追加
phabricator/src/extensions/ディレクトリの下、rm-fr READMEに入り、次のgitコマンドを実行し、クライアント設定で言語中国語を選択すればよい.
$ git clone https://github.com/wanthings/phabricator-zh_CN.git ./
9、issueを解決する
主な関連書類:
/etc/php.d/apc.ini #apc
/etc/php.ini # php
/etc/my.cnf #mysql
修正が終わったら、対応するhttpdとmysqldサービスを再起動してください.
二、倉庫管理
1、既存のリモート倉庫を観察する
Phabricatorにgitウェアハウスを管理させたくない場合は、既存のgitプロジェクトをオブザーバーモードでインポートし、ユーザーがコミットしている場合に監査ポリシーがトリガーされ、コードreviewが実装されます.具体的な作成手順は次のとおりです.
1)観察倉庫の作成
a.新しい倉庫(Create a new repository)を作成する.b.左側のメニューURURをクリックし、右側にAdd NewIsURIを追加し、URI(既存のリモート倉庫)を記入し、I/OモードをObserveに設定する.c.必要に応じて、認証(秘密鍵など)を構成する.d.Basics項目で倉庫を有効にし、直ちに更新し、インポートを開始する.
2.)Heraldルールの作成
より多くのアプリケーションでは、左側の一般的なメニューにHeraldを追加し、Heraldに入り、commit Hook以外の「コミット」タイプのルールを革新します.たとえば、mergeコミットを傍受するルールを作成します.
is any of:
Is merge commit: is true
Commit message: does not match regexp: @\sof\s@
email to: ....
2、ssh方式管理Git倉庫
1)アカウント構成
$ useradd git # git ,
$ vi /etc/shadow # git !!, , , , !!
$ vi /etc/passwd # git , /bin/false, /bin/sh,
2.)Phabricator構成の変更
phabricatorディレクトリに入ります.
$ ./bin/config set phd.user root
$ ./bin/config set diffusion.ssh-user git # clone url
$ ./bin/phd restart
3)gitアカウントの実行権限の構成
visudoコマンドを実行するか、vi/etc/sudoersを実行するか、soduがないか、yum install sudoインストールを実行する必要があります.Defaults requirettyフィールドを検索します.コメントがない場合は、コメントを削除し、ファイルの末尾に次のコードを追加します.
git ALL=(root) SETENV: NOPASSWD: /bin/sh, /usr/bin/git-upload-pack, /usr/bin/git-receive-pack
4)sshポートの構成
$ vi /etc/ssh/sshd_config
:
#Port 22 # 22 , git ssh
Port 2222 # 2222
ListenAddress ,
$ vi service sshd restart # ssh
22 , phabricator , ~/.ssh/config Port
$ ./bin/config set diffusion.ssh-port 2222
すべて設定されている場合は、ポートがリモートで占有されているか、phabricator sshサービスが開始されているかどうかを考慮します.
5)スクリプトおよびsshサービスの追加
phabricatorの下resources/sshd/ディレクトリa)に入り、phabricator sshスクリプトを追加します.
$ cp phabricator-ssh-hook.sh /usr/libexec/phabricator-ssh-hook.sh
$ chown root /usr/libexec/phabricator-ssh-hook.sh
$ chmod 755 /usr/libexec/phabricator-ssh-hook.sh # chown 755
$ vi /usr/libexec/phabricator-ssh-hook.sh
:
VCSUSER="git" # ssh
ROOT="/var/www/html/code-review/phabricator" # phabricator
b.)phabricator sshプロファイルを追加する:
$ cp sshd_config.phabricator.example /etc/ssh/sshd_config.phabricator
$ vi /etc/ssh/sshd_config.phabricator
:
AuthorizedKeysCommand /usr/libexec/phabricator-ssh-hook.sh # a.)
AuthorizedKeysCommandRunAs git # openSSH6.2 , AuthorizedKeysCommandUser
AllowUsers git
Port 22 # ssh 22, , ssh /etc/ssh/sshd_config 22
c.)phabricator sshサービスを起動する:まずデバッグモードで起動し、エラーとポートバインドが成功したかどうかを確認する.
$ /usr/sbin/sshd -d -d -d -f /etc/ssh/sshd_config.phabricator
:
$ /usr/sbin/sshd -f /etc/ssh/sshd_config.phabricator # ssh ssh
, :
$ ps -ef | grep sshd
$ kill
6.)ssh公開鍵の追加
a.)ssh鍵を生成する:
$ ssh-keygen -t rsa -f ~/.ssh/phabricator -C # -f
b.)~/.ssh/config 1本追加:
# phabricator
Host 192.168.1.5
HostName 192.168.1.5
Port 22
PreferredAuthentications publickey
IdentityFile ~/.ssh/phabricator
c.)phabricator監査サイトにログインし、個人管理ページ、SSH Public Keysメニューにphabricator.pub公開鍵を追加する
$ cat ~/.ssh/phabricator.pub
:
$ ssh -T -p 22 [email protected] # -p , 22,
3、http方式管理Git倉庫
1)apache権限の変更
visudoを実行し、sudoersでapache(www-userユーザー)に次の権限を追加します.
apache ALL=(root) SETENV: NOPASSWD: /usr/bin/git, /usr/bin/git-upload-pack, /usr/bin/git-receive-pack, /usr/bin/ssh, /usr/libexec/git-core/git-http-backend
2.)phabricator構成
$ ./bin/config set diffusion.allow-http-auth true # http clone
$ ./bin/config set environment.append-paths '["/usr/libexec/git-core"]' # ,
更にウェブサイトのconfigメニューに入ります->all settingsの中で、diffusion.allow-http-authを探し当てて、つけて、値を設定します:Allow HTTP Basic Auth
3.)git httpアクセスパスワードの設定
SettingsでVCS Passwordメニューに設定
4)ローカルにログイン情報を保存する
修正~/Netrcファイル、追加:
machine 192.168.1.5
login wangwb
password aym000000
5)デバッグ
$ GIT_CURL_VERBOSE=1 git clone http://....
HTTP/1.0 500 Internal Server Errorがある場合、git-http-backendパスが間違っていることを示します(倉庫->statusで見ることができます)、environment.append-paths構成を追加する必要があります.上記の手順2を参照してください.
3、倉庫管理
1.倉庫のデフォルトストレージパスを変更するには:
$ ./bin/config set repository.default-local-path '/ /repo'
2.)倉庫を削除します.
$ ./bin/remove destroy R(n)
公式サイトドキュメント:https://secure.phabricator.co...
三、関連問題
1、mysql rootパスワードを消去する
$ mysql –skip-grant-table &
Mysql> use mysql;
Mysql> update user set password=password(" ") where user="root";
Mysql> flush privileges;
Mysql> quit;
ここで注意しなければならないのは、各コマンドがセミコロン";"で終わる必要があり、以上の操作を実行するとrootのパスワードが空になります.
ERROR 1044(42000):Access denied for user''@'localhost'to database'mysql'エラー:原因:mysqlデータベースのuserテーブルに、ユーザー名が空のアカウントである匿名アカウントが存在し、ログイン時にrootを使用していたが、実際には匿名ログインしていた.処理案:
# 1. mysql
$ service mysqld stop
# 2.
$ mysqld_safe --skip-grant-table
: Starting demo from .....
# 3.
$ mysql -u root mysql
Mysql> update user set password=password(" ") where user="root";
Mysql> flush privileges;
Mysql> quit;
2、mysqlリモートrootアカウントにログインできない
まず、以下を確認します.
権限:
$ mysql -u root -p
Mysql> use mysql;
Mysql> select host from user where user='root'; # host % , flush privileges;
Mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysql root ';
Mysql> flush privileges;
Mysql> quit;
3、mysqlデフォルトデータ保存の修正
$ mysqladmin -u root -p variables | grep datadir # mysql
$ service mysqld stop
$ mv /var/lib/mysql / #
$ vi /etc/my.cnf
# datadir socket , :
[mysql]
socket=/ /mysql.sock
$ service mysqld start
4、mysqlデータベースのバックアップ/リカバリ
$ mysqldump --all-databases -h127.0.0.1 -u root -p > ./backup/mysql-bak.sql
$ mysqldump --all-databases -h127.0.0.1 -u root -p < ./backup/mysql-bak.sql
5、sshリモートでrootアカウントにログインできない
ssh構成の変更:
$ vi /etc/ssh/sshd_config # :PermitRootLogin yes
6、git倉庫PHPを点けて間違いを報告する
説明SELinux構成が開始されましたので、上記の電源投入禁止を参照してください.
7、killプロセス
$ kill -s 9 PID # ID
公式参考:https://secure.phabricator.co...