Ubuntu 16.04 Vagrant PHP 7.0 Nginx
Wed, 18 July 2018
Vagrantfile
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "ubuntu/xenial64" config.vm.hostname = "Web-Server" config.vm.box_url = "https://vagrantcloud.com/ubuntu/boxes/xenial64" config.vm.network "forwarded_port", guest: 80, host: 8080 config.vm.network "forwarded_port", guest: 3306, host: 3306 config.vm.provision :shell, path: "vagrant/provision.sh" end
vagrant/nginx.conf
server { listen 80; index index.php; set $root_path '/var/www/public'; root $root_path; try_files $uri $uri/ @rewrite; keepalive_timeout 2; sendfile off; location @rewrite { rewrite ^/(.*)$ /index.php?_url=/$1; } location ~ \\.php { #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index /index.php; include /etc/nginx/fastcgi_params; fastcgi_split_path_info ^(.+\\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~* ^/(css|img|js|flv|swf|download)/(.+)$ { root $root_path; } location ~ /\\.ht { deny all; } client_max_body_size 100M; }
vagrant/schema.sql
CREATE DATABASE IF NOT EXISTS `site_db` /*!40100 DEFAULT CHARACTER SET utf8 */; use site_db; CREATE TABLE `test_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `example_field` varchar(45) NOT NULL PRIMARY KEY (`id`), UNIQUE KEY `example_field_UNIQUE` (`example_field`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
vagrant/provision.sh
#!/usr/bin/env bash echo "Beginning provisioning" sudo apt-get update sudo apt-get upgrade -y sudo apt-get install -y python-software-properties memcached vim git-core gcc autoconf make zip unzip nginx \\ build-essential libpcre3-dev php7.0-fpm curl php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick \\ php7.0-imap php7.0-mcrypt php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl \\ php7.0-mbstring php-gettext php-memcache php-pear php-gettext php-apcu mysql --version > /dev/null 2>&1 MYSQL_IS_INSTALLED=$? if [ ${MYSQL_IS_INSTALLED} -gt 0 ]; then sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password password" sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password password" sudo apt-get install -y mysql-server mysql-client sudo service mysql stop fi sudo rm /etc/nginx/sites-enabled/default >> /dev/null sudo cp /vagrant/vagrant/nginx.conf /etc/nginx/sites-enabled/vagrant sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.0/fpm/php.ini sudo sed -i 's/post_max_size = 8M/post_max_size = 1024M/g' /etc/php/7.0/fpm/php.ini echo "Configuring nginx" sudo rm -rf /var/www sudo ln -s /vagrant /var/www sudo service nginx restart sudo service php7.0-fpm restart sudo service mysql restart mysql -uroot -ppassword < /vagrant/vagrant/schema.sql
public/index.php
<?php echo "Yes, it's running";