summaryrefslogtreecommitdiff
path: root/wordpress/wordpress-create-new-site
blob: 13fa33a32302a9da1576022c8bc127a2c2890727 (plain)
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
#!/bin/bash
TEMPLATE=ichimisushiandgrill.com
OUTPUT=${1:-ichimisushi-thai.com}
SANITIZED=${OUTPUT//[-.]/_}
DB_USER=$SANITIZED
DB_NAME=wordpress_$SANITIZED

PATH=$PWD:$PATH

have_database()
{
	mysql -ss -e "show databases like '${1//\'/\'\'}'" | (read match && [ "$match" ])
}

set -ex
[ "$OUTPUT" != "$TEMPLATE" ]

create_apache_vhost()
{
	if [ ! -e /etc/apache2/sites-enabled/$OUTPUT.conf ]
	then
		[ -e /etc/apache2/sites-available/$TEMPLATE.conf ]
		mkdir /srv/$OUTPUT /srv/$OUTPUT/public_html /srv/$OUTPUT/logs
		cd /etc/apache2/sites-available/
		sed -e "s/$TEMPLATE/$OUTPUT/g" < "$TEMPLATE".conf > "$OUTPUT".conf
		a2ensite $OUTPUT
		systemctl reload apache2
	fi
}

# Install wordpress content to apache htdocs directory
install_wordpress_documents()
{
	if [ ! -e /srv/"$OUTPUT"/public_html/wordpress/wp-config.php ]
	then
		(
			cd /srv/"$OUTPUT"/public_html
			curl https://wordpress.org/latest.tar.gz | tar -zx
			cd wordpress
			wp-conf.sh "$DB_NAME" "$DB_USER" > wp-config.php
			chown www-data.www-data -R .
			chown nobody.nogroup wp-config.php 
		)
	fi
}

create_database()
{
	# Set up database
	if ! have_database "$DB_NAME"
	then
		pwline=$(grep DB_PASSWORD /srv/$OUTPUT/public_html/wordpress/wp-config.php)
		DB_PASSWORD=$(php -r "$pwline echo DB_PASSWORD;")
		mysqladmin create "$DB_NAME"
		mysql "$DB_NAME" <<END
grant all privileges on \`$DB_NAME\`.* to "$DB_USER" identified by "$DB_PASSWORD";
END
	fi
}

create_apache_vhost
install_wordpress_documents
create_database