Phabricator是Facebook一个开源可视化的代码审查工具,它集成了一系列开源的Web应用,其中包括审查代码、代码(git/svn)托管、语法检查、单元测试、wiki等功能,还可以bug跟踪,直接做jira与代码review关联,支持两种代码审查工作流:“review”(提交前审查)和 “audit”(提交后审查)。

一、安装

1、通过脚本安装

打开CentOS安装脚本(ubuntu不同):
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模式,可修改安装脚本中的https://为git://模式。

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变量里添加以下两个路径(win7及以下记得中间用;隔开):

$ vi /etc/httpd/conf/httpd.conf
或新建: /etc/httpd/conf.d/vhost.conf   # 在httpd.conf中有Include包括

添加虚拟机:
ServerName localhost
Listen     8800

<VirtualHost *: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]
</VirtualHost>

$ service httpd restart        # 重启apache
$ chkconfig httpd on           # 设置开机启动

如果启动apche访问不到任何信息,说明监听端口不对,查找Listen字段,修改相应端口;
如果启动apche出现内部错误,说明RewriteEngine有问题;
若启动命令时,提示ServerName相关错误,将虚拟机上一行的ServerName localhost注释去掉;
apache日志路径:/var/log/httpd

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";
  MysqL> flush privileges;
  MysqL> quit;

b.) 修改数据库默认编码:

$ 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的高级里,去掉包含字符集

c.) 升级数据库:

默认安装的数据库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

d.) 更新数据库:

$ ./bin/storage upgrade

# 若删除数据库:
$ ./bin/storage destory

6、修改phabricator配置:

进入/var/www/html/phabricator下修改配置文件,或用./bin/config set MysqL.pass 000000 设置:

$ vi ./conf/local/local.json

# 修改内容如下(数据库、禁掉Test Plan,邮件配置):
{
  "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,"PHPmailer.smtp-password": "Aym123456","PHPmailer.smtp-user": "fe_auto@aicaigroup.com","PHPmailer.smtp-protocol": "SSL","PHPmailer.smtp-port": 465,"PHPmailer.smtp-host": "smtp.exmail.qq.com"
}

7、访问网址,部署邮件

进入左侧菜单config -> mail,设置默认邮箱Metamta.default-address值,再设置Metamta.mail-adapter值为:PhabricatorMailImplementationPHPMailerAdapter
重启邮件服务:

$ ./bin/phd restart

发送邮件试试,查看邮件发送是否正常:

$ ./bin/mail list-outbound

8、设置登录授权方式

左侧菜单-Auth设置,若未设,退出后登录不了,执行:

$ ./bin/auth recover <管理员账号>

根据提示打开网址,登录后,进入auth菜单,添加一个登录授权方式

9、添加中文支持

更新phabricator-zh_CN代码git库,将目录下内容放到phabricator/src/extensions/下即可,客户端在设置里,选择语言中文

$ git clone https://github.com/wanthings/phabricator-zh_CN.git

二、git托管

1、ssh方式配置

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 <id>

6.) 添加ssh公钥

a.) 生成ssh密钥:

$ ssh-keygen -t rsa -f ~/.ssh/phabricator -C <邮箱>         # -f 可修改生成名

b.) ~/.ssh/config添加一条:

# 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 git@192.168.1.5       # -p 可修改端口,默认22,可不加参数

2、http方式配置

1.) 修改apache权限

运行visudo,在sudoers里为apache(www-user用户)添加如下权限:

apache ALL=(root) SETENV: nopASSWD: /usr/bin/git,/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的密码就被清空。

2、MysqL远程root账户不能登录

授权:

$ MysqL -u root -p
  MysqL> use MysqL;
  MysqL> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
  MysqL> flush privileges;
  MysqL> quit;

3、MysqL修改默认数据存放

$ vi /etc/my.cnf
修改datadir和socket两个字段,并添加以下:
[MysqL] 
socket=/路径/MysqL.sock

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配置开起了,参照上文开机禁掉。

官方参考: https://secure.phabricator.co...

Phabricator服务器安装部署上的更多相关文章

  1. 在Xcode中安装的git中禁用osxkeychain凭证帮助程序

    解决方法如果您的问题主要关注的是安全性,并且您希望每次都输入密码,那么我会接受钥匙串以适应您的目标>进入osx钥匙串应用程序,>如果您使用的是https,请查找服务器名称>通过单击更改其设置,并在选项卡“访问控制”标记“询问钥匙串密码”下>如果需要,请从列入白名单的应用程序列表中删除git-credential-osxkeychain应用程序.请注意,在Linux上,默认行为也是自动发送凭据.

  2. macos – 运行brew命令充满了’同意Xcode / iOS许可证需要管理员权限,请通过sudo以root身份重新运行.’

    所以我跑了:如果滚动到底部,可以输入“同意”,然后就可以了.

  3. osx – 无法创建目录/ var / teamsserver

    OpenSSH_6.2p2,OSSLShim0.9.8r8Dec2011debug1:Readingconfigurationdata/etc/ssh_configdebug1:/etc/ssh_configline20:Applyingoptionsfor*debug1:Connectingto1.2.3.4[1.2.3.4]portPORT.debug1:Connectionestablished.Couldnotcreatedirectory‘/var/teamsserver/.ssh’.debug

  4. ios – Xcode Server 4.0 git从构建触发脚本推送

    我为一个托管在github上的项目安装了一个XcodeBot.我按照步骤和设置机器人来使用我现有的SSH密钥.验证成功,项目结算和建立.然后,我在预触发器操作中添加了一个shell脚本,它增加了plist中的版本,将其标记,并将该更改提交到github.但是当我尝试从shell脚本执行gitpush时,我得到:–推送到git@github.com:spex-app/spex-ios.git权限被拒

  5. xcode – 为什么Jenkins在我的Mac上运行不会连接到本地的git repo?

    我正在尝试使用Jenkins实现自动化构建,用于我的iOS项目.我添加了Git插件,但是一旦我尝试将git的URL放在项目的git配置中,它会在下面的屏幕截图中显示错误.这里Jenkins不能从repo克隆到其工作空间.解决方法在大多数情况下,gitbarerepo有扩展名.git我的意思是(其他)/test1看起来不正确,我认为应该是(其他)/test1.git在我的mac上有同样的错误.

  6. 哪些Xcode项目文件可以从我的git repo中排除?

    我正在开发一个iOS项目,并使用git进行版本控制.我正在与另一位开发人员合作.我应该保留哪些Xcode项目文件在repo中,哪些可以排除,这样不会对其他开发者产生负面影响?这里有一些非代码文件,git告诉我已被修改或添加…

  7. xcode – 不能推送到远程git存储库

    所以我一直在麻烦把我最近的提交到我在Bitbucket上设置的远程仓库.我最初使用Xcode,并且已经要求thisquestion,并建议使用终端来推送而不是Xcode.现在,我尝试了终端,但是并没有解决问题.但是当我尝试gitpush时,它确实给了我更详细的错误信息我是这些远程存储库的新手,并且Xcode上的一切都正常工作,所以如果您建议我在终端中执行某些操作,如果您描述了如何执行此操作,这将有

  8. ios – Xcode上传错误:无法打开ssh会话. (16)

    注意:我们终于上传了该应用程序,但是我们并没有真正解决这个问题,所以如果有人可以分享一些有关这个问题的宝贵意见或经验,我将不胜感激.我也检查了以下2个类似的问题,但这些没有帮助:>Erroruploadingiosapplicationtoitunesconnect“failedtoopensshsession(16)”>AppStoresubmission/distributionerror“f

  9. Xcode 4.5自动更改.xib文件

    由于我升级到Xcode4.5,我发现它会自动删除我访问的每个xib文件的一部分.这是一节:我几乎可以这样生活,但是当我再次访问该文件时,我发现还有更多的“自动”更改.他们变得更加多样,难以表征,所以我不会包括例子,除非我真的需要.我不明白这里发生了什么.我正在寻找两个答案之一:>有没有办法禁用这个?>为什么会发生这种情况,有没有办法强制Xcode将这些更改应用于所有xib文件,以便我可以做到这一点?

  10. ios – XCode中的源代码管理是一场噩梦 – 任何人都可以提供建议?

    使用Git与Xcode(4.3)是一个真正的噩梦.这是一个场景…我承诺我的变化–好的.我跳回主人拉动变更.突然间我得到:是吧?解决方法我只是添加这些文件到我的.gitignore文件.没有必要与其他开发人员分享.所以我有:在.gitignore中请注意,您链接的stackoverflow问题说不排除project.pbxproj,但它并不表示不排除*.xcworkspace.但是,我目前没有使用工作区功能.如果您使用工作区功能,则可能需要包含这些文件,但忽略xcuserdata文件.

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部