phabricator环境搭建

phabricator安装

最新的安装文档请参照 https://secure.phabricator.com/book/phabricator/article/installation_guide/

一. 安装所需环境

  1. linux系统
  2. nginx + php7.1 + mysql
  3. git
  4. 域名, 可以使用/etc/hosts定义本地的域名别名
  5. php 扩展: mbstring, iconv, curl, pcntl, apcu(使用php -i | grep 查看扩展安装情况)
  6. apcu 下载地址http://pecl.php.net/package/APCu (phpize安装)

二. 安装步骤

  1. 下载源代码

    git clone https://github.com/phacility/libphutil.git
    git clone https://github.com/phacility/arcanist.git
    git clone https://github.com/phacility/phabricator.git
    
  2. 配置nginx虚拟域名

    server{
        listen 80;
        server_name phabricator.beston168.cn.com;
        set $root_path '/var/www/html/phabricator/phabricator/webroot';
        root $root_path;
        index index.php index.html index.htm;
        location / {
            index index.php;
            rewrite ^/(.*)$ /index.php?__path__=/$1 last;
        }
    
        location /index.php {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
    
            #required if PHP was built with --enable-force-cgi-redirect
            fastcgi_param REDIRECT_STATUS 200;
    
            #variables to make the $_SERVER populate in PHP
            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;
        }
    }
    
  3. 将域名解析到此台机器IP上, 或者/etc/hosts 到此IP

  4. 打开域名按照页面显示流程安装

  5. 恢复数据库

     ./bin/storage upgrade
    
  6. 看到注册administrator的页面, 输入账号密码登录系统

  7. 设置静态文件独立域名, nginx同样指向phabricator/webroot目录, 执行以下命令

     ./bin/config set security.alternate-file-domain <domain>
    
  8. 设置本地大文件存储位置

    a. 修改nginx.conf配置, http{}中添加或者修改

    	client_max_body_size 128M;
    

    b. 修改php.ini 设置或者修改以下属性

    	post_max_size 128M
    	memory_limit -1
    	max_input_vars 1000
    	upload_max_filesize 128M
    

    c. 执行一下命令, 本地文件夹需要有777读写权限

    	 ./bin/config set storage.local-disk.path <your localpath>
    

    d. 刷新首页, 拖拽文件到首页, 查看是否可以上传

  9. 优化php.ini

    date.timezone = Asia/Shanghai
    opcache.validate_timestamps=0
    
  10. 优化mysql, 修改mysql.conf.d下的mysqld.cnf, 修改一下属性

    max_allowed_packet = 128M
    sql_mode=STRICT_ALL_TABLES
    
  11. 开启phd, 运行以下命令

    ./bin/phd start
    
  12. 设置baseuri, 运行以下命令

    ./bin/config set phabricator.base-uri 'http://localphabricator.com/'
    
  13. 安装pygments, 安装后在phabricator开启此配置项

    安装 sudo apt-get  install python-pygments
    
  14. 系统默认的repository在本地路径/var/repo, 需要手动创建文件夹, 并且给予读写权限

  15. 建立phabricator管理的repository
    a. 创建daemon-user用户, 用于直接操作repository
    b. 创建www-data用户, 用于页面sudo daemon-user用户操作repository(php-fpm就是使用的www-data用户)
    c. 创建vcs-user用户, 用于git sudo daemon-user用户操作repository(最好使用git用户)
    d. 执行以下命令

     ./bin/config set phd.user daemon-user
     ./bin/config set diffusion.ssh-user vcs-user
    

    e. 修改/etc/sudoers文件添加, 具体可执行文件所在bin目录根据实际情况填写

    git  ALL=(daemon-user) SETENV: NOPASSWD: /bin/ls, /usr/bin/git, /usr/bin/git-upload-pack, /usr/bin/git-receive-pack, /usr/bin/ssh
    www-data ALL=(daemon-user) SETENV: NOPASSWD:  /usr/bin/git, /usr/bin/git-backend, /usr/bin/ssh
    

    f. /etc/sudoers 中注释掉Defaults requiretty(使用#注释)
    g. 执行一下命令

    sudo usermod -p NP vcs-user
    sudo usermod -s /bin/sh vcs-user
    
    // 执行后, /etc/shadow中的git用户配置变为
    git:NP:17440:0:99999:7:::,
    /etc/passwd中的git用户配置变为(本文中vcs-user默认为git用户)
    git:x:1001:1001::/home/git:/bin/sh
    

    h. sshd配置

    1. 安装 openssh-server
      	sudo apt-get install openssh-server
      
    2. 默认sshd为22端口, phabricator使用则需要添加额外端口, 执行命令
      	./bin/config set diffusion.ssh-port 2222
      
    3. 执行一下命令
      	sudo cp -rf /path/to/phabricator/resources/sshd/phabricator-ssh-hook.sh /usr/libexec/phabricator-ssh-hook.sh
      	sudo chown root /usr/libexec/
             sudo chown root /usr/libexec/phabricator-ssh-hook.sh
             sudo chmod 755  /usr/libexec/phabricator-ssh-hook.sh
      
    4. 修改/usr/libexec/phabricator-ssh-hook.sh内容
      	VCSUSER="git"
      	ROOT="/var/www/html/phabricator/phabricator"
      
    5. 执行一下命令
      	sudo cp -rf /path/to/phabricator/resources/sshd/sshd_config.phabricator.example /etc/ssh/sshd_config.phabricator
      
    6. 修改/etc/ssh/sshd_config.phabricator内容
      	AuthorizedKeysCommand /usr/libexec/phabricator-ssh-hook.sh
      	AuthorizedKeysCommandUser git
      	AllowUsers git
      
    7. 执行命令, sshd路径通常为/usr/bin/sshd
      	 sudo /usr/bin/sshd -f /etc/ssh/sshd_config.phabricator
      

    如果报错Could not load host key: /etc/ssh/ssh_host_ed25519_key, 执行 ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key就能解决
    将客户端机器的~/.ssh/id_rsa.pub公钥复制到phabricator后台, account -> setting-> SSH Public Keys
    创建repository并且激活, 查看是否可以成功
    如果不行可以尝试重启服务器,
    telnet ip :port 查看2222端口是否开放, 如果未开放可以尝试service iptables stop, ufw disable关闭防火墙
    具体问题参照 https://secure.phabricator.com/book/phabricator/article/diffusion_hosting/

  16. 添加开机启动命令, 修改/etc/rc.local

    /var/www/html/phabricator/phabricator/./bin/phd start
    sudo /usr/sbin/sshd -f /etc/ssh/sshd_config.phabricator
    
  17. 配置notify服务器

    • 安装node环境
    • 在phabricator/support/aphlict/server/ 目录下执行npm install ws
    • 执行.bin/aphlict start
    • 配置文件为phabricator/conf/aphlict/aphlict.default.json
    • 可以手动指定配置文件 .bin/aphlict start – config path/to/config.json
    • 进入config -> Core Settings -> Notifications 中添加配置
       [
                 {
                     "type": "client",
                     "host": "0.0.0.0",
                     "port": 22280,
                     "protocol": "http"
                 },
                 {
                     "type": "admin",
                     "host": "127.0.0.1",
                     "port": 22281,
                     "protocol": "http"
                 }
         ]
      

你可能感兴趣的:(CTO工具)