skip to main content

TAMU Webmaster's Blog

Information and insight from the A&M Webmasters

WordPress 3.0 Multi-Site Installation on the Campus Network

August 9th, 2010 by Erick Beck

Most of you know by now that WordPress 3.0 has merged the multi site capabilities of WordPress-mu into the mainstream release.  One of the biggest problems we have faced on campus is that the multi domain capabilities built into WordPress were never intended for a large domain such as It was instead designed for the myriad of hosting services that allow individuals to have their own private domain on a hosted service.  As such their methodology of requiring DNS wildcard entries to manage multiple subdomains was not terribly unbearable.  For a network like ours, though, it would be inconceivable.  No matter how kind our friends over in Networking may be, nobody is going to get * assigned to their blog server.

That doesn’t mean that multisite won’t work, though.  After a day searching Google and some experimentation on my own I was able to figure out how to get it working.  The process isn’t that difficult, and is in fact only a slight modification from the default installation. The difficulty was largely in the terminology used by the WordPress documentation

The following instructions assume you have access to NIM to manage your DNS entries, a basic understanding of Apache configuration, and are the web root and WordPress administrator. I will use the terminology to refer to the primary server name and, … to refer to content blogs managed by the system.  Substitute your names in your configuration as appropriate.

Pre-installation setup

  1. Log into NIM and claim a name/IP address for your server (e.g,  This can be the name of one of your blogs, but I prefer to make it separate and have each one of the individual blogs be its own virtual host. This then gives you an administrative site to log into that won’t affect any of your content blogs.
  2. While in NIM, associate a CNAME with the new server for each blog that you want managed by WordPress (,, etc.)
  3. Download WordPress into your server’s web root directory. I prefer to do this through SVN, but if you prefer to download the .zip file that’s fine.
  4. Configure Apache.  You have two options. I prefer to create separate virtual hosts for each blog so that you can easily give and manage customizations (log files, etc.) for each one.  All of the config files should set the DocumentRoot to be the same directory in which you installed WordPress, otherwise configure as you would for any other website.  If you prefer not to manage multiple virtual host configurations you can use one config file and simply use the ServerAlias directive to specify all of the CNAMES that you want managed by WordPress.

Install WordPress

  1. Temporarily chown your web root to www (or whatever your Apache’s user is named.) WordPress will need to make some file changes, and it’s easier to let it make the changes than do them all by hand. Just remember to reset the ownership once you’re done!
  2. Create an empty database in mysql –  “wordpress” is the default, which is generally fine.
  3. Go to your server’s webroot (i.e,, not one of your content blogs) in a web browser and follow the creation wizard.
  4. Edit wp-config.php and add define('WP_ALLOW_MULTISITE', true); right before the comment /* That's all, stop editing! Happy blogging. */
  5. Add the WordPress MU Domain Mapping plugin to the /wp-content/plugins directory. This page actually has much better technical explanation of the networking changes than the default WordPress guide.
  6. Log out and back in.  Go to the Network link under Tools.  Select Subdomains and enter your contact information.
  7. Copy the code and create the directories as indicated on the resultant web page.
  8. Log out and back in, and then activate the domain mapping plugin.
  9. Copy sunrise.php from the domain mapping plugin directory to wp-content/
  10. Add define( 'SUNRISE', 'on' ); to wp-config.php with the other code additions you’ve made. Be sure not to put it at the very bottom of the page!
  11. In the Super Admin box, under Domain Mapping, add IP address or domain name of your server.
  12. Under Admin, go to Create New Site and fill in the requested information.  The subdomain will be wrong – it will give you the option of putting in a name but have hard coded.  That’s ok, fill in the name and we’ll change that next.
  13. Edit the site that you just created and remove all of the .myblogs domain references (scroll down, there are several) to
  14. Go to the Domains link and add the information for the blog you just created.
  15. Add users and associate them with the proper blogs.
  16. The wpCAS plugin will allow you to do campus CAS authentication, much better than the default and it means you won’t have to install SSL onto your blog server just to handle logins.
  17. This should finish the installation process.  Each of your blogs should show up on their own subdomains.  If you are able to see the blog but have problems logging in that typically signifies a problem with the domain mapping plugin.

Tags: ,

Monday, August 9th, 2010 Ongoing Projects
Share this article

4 Comments to WordPress 3.0 Multi-Site Installation on the Campus Network

  1. […] Setting up a #WordPress network when the top-level domain isn’t yours: […]

  2. Setting up a #WordPress networ… | @sleary on Twitter on August 10th, 2010
  3. […] Yep. As it happens, one of the people in charge of wrote up instructions on doing exactly this, which took some of the guesswork out of the […]

  4. Migrating single WordPress installations into multisite networks | on September 8th, 2010
  5. I just wrote up a huge post detailing all the things I ran into while migrating a bunch of sites into a network:

  6. Stephanie Leary on September 8th, 2010
  7. Oh, and a further note on configuring wpCAS… the path to CAS.php should point to the one inside the CAS directory from the >PHP client download, not the loose CAS.php file that lives outside the directory. In other words, it should be /path/to/public_html/CAS/CAS.php. (The sample cas.php from CIS is useful for homegrown PHP applications, not for WordPress.)

    What the heck, I’ll just give my whole settings array:

    $wpcas_options = array(
    'cas_version' => '2.0',
    'include_path' => '/home/wordpress/public_html/CAS/CAS.php',
    'server_hostname' => '',
    'server_port' => '443',
    'server_path' => '/cas/'

  8. Stephanie Leary on September 9th, 2010

Leave a comment