Skip to content

Commit bc8ecf1

Browse files
committed
Makes Vagrantfile workable
1 parent b8c07b8 commit bc8ecf1

1 file changed

Lines changed: 61 additions & 39 deletions

File tree

Vagrantfile

Lines changed: 61 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,98 +8,115 @@ end
88

99
Vagrant.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
112134
end

0 commit comments

Comments
 (0)