forked from gusnips/vagrant-yii2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbootstrap-basic.sh
executable file
·110 lines (88 loc) · 3.76 KB
/
bootstrap-basic.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/bin/bash
############## CONFIGURATION OPTIONS ################
# Mysql root password
mysql_root_password=$([ -z "$1" ] && echo 'vagrant' || echo "$1")
# Domain to use
domain=$([ -z "$2" ] && echo "yii2app.dev" || echo "$2")
# Port to use
domain_port=$([ -z "$3" ] && echo "80" || echo "$3")
# Database name
mysql_database=$([ -z "$4" ] && echo "yii2app" || echo "$4")
# MySQL password
mysql_username=$([ -z "$5" ] && echo "$mysql_database" || echo "$5")
# MySQL password
mysql_password=$([ -z "$6" ] && echo 'n3wp4ss' || echo "$6")
############## END OF CONFIGURATION - STOP EDITING ##############
# Ask everything we need to know to setup the box
# If no stdin avaliable, we use the configuration parameters above
if [ -t 0 ]; then
read -e -p "MySQL root password: " -i "$mysql_root_password" mysql_root_password
read -e -p "Domain to use: " -i "$domain" domain
read -e -p "Port to use: " -i "$domain_port" domain_port
read -e -p "New MySQL database: " -i "$mysql_database" mysql_database
read -e -p "New MySQL username: " -i "$mysql_database" mysql_username
read -e -p "New MySQL password: " -i "$mysql_password" mysql_password
fi;
folder="/var/www/$domain"
# ==================== APPLICATION =========================
############## YII ################
# download project
if [ ! -d "$folder" ]; then
sudo composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic "$folder"
# init project
php $folder/init --env=Development --overwrite=n
## Yii cache config. Now uses memcache
sed -i "s/'class' => 'yii\caching\FileCache',/'class' => 'yii\caching\MemCache',/g" "$folder/config/web.php";
else
cd "$folder"
sudo composer update --prefer-dist
fi
############## Database ################
## Yii database config
# create user and database
mysql -uroot --password="$mysql_root_password" -e "CREATE SCHEMA IF NOT EXISTS $mysql_database DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql -uroot --password="$mysql_root_password" -e "GRANT ALL PRIVILEGES ON $mysql_database.* TO '$mysql_username'@'localhost' IDENTIFIED BY '$mysql_password' WITH GRANT OPTION;";
mysql -uroot --password="$mysql_root_password" -e "GRANT ALL PRIVILEGES ON $mysql_database.* TO '$mysql_username'@'%' IDENTIFIED BY '$mysql_password' WITH GRANT OPTION;";
sudo sed -i -e "s/mysql:host=localhost;dbname=.*',/mysql:host=localhost;dbname=$mysql_database',/" \
-e "s/'password' => '.*',/'password' => '$mysql_password',/" \
-e "s/'username' => '.*',/'username' => '$mysql_username',/" "$folder/config/db.php"
############## APACHE ################
# setup hosts file
VHOST=$(cat <<EOF
<VirtualHost *:$domain_port>
DocumentRoot $folder/web
ServerName $domain
ServerAlias www.$domain
<Directory $folder/web>
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
EOF
)
echo "${VHOST}" > "/etc/apache2/sites-available/$domain.conf"
# server ports
if ! grep -q "Listen $domain_port" /etc/apache2/ports.conf; then
echo "Listen $domain_port" >> /etc/apache2/ports.conf
fi
# update Vagrantfile with the new hosts
if ! grep -q "\"$domain\"" /var/www/Vagrantfile; then
sudo sed -i -e "s/domains= \[\(.+\)\]/domains= [\1,\"$domain\"]/" /var/www/Vagrantfile
fi
# tell apache to use sites vhost file and configs
sudo a2ensite "$domain"
# restart services using new config
sudo service apache2 reload
############## APPLICATION ################
# install migrations
sudo php $folder/yii migrate up --interactive=0
ip='33.33.33.34'
echo ''
echo 'All Done!'
echo ''
echo "Now add the ip/domain to your hosts file if you didn't already. A little help:"
echo "echo '$ip $domain www.$domain $admin_domain' | sudo tee -a /etc/hosts"
echo ''
echo "Access your new site: http://$domain"
echo "Rock'n roll"