Skip to content

Instantly share code, notes, and snippets.

@bsormagec
Forked from neilndev/Vagrantfile
Created November 12, 2017 09:13
Show Gist options
  • Select an option

  • Save bsormagec/84d64fa3ae12f7e7c167c4b9a176b8cd to your computer and use it in GitHub Desktop.

Select an option

Save bsormagec/84d64fa3ae12f7e7c167c4b9a176b8cd to your computer and use it in GitHub Desktop.
Laravel 5.4, apache2 and redis
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = '2'
@script = <<SCRIPT
# Variables
db_host=127.0.0.1
root_passwd=sat
db_name=uprojectdb
db_user=uproject
db_passwd=uprojectpassword
if [ ! -f /var/log/preparesetup ]; then
# Install dependencies
add-apt-repository ppa:ondrej/php
apt-get update
apt-get install -y git curl php5.6 php5.6-mysql php5.6-curl php5.6-common php5.6-cli php5.6-mbstring php5.6-bcmath php5.6-xml php5.6-json php5.6-intl php5.6-mcrypt php5.6-gd php5.6-zip php5.6-bz2 vim build-essential
curl -Ss https://getcomposer.org/installer | php
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo mv composer.phar /usr/bin/composer
sudo touch /var/log/preparesetup
fi
echo "[APACHE, PHP5.6 & MEMCACHED] Installing..."
if [ ! -f /var/log/apache2setup ]; then
sudo apt-get install -y apache2 libapache2-mod-php5.6 php-pear php5.6-memcache memcached >> /dev/null 2>&1
# Configure Apache
echo "<VirtualHost *:80>
DocumentRoot /var/www/public
AllowEncodedSlashes On
<Directory /var/www/public>
Options +Indexes +FollowSymLinks
DirectoryIndex index.php index.html
Order allow,deny
Allow from all
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>" > /etc/apache2/sites-available/uschool.conf
sudo a2dissite /etc/apache2/sites-available/000-default.conf
sudo a2ensite /etc/apache2/sites-available/uschool.conf
sudo a2enmod rewrite
sudo service memcached restart
sudo service apache2 restart
sudo touch /var/log/apache2setup
fi
echo "[APACHE, PHP5.6 & MEMCACHED] DONE!"
# MYSQL
echo "[MYSQL] Preparing..."
if [ ! -f /var/log/mysqlsetup ]; then
sudo apt-get install -y debconf-utils >> /dev/null 2>&1
echo "mysql-server-5.7 mysql-server/root_password password $root_passwd" | debconf-set-selections
echo "mysql-server-5.7 mysql-server/root_password_again password $root_passwd" | debconf-set-selections
echo "[MYSQL] Installing MySQL..."
sudo apt-get install -y mysql-server-5.7 mysql-client
echo "[MYSQL] Re-Config..."
# Allow remote connections to mysql (don't do it like this in production)
sudo sed -i 's/bind-address = 127.0.0.1/bind-address = 0.0.0.0/' /etc/mysql/my.cnf
if [ ! -f /var/mysql ]; then
sudo mkdir /var/mysql
fi
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
sudo service mysql restart
mysql_upgrade -uroot -p$root_passwd
sudo touch /var/log/mysqlsetup
fi
echo "[REDIS] Installing..."
if [ ! -f /var/log/redissetup ]; then
sudo apt-get install -y redis-server redis-tools
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.old
sudo cat /etc/redis/redis.conf.old | grep -v bind > /etc/redis/redis.conf
echo "bind 0.0.0.0" >> /etc/redis/redis.conf
sudo update-rc.d redis-server defaults
redis-server --daemonize yes
sudo touch /var/log/redissetup
fi
echo "[REDIS] DONE!!!"
echo "[MYSQL] inital for new databases..."
if [ ! -f /var/log/init_newdb ]; then
echo "[MYSQL] create user and grant privileges..."
echo "CREATE DATABASE $db_name;" | mysql -uroot -p$root_passwd
echo "CREATE USER '$db_user'@'$db_host' IDENTIFIED BY '$db_passwd';" | mysql -uroot -p$root_passwd
echo "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'$db_host';" | mysql -uroot -p$root_passwd
echo "FLUSH PRIVILEGES;" | mysql -uroot -p$root_passwd
echo "SET GLOBAL sql_mode = '';" | mysql -uroot -p$root_passwd
sudo touch /var/log/init_newdb
fi
echo "[MYSQL] DONE!"
echo "insert \"192.168.56.58 u-project.vn\" into hosts file"
SCRIPT
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = 'ubuntu/xenial64'
# config.vm.network "forwarded_port", guest: 5000, host: 5000
# config.vm.network "forwarded_port", guest: 11211, host: 11211
# config.vm.network "forwarded_port", guest: 6379, host: 6379
# config.vm.network "forwarded_port", guest: 3306, host: 3306
# config.vm.network "public_network", ip: "192.168.1.7"
config.vm.network "private_network", ip: "192.168.56.58"
config.vm.synced_folder './project', '/var/www', :mount_options => ['dmode=777,fmode=666']
config.vbguest.auto_update = false
# Fix dns/update issue
config.vm.provision :shell, run: "always" do |s|
s.inline = <<-EOT
if [ ! -f /var/log/dnssetup ];
then
export DEBIAN_FRONTEND=noninteractive
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
echo -e "\n ==== FIX DNS ===== \n"
sudo su
# Repair "==> default: stdin: is not a tty" message
sed -i '/tty/!s/mesg n/tty -s \\&\\& mesg n/' /root/.profile
if ! grep -q "uschool.zuni.vn" /etc/hosts; then
echo "127.0.0.1 uschool.zuni.vn" >> /etc/hosts
fi
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
service resolvconf restart
cat /etc/resolv.conf
touch /var/log/dnssetup
exit
fi
EOT
end
config.vm.provision 'shell', inline: @script
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "1824"]
vb.customize ["modifyvm", :id, "--name", "uproject - xenial64"]
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment