WordPress kickstart, del 2

Som jag lovade i kommentarerna till förra inlägget, här kommer scriptet som låter dig sätta upp en WordPress-site under minuten. Perfekt för utveckling och test med andra ord.
Jag förutsätter en del i koden. Till exempel bör du ha nginx som webbserver med en apachelik struktur för virtual hosts, dvs en katalog /etc/nginx/sites-available där alla virtual hosts är definierade, och en katalog /etc/nginx/sites-enabled, där de för tillfället aktiverade servrarna är inlänkade.

Men här är hela härligheten, lycka till. Tänk på att detta använder jag bara på min egen utvecklings-server, inte i någon delad miljö. Det finns ingen kontroll av input eller andra säkerhetsåtgärder. Använd på egen risk.

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
###########################################
# Constants, set and forget
###########################################
# temp storage for the wordpress tarball
TMP_STORAGE=wptemp
 
# web root for the wordpress site
WWWROOT=/var/www
 
# Privileged db use/pwd for creating database and granting rights
DBROOT=badass
DBROOTPWD=badass
 
# Database owner/pwd for the WordPress tables
DBUSER=dbuser
DBPWD=dbuser
 
# user:group for the web server
WWWUSER=nginx
WWWGRP=nginx
 
# network device used for detecting external ip address
DEVICE=eth0
 
###########################################
# ok, no touching down there
 
# Get the WordPress stuff, the nightly build, unzip it
cd $TMP_STORAGE
wget http://wordpress.org/nightly-builds/wordpress-latest.zip
unzip wordpress-latest.zip
 
# Get the site name
echo -n "Domain name? : "
read -e WP_DIR
 
# mv the WordPress files to their final destination. 
# we will add web server config later
cp -R wordpress ${WWWROOT}/${WP_DIR}
rm -rf wordpress*
 
# Create virtual host config for nginx. 
# Use the template below and then replace the site name
ngx_template=$(cat <<NGXEOT
server { \n
\tlisten 80; \n
\tserver_name [DOMAIN]; \n
\taccess_log /var/log/nginx/[DOMAIN].access.log; \n
\terror_log /var/log/nginx/[DOMAIN].error.log debug; \n
\troot /var/www/[DOMAIN]/; \n
\tserver_name_in_redirect off; \n
\tlocation / { \n
\t\tindex index.php index.htm index.html; \n
\t\tif (-f \$request_filename) { \n
\t\t\texpires 30d; \n
\t\t\tbreak; \n
\t\t} \n
\t\ttry_files \$uri \$uri/ /index.php; \n
\t} \n
\tlocation ~ \.php$ { \n
\t\tfastcgi_pass   127.0.0.1:9000; \n
\t\tinclude /etc/nginx/fastcgi.conf; \n
\t} \n
}\n
NGXEOT
)
echo -e ${ngx_template//\[DOMAIN\]/$WP_DIR} > /etc/nginx/sites-available/${WP_DI
R}.conf
ln -s /etc/nginx/sites-available/${WP_DIR}.conf /etc/nginx/sites-enabled/
 
# Create mysql database
dbname=${WP_DIR//[\.-]/_}
mysql -u ${DBROOT} -p${DBROOTPWD} <<QI
create database ${dbname}
QI
 
# Grant database to non-root user
mysql -u ${DBROOT} -p${DBROOTPWD} <<QI
grant all on ${dbname}.* to '${DBUSER}'@'localhost';
QI
 
# Mod the Wordpress config file so that the db config fits
sed -e "s/database_name_here/$dbname/"\
	-e "s/username_here/${DBUSER}/"\
	-e "s/password_here/${DBPWD}/" \
	${WWWROOT}/${WP_DIR}/wp-config-sample.php \
	> ${WWWROOT}/${WP_DIR}/wp-config.php
 
chown ${WWWUSER}:${WWWGRP} ${WWWROOT}/${WP_DIR}/wp-config.php
rm ${WWWROOT}/${WP_DIR}/wp-config-sample.php
 
# Reload web server
/etc/init.d/nginx reload
 
echo "Done!"
echo "Add this to your hosts file:"
echo ` ifconfig ${DEVICE} | grep inet | grep -v inet6 | cut -d ":" -f 2 | cut -d
 " " -f 1` ${WP_DIR}

2 svar på “WordPress kickstart, del 2”

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *