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
Смотрите также мои статьи:
- Настройка Phabricator
- Как обновить Phabricator
- Настройка SSH для Phabricator
- Резервное копирование Phabricator
- Ручная установка Mercurial (hg)
- Установка Certbot в Ubuntu
- Ротация логов
- Как разрешить пользователям создавать репозитории
- Установка и настройка веб-сервера Apache2
- Установка и настройка MySQL сервера на Ubuntu
- HTTP Error 500: Error 1: ** unknown exception encountered, please report by visiting
- Attempting to construct a query using a non-utf8 string when utf8 is expected
- Очистка кэша