Phabricator - instalacja i konfiguracja część I

Krzysztof Gał
Phabricator - instalacja i konfiguracja część I

Phabricator to aplikacja przeglądarkowa napisana w jeżyku PHP. Jest to zestaw narzędzi programistycznych dla zespołów deweloperskich.

Phabricator zawiera między innymi obsługę repozytoriów kodu (jak github itp...), narzędzia do inspekcji i śledzenia zmian w kodzie, narzędzia do zgłaszania i obsługi błędów, wbudowaną aplikację typu wiki, aplikację Continuous Integration, czat oraz kilkanaście innych programów.

Instrukcja instalacji jest obszerna i dosyć szczegółowa jednak dla mniej obeznanych w adminowaniu Linuxem może sprawić sporo problemów a nawet uniemożliwić prawidłowe działanie niektórych funkcji, ponieważ zawiera trochę "dziur" z którymi zaawansowani admini sobie poradzą ale początkujący niekoniecznie.

W tym przewodniku zainstaluję Phabricator-a na systemie Debian 8 (Stretch).
Do uruchomienia aplikacji użyję zestawu:

  • nginx
  • php 7.2
  • mariadb 10

Na początek:

  • Zainstaluj git (apt install git),
  • może się zdarzyć że na swoim świeżym serwerze masz już zainstalowany np. serwer apache, zatem należy go usunąć (apt remove apache2).

Instalacja PHP 7.2 wraz z potrzebnymi rozszerzeniami.
Jako użytkownik root lub z użyciem sudo.

apt install apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt update
apt install  php7.2-fpm php7.2-mbstring php7.2-mysqli php7.2-curl php7.2-cli

Instalacja Nginx i MariaDb 10.

apt install nginx mariadb-client-10.0 mariadb-server-10.0

W trakcie instalacji bazy danych wpisujemy i potwierdzamy hasło roota, następnie konfigurujemy serwer mysql (mariadb) dla zwiększenia bezpieczeństwa.

mysql_secure_installation

Na wszystkie pytania poza pierwszym odpowiadamy Y.

Zanim zabierzemy się za instalację naszego Phabricator-a, musimy jeszcze skonfigurować nginx i php-fpm.

Konfiguracja nginx. Utworzymy nowy plik konfiguracyjny w katalogu /etc/nginx/conf.d. Jeżeli ktoś preferuje to można zrobić to za pomocą konfiguracji z sites-available - sites-enabled.

cd /etc/ngnix/conf.d
touch phabricator.php

Następnie za pomocą vim lub nano apt install vim.

vim phabricator.conf

Wklejamy konfigurację

server {
  server_name phabricator.test www.phabricator.test;
  root        /home/phd/phabricator/webroot;

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

  location /index.php {
    fastcgi_pass   unix:/run/php/phabricator.sock;
    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;
  }
}

Następnie konfigurujemy php-fpm. Skopiujemy domyślny plik konfiguracji i dostosujemy go do naszych potrzeb.

cd /etc/php/7.2/fpm/pool.d
cp www.conf phabricator.conf
mv www.conf www.conf.back #robimy kopię pliku i usuwamy go z konfiguracji php-fpm

Plik phabricator.conf należy odrobinę dostosować, żeby było profesjonalnie zrobimy oddzielnego pool-a procesów dla naszej aplikacji. Na samej górze pliku wartość [www] zamieniamy na [phabricator]. Należy zwrócić uwagę aby wartości user, group, listen.owner i listen.group odpowiadały nazwie użytkownika z jaką uruchamiany jest ngnix. Na Debianie użytkownik nosi nazwę www-data na Centosie nginx.

[phabricator]
user = www-data
group = www-data

listen = /run/php/$pool.sock
listen.owner = www-data
listen.group = www-data

Zauważ aby ścieżka w wartości listen odpowiadała tej ustawionej w konfiguracji nginx-a (fastcgi_pass unix:/run/php/phabricator.sock;). Wartośc $pool będzie odczytywana jako nazwa naszego pool-a [phabricator], czyli w tym wypadku wartość listen będzie równa /run/php/phabricator.sock.

Po ustawienu konfiguracji restartujemy ngnixa i php-fpm.

service php7.2-fpm restart
service nginx restart

Teraz czas na Phabricator-a, instalację aplikacji należy zacząć od utworzenia dwóch użytkowników. Jeżeli nie zamierzasz korzystać z Phabricator-a jako repozytorium kodu możesz utworzyć tylko użytkownika phd, nazwy użytkowników są dowolne i w późniejszym czasie należy jest skonfigurować w ustawieniach aplikacji.

adduser phd
adduser --no-create-home git

Użytkownik git nie potrzebuje własnego folderu w home. Użytkownikowi phd należy nadać umożliwić wykonywanie poleceń jako administrator, w tym celu w systemie Debian można dodać go do groupy sudo (w dystrybucji Centos może to być np. grupa wheel).

adduser phd sudo

Tworzymy katalog w którym przechowywane będą repozytoria git, svn lub hg. Domyślnie Phabricator jest ustawiony dla katalogu /var/repo. Po utworzeniu należy zmienić właściciela katalogu na phd

mkdir /var/repo
chown -R phd:phd /var/repo

Teraz ściągamy i konfigurujemy Phabricator-a. Zauważ aby zalogować się jako użytkownik phd. Dobrym miejscem do instalacji będzie katalog /home/phd.

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

Teraz należy skonfigurować Phabricator-a do środowiska instalacji. Należy ustawić bazowy adres www (jak wskazuje instrukcja musi to być domena lub sub-domena, nie może to być ścieżka w domenie), użytkownika, hosta i hasło do bazy danych. W tej instalacji użyte zostanie konto root ale można użyć innego użytkownika, który będzie mieć prawa do tworzenia baz danych.

cd /home/phd/phabricator
./bin/config set mysql.pass <HASŁO_ROOT_MYSQL>
./bin/config set phabricator.base-uri 'http://phabricator.test/'
./bin/config set phd.user phd
./bin/config set diffusion.ssh-user git

Następnie należy zainstalować bazy danych.

./bin/storage upgrade

Jeśli bazy danych zostały zainstalowane, powinnyśmy zobaczyć taki wynik.

Teraz możemy przejść do przeglądarki i sprawdzić czy nasza instancja Phabricator-a działa, jeżeli wszystko poszło dobrze powinniśmy zobaczyć okno tworzenia pierwszego użytkownika.

Ważne aby po utworzeniu pierwszego użytkownika skonfigurować Auth menager-a, jeśli tego nie zrobimy nie będzie można zalogować się ponownie (przez przeglądarkę) po wygaśnięciu bieżącej sesji. Aby to zrobić z lewego menu wybieramy Auth a następnie dodajemy jedną z metod np. Username/Password.

Obok logo Phabricator-a zobaczymy kilka/kilkanaście powiadomień o błędach konfiguracji, większość z nich jest łatwa do usunięcia. W części II poradnika zajmiemy się naprawą standardowych błędów konfiguracji oraz konfiguracją hostingu repozytoriów za pomocą Phabricator-a i ssh (aplikacja Diffusion).

Blog Comments powered by Disqus.