Установка Phabricator в Ubuntu

Phabricator — бесплатный набор веб-инструментов для совместной разработки различных программных продуктов, имеет встроенный чат, проверку кода, отслеживание проблем и т.д.

Однажды посмотрев список сервисов для хостинга Mercurial на сайте
https://www.mercurial-scm.org/wiki/MercurialHosting
решили использовать Phabricator
https://www.phacility.com/phabricator/

Для примера выполню установку Phabricator в Ubuntu Server 18.04.

Сначала обновим систему и установим необходимые компоненты:

sudo apt update
sudo apt upgrade
sudo apt install git mercurial php php-mysql php-gd php-curl php-apcu php-cli php-zip php-json php-mbstring php libapache2-mod-php mysql-server apache2 zip
sudo a2enmod php7.2
sudo a2enmod rewrite

Следующей командой выполним рекомендации по безопасности MySQL:

sudo mysql_secure_installation

Укажем пароль root пользователю если он не установлен (где ixnfo — пароль):

mysql -u root
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ixnfo';
FLUSH PRIVILEGES;
exit;

Создадим в операционной системе пользователя под которым будет работать Phabricator:

adduser phd --home /home/phd
adduser phd sudo
chown -R phd:phd /home/phd/

Создадим директорию для Phabricator, скачаем в нее его, а также скачаем зависимости:

cd /home/phd
sudo git clone https://github.com/phacility/libphutil.git
sudo git clone https://github.com/phacility/arcanist.git
sudo git clone https://github.com/phacility/phabricator.git

Откроем в текстовом редакторе новый файл конфигурации apache2:

sudo nano /etc/apache2/sites-available/git.ixnfo.com.conf

Приведу пример конфигурации:

<VirtualHost *:80>
ServerName git.ixnfo.com
ServerAdmin test@ixnfo.com
Redirect permanent / https://git.ixnfo.com/
DocumentRoot /home/phd/phabricator/webroot/

ErrorLog ${APACHE_LOG_DIR}/phabricator-error.log
CustomLog ${APACHE_LOG_DIR}/phabricator-access.log combined

<Directory "/home/phd/phabricator/webroot/">
Require all granted
</Directory>
</VirtualHost>


<VirtualHost *:443>
ServerAdmin test@ixnfo.com
ServerName git.ixnfo.com
DocumentRoot /home/phd/phabricator/webroot/

RewriteEngine on
RewriteRule ^(.*)$ /index.php?__path__=$1 [B,L,QSA]
        <Directory "/home/phd/phabricator/webroot/">
#                Options -Indexes +FollowSymlinks
                Options FollowSymLinks
#                AllowOverride All
#                Order allow,deny
#                allow from all
                Require all granted
        </Directory>

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/git.ixnfo.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/git.ixnfo.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/git.ixnfo.com/chain.pem

ErrorLog /var/log/apache2/phabricator_error-ssl.log
LogLevel warn
CustomLog /var/log/apache2/phabricator_access-ssl.log combined
</VirtualHost>

Установить бесплатные SSL можно например как я описывал в статье:
Установка Certbot в Ubuntu

Активируем созданную конфигурацию и проверим ее корректность:

sudo a2ensite git.ixnfo.com
sudo apachectl -t

Сделаем чтобы apache2 запускался при запуске системы и перезагрузим его чтобы применить сделаные ранее изменения:

sudo systemctl enable apache2
sudo systemctl restart apache2

Командами ниже укажем параметры подключения к MySQL серверу (подключение должно выполняться от root пользователя):

cd /home/phd/phabricator/
./bin/config set mysql.host localhost
./bin/config set mysql.port 3306
./bin/config set mysql.user root
./bin/config set mysql.pass your_password

Или можно создать отдельного пользователя с полными правами (Phabricator не подключится к базе данных если в пароле есть символы):

mysql -u root
CREATE USER 'phd'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'phd'@'localhost';
FLUSH PRIVILEGES;
quit

Выполним одну из команд ниже чтобы создать необходимые базы данных и таблицы:

./bin/storage upgrade
./bin/storage upgrade --force

Вместо apache2 можно установить nginx:

sudo apt install nginx php-fpm
sudo service nginx status
sudo service php7.2-fpm status

Пример файла конфигурации:

server {
  server_name 192.168.2.2;
  root        /home/phd/phabricator/webroot;

  location / {
    index index.php;
    rewrite ^/(.*)$ /index.php?__path__=/$1 last;
  }

  location /index.php {
    fastcgi_pass   localhost: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;
  }
}

Также в файле /etc/php/7.2/fpm/pool.d/www.conf изменим:

;listen = /run/php/php7.2-fpm.sock
listen = 9000

И перезапустим php7.2-fpm чтобы применить изменения:

sudo service php7.2-fpm restart

Смотрите также мои статьи:

Оставьте комментарий

Добавить комментарий