Install/Upgrade WORDPRESS with SUBVERSION: VPS BIBLE




new password?
login
X
wordpress subversion logo image

This how-to guide uses Subversion to download & install standalone WordPress blogs & their plugins, quickly and easily from your Linux command line interface, with simple updates thereafter. It also details the WordPress MySQL database setup process.

OK, I admit, I am biased towards WordPress! And this guide is a perfect fit for those wanting to launch their WP blog from a VPS in the quickest time and designed for future-proofing.

That said, if you’re using one of the thousands of other platforms that can be installed using Subversion, the installation process is not disimilar. If you have specific questions, on whatever platform, leave a comment and I’ll try to help. Who knows, I may even write a specific tutorial.

WordPressers – prepare to save bundles of time.

Setup Unmanaged VPS: The Ubuntu-Nginx Guide

Take your virtual private server from zero to hero

  .. from blank box to cute-as server ..  

with this easy-to-follow copy/paste guide.

22+ parts with video, here’s the index.

Essential Web Server Preparation for WordPress

In PHP5, MySQL and Xcache (for Platforms like WordPress), amongst other things, we installed Subversion. In Nginx (better than Apache) Web Server we set up Nginx. In Serve Multiple Sites & Blogs with Virtual Hosts we enhanced the Nginx file structure and allowed for multi-site hosting. In Set up WordPress on Nginx with Pretty URLs & WP Super Cache, we tweaked Nginx to optimise its serving of WordPress. If you missed any of those, retrace.

By the end of this tutorial, we’ll have WordPress working. Sweetly.

Here are your requirements:-

  • create database
  • install WordPress
  • add preferred plugins
  • import your theme
  • relocate data

If you want a brand new blog, you will carry out the first four of those stages.

Open up your terminal CLI thing. If you’re using Windows locally and haven’t already done so, create remote server access, securely and to ease the logon process hugely. For that, read Set Up Command Line Interface (CLI) using PuTTY & Encrypt Data with OpenSSH & Auto-Login with PuTTY.

…While I’m nagging, if you’ve not already, you should also carry out Harden the Secure Shell (SSH) & Create a Firewall.

Just one last note. I example my Linux/MySQL username USERNAME and the website someDomain.com throughout this guide. Replace those values with your own :?

Right. Ready to roll.

Create a MySQL Database for WordPress from the Command Line

Login to MySQL with:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

Add your password, or the password we created when we installed MySQL in PHP5, MySQL and Xcache (for Platforms like WordPress).

Now paste this lot, replacing your_wordpress_username, your_wordpress_password and wp_database_name with yours, and leaving the quote marks I’ve included for the password:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

Install WordPress on your Linux VPS Using Subversion

Let’s go to the directory in which to install WordPress. I’m installing to my root directory, /home/USERNAME/public_html/someDomain.com/public, which I created in Serve Multiple Sites & Blogs with Virtual Hosts (the directory structure is explained most comprehensively in the video in that tutorial.) If you want your blog to appear in a sub-directory, such as someDomain.com/blog, then use /home/USERNAME/public_html/someDomain.com/public/blog. Of course, change someDomain.com for your domain:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

If you created a test index.html file in Serve Multiple Sites & Blogs with Virtual Hosts, let’s bin it:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

Now we’ll use the subversion command to install the latest version of WordPress. Ammend this version with any newer one. Leave the dot at the end, it’s not a typo:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

And create the WordPress config file:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

Now let’s connect the database. Open the WP config file:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.


…and add the details you entered above into your new MySQL database. So, in the wp_config file, swap putyourdbnamehere, usernamehere and yourpasswordhere. Here’s the original wp-config, before you change it:-

Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

While you’re in there, for added security, find:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

…and swap wp_ to something unique.

Save and quit (CTRL-X, ‘y’ to confirm and hit Return.)

Run WordPress Install & Connect the MySQL Database

Open your blog in a browser, so for me, for instance, that’s www.someDomain.com. Enter a few details, log in and change the password the WP installer gave the newly created Admin user. You should really delete Admin entirely and replace with another user, but that’s another story.

Hack-Proof Your Blog

For complete WP security tips, read Video How-to: 10 Tips To Make WordPress Hack-Proof – from a really rather splendid site by the name of Guvnr, ‘hem – but ignore the bit about htaccess as that’s an Apache thing, not Nginx.

Hmmn, if anyone’s got any specific Nginx blog security tips, lemme know please. I’ll write it up.

Batch-install WordPress Plugins using Subversion

This bit really rocks my roger. If you’ve got a bunch of blogs with pretty much the same plugins, you may just save a month of Sundays here.

Back at the CLI, goto the plugin directory:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

Let’s edit our plugin list. Keep that dot:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

OK, so there’s only Akismet in there. Let’s add some more. Go to the WordPress Subversion plugin repository and take your pick. For each plugin you have 2 download choices:-

  • tags – stable releases by version, so choose generally the latest
  • trunk – latest version, bleeding edge, occasionally buggy

Personally, I run the trunk versions, for the simple reason that I can install or upgrade all plugins by issuing a simple command, thereafter. If a plugin gives me any gip, I simply delete it and its reference in my svn WP plugins list, else I replace its trunk with a tag. Of course, if you use the tags option, you have to keep editing your plugins file, which largely negates having it in the first place.

So, here’s an example externals file that I’ve thrown together. Note the name of each plugin before the link, ‘cos you must have that identifier. If you followed Set up WordPress on Nginx with Pretty URLs & WP Super Cache, you’ll notice I’ve included the WP Super Cache plugin:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

TIDY TIP: If you’re happy with trunks, in the WP Sub Vers Repos, look down the list and right mouse click > Copy Link Location, then paste it to a text file, adding the name of the plugin before the link. Do that to as many plugins as you want, then simply paste /trunk at the end of each link. Then paste the lot to your svn plugins file. Much quicker. If you want tagged versions, it’s the long way round, ‘cos the tags differ. Then again, for some plugins, there is no svn listing at all, so those have to be included the old-fashioned way.

Right, with your plugins file edited, saved and closed, now type:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

Take tea.

Import Your WordPress Theme

Set Linux Folder Permissions

If you didn’t in Serve Multiple Sites & Blogs with Virtual Hosts, set your folder permissions, allowing SFTP access, substituting USERNAME with your user name:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

Add the theme

If you are using a regular theme, add it in the usual WordPress way.

Alternatively, if you want to use a previous, adapted theme:-

Open an SFTP client like FileZilla or WinSCP, browse to your remote themes directory – something like /home/USERNAME/public_html/someDomain.com/public/wp-content/themes/ – and upload your bespoke theme.

Either way, you can now enable the theme in the regular way, at http://your_blog.com/wp-admin/themes.php.

Relocate Your Existing WP Blog Data

…If you’ve got any to relocate! For new blogs, skip this bit.

You can do this by exporting from the old and importing into the new database. In my experience it’s far easier to use WP’s export/import tools, which also optimises the data.

Surf to your original blog:-

http://www.your_ORIGINAL_blog.com/wp-admin/export.php

…or Dashboard > Tools > Export.

And Download export file.

Now goto your new blog:-

http://www.your_ORIGINAL_blog.com/wp-admin/import.php

…or Dashboard > Tools > Import.

Click the WordPress option, choose the exported file and Upload file and import. Prompted, check the box Download and import file attachments.

If you receive any errors, that’s a permissions problem. For example, I got this:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

…So we’ll ensure ownership is correct and give Nginx, a member of the webmaster group, temporary write access to the directory:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

And now have another go with Upload file and import, opting for our user imports and checking the box Download and import file attachments.

Now revoke the Nginx right to write to WordPress.


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

If you’d prefer to relocate select data, there’s always phpMyAdmin.

Activating WP Super Cache

Activate in the usual WordPress way, and cash in on the groundwork of Serve Multiple Sites & Blogs with Virtual Hosts. Cash in, geddit! Sorry.

Updating WordPress Plugins

While 2.7 brought in some top functionality with the WordPress auto-updating, pretty much negating using Subversion to update the platform or plugins, there will be occasions when it’s still faster to upgrade plugins this way.

Particularly this will be the case after a platform upgrade, when plugins race to bring out updates, they can be upgraded together using Subversion:-


Please sign up for automatic premium content access.

Just $15/year* will save you hours, maybe days!

Alternatively, the vpsBible forum is free and you are welcome.

Sending Live a Relocated WordPress Blog

Refer to Part 19: Moving Day! How to Move Your Blog or Site for the best way to do this, with the least downtime or other sticky problems.

Rinse & Repeat

Follow this process for your entire blog farm.

Just Round the Corner

For WordPress, that’s all the specifics taken care of, I think. You tell me, what have I forgotten? Lemme know and I’ll write it up.

More generally, I’ll wrap up the Ubuntu-Nginx Unmanaged VPS Bible series by showing how and why to setup Google Apps in Google Apps for Domain-Specific Email, which keeps our VPS server resources focussing jealously on our sites and blogs, before running down the all-important moving day checklist mentioned above. Then, well, I suppose we’d best try to move a site without completely buggering it up (I think ‘seamless’ is the word .. Ed.)

Er, guess what…

Setup Unmanaged VPS: The Ubuntu-Nginx Guide

Take your virtual private server from zero to hero

with this easy-to-follow copy/paste guide.

“My local PC runs Windows” Show me for Linux/Mac

22+ parts with video, here’s the index ..

Manage Unmanaged VPS: Ubuntu-Nginx Administration

Already set it up? We’d best maintain it then.

Toggle to the ..  Ubuntu-Nginx Admin Index

Manage Unmanaged VPS: Ubuntu-Nginx Administration

Maintain your virtual private server with ..

.. cheatsheets, tutorials, tips & guides.

Head back to the ..  Ubuntu-Nginx Installation Index

Nginx Admin: In the Works ..

This lot’s marked for addition already:-

  • Setup or Edit DNS using Bind
  • Network Tools Troubleshooting Guide
  • The Comprehensive Permissions Guide
  • Configuring Nginx Rewrites
  • Custom Website Error Page
  • Setting up Cron Jobs
  • Rsync for Incremental Remote-to-Local Backup
  • Cron & Rsync for Automatic Backup
  • Cron & mysqldump for Auto DB Backup
  • Safeguard Bandwidth with Hotlink Protection
  • Block Access with Nginx’ IP Deny



Responses are currently closed, but you can trackback from your own site.

Got a Question? Want to Comment?

This site has no comments system. We've got a better system!

Please use the link at the top of the post and goto this topic's forum thread:-

  • to help build community
  • for a superior knowledge base
  • to keep info in one place, not diluted between forum & comments.

For those posts ported from Guvnr.com (pre-Feb/2010), archive comments remain.

Handy info from these comments is in the process of being ported to the forum and attributed to the original author.

If you think this idea sucks, let me know.

Thank you.

  • » bInstall/b/Upgrade bWORDPRESS/b with SUBVERSION - VPS Bible #15 - GUVNR Wordpress UK: Wordpress UK, taking it further… June 9th, 2009 at 2:04 am

    [...] View original here: bInstall/b/Upgrade bWORDPRESS/b with SUBVERSION – VPS Bible #15 – GUVNR [...]

  • 10 Tips To Make WordPress Hack-Proof. The Ultimate Guide. - GUVNR June 9th, 2009 at 11:37 am

    [...] Set Up Unmanaged VPS BIBLE (4 Newbies) – Part 15: WordPress Setup & Updates from the Command L… This how-to guide uses Subversion to download & install standalone WordPress blogs & their plugins, quickly and easily from your Linux command line interface, with simple updates thereafter. It also [...] [...]

  • Chris Foster June 9th, 2009 at 5:49 pm

    “Create a MySQL Database for WordPress from the Command Line”

    Unfortunately this section of the bible has errors in the form of html tags in the commands.

    I’m now stuck with “Error establishing a database connection”, got confused and had to go searching for the correct commands..and stuffed something up.

    I couldn’t see any PHPAdmin advice in the bible, I would think this would be required to sort out the database issue..I’ll go digging.

    Cheers,

    Chris

  • the_guv June 9th, 2009 at 6:38 pm

    apologies Chris – have ammended that now.

    will be writing a newbie mySQL tutorial to accompany this guide, with some basic CLI commands to manage dbs.

  • Poutletuh June 25th, 2009 at 12:32 am

    Newbie here, I wanted to advise you of the malwarebyte that is going around the net. This might be a bit off topic but hopefully it will help folks get that crapy spyware off their PC. Thanks, Newbie

  • the_guv June 26th, 2009 at 6:30 am

    @Poutletuh – aah yes, thank you, jolly good. you’re absolutely right, of course .. that’s completely off-topic! but it’s just nice to know you care.

  • Jeff July 1st, 2009 at 6:42 pm

    Perhaps the most thorough tutorial I’ve come across, for setting up a linode with Nginx.

    I do have one question however. I opted for the newer versions of Nginx and WordPress than the ones in your tutorial and the clean urls aren’t working in WP. I’m guessing that it has something to do with the rewrite… And also, the alias n2r that restarts Nginx breaks on the start.

    Other than that my linode flys. Can’t believe WP is running this fast.

  • the_guv July 7th, 2009 at 5:20 am

    @Jeff .. post up some more detail. is there an error msg when Nginx doesn’t n2r properly?

  • trav 19 August 5th, 2009 at 9:05 am

    Hi Guv! Will it work the same for WordPress Mu with the BuddyPress extension? Thanks very much.

  • the_guv August 5th, 2009 at 12:09 pm

    Hey Trav .. I’ve not tried installing MU using subversion, but it should, and I would be very surprised if if didn’t.

    However, I can tell you, WP MU works great with BuddyPress on my Nginx’ed VPS .. Funnily enough I copied an example across a couple of weeks ago, for this comunity thing I’m working on.

    BP is cool, huh.

    You know, pretty soon the WP folks are gonna be combining WP and WP MU together.

  • trav 19 August 9th, 2009 at 9:18 am

    Hi Guv, I am getting a “502 Bad Gateway” message when i tried to install wordpress mu :( i followed everything here, what happened? :(

  • trav 19 August 9th, 2009 at 9:19 am

    here’s the error log: http://pastebin.com/m12dcf215
    could you kindly diagnose it? :( (((

  • trav 19 August 9th, 2009 at 9:29 pm

    hey guvnr! it’s all good now, we forgot to install spawn-fcgi… Did we do it? I don’t think it was covered in this series.

    http://redmine.lighttpd.net/projects/spawn-fcgi/wiki/Build

    hope this could be of help for future Mu enthusiasts.

    The only difference with making mu is create a wildcard * to your resource records for subdomains, and DO NOT EDIT WP-CONFIG pre install. Just create a db beforehand, and enable 777 chmod permissions to /wp-content.

  • the_guv August 10th, 2009 at 11:11 pm

    hey Trav, sorry, been travellin’, duckin’, divin’.

    Sir, thank you, cracking tips. I’ll document that as soon as I get into MU proper, and am sure there’s a few others too that are mighty pleased with your input.

    Really darn fine of you.

    Let us know how you get on. In fact, spam a link when you’re pleased enough to publicise. It’ll be good to stay in touch.

    PS .. we took a different approach with fastCGI for the php in Part 13: Serve Multiple Sites & Blogs with Virtual Hosts

  • Henry August 25th, 2009 at 10:44 am

    Not sure if this will help anyone in a similar position, and it’s pretty minor, but under the ‘Import your WordPress Theme’ section, I had to include ‘sudo’ at the beginning of the command to give the requisite level of administrative power to change permissions:

    i.e. chown -R guvnr:webmasters /home/public_html

    should be

    sudo chown -R guvnr:webmasters /home/public_html

    Nit-picking possibly, but may help prevent someone getting lots of ‘Operation not permitted’ errors :)

    Love your tutorials though, super props Guv!

  • the_guv September 16th, 2009 at 8:44 pm

    @Henry .. Sorry to be so long coming back to you, been out and about.

    God’s Teeth! You are absolutely correct and, no, that is not nit-picking at all. Appreciate that, properly updated.

    Many thanks to you for your kind words too.

  • juanel October 12th, 2009 at 6:12 am

    i have followed to the letter the instructions from this vps bible but i am having a major headache with WordPress file uploads even when i changed permissions to 777. it still won’t work. even in wp, miscellaneous, wp-content/upload, no can do.

    What’s wrong??

  • the_guv October 12th, 2009 at 11:09 am

    @juanel .. tell me, what’s your procedure .. you using WordPress’ file uploader? (generally I don’t, but just did to test and it worked.) what’s the output of :-

    ls -l /path/to/the/uploads/PARENT/folder .. as standard, that’s your wp-content folder

    .. just give me the line referring to the uploads folder.

    some permissions issue here. tell you what, AFTER noting the above from teh list (ls) command, do this:-

    sudo chown -R www-data:www-data /path/to/the/uploads/PARENT/folder

    .. then try upload again. please lemme know.

  • George Smith October 20th, 2009 at 1:08 am

    Guv, I’m having some problems with WordPress having followed the tutorials here. My site’s up and running, and I can upload themes and plugins using an FTP client, but I’d also like to be able to do so using the WordPress admin panel, and at the moment that’s proving impossible – whenever I try, it prompts for connection information (hostname, username etc.), but nothing I enter seems to suffice. I’ve tried a couple of things (modifying the permissions of the wp-content folder, modifying its group etc.) but to no avail. Any advice you could give on fixing this would be very much appreciated.

  • George Smith October 21st, 2009 at 12:15 pm

    Sorry, I just noticed someone posted a similar comment to my previous one above. After a little research, I was able to solve my WordPress uploads problem by changing the owner and group of -both- wp-content and wp-admin (and their contents) to ‘www-data’.

    So that’s:
    sudo chown -R www-data:www-data /path/to/wordpress/wp-admin
    sudo chown -R www-data:www-data /path/to/wordpress/wp-content

  • the_guv October 23rd, 2009 at 8:43 am

    @George .. no worries, pleased you’re sorted, Sir.

  • SOLUTION! "No Control Panel for NGINX?" - VPS BIBLE Pt 17 - GUVNR November 30th, 2009 at 9:03 pm

    [...] db client/CLI guide to do Pt 15: Setup WordPress for key CLI [...]

  • Set up an Unmanaged VPS for Newbies - The 20 Part Bible! - GUVNR November 30th, 2009 at 9:06 pm

    [...] Part 15: WordPress Setup & Updates from the Command Line Part 15: Setup/update WordPress on your server. This copy/paste how-to guide steps out the process, setting up a MySQL database and using Subversion. [...]

  • Configure Nginx with Your Content Management System - vpsBible February 10th, 2010 at 4:59 pm

    [...] WordPress Setup & Updates from the Command Line [...]

  • Setup WordPress on NGINX (FURLs & Cache): VPS BIBLE - vpsBible February 10th, 2010 at 4:59 pm

    [...] the WP Super Cache plugin. First, we’d best install WordPress itself in the how-to guide WordPress Setup & Updates from the Command Line. That’ll be using super-duper Subversion to simplify the WordPress installation [...]

  • FASTER VPS! Set Up PHP, MySQL & Xcache: VPS BIBLE - vpsBible April 1st, 2010 at 6:25 pm

    [...] Seeing as WordPress is such a popular platform, I’ll use it as the example for how to use Subversion, a few posts down the road in WordPress Setup & Updates from the Command Line. [...]

  • wp-popular.com » Blog Archive » Install/Upgrade WORDPRESS with SUBVERSION: VPS BIBLE – vpsBible April 15th, 2010 at 7:15 pm

    [...] the original post here: Install/Upgrade WORDPRESS with SUBVERSION: VPS BIBLE – vpsBible Tags: database, paste, resources, server, [...]

  • Subversion for Easy CMS Updates ie WordPress/Drupal/etc: VPS BIBLE - vpsBible April 26th, 2010 at 8:08 pm

    [...] get an idea of how to use it, read WordPress Setup & Updates from the Command Line, which illustrates the basic Subversion [...]