Created
December 13, 2013 20:33
-
-
Save m-maranan/7950891 to your computer and use it in GitHub Desktop.
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 | |
# Configurable variables | |
database='vagrant' | |
username='vagrant' | |
password='vagrant' | |
echo '' | |
echo ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' | |
echo ' Bootstrapping Ubuntu Precise 32bit for Laravel 4' | |
echo ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' | |
echo ' Apache 2.2.22, PHP 5.5, MySQL 5.5' | |
echo ' Vim, cURL, Git, Composer, pip, HTTPie' | |
echo '' | |
echo 'Created for Laravel 4 Starter Site' | |
echo '' | |
echo 'github.com/andrew13/Laravel-4-Bootstrap-Starter-Site' | |
echo '' | |
# --------------- | |
# Various fixes | |
# --------------- | |
echo '- Fixing locales issues with Ubuntu...' | |
dpkg-reconfigure locales >/dev/null | |
update-locale LANG=en_US.UTF-8 | |
echo '- Configuring timezone to UTC...' | |
echo \"Europe/London\" | sudo tee /etc/timezone | |
dpkg-reconfigure --frontend noninteractive tzdata | |
# ------------------------ | |
# Update and basic tools | |
# ------------------------ | |
echo '- Updating apt-get repositories...' | |
apt-get update >/dev/null | |
echo '...done' | |
# Install Vim | |
echo '- Installing vim...' | |
apt-get install -y vim >/dev/null | |
echo '...done' | |
# --------- | |
# PHP 5.5 | |
# --------- | |
echo '- Installing python-software-properties...' | |
apt-get install -y python-software-properties >/dev/null | |
echo '...done' | |
echo '- Adding PHP 5.5 PPA...' | |
add-apt-repository ppa:ondrej/php5 >/dev/null | |
echo '...done' | |
echo '- Updating apt-get repositories...' | |
apt-get update >/dev/null | |
echo '...done' | |
echo '- Installing PHP 5.5...' | |
apt-get install -y php5 >/dev/null | |
echo '...done' | |
echo '- Installing required PHP modules for Laravel 4...' | |
apt-get install -y php5-mcrypt >/dev/null | |
apt-get install -y php5-mysql >/dev/null | |
apt-get install -y php5-curl >/dev/null | |
echo '...done' | |
# --------------- | |
# Apache 2.2.22 | |
# --------------- | |
echo '- Installing Apache 2...' | |
apt-get install -y apache2 >/dev/null | |
echo "ServerName localhost" > /etc/apache2/httpd.conf | |
echo '...done' | |
echo '- Enabling Apache 2 mod_rewrite...' | |
a2enmod rewrite >/dev/null | |
# Restart apache | |
service apache2 restart >/dev/null | |
echo '...done' | |
echo '- Setting up Apache 2 virtual host...' | |
# Remove /var/www | |
rm -rf /var/www | |
# Symlink /vagrant to /var/www | |
ln -fs /vagrant /var/www | |
# Remove default virtual host file | |
a2dissite default >/dev/null | |
rm /etc/apache2/sites-available/default | |
# Setup new virtual host file | |
VHOST=$(cat <<EOF | |
<VirtualHost *:80> | |
ServerName localhost | |
DocumentRoot /var/www/public | |
<Directory /> | |
Options FollowSymLinks | |
AllowOverride All | |
</Directory> | |
<Directory /var/www/public/> | |
Options Indexes FollowSymLinks MultiViews | |
AllowOverride All | |
Order allow,deny | |
allow from All | |
</Directory> | |
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ | |
<Directory "/usr/lib/cgi-bin"> | |
AllowOverride All | |
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch | |
Order allow,deny | |
Allow from all | |
</Directory> | |
ErrorLog ${APACHE_LOG_DIR}/error.log | |
LogLevel warn | |
CustomLog ${APACHE_LOG_DIR}/access.log combined | |
</VirtualHost> | |
EOF | |
) | |
echo "${VHOST}" > /etc/apache2/sites-available/default | |
# Enable the new virtual host | |
a2ensite default >/dev/null | |
service apache2 reload >/dev/null | |
echo '...done' | |
# ----------- | |
# MySQL 5.5 | |
# ----------- | |
echo '- Installing MySQL...' | |
# Ignore the post install questions | |
export DEBIAN_FRONTEND=noninteractive | |
# Install MySQL quietly | |
apt-get -q -y install mysql-server >/dev/null | |
echo '...done' | |
# ------ | |
# cURL | |
# ------ | |
echo '- Installing cURL...' | |
apt-get install -y curl >/dev/null | |
echo '...done' | |
# ----- | |
# Git | |
# ----- | |
echo '- Installing Git...' | |
apt-get install -y git-core >/dev/null | |
echo '...done' | |
# ---------- | |
# Composer | |
# ---------- | |
echo '- Installing Composer...' | |
curl -s https://getcomposer.org/installer | php | |
# Make Composer available globally | |
mv composer.phar /usr/local/bin/composer | |
echo '...done' | |
# -------------- | |
# pip & HTTPie | |
# -------------- | |
echo '- Installing pip...' | |
curl -s http://python-distribute.org/distribute_setup.py | python | |
easy_install pip >/dev/null | |
echo '...done' | |
echo '- Installing HTTPie...' | |
pip install --upgrade httpie >/dev/null | |
rm distribute-0.6.48.tar.gz | |
echo '...done' | |
# ------------- | |
# Final setup | |
# ------------- | |
# Add aliases | |
sed -i '$a alias art="php artisan"' /home/vagrant/.bashrc | |
# Create script for python smtpd | |
SMTPD=$(cat <<EOF | |
#!/usr/bin/env bash | |
echo '' | |
echo 'Starting Python SMTP daemon...' | |
echo 'Listening to port 25' | |
echo 'Outgoing emails will display in this session' | |
echo 'Ctrl-C to quit' | |
sudo python -m smtpd -n -c DebuggingServer localhost:25 | |
EOF | |
) | |
echo "${SMTPD}" > /usr/local/bin/pysmtpd | |
chmod +x /usr/local/bin/pysmtpd | |
# Create script for quick install | |
STARTER=$(cat <<EOF | |
#!/usr/bin/env bash | |
echo '' | |
echo 'Will run composer install --dev' | |
echo 'Then migrate and seed the databases' | |
echo '' | |
cd /vagrant | |
composer install --dev | |
php artisan migrate | |
php artisan db:seed | |
echo '' | |
echo 'Laravel Project Ready!!!' | |
echo '' | |
echo '----------------------------------------------' | |
echo ' Navigate to http://127.0.0.1:8080 on host OS' | |
echo '----------------------------------------------' | |
EOF | |
) | |
echo "${STARTER}" > /usr/local/bin/install-laravel | |
chmod +x /usr/local/bin/install-laravel | |
# Set up the database | |
echo "CREATE DATABASE IF NOT EXISTS $database" | mysql | |
echo "CREATE USER '$username'@'localhost' IDENTIFIED BY '$password'" | mysql | |
echo "GRANT ALL PRIVILEGES ON $database.* TO '$username'@'localhost' IDENTIFIED BY '$password'" | mysql | |
# Create default Laravel 4 app/config/vagrant folder template | |
mkdir /home/vagrant/templates | |
mkdir /home/vagrant/templates/vagrant | |
# Create app.php | |
APP=$(cat <<EOF | |
<?php | |
return array( | |
'debug' => true, | |
'url' => 'http://localhost', | |
'timezone' => 'UTC', | |
'key' => 'A8GcqzTd8Pt2EqspPbrQoGnfpbTCUPFq' | |
); | |
EOF | |
) | |
echo "${APP}" > /home/vagrant/templates/vagrant/app.php | |
# Create database.php | |
DATABASE=$(cat <<EOF | |
<?php | |
return array( | |
'fetch' => PDO::FETCH_CLASS, | |
'default' => 'mysql', | |
'connections' => array( | |
'mysql' => array( | |
'driver' => 'mysql', | |
'host' => 'localhost', | |
'database' => 'vagrant', | |
'username' => 'vagrant', | |
'password' => 'vagrant', | |
'charset' => 'utf8', | |
'collation' => 'utf8_unicode_ci', | |
'prefix' => '', | |
), | |
), | |
); | |
EOF | |
) | |
echo "${DATABASE}" > /home/vagrant/templates/vagrant/database.php | |
# Create mail.php | |
MAIL=$(cat <<EOF | |
<?php | |
return array( | |
'driver' => 'smtp', | |
'host' => 'localhost', | |
'port' => 25, | |
'from' => array( | |
'address' => '[email protected]', | |
'name' => 'Larvel 4 Starter Site' | |
), | |
); | |
EOF | |
) | |
echo "${MAIL}" > /home/vagrant/templates/vagrant/mail.php | |
echo '' | |
echo ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' | |
echo ' Bootstrapping done!' | |
echo ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' | |
echo '' | |
echo ' If you cloned the laravel 4 stater site from' | |
echo '' | |
echo 'github.com/andrew13/Laravel-4-Bootstrap-Starter-Site' | |
echo '' | |
echo ' Your next steps are:' | |
echo ' $ vagrant ssh' | |
echo ' vagrant@vagrant-laravel4:~$ install-laravel' | |
echo ' vagrant@vagrant-laravel4:~$ pysmtpd' | |
echo '' | |
echo ' Open http://127.0.0.1:8080 in your host OS' | |
echo '' | |
echo 'emails sent will open in the session running pysmtpd' | |
echo '' | |
echo ' Enjoy your new Laravel 4 ready virtual machine!' | |
echo '' | |
echo ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' | |
echo '' | |
echo 'For more information to setup other projects just as fast check the vagrantfile' | |
echo '' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment