Настройка Phabricator

Допустим Phabricator установлен как я описывал в статье:
Установка Phabricator в Ubuntu
Теперь приступим к настройке.

Слева в меню выберем «Auth», нажмем «Add Provider» и выберем «Username/Password», чтобы добавить авторизацию по логину/паролю.

После этого, по рекомендациям безопасности запретим изменять методы авторизации:

cd /home/phd/phabricator/
./bin/auth lock

В профиле пользователя установим пароль. Если после установки вы случайно закрыли Phabricator и не успели указать пароль, то можно залогиниться выполнив команду ниже, аналогичным способом можно восстанавливать пароль пользователям:

./bin/auth recover admin

Создадим директории для репозиториев, больших файлов и укажем владельца:

mkdir -p /var/repo/
mkdir -p /var/files/
chown -R phd:phd /var/repo/
chown -R phd:phd /var/files/
chown -R phd:phd /home/phd/

Создадим скрипт автозапуска:

nano /etc/systemd/system/phd.service

Добавим в него:

[Unit]
Description=Phabricator Daemons
After=network.target,mysql.service
Requires=network.target,mysql.service

[Service]
Type=forking
User=phd
ExecStart=/home/phd/phabricator/bin/phd start
ExecStop=/home/phd/phabricator/bin/phd stop
Restart=always
RestartSec=10
StartLimitInterval=0
StartLimitBurst=0

[Install]
WantedBy=multi-user.target

Если иногда нужно останавливать phd процесс, то в скрипте изменим Restart=always на Restart=on-failure и выполним:

systemctl daemon-reload

Активируем скрипт:

systemctl enable phd --now

Укажем необходимые параметры:

./bin/config set repository.default-local-path /var/repo/
./bin/config set storage.local-disk.path /var/files/
./bin/config set phd.user phd
./bin/config set phabricator.timezone Europe/Kiev
./bin/config set policy.allow-public false

Укажем домен на котором работает Phabricator:

./bin/config set phabricator.base-uri 'https://git.ixnfo.com/'

При необходимости можно посмотреть значение любого параметра, например так:

./bin/config get phd.user

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

./bin/config set phd.trace true
./bin/config set phd.verbose true
./bin/config set phd.trace false
./bin/config set phd.verbose false

Пример ручной остановки и запуска phd:

./bin/phd start
./bin/phd restart
sudo -En -u 'phd' -- /home/phd/phabricator/bin/phd start

Проверить запущен ли процесс можно так:

ps aux | grep phd
systemctl status phd

Также я создал символическую ссылку на git-http-backend:

ln -s /usr/lib/git-core/git-http-backend /usr/bin/git-http-backend

Создадим первый репозиторий используя Diffusion и в профиле своего пользователя создадим «VCS Password» (он необходим для подключений к репозиториям по https).
Если подключаться к репозиторию с неверным паролем, то отобразится ошибка:
abort: HTTP Error 403: Invalid credentials.

Также укажем в php.ini рекомендуемые параметры:

file_uploads = On
allow_url_fopen = On
short_open_tag = On
memory_limit = 512M
upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 360
date.timezone = Europe/Kiev
opcache.validate_timestamps=0

Можно указать их в конфигурации Apache2, или в файле .htaccess, например:

<IfModule mod_php7.c>
file_uploads = On
allow_url_fopen = On
short_open_tag = On
memory_limit = 512M
upload_max_filesize = 1024M
post_max_size = 1024M
max_execution_time = 3600
date.timezone = Europe/Kiev
opcache.validate_timestamps=0
</IfModule>

Также я указал в /etc/mysql/mysql.conf.d/mysqld.cnf некоторые рекомендуемые параметры:

local_infile=0
innodb_buffer_pool_size=2G
innodb_buffer_pool_instances=2
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_ALL_TABLES

Также необходимо настроить почтовые параметры, для теста я просто установил Postfix:
Установка и настройка Postfix

Создал файл mailers.json с содержимым:

[
  {
    "key": "sendmail",
    "type": "sendmail"
  }
]

И выполнил команду:

./bin/config set --stdin cluster.mailers < mailers.json

После этого письма уже могут отправляться с сервера, но желательно настроить почтовый сервер или указать сторонний.

Пример отправки тестового сообщения на email пользователя и просмотр его статуса:

./bin/mail send-test
./bin/mail send-test --to admin < README.md
./bin/mail list-outbound
./bin/mail show-outbound
./bin/mail show-outbound --id 1
./bin/mail help

Можно установить Pygments:

sudo apt-get install python-pygments
./bin/config set pygments.enabled true

Разрешим подключения к репозиториям по http:

./bin/config set diffusion.allow-http-auth true

И чтобы всегда использовалось https:

./bin/config set security.require-https true

Если необходимо запретить поисковым сайтам индексировать сайт, то создадим файл /home/phd/phabricator/webroot/robots.txt со следующим содержимым:

User-agent: *
Disallow: /

Настроим логи (по умолчанию логи пишутся в /var/tmp/phd/log):

mkdir /var/log/phabricator/
touch /var/log/phabricator/access.log
touch /var/log/phabricator/ssh.log
touch /var/log/phabricator/daemons.log
chown phd:phd /var/log/phabricator/daemons.log
chown vcs-user:vcs-user /var/log/phabricator/ssh.log
chown www-data:www-data /var/log/phabricator/access.log
./bin/config set log.access.path /var/log/phabricator/access.log
./bin/config set log.ssh.path /var/log/phabricator/ssh.log
./bin/config set phd.log-directory /var/log/phabricator

Можно настроить recaptcha:

recaptcha.enabled true
recaptcha.private-key ...
recaptcha.public-key ...

Добавим в конце файла /etc/sudoers:

git ALL=(phd) SETENV: NOPASSWD: /usr/bin/git-upload-pack, /usr/bin/git-receive-pack, /usr/bin/hg, /usr/local/bin/hg, /usr/bin/svnserve
www-data ALL=(phd) SETENV: NOPASSWD: /usr/bin/git-upload-pack, /usr/lib/git-core/git-http-backend, /usr/bin/hg, /usr/local/bin/hg

Пример ручного выполнения команд:

su phd
printf 'listkeys\nnamespace 10\n' | /usr/local/bin/hg -R /var/repo/1/ serve --stdio

Смотрите также мои статьи:
Настройка SSH для Phabricator
Установка Phabricator в Ubuntu
Резервное копирование Phabricator

Вливайтесь в общение

1 комментарий

Добавить комментарий для ДмитрийОтменить ответ

  1. Отличная статья. Все четко расписано. Помогла с некоторыми моментами.
    Может Вы сталкивались с такой проблемой. Есть exchange 2013, настроена отправка без авторизации и она работает. Но проблема в том, что есть письма от phabricator, которые он шлет сам себе, на адрес вида noreply@. Эти письма забивают очередь на почтовом сервере. Может знаете в какую сторону копать.
    Заранее спасибо.