-
-
Save bsormagec/84d64fa3ae12f7e7c167c4b9a176b8cd to your computer and use it in GitHub Desktop.
Laravel 5.4, apache2 and redis
This file contains hidden or 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
| # -*- 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