WordPress Installation Script

The WordPress installation process is already incredibly simple, but because I often find myself setting up fresh installations of WordPress for various reasons, I decided to make it even easier.

The following script takes a folder name as an argument, creates that folder in the website root (specified in a config variable of the script), downloads and extracts the latest version of WordPress into that folder, and runs the WordPress install. Finally, it sets the admin password to the password specified in another config variable and removes the password change nag.

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
#!/bin/bash
#
# configuration
#
rootURL="http://localhost" # your root URL. No trailing slash
rootDIR="/home/anderswc/public_html" # your document root. No trailing slash

dbname="wordpress"
dbuser="username"
dbpass="password"
dbhost="localhost"

wppass="password" #password to use for the admin account
adminemail="email@example.com" #email to use for the admin account
blogtitle=$1 # defaults to the specified directory name. can be anything

if [ -z "$1" ]
then
  # directory name must be specified
  echo "Please specify an installation folder name"
else
  # ideally you shouldn't have to change anything past this point
  echo "Creating a WordPress instance in $rootDIR/$1"
  # create the directory to install WordPress in
  mkdir $rootDIR/$1
  # download the latest version of WordPress into the directory we just created
  wget -o /dev/null -O $rootDIR/$1/wordpress.zip http://wordpress.org/latest.zip
  # unzip the archive containing WordPress. files will be inside a 'wordpress' directory
  unzip -q $rootDIR/$1/wordpress.zip -d $rootDIR/$1
  # move the files out of the 'wordpress' directory into their intended location
  mv $rootDIR/$1/wordpress/* $rootDIR/$1
  # remove the wordpress archive and the wordpress folder
  rm $rootDIR/$1/wordpress.zip
  rmdir $rootDIR/$1/wordpress
  # make WordPress directory writeable by PHP so installation can take place
  chmod -R 777 $rootDIR/$1
  # request the configuration file generation and blog installation webpages.
  postdata="dbname=$dbname&uname=$dbuser&pwd=$dbpass&dbhost=$dbhost&prefix=$1_"
  wget -o /dev/null --post-data "$postdata" "$rootURL/$1/wp-admin/setup-config.php?step=2"
  postdata="weblog_title=$blogtitle&admin_email=$adminemail"
  wget -o /dev/null --post-data "$postdata" "$rootURL/$1/wp-admin/install.php?step=2"
  # WordPress password was randomly generated
  # change it to password in configuration and remove password change nag
  sqlcommand="UPDATE $1_users SET user_pass=MD5('$wppass')"
  sqlcommand="$sqlcommand;DELETE FROM $1_usermeta WHERE meta_key='default_password_nag';"
  mysql -u $dbuser -p$dbpass -e "$sqlcommand" $dbname
  # uncomment the following line if you're running this script on a public server
  #chmod -R 755 $rootDIR/$1
  echo "Done"
fi

If you think this might be useful, give it a shot and let me know what you think.

I am now accepting new clients for part-time consulting and software development projects. Learn more

I haven't configured comments for this blog, but if you want to get in touch, you can find me on Twitter