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