88
99Vagrant . configure ( "2" ) do |config |
1010 # VM Box
11- #config.vm.box = "debian/testing64"
1211 config . vm . box = "ubuntu/bionic64"
13-
1412 # Automatic box update checking
1513 config . vm . box_check_update = true
1614
1715 # CodeIgniter virtual host
1816 config . vm . network "forwarded_port" , guest : 80 , host : 8080 , host_ip : "127.0.0.1"
1917 # Code Coverage virtual host
20- config . vm . network "forwarded_port" , guest : 8080 , host : 8081 , host_ip : "127.0.0.1"
18+ config . vm . network "forwarded_port" , guest : 81 , host : 8081 , host_ip : "127.0.0.1"
19+ # MySQL server
20+ #config.vm.network "forwarded_port", guest: 3306, host: 3307, host_ip: "127.0.0.1"
21+ # PostgreSQL server
22+ #config.vm.network "forwarded_port", guest: 5432, host: 5433, host_ip: "127.0.0.1"
23+
24+ # Add "192.168.10.10 ${VIRTUALHOST}" in your host file to access by domain
25+ #config.vm.network "private_network", ip: "192.168.10.10"
2126
22- # virtualbox type allow auto-sync host to guest and guest to host
23- # VAGRANT_DISABLE_STRICT_DEPENDENCY_ENFORCEMENT=1 vagrant plugin install vagrant-vbguest
24- config . vm . synced_folder "." , "/var/www/codeigniter" , type : "rsync "
27+ # Same path set in the $CODEIGNITER_PATH Provision
28+ # "virtualbox" type allow auto-sync host to guest and guest to host
29+ config . vm . synced_folder "." , "/var/www/codeigniter" , type : "virtualbox "
2530
2631 # Provider-specific configuration
2732 config . vm . provider "virtualbox" do |vb |
2833 # Display the VirtualBox GUI when booting the machine
2934 vb . gui = false
3035 # Customize the amount of memory on the VM:
31- vb . memory = "512 "
36+ vb . memory = "768 "
3237 end
3338
3439 # Provision
3540 config . vm . provision "shell" , inline : <<-SHELL
3641 MYSQL_ROOT_PASS="password"
42+ POSTGRES_USER_PASS="password"
3743 VIRTUALHOST="localhost"
44+ CODEIGNITER_PATH="/var/www/codeigniter"
3845 PHP_VERSION=7.2
39- PGSQL_VERSION=11
46+ POSTGRES_VERSION=10
4047
41- echo "127.0.0.1 ${VIRTUALHOST}" >> /etc/hosts
48+ grep -q "127.0.0.1 ${VIRTUALHOST}" /etc/hosts || echo "127.0.0.1 ${VIRTUALHOST}" >> /etc/hosts
4249
4350 export DEBIAN_FRONTEND=noninteractive
4451
45- echo "Updating and installing required packages..."
52+ echo "================================================================================"
53+ echo "Updating and Installing Required Packages"
54+ echo "================================================================================"
4655
4756 apt-get update
4857
4958 debconf-set-selections <<< "mysql-server mysql-server/root_password password ${MYSQL_ROOT_PASS}"
5059 debconf-set-selections <<< "mysql-server mysql-server/root_password_again password ${MYSQL_ROOT_PASS}"
5160
5261 apt-get install -y \
53- php$PHP_VERSION apache2 curl composer \
54- php-intl php-mbstring php-curl php-gd php-xdebug \
62+ php$PHP_VERSION apache2 composer \
63+ php-intl php-mbstring php-xml php-xdebug \
5564 php-mysql mysql-server mysql-client \
56- php-pgsql postgresql-$PGSQL_VERSION postgresql-client-$PGSQL_VERSION \
65+ php-pgsql postgresql-$POSTGRES_VERSION \
5766 php-sqlite3 sqlite3 \
5867 php-memcached memcached \
59- php-redis redis-server
68+ php-redis redis-server \
69+ php-curl curl \
70+ php-gd php-imagick
6071
6172 apt-get autoclean
6273
63- echo "Configuring databases..."
74+ echo "================================================================================"
75+ echo "Configuring Databases"
76+ echo "================================================================================"
6477
65- mysql -e "CREATE DATABASE IF NOT EXISTS codeigniter;" -uroot -p$MYSQL_ROOT_PASS
66- mysql -e "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'codeigniter';" -uroot -p$MYSQL_ROOT_PASS
67- mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES;" -uroot -p$MYSQL_ROOT_PASS
68- sed -i "s/^bind-address/#bind-address/" /etc/mysql/my.cnf
78+ mysql -e "CREATE DATABASE IF NOT EXISTS codeigniter COLLATE 'utf8_general_ci';;
79+ UPDATE mysql.user SET Host='%' WHERE user='root';
80+ GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
81+ FLUSH PRIVILEGES;" -uroot -p$MYSQL_ROOT_PASS
82+ sed -i "s/^bind-address/#bind-address/" /etc/mysql/mysql.conf.d/mysqld.cnf
6983 systemctl restart mysql
7084
71-
72- sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /etc/postgresql/$PGSQL_VERSION/main/postgresql.conf
73- echo "host all all all md5" >> /etc/postgresql/$PGSQL_VERSION/main/pg_hba.conf
74- sudo -u postgres psql -c 'CREATE DATABASE codeigniter;'
75- sudo -u postgres psql -c "alter user postgres with password 'password';"
85+ sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /etc/postgresql/$POSTGRES_VERSION/main/postgresql.conf
86+ grep -q "host all all all md5" /etc/postgresql/$POSTGRES_VERSION/main/pg_hba.conf || echo "host all all all md5" >> /etc/postgresql/$POSTGRES_VERSION/main/pg_hba.conf
87+ sudo -u postgres psql -tc "SELECT 1 FROM pg_database WHERE datname = 'codeigniter';" | grep -q 1 || sudo -u postgres psql -c "CREATE DATABASE codeigniter;"
88+ sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '${POSTGRES_USER_PASS}';"
7689 systemctl restart postgresql
7790
78- echo "Configuring virtual hosts..."
91+ echo "================================================================================"
92+ echo "Configuring Virtual Hosts"
93+ echo "================================================================================"
7994
80- mkdir -p /var/www/codeigniter/builds/coverage-html
81- mkdir -p /var/www/codeigniter/public
82- mkdir -p /var/www/codeigniter/writable/apache
95+ mkdir -p "${CODEIGNITER_PATH}/build/coverage-html"
96+ mkdir -p "${CODEIGNITER_PATH}/public"
97+ mkdir -p "${CODEIGNITER_PATH}/writable/apache"
98+ chown -R vagrant:vagrant $CODEIGNITER_PATH
99+
100+ if [ ! -d /home/vagrant/codeigniter ]; then ln -s $CODEIGNITER_PATH /home/vagrant/codeigniter; fi
83101
84102 sed -i "s/APACHE_RUN_USER=www-data/APACHE_RUN_USER=vagrant/" /etc/apache2/envvars
85103 sed -i "s/APACHE_RUN_GROUP=www-data/APACHE_RUN_GROUP=vagrant/" /etc/apache2/envvars
104+ grep -q "Listen 81" /etc/apache2/ports.conf || sed -i "s/Listen 80/Listen 80\\ nListen 81/" /etc/apache2/ports.conf
86105
87106 echo "
88107<VirtualHost *:80>
89- ServerAdmin webmaster@${VIRTUALHOST}
90- ServerName ${VIRTUALHOST}
91- ServerAlias www.${VIRTUALHOST}
108+ ServerAdmin vagrant@localhost
92109 DirectoryIndex index.php
93- DocumentRoot /var/www/codeigniter/public
94- LogLevel warn
95- ErrorLog /var/www/codeigniter/writable/apache/error.log
96- CustomLog /var/www/codeigniter/writable/apache/custom.log combined
110+ DocumentRoot ${CODEIGNITER_PATH}/public
111+ ErrorLog ${CODEIGNITER_PATH}/writable/apache/error.log
112+ CustomLog ${CODEIGNITER_PATH}/writable/apache/custom.log combined
97113</VirtualHost>
98- <VirtualHost *:8080>
99- ServerName ${VIRTUALHOST}
100- ServerAlias www.${VIRTUALHOST}
114+ <VirtualHost *:81>
115+ ServerAdmin vagrant@localhost
101116 DirectoryIndex index.html
102- DocumentRoot /var/www/codeigniter/builds/coverage-html
117+ DocumentRoot ${CODEIGNITER_PATH}/build/coverage-html
118+ ErrorLog ${CODEIGNITER_PATH}/writable/apache/coverage-error.log
119+ CustomLog ${CODEIGNITER_PATH}/writable/apache/coverage-custom.log combined
103120</VirtualHost>
104121" > /etc/apache2/sites-available/codeigniter.conf
105122
@@ -108,5 +125,10 @@ Vagrant.configure("2") do |config|
108125 a2ensite codeigniter.conf
109126 systemctl restart apache2
110127
128+ echo "================================================================================"
129+ echo "Services Status"
130+ echo "================================================================================"
131+ service --status-all
132+
111133 SHELL
112134end
0 commit comments