Boost WordPress Audio w/ Amazon S3

The Simple Storage Service (S3) from Amazon is an easy way to serve information. Its high availability and low cost make it a no-brainer when it comes to hosting.

Recently, a friend moved his website (the Astropope) from my server to that of a hosting company (for which he presently works). Along with his account comes 3 GB of storage, except he currently uses about 5 GB. To help with the transition, we decided to move the majority of content over to S3.

In order to do this, we got an account, uploaded everything, made a DNS record, and then ever-so-slightly modified a WordPress plugin.

The steps we took are detailed for your convenience:

1. Sign up for an S3 account.

2. Download, install & configure the S3Fox plugin for Firefox.

3. Amazon uses a bucket as a means for organizing information. You may refer to a bucket as a unique, top-level directory. Many directories may exist within a bucket, but the most absolute of those contained within is a ‘bucket’. Create a bucket named s3.[yourdomain].com. In that bucket, make an audio directory. So now we have something along the lines of s3.[yourdomain].com/audio.

4. Using S3Fox, upload your mp3 files to the newly created audio directory within the bucket.

5. Right-click the audio directory and specify an ACL with read access for public requests. Note: Without specifying an ACL w/ public read access, it won’t work.

6. Within WordPress, install the Audio Player plugin.

7. Once installed, modify the plugin as such:

edit audio-player.php

Under // Options Default add:
add_option(‘s3_url’, ”, “Amazon S3 URL”, true);

Under // Global variables change $ap_audioURL to:
$ap_audioURL = get_settings(‘s3_url’) . get_option(“audio_player_web_path”);

Under // Update plugin options add:
update_option(‘s3_url’, $_POST['s3_url']);

edit options-panel.php

<tr>
<th width=”33%” valign=”top”><label for=”ap_audiowebpath”>Audio files directory:</label></th>
<td>
<input type=”text” id=”ap_audiowebpath” name=”ap_audiowebpath” size=”40″ value=”<?php echo( get_option(“audio_player_web_path”) ); ?>” /><br />
Recommended: <code>/audio</code>
</td>
</tr>
<!– snipit starts here –>
<tr>
<th width=”33%” valign=”top”><label for=”s3_url”>Amazon S3 URL:</label></th>
<td>
<input type=”text” id=”s3_url” name=”s3_url” size=”40″ value=”<?php echo( get_option(“s3_url”) ); ?>” /><br />
<?php $string = get_option(“siteurl”);
$url2 = substr($string, 7);
echo “(e.g. http://s3.” . $url2 . “)”; ?>
</td>
</tr>
<!– snipit ends here –>

Alternately, you can upload/replace with these pre-modified files:
wp-content/plugins/audio-player.php
wp-content/plugins/audio-player/options-panel.php
(be sure to rename from .ph_ to .php)

Login to WordPress, then go to Settings -> Audio player and add http://s3.[yourdomain].com to the new field below the audio files directory.

8. Add a cname (alias) at your domain registrar:
S3 -> bucketname.s3.amazonaws.com
(e.g. s3.[yourdomain].com.s3.amazonaws.com)
where S3 points to bucketname.s3.amazonaws.com. (TTL of 1 hr is acceptable.)

9. Post a song according to the directions for the plugin.

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Did it work for you? Did you run into any trouble? (I’d be happy to help you set this up if you’d like assistance.)

– Edit:  9.16.09 –

Version 2.0 beta 6 of the Audio Player plugin includes an option for a custom URL.  When upgrading to this most recent version, there is no need to modify any source code.  Nice!

Also, the most recent version of the WordPress S3 plugin version .4 adds a setting for virtual hosting:

Make sure you check the ‘Bucket is setup for virutal hosting’ box.  If you see DNS warnings at the top of the plugin screen, refresh the page and it should go away (if you had this setup previously).

 

About Benjamin Perove

Benjamin has been associated with computer technology starting from a very early age, and has contributed to the success of many businesses and enterprises since 2001. He loves to crush pow at Keystone, play acoustic guitar, climb rocks, and ascend mountains on his road bike. Benjamin is an Avalanche fan and currently resides in Boulder, Colorado.

Add this site to your Firefox Search Bar

Twitter Updates


No public Twitter messages.

Recent Entries

Topics

Archives

This site is optimized for Firefox.