Last active
July 1, 2016 14:56
-
-
Save charlesastwood/281ae28da56ff3dfb99f62edd7df8db3 to your computer and use it in GitHub Desktop.
Vagrant Ubuntu Setup for Symfony
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# --------------------------------------- | |
# Virtual Machine Setup | |
# --------------------------------------- | |
# Adding multiverse sources. | |
cat > /etc/apt/sources.list.d/multiverse.list << EOF | |
deb http://archive.ubuntu.com/ubuntu trusty multiverse | |
deb http://archive.ubuntu.com/ubuntu trusty-updates multiverse | |
deb http://security.ubuntu.com/ubuntu trusty-security multiverse | |
EOF | |
# Updating packages | |
apt-get update | |
# --------------------------------------- | |
# Apache Setup | |
# --------------------------------------- | |
# Installing Packages | |
apt-get install -y apache2 libapache2-mod-fastcgi apache2-mpm-worker | |
# linking Vagrant directory to Apache 2.4 public directory | |
rm -rf /var/www | |
ln -fs /vagrant /var/www | |
# Add ServerName to httpd.conf | |
echo "ServerName localhost" > /etc/apache2/httpd.conf | |
# Setup hosts file | |
VHOST=$(cat <<EOF | |
<VirtualHost *:80> | |
DocumentRoot "/var/www/web" | |
ServerName localhost | |
<Directory "/var/www/web"> | |
AllowOverride All | |
</Directory> | |
</VirtualHost> | |
EOF | |
) | |
echo "${VHOST}" > /etc/apache2/sites-enabled/000-default.conf | |
# Loading needed modules to make apache work | |
a2enmod actions fastcgi rewrite | |
service apache2 reload | |
# --------------------------------------- | |
# PHP Setup | |
# --------------------------------------- | |
# Installing packages | |
apt-get install -y php5 php5-cli php5-fpm curl php5-curl php5-mcrypt php5-xdebug | |
# Creating the configurations inside Apache | |
cat > /etc/apache2/conf-available/php5-fpm.conf << EOF | |
<IfModule mod_fastcgi.c> | |
AddHandler php5-fcgi .php | |
Action php5-fcgi /php5-fcgi | |
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi | |
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization | |
# NOTE: using '/usr/lib/cgi-bin/php5-cgi' here does not work, | |
# it doesn't exist in the filesystem! | |
<Directory /usr/lib/cgi-bin> | |
Require all granted | |
</Directory> | |
</IfModule> | |
EOF | |
echo 'Setting up Xdebug' | |
mkdir -p /var/log/xdebug | |
chmod 777 /var/log/xdebug | |
XdebugFile=`find /usr/lib/php5/ -name 'xdebug.so'|head -1` | |
cat > /etc/php5/mods-available/xdebug.ini <<EOF | |
; configuration for php xdebug module | |
; priority=20 | |
zend_extension=$XdebugFile | |
xdebug.remote_enable = on | |
xdebug.remote_connect_back = on | |
xdebug.remote_handler = dbgp | |
xdebug.remote_mode = req | |
xdebug.remote_port = 9000 | |
xdebug.remote_log = /var/log/xdebug/xdebug.log | |
xdebug.profiler_output_dir = /var/log/xdebug | |
xdebug.profiler_enable_trigger = on | |
xdebug.max_nesting_level = 200 | |
xdebug.idekey = VAGRANT | |
EOF | |
# Enabling php modules | |
php5enmod mcrypt | |
# Triggering changes in apache | |
a2enconf php5-fpm | |
service apache2 reload | |
# --------------------------------------- | |
# MySQL Setup | |
# --------------------------------------- | |
# Setting MySQL root user password root/root | |
debconf-set-selections <<< 'mysql-server mysql-server/root_password password root' | |
debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password root' | |
# Installing packages | |
apt-get install -y mysql-server mysql-client php5-mysql | |
# --------------------------------------- | |
# PHPMyAdmin setup | |
# --------------------------------------- | |
# Default PHPMyAdmin Settings | |
debconf-set-selections <<< 'phpmyadmin phpmyadmin/dbconfig-install boolean true' | |
debconf-set-selections <<< 'phpmyadmin phpmyadmin/app-password-confirm password root' | |
debconf-set-selections <<< 'phpmyadmin phpmyadmin/mysql/admin-pass password root' | |
debconf-set-selections <<< 'phpmyadmin phpmyadmin/mysql/app-pass password root' | |
debconf-set-selections <<< 'phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2' | |
# Install PHPMyAdmin | |
apt-get install -y phpmyadmin | |
# Make Composer available globally | |
ln -s /etc/phpmyadmin/apache.conf /etc/apache2/sites-enabled/phpmyadmin.conf | |
# Restarting apache to make changes | |
service apache2 restart | |
# --------------------------------------- | |
# Tools Setup. | |
# --------------------------------------- | |
# These are some extra tools that you can remove if you will not be using them | |
# They are just to setup some automation to your tasks. | |
# Adding NodeJS from Nodesource. This will Install NodeJS Version 5 and npm | |
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - | |
sudo apt-get install -y nodejs | |
# Installing Bower and Gulp | |
npm install -g bower gulp | |
# Installing GIT | |
apt-get install -y git | |
# Install Composer | |
curl -s https://getcomposer.org/installer | php | |
mv composer.phar /usr/local/bin/composer | |
# Install Symfony | |
sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony | |
sudo chmod a+x /usr/local/bin/symfony | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment