envdev/lamp-trusty64-fpm/bootstrap.sh
2017-03-28 15:59:00 +02:00

194 lines
7.9 KiB
Bash
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
VARGANTDEV=1
DIR=/vagrant
DIRDATA=$DIR/data
MYSQL_PASS=scores
MARIADB_VERSION="10.1"
PHPMYADMIN_VERSION="4.6.6"
# --- Add a file action.upgrade to perfom a system upgrade
if [ -f $DIR/action.upgrade ]; then
sudo apt-get update
sudo apt-get -y upgrade
sudo rm -rf $DIR/action.upgrade
fi
# --- Installation Wkhtmltopdf
if [ ! -f /usr/local/bin/wkhtmltopdf ]; then
sudo apt-get install libxrender1 libfontconfig1
wget -q http://download.gna.org/wkhtmltopdf/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
tar xJf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
cp -R wkhtmltox/* /usr/local/
rm -rf wkhtmltox*
fi
# --- Database
if [ $VARGANTDEV -eq 1 ]; then
# --- Installation MariaDB
if [ ! -f /etc/mysql/vagrant ]; then
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb [arch=amd64,i386] http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.1/ubuntu trusty main'
sudo apt-get update
sudo debconf-set-selections <<< "mariadb-server-$MARIADB_VERSION mysql-server/root_password password $MYSQL_PASS"
sudo debconf-set-selections <<< "mariadb-server-$MARIADB_VERSION mysql-server/root_password_again password $MYSQL_PASS"
sudo apt-get -y install mariadb-server mariadb-client
sudo sed -i -e 's/bind-address[ \t]*= 127.0.0.1/bind-address = 0.0.0.0/g' /etc/mysql/my.cnf
sudo sed -i -e 's/max_connections[ \t]*= 100/max_connections = 20/g' /etc/mysql/my.cnf
sudo service mysql restart
sudo touch /etc/mysql/vagrant
fi
else
# --- Installation MySQL Server
if [ ! -f /etc/mysql/vagrant ]; then
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password $MYSQL_PASS"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $MYSQL_PASS"
sudo apt-get -y install mysql-server mysql-client
sudo sed -i -e 's/bind-address[ \t]*= 127.0.0.1/bind-address = 0.0.0.0/g' /etc/mysql/my.cnf
sudo sed -i -e 's/max_connections[ \t]*= 100/max_connections = 20/g' /etc/mysql/my.cnf
sudo service mysql restart
sudo touch /etc/mysql/vagrant
fi
fi
# --- PHP
if [ ! -f /usr/bin/php5 ]; then
# Get apache2.4 from backports
sudo cp -f $DIRDATA/apt/preferences /etc/apt/preferences
# Install
sudo apt-get update
sudo apt-get -y install htop unzip apache2 php5-cli php5-fpm php5-mcrypt php5-curl php5-xmlrpc \
php5-xsl php5-mysqlnd php5-gd php5-json php5-intl php5-imagick php5-apcu
if [ $VARGANTDEV -eq 1 ]; then
sudo apt-get -y install php5-xdebug
fi
sudo a2enmod autoindex deflate expires headers rewrite actions proxy proxy_fcgi
sudo cp -f $DIRDATA/Apache/phpfcgi.conf /etc/apache2/conf-available/phpfcgi.conf
sudo a2enconf phpfcgi
# --- Configuration PHP / CLI
if [ -f /etc/php5/cli/php.ini ]; then
sudo sed -i -e 's/short_open_tag = Off/short_open_tag = On/g' /etc/php5/cli/php.ini
sudo sed -i -e 's/;mbstring.internal_encoding = UTF-8/mbstring.internal_encoding = UTF-8/g' /etc/php5/cli/php.ini
sudo sed -i -e 's/;date.timezone =/date.timezone = Europe\/Paris/g' /etc/php5/cli/php.ini
fi
# --- Configuration PHP FPM
if [ -f /etc/php5/fpm/php.ini ]; then
sudo sed -i -e 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php5/fpm/php.ini
sudo sed -i -e 's/short_open_tag = Off/short_open_tag = On/g' /etc/php5/fpm/php.ini
sudo sed -i -e 's/;mbstring.internal_encoding = UTF-8/mbstring.internal_encoding = UTF-8/g' /etc/php5/fpm/php.ini
sudo sed -i -e 's/;date.timezone =/date.timezone = Europe\/Paris/g' /etc/php5/fpm/php.ini
sudo sed -i -e 's/post_max_size = 8M/post_max_size = 50M/g' /etc/php5/fpm/php.ini
sudo sed -i -e 's/upload_max_filesize = 2M/upload_max_filesize = 50M/g' /etc/php5/fpm/php.ini
sudo sed -i -e 's/session.gc_maxlifetime = 1440/session.gc_maxlifetime = 86400/g' /etc/php5/fpm/php.ini
sudo sed -i -e 's/;opcache.enable=0/opcache.enable=1/g' /etc/php5/fpm/php.ini
sudo cp -f $DIRDATA/PHP/xdebug.ini /etc/php5/mods-available/xdebug.ini
# Pool user
sudo sed -i -e 's/user = www-data/user = vagrant/g' /etc/php5/fpm/pool.d/www.conf
sudo sed -i -e 's/group = www-data/group = vagrant/g' /etc/php5/fpm/pool.d/www.conf
sudo sed -i -e 's/listen.group = vagrant/listen.group = www-data/g' /etc/php5/fpm/pool.d/www.conf
# --- Browscap
sudo cp -f $DIRDATA/PHP/php_browscap.ini /etc/php5/fpm/
sudo sed -i -e 's/;browscap = extra\/browscap.ini/browscap = \/etc\/php5\/fpm\/php_browscap.ini/g' /etc/php5/fpm/php.ini
fi
# --- ChartDirector
if [ ! -f /usr/lib/php5/20121212/chartdir.lic ]; then
sudo cp -R $DIRDATA/ChartDirector/lib/fonts /usr/lib/php5/20121212/
sudo chown -R 777 /usr/lib/php5/20121212/fonts
sudo cp $DIRDATA/ChartDirector/lib/libchartdir.so /usr/lib/php5/20121212/
sudo cp $DIRDATA/ChartDirector/lib/phpchartdir550.dll /usr/lib/php5/20121212/
sudo cp $DIRDATA/ChartDirector/chartdir.lic /usr/lib/php5/20121212/
sudo cp $DIRDATA/ChartDirector/chartdir.ini /etc/php5/mods-available/
sudo php5enmod chartdir
fi
sudo service php5-fpm restart
fi
# --- Installation mailcatcher
if [ ! -f /usr/local/bin/mailcatcher ]; then
sudo apt-get install -y build-essential software-properties-common
sudo apt-get install -y libsqlite3-dev ruby1.9.1-dev
sudo gem install mime-types --version "< 3"
sudo gem install --conservative mailcatcher
echo "@reboot root $(which mailcatcher) --http-ip=0.0.0.0" >> /etc/crontab
sudo sed -i -e 's/;sendmail_path =/sendmail_path = \/usr\/bin\/env catchmail -f local@sd.dev/g' /etc/php5/cli/php.ini
sudo sed -i -e 's/;sendmail_path =/sendmail_path = \/usr\/bin\/env catchmail -f local@sd.dev/g' /etc/php5/fpm/php.ini
fi
# --- Composer
if [ ! -f /usr/local/bin/composer ]; then
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
fi
# --- Installation phpMyAdmin
PHPMYADMIN_DIR="phpMyAdmin-$PHPMYADMIN_VERSION-all-languages"
PHPMYADMIN_URL="https://files.phpmyadmin.net/phpMyAdmin"
if [ ! -d "/home/vhosts/$PHPMYADMIN_DIR" ]; then
wget -q "$PHPMYADMIN_URL/$PHPMYADMIN_VERSION/$PHPMYADMIN_DIR.tar.xz" -O "/home/vagrant/$PHPMYADMIN_DIR.tar.xz"
if [ -f "/home/vagrant/$PHPMYADMIN_DIR.tar.xz" ]; then
tar xJvf "/home/vagrant/$PHPMYADMIN_DIR.tar.xz" --directory /home/vhosts/
mysql -uroot -p$MYSQL_PASS < /home/vhosts/$PHPMYADMIN_DIR/sql/create_tables.sql
mysql -uroot -p$MYSQL_PASS < $DIRDATA/Apps/phpmyadmin.sql
sudo service mysql restart
cp $DIRDATA/Apps/config.inc.php /home/vhosts/$PHPMYADMIN_DIR/
chmod 0644 /home/vhosts/$PHPMYADMIN_DIR/config.inc.php
fi
fi
# --- Configuration Apache
if [ ! -f /etc/apache2/conf-available/httpd.conf ]; then
sudo echo "ServerName 127.0.0.1" > /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
fi
# --- Disable all website
cd /etc/apache2/sites-available/
for f in *.conf; do
if [ $f = "000-default.conf" ]; then
continue
fi
if [ $f = "default-ssl.conf" ]; then
continue
fi
sudo a2dissite $f;
sudo rm -vf /etc/apache2/sites-available/$f;
done;
# --- phpmyadmin.sd.dev
cp -f $DIRDATA/Apache/phpmyadmin.conf $DIR/vhosts/phpmyadmin.conf
sed -i -e "s/VERSION/$PHPMYADMIN_VERSION/" $DIR/vhosts/phpmyadmin.conf
# --- test.sd.dev
cp -f $DIRDATA/Apache/test.conf $DIR/vhosts/test.conf
if [ ! -d /home/vhosts/test ]; then
sudo mkdir /home/vhosts/test
fi
# --- Copy Vhosts files
VHOSTS='000-default.conf'
cd $DIR/vhosts/
for f in *.conf; do
if [ $f = "000-default.conf" ]; then
continue
fi
if [ $f = "default-ssl.conf" ]; then
continue
fi
if [ -f $f ]; then
sudo cp -vf $f /etc/apache2/sites-available/
VHOSTS+=" $f"
fi
done;
sudo a2ensite $VHOSTS
# --- Restart apache
sudo service apache2 restart