logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

Phabricator Ubuntu Installation Guide

by digipine posted Jan 26, 2022
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

This is a supplement to the official Phabricator Installation Guide, because their guide will leave you with all kinds of permission and config errors and ~15,000 setup issues on startup.

 

Install bonus packages:

# apt-get install mercurial subversion python-pygments sendmail imagemagick

Create necessary users and add phd-user to sudoers:

# adduser phd --home /home/phd

# adduser phd sudo

# adduser git

And create repo directory if phabricator will be hosting repos:

 

# mkdir /var/repo

# chown -R phd /var/repo

# chgrp -R phd /var/repo

Install phabricator:

su phd

cd /home/phd

wget https://raw.githubusercontent.com/phacility/phabricator/master/scripts/install/install_ubuntu.sh

bash install_ubuntu.sh

Recommended Phabricator Configurations to set:

cd /home/phd/phabricator

 

# Generally acceptable settings:

./bin/config set mysql.pass <MYSQL_ROOT_PASSWD>

./bin/config set phabricator.base-uri 'http://phabricator.mydomain.net/'

./bin/config set phd.user phd

./bin/config set environment.append-paths '["/usr/lib/git-core"]'

./bin/config set diffusion.ssh-user git

./bin/config set pygments.enabled true

 

# for local-disk file storage only:

mkdir /home/phd/phabricator-files

chmod -R 666 /home/phd/phabricator-files

./bin/config set storage.local-disk.path /home/phd/phabricator-files

 

# Set true if you want to allow public http cloning:

./bin/config set policy.allow-public true

# Set to true if you want to allow http pushes

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

# You most likely want prototype apps, they are very useful:

./bin/config set phabricator.show-prototypes true

# You may want this true, depending on your workflow:

./bin/config set differential.require-test-plan-field false

 

# recommended silliness-enabling settings:

./bin/config set files.enable-imagemagick true

./bin/config set remarkup.enable-embedded-youtube true

This needs to be appended to /etc/sudoers (NOTE: verify your binary locations):

git ALL=(phd) SETENV: NOPASSWD: /usr/bin/git-upload-pack, /usr/bin/git-receive-pack, /usr/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

Apache Configuration:

First verify that apache is displaying a default page on port 80, then setup apache configuration file (see examples below) and enable phabricator site:

 

# cat /etc/apache2/sites-available/phabricator.conf

<VirtualHost *:80>

        # The ServerName directive sets the request scheme, hostname and port that

        # the server uses to identify itself. This is used when creating

        # redirection URLs. In the context of virtual hosts, the ServerName

        # specifies what hostname must appear in the request's Host: header to

        # match this virtual host. For the default virtual host (this file) this

        # value is not decisive as it is used as a last resort host regardless.

        # However, you must set it for any further virtual host explicitly.

        ServerName phabricator.mydomain.net

        ServerAlias phabricator.mydomain.net

        ServerAdmin webmaster@example.com

 

        DocumentRoot /home/phd/phabricator/webroot

 

        RewriteEngine on

        RewriteRule ^/rsrc/(.*)     -                       [L,QSA]

        RewriteRule ^/favicon.ico   -                       [L,QSA]

        RewriteRule ^(.*)$          /index.php?__path__=$1  [B,L,QSA]

 

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,

        # error, crit, alert, emerg.

        # It is also possible to configure the loglevel for particular

        # modules, e.g.

        #LogLevel info ssl:warn

 

        ErrorLog ${APACHE_LOG_DIR}/error.log

        CustomLog ${APACHE_LOG_DIR}/access.log combined

 

        # For most configuration files from conf-available/, which are

        # enabled or disabled at a global level, it is possible to

        # include a line for only one particular virtual host. For example the

        # following line enables the CGI configuration for this host only

        # after it has been globally disabled with "a2disconf".

        #Include conf-available/serve-cgi-bin.conf

        <Directory "/home/phd/phabricator/webroot">

                Require all granted

        </Directory>

</VirtualHost>

And here is an example of an HTTPS-enabled phabricator conf:

 

<IfModule mod_ssl.c>

        <VirtualHost *:80>

                ServerName phabricator.mydomain.net

                Redirect permanent / https://phabricator.mydomain.net

        </VirtualHost>

        <VirtualHost *:443>

 

                # Change this to the domain which points to your host.

                ServerName phabricator.mydomain.net

                SSLEngine on

                SSLCertificateKeyFile /etc/ssl/private/phabricator.key

                SSLCertificateFile /etc/ssl/certs/phabricator_mydomain.net.crt

                SSLCertificateChainFile /etc/ssl/certs/phabricator_mydomain.net.ca-bundle

                SSLProtocol All -SSLv2 -SSLv3

 

                # Change this to the path where you put 'phabricator' when you checked it

                # out from GitHub when following the Installation Guide.

                #

                # Make sure you include "/webroot" at the end!

                DocumentRoot /home/phd/phabricator/webroot

 

                RewriteEngine on

                RewriteRule ^/rsrc/(.*)     -                       [L,QSA]

                RewriteRule ^/favicon.ico   -                       [L,QSA]

                RewriteRule ^(.*)$          /index.php?__path__=$1  [B,L,QSA]

                <Directory "/home/phd/phabricator/webroot">

                        Require all granted

                </Directory>

        </VirtualHost>

</IfModule>

Make sure mod_php and mod_rewrite are enabled, and mod_ssl if you intend to set up SSL

 

# a2dissite 000-default

# a2ensite phabricator

# service apache2 restart

Configure mysql and storage:

Add these new lines to /etc/mysql/my.cnf under the [mysqld] heading:

 

sql_mode=STRICT_ALL_TABLES

ft_boolean_syntax=' |-><()~*:""&^'

ft_stopword_file=/home/phd/phabricator/resources/sql/stopwords.txt

ft_min_word_len=3

This new line should be about 40% of the memory of the box:

 

innodb_buffer_pool_size=800M

And also adjust max_allowed_packet to 32M (this line will already exist)

 

max_allowed_packet      = 32M

Restart mysql and run phabricator storage upgrade:

 

service mysql restart

./bin/storage upgrade

Configure php:

Adjust the following fields in /etc/php5/apache2/php.ini

 

post_max_size = 8M

date.timezone = Etc/UTC

opcache.validate_timestamps=0

Then restart apache

 

service apache2 restart

Restart phd daemons:

./bin/phd restart

Enable ssh clone & push

Change default ssh port to something other than port 22 (I like to use 2222)

 

# edit Port setting here

vim /etc/ssh/sshd_config

# restart sshd service

service sshd restart

Make executable ssh hook for phabricator ssh daemon

 

# copy ssh hook to executable location

cp /home/phd/phabricator/resources/sshd/phabricator-ssh-hook.sh /usr/lib/phabricator-ssh-hook.sh

chown root /usr/lib/phabricator-ssh-hook.sh

chmod 755 /usr/lib/phabricator-ssh-hook.sh

# Modify hook to match your system (hint: vcs-user == git)

vim /usr/lib/phabricator-ssh-hook.sh

Create phabricator ssh daemon on port 22

 

# Copy the examply sshd config

cp /home/phd/phabricator/resources/sshd/sshd_config.phabricator.example /etc/ssh/sshd_config.phabricator.conf

# Edit AuthorizedKeysCommand, AuthorizedKeysCommandUser, and AllowUsers

vim /etc/ssh/sshd_config.phabricator

# Start the phabricator sshd

/usr/sbin/sshd -f /etc/ssh/sshd_config.phabricator

Now you should be able to run this command:

 

echo [] | ssh git@phabricator.mydomain.net conduit conduit.ping

And get output like this:

 

{"result":"orbital","error_code":null,"error_info":null}

Refer to the phabricator configuration guide for next steps:

At this point, you should be able to host and clone repositories via HTTP & SSH. Refer to the Diffusion Hosting Configuration Guide for trouble-shooting.

TAG •

List of Articles
No. Subject Author Date Views
44 프로세스 능력 성숙도 모델(CMMI)의 적용 digipine 2017.10.28 698
43 VSCode 에서 한글 특수문자 부분 만 검색하기 file digipine 2021.10.25 675
42 리눅스 커널의 Swap Memory에 대해서 digipine 2017.11.02 675
41 MacOS 10.12.2 (OSX) 보안 취약점 공격 기초 digipine 2017.11.02 663
40 WIN CE C++ 시리얼 제어 방법 digipine 2017.10.28 631
39 Ubuntu 12.0.4 LTS에 Nabi 나비 설치하기 digipine 2017.11.03 620
38 소프트웨어 테스팅 전문가들을 위한 사이트 digipine 2017.11.02 610
37 MacOS 10.12.2 (OSX) 보안 취약점 공격 코드 digipine 2017.11.02 606
36 임베디드SW 개발자센터 이용안내(성남시 분당구, 개발공간 무료제공) digipine 2017.11.02 590
35 Thread간 동기화관리자 digipine 2017.10.28 572
34 WPA_SUPPLICANT 빌드 방법 digipine 2017.11.01 544
33 Certbot으로 무료 인증서 발급 받기 digipine 2020.09.03 529
32 우분투 18.04 MongoDB 설치 및 구성 lizard2019 2021.02.26 503
31 Docker Compute Engine Ubuntu에서 Docker 설치 방법 lizard2019 2021.04.15 463
30 Windows에서 SVN 용 폴더 한 번에 삭제하기 digipine 2017.10.29 463
29 MongoDB 설치 및 C 개발 도구 설정 1 digipine 2020.09.03 449
28 NMEA-0183을 이용한 GPS 애플리케이션 제작 digipine 2017.10.28 446
27 XCode 사용시 git ignore 로 xcuserstate 충돌 해결하기, .gitignore에 등록했는데도 동작안할때 해결방법 lizard2019 2022.09.25 441
» Phabricator Ubuntu Installation Guide digipine 2022.01.26 440
25 Mac Address 를 String 으로 변환하는 간편한 방법 digipine 2017.11.02 437
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6