Showing posts with label Wordpress. Show all posts
Showing posts with label Wordpress. Show all posts

Sunday, April 24, 2011

Wordpress Plugin: WP Super Cache on Ubuntu 10.04

I am in what is perhaps a unique situation... I started using Blogger a while back for my personal blog, but my business site is hosted at GoDaddy.com and uses WordPress 3.1.1.  I've found WordPress to be an excellent web platform, and at this point I'm debating continuing to use Blogger, but I suppose I'll figure that out at some point later...  One issue I ran into was performance of my business website using WordPress.  After some research, I decided to try out the WP Super Cache plugin in order to improve response times for page requests.  Funnily enough, it turned out to be much easier to install and configure the WP Super Cache plugin on GoDaddy.com than on my local server.  Of course, by the time I installed on GoDaddy I had spent some time with it and was a bit more familiar with it.  That said, the GoDaddy.com folks seem to have all permissions and pre-requisites in place in order to use this plugin, because it installed and activated without any issues at all.

I set up a WordPress test environment on a machine running Ubuntu 10.04 so that I can implement and preview all changes prior to rolling them out live.  There are a lot of instructions, notes, and other items related to installing the WP Super Cache plugin, however nothing seemed to work for my particular configuration.  I ended up having to do quite a bit of searching around to figure out how to get everything to work and so I decided to document what I found to work on my system.  My server config:
Ubuntu 10.04
WordPress 3.1.1
Apache2 (standard install via synaptic)
New install of WP Super Cache plugin (I did not have the WP Cache plugin)
STEP 1 - Download WP Super Cache plugin

You can download it here, or within the WordPress management console.

STEP 2 - Extract plugin files to WordPress Plugin directory and set permissions

The WordPress plugin directory is located in

../wordpress_root/wp-content/plugins

Set permissions via the command line:

user@host:$ cd ../wordpress_root/wp-content/plugins
user@host:$ sudo chmod -R 0755 wp-super-cache

STEP 3 - Install required modules for Apache
rewrite
mime (this was already installed on my system)
headers
expires
The command to install these modules is

user@host:$ sudo a2enmod rewrite

After installing all required modules you will need to restart Apache, however wait until after the following tasks to do this, as otherwise you'll have to do it twice.

STEP 4 - Add configuration entries for Apache

Edit the following files located in /etc/apache2/sites-available:
wordpress
default* - Make sure you edit this file as well as the wordpress file, I failed to do so initially and it took me quite a bit of troubleshooting before I made the same changes to default and got things to work.
 I just executed the following command to edit in gedit:

user@host:$ sudo gedit /etc/apache2/sites-available/wordpress

Here's what I have at the top of the wordpress file:

<virtualhost *:80="">
 ServerAdmin webmaster@localhost

 DocumentRoot /var/www/wordpress
 <directory>
  Options FollowSymLinks
  AllowOverride All
 </directory>
 <directory var="" www="">
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  allow from all
 </directory>

Here's what I have at the top of the default file:

<virtualhost *:80="">
 ServerAdmin webmaster@localhost

 DocumentRoot /var/www
 <directory>
  Options FollowSymLinks
  AllowOverride All
 </directory>
 <directory var="" www="">
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  allow from all
 </directory>
</virtualhost>

Now restart apache:

user@host:$ sudo /etc/init.d/apache2 restart

STEP 5 - Activate Permalinks within WordPress

The WP Super Cache plugin requires that "pretty links" be enabled in order to function.  This is of course also beneficial for aesthetic reasons, as well as SEO, but is also a necessary step here. All you have to do is select something other than the default.  You can either use one of the available options such as Day and Name or Month and Name.  If you don't like any of the available options, see the WordPress Permalink documentation for some of the other variables to construct you own structure and put it into the custom field.

Permalink Settings in WordPress Admin Console

STEP 6 - Activate WP Super Cache plugin within WordPress and configure

Once you've completed all of the steps above, you should be able to activate the WP Super Cache plugin within the Plugin screen of the WordPress Admin Console and then enable caching.

Once you've activated the WP Super Cache plugin go to the WP Super Cache Control Panel under Settings in the WordPress Admin Console.  Select the radio button next to Caching On (Recommended)

Enable Caching in WP Super Cache Settings

Once you do this, if you scroll down the settings page, you will probably see a notification about needing to update the .htaccess file in the WordPress directory.  Provided the permissions are correctly set in your root WordPress directory, WordPress should have generated an .htaccess file for you and inserted the appropriate entries when you changed your Permalinks setting to a custom definition.  If you get error messages about .htaccess make sure that the following permissions are set on your WordPress directory:

user@host:$ sudo chown -R user:www-data [wordpress_root_directory_location]/wordpress
user@host:$ sudo chmod -R 0755 [wordpress_root_directory_location]/wordpress

Once that is done, WordPress should be able to update your .htaccess file without issue.  Scroll down the settings page and look for a notification that your Mod Rewrite rules are out of sync and need to be updated.  Click on the Update Rewrite Rules button and you should see a screen similar to that below.

Apache mod rewrite rules updated successfully by WordPress

I also enabled a few options under the Advanced tab, which I can confirm work fine on GoDaddy.com

Advanced tab under WP Super Cache Settings

Good luck, hopefully this works for you too.

Friday, April 8, 2011

Install Wordpress 3 on Ubuntu 10.04

I installed Wordpress on a local computer running Ubuntu 10.04 this week.  I did this because I am considering converting to Wordpress as a platform for publishing my business website.  Most of the installation and configuration was fairly easy, however I got stuck on one step which stymied me for a few hours.  So, I decided to document all of the steps I used, as none of the blogs and other websites I found had all of them in one place --- INCLUDING the installation instructions found on Wordpress' website.

Wordpress 3.1.1 Pre-requisites
  • Apache 2
  • MySQL 4.1.2 or >
  • PHP 4.3 or >
  • mod_rewrite Apache module (this is on the official Wordpress list of pre-reqs, but I did not install it and Wordpress is running fine)
The installation for Apache, MySQL, and PHP on Ubuntu 10.04 are well documented, so I have not attempted to recreate these:
STEP 1: Create Apache VirtualHost for Wordpress

user@host:$ sudo a2ensite wordpress
user@host:$ sudo /etc/init.d/apache2 restart

Where:
'wordpress' is the desired name of the VirtualHost in Apache (use whatever name you want).

STEP 2: Create MySQL Database & User for Wordpress

Create a database for Wordpress to use with the MySQL admin user.  There are numerous ways to do this (see below).  I prefer to do this via the MySQL command line.

user@host:$ mysql -u root -p
Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 186
Server version: 5.1.41-3ubuntu12.10 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wp_user@localhost IDENTIFIED BY password;
Query OK, 1 row affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 1 row affected (0.00 sec)

mysql> EXIT;
Bye
user@host:$ 

Where:
Wordpress database name = 'wordpress'
Wordpress database user name = 'wp_user'
Wordpress database user password = 'password'

Another option is to use phpMyAdmin, which provides a GUI web interface for managing MySQL servers.  phpMyAdmin requires a webserver + PHP, but both of these are also requirements for Wordpress.  phpMyAdmin can be useful if you're doing a lot of other things with MySQL.
Another option for a MySQL GUI tool is the MySQL Workbench.

STEP 3: Download and Extract Wordpress

Go to the Wordpress download area to get the latest version.  Download and extract the wordpress directory to /var/www/wordpress (the extraction should create the wordpress directory).

STEP 4: Set Permissions for Wordpress Directory

NOTE: This was the key step where I got stuck for a while.  Without setting permissions properly my web browsers did not execute the PHP files, but instead downloaded them from Apache.

Execute the following from the command line.

user@host:$ cd /var/www
user@host:$ sudo chmod -R 0644 wordpress
user@host:$ sudo chmod -R 0755 wordpress
user@host:$ sudo chown -R user:www-data wordpress

Where:
'user' is your username on your local host

STEP 5: Configure Wordpress for MySQL Database

Rename the sample wordpress config file from the command line:

user@host:$ cd /var/www/wordpress
user@host:$ mv wp-config-sample.php wp-config.php

Edit /var/www/wordpress/wp-config.php as follows:

// ** MySQL settings - You can get this info from your web host ** //

/** The name of the database for WordPress */
define('DB_NAME','wordpress');

/** MySQL database username */
define('DB_USER','wp_admin');

/** MySQL database password */
define(<'DB_PASSWORD','wp_admin');

/** MySQL hostname */
define('DB_HOST','localhost');

STEP 6: Enter Wordpress Security Keys Use the online key generator to get security keys to enter into the wp-config.php file (replace each 'put your unique phrase here' with the appropriate key).

define('AUTH_KEY','put your unique phrase here);
define('SECURE_AUTH_KEY','put your unique phrase here)';
define('LOGGED_IN_KEY','put your unique phrase here');
define('NONCE_KEY','put your unique phrase here');
define('AUTH_SALT','put your unique phrase here);
define('SECURE_AUTH_SALT','put your unique phrase here');
define('LOGGED_IN_SALT','put your unique phrase here');
define('NONCE_SALT','put your unique phrase here');

STEP 7: Run Wordpress Install Script

Open the file /var/www/wordpress/wp-admin/install.php in your web browser.  You should get something like this:


Enter your site name, an admin account username and password.  Email is not really relevant if you're installing on a local server for testing like I am, however it won't hurt to put it in.