1+ #! /bin/bash
2+
3+ confirm () {
4+ echo " Press RETURN to continue, or ^C to cancel." ;
5+ read -e ignored
6+ }
7+
8+ RHEL_VER_FILE=" /etc/redhat-release"
9+
10+ if [[ ! -f $RHEL_VER_FILE ]]
11+ then
12+ echo " It looks like you're not running a Red Hat-derived distribution."
13+ echo " This script is intended to install Phabricator on RHEL-derived"
14+ echo " distributions such as RHEL, Fedora, CentOS, and Scientific Linux."
15+ echo " Proceed with caution."
16+ confirm
17+ fi
18+
19+ echo " PHABRICATOR RED HAT DERIVATIVE INSTALLATION SCRIPT" ;
20+ echo " This script will install Phabricator and all of its core dependencies." ;
21+ echo " Run it from the directory you want to install into." ;
22+ echo
23+
24+ RHEL_REGEX=" release ([0-9]+)\."
25+
26+ if [[ $( cat $RHEL_VER_FILE ) =~ $RHEL_REGEX ]]
27+ then
28+ RHEL_MAJOR_VER=${BASH_REMATCH[1]}
29+ else
30+ echo " Ut oh, we were unable to determine your distribution's major"
31+ echo " version number. Please make sure you're running 6.0+ before"
32+ echo " proceeding."
33+ confirm
34+ fi
35+
36+ if [[ $RHEL_MAJOR_VER < 6 ]]
37+ then
38+ echo " ** WARNING **"
39+ echo " A major version less than 6 was detected. Because of this,"
40+ echo " several needed dependencies are not available via default repos."
41+ echo " Specifically, RHEL 5 does not have a PEAR package for php53-*."
42+ echo " We will attempt to install it manually, for APC. Please be careful."
43+ confirm
44+ fi
45+
46+ ROOT=` pwd`
47+ echo " Phabricator will be installed to: ${ROOT} ." ;
48+ confirm
49+
50+ echo " Testing sudo/root..."
51+ SUDO=" "
52+ if [[ $EUID -ne 0 ]] # Check if we're root. If we are, continue.
53+ then
54+ sudo true
55+ SUDO=" sudo"
56+ if [[ $? -ne 0 ]]
57+ then
58+ echo " ERROR: You must be able to sudo to run this script, or run it as root." ;
59+ exit 1
60+ fi
61+
62+ fi
63+
64+ if [[ $RHEL_MAJOR_VER == 5 ]]
65+ then
66+ # RHEL 5's "php" package is actually 5.1. The "php53" package won't let us install php-pecl-apc.
67+ # (it tries to pull in php 5.1 stuff) ...
68+ echo " Adding EPEL repo, for git."
69+ $SUDO rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
70+ YUMCOMMAND=" $SUDO yum install httpd git php53 php53-cli php53-mysql php53-process php53-devel php53-gd gcc wget make pcre-devel"
71+ else
72+ # RHEL 6+ defaults with php 5.3
73+ YUMCOMMAND=" $SUDO yum install httpd git php php-cli php-mysql php-process php-devel php-gd php-pecl-apc php-pecl-json"
74+ fi
75+
76+ echo " Dropping to yum to install dependencies..."
77+ echo " Running: ${YUMCOMMAND} "
78+ echo " Yum will prompt you with [Y/n] to continue installing."
79+
80+ $YUMCOMMAND
81+
82+ if [[ $? -ne 0 ]]
83+ then
84+ echo " The yum command failed. Please fix the errors and re-run this script."
85+ exit 1
86+ fi
87+
88+ if [[ $RHEL_MAJOR_VER == 5 ]]
89+ then
90+ # Now that we've ensured all the devel packages required for pecl/apc are there, let's
91+ # set up PEAR, and install apc.
92+ echo " Attempting to install PEAR"
93+ wget http://pear.php.net/go-pear.phar
94+ echo " Downloading PEAR: $PEARCOMMAND "
95+ $SUDO php go-pear.phar && $SUDO pecl install apc
96+ fi
97+
98+ if [[ $? -ne 0 ]]
99+ then
100+ echo " The apc install failed. Continuing without APC, performance may be impacted."
101+ fi
102+
103+ if [[ " $( pidof httpd) " ]]
104+ then
105+ echo " If php was installed above, please run: /etc/init.d/httpd graceful"
106+ else
107+ echo " Please remember to start the httpd with: /etc/init.d/httpd start"
108+ fi
109+
110+ if [[ ! " $( pidof mysql) " ]]
111+ then
112+ echo " Please remember to start the mysql server: /etc/init.d/mysqld start"
113+ fi
114+
115+ confirm
116+
117+ if [[ ! -e libphutil ]]
118+ then
119+ git clone git://github.com/facebook/libphutil.git
120+ else
121+ (cd libphutil && git pull --rebase)
122+ fi
123+
124+ if [[ ! -e arcanist ]]
125+ then
126+ git clone git://github.com/facebook/arcanist.git
127+ else
128+ (cd arcanist && git pull --rebase)
129+ fi
130+
131+ if [[ ! -e phabricator ]]
132+ then
133+ git clone git://github.com/facebook/phabricator.git
134+ else
135+ (cd phabricator && git pull --rebase)
136+ fi
137+
138+ (cd phabricator && git submodule update --init)
139+
140+ echo
141+ echo
142+ echo " Install probably worked mostly correctly. Continue with the 'Configuration Guide':" ;
143+ echo
144+ echo " http://phabricator.com/docs/phabricator/article/Configuration_Guide.html" ;
0 commit comments