Skip to content

Instantly share code, notes, and snippets.

@arthurprogramming
Last active September 23, 2016 15:27
Show Gist options
  • Save arthurprogramming/6a68c6152a9e4650ab34 to your computer and use it in GitHub Desktop.
Save arthurprogramming/6a68c6152a9e4650ab34 to your computer and use it in GitHub Desktop.
#!/bin/bash
if [ ! -z $(which whiptail) ];
then
DIALOGPROGRAM="whiptail"
elif [ ! -z $(which dialog) ];
then
DIALOGPROGRAM="dialog"
else
echo -e "You need 'whiptail' or 'dialog' to use this script"
exit 1
fi
if [ $UID -ne 0 ];
then
$DIALOGPROGRAM --msgbox "You need run this script with sudo!" 10 60
exit 1
elif [ $HOME == "/root" ];
then
$DIALOGPROGRAM --msgbox "Please, run with sudo, but not as root user!" 10 60
exit 1
fi
if [ -z $LOGFILE ];
then
LOGFILE="/tmp/myenvironment-`date +'%Y-%m-%d_%H-%M-%S'`".log
touch $LOGFILE
$DIALOGPROGRAM --msgbox "To see what's going on:\n tail -f $LOGFILE" 10 60
fi
{
sudo apt-get build-dep php5 -y >> $LOGFILE 2>> $LOGFILE
PACKAGES=("php5-dev" "php-pear" "autoconf" "automake" "curl" "build-essential" "libxslt1-dev" "re2c" "libxml2" "libxml2-dev" "php5-cli" "bison" "libbz2-dev" "libreadline-dev" "libfreetype6" "libfreetype6-dev" "libpng12-0" "libpng12-dev" "libjpeg-dev" "libjpeg8-dev" "libjpeg8" "libgd-dev" "libgd3" "libxpm4" "libltdl7" "libltdl-dev" "libssl-dev" "openssl" "gettext" "libgettextpo-dev" "libgettextpo0" "libicu-dev" "libmhash-dev" "libmhash2" "libmcrypt-dev" "libmcrypt4")
NUMPACKAGES=${#PACKAGES[@]}
PROGRESS=$((100 / $NUMPACKAGES))
START=0
for PACKAGE in ${PACKAGES[@]}
do
sudo apt-get install $PACKAGE -y >> $LOGFILE 2>> $LOGFILE
START=$(($START+1))
echo $START
done
echo 100
sleep 1
} > >($DIALOGPROGRAM --gauge "Installing php requirements..." 6 50 0)
$DIALOGPROGRAM --msgbox "Done" 8 30
{
echo 25
curl -sL -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew >> $LOGFILE 2>&1
echo 75
chmod +x phpbrew >> $LOGFILE 2>> $LOGFILE
sudo mv phpbrew /usr/bin/phpbrew >> $LOGFILE 2>> $LOGFILE
phpbrew init >> $LOGFILE
echo "source ~/.phpbrew/bashrc" >> ~/.bashrc
source ~/.bashrc
phpbrew update >> $LOGFILE
echo 99
sleep 1
} > >($DIALOGPROGRAM --gauge "Installing phpbrew..." 6 50 0)
$DIALOGPROGRAM --msgbox "Done" 8 30
ALLVERSIONS=`phpbrew known | grep -o '[0-9]\.[0-9]\.[0-9]\{2\}'`
TITLE="Versions available"
MENU="Choose the versions you wanna install"
OPTIONS=()
for VERSIONPHP in $ALLVERSIONS;
do
OPTIONS+=($VERSIONPHP $VERSIONPHP "OFF")
done
PHPVERSIONS=$($DIALOGPROGRAM --title "$TITLE" --checklist "$MENU" 30 30 16 ${OPTIONS[@]} 3>&1 1>&2 2>&3)
FPMPORT=9001
for VERSIONPHP in ${PHPVERSIONS[@]}
do
VERSIONPHP=${VERSIONPHP#'"'}
VERSIONPHP=${VERSIONPHP%'"'}
{
echo 5
sleep 1
phpbrew install $VERSIONPHP +default +fpm +dbs +mb +iconv +mcrypt +soap >> $LOGFILE 2>> $LOGFILE
echo 50
sed -i.bak s/127\.0\.0\.1:900./127\.0\.0\.1:$FPMPORT/g ~/.phpbrew/php/php-$VERSIONPHP/etc/php-fpm.conf >> $LOGFILE 2>> $LOGFILE
. ~/.phpbrew/bashrc
phpbrew use $VERSIONPHP >> $LOGFILE 2>> $LOGFILE
phpbrew ext install xdebug >> $LOGFILE 2>> $LOGFILE
echo 75
echo 99
sleep 1
} > >($DIALOGPROGRAM --gauge "Installing php version $VERSIONPHP" 6 50 0)
$DIALOGPROGRAM --msgbox "Done.\nFpm for $VERSIONPHP will be running at port $FPMPORT" 8 60
FPMPORT=$(($FPMPORT+1))
done
phpbrew off >> $LOGFILE
$DIALOGPROGRAM --msgbox "To use a version (you should create an alias):\n \
phpbrew use 5.5.17\nTo start fpm for this version:\n \
phpbrew fpm start" 10 58
clear
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment