WordPress on S3 – YAPIXX

WordPress on Amazon S3: real simple

Now any WordPress (or *any* dynamic Website, for that matter) can seamlessly store all its data on the cloud storage.

WordPress on Cloud

Contents

WordPress on Amazon S3: real simple. 1

Benefits. 2

Hosting options. 2

Open Source Solutions. 2

WordPress on S3: Yapixx. 2

Description. 2

Create your own WP on S3 with Yapixx. 3

WordPress on S3: manual steps. 3

Move website content to the cloud. 4

Move media files to the cloud. 4

WP2Cloud WordPress plugin. 4

Description. 4

Installation. 5

Requirements. 5

Screenshots. 5

Translations. 5

Frequently Asked Questions. 6

Known issues. 7

Changelog. 7

Download source code. 7

Donate. 7

Future plans. 7

See also. 7

 

Benefits

Cloud storage is awesome. It is highly- durable, reliable, available, and scalable; it has infinite capacity, it is the most mature and thus stable service - all of it on a Pay-For-What-You-Use pricing model.

Using cloud storage to store Website data has the following benefits:

·         No backup and recovery is needed for the website data

·         Storage is extremely reliable and durable

·         Media files (such as pictures, documents) are served by the cloud storage directly

·         Storage cost scales with usage, no upfront reservation is needed

·         Storage consumption scales up and down with the amount of data stored

Hosting options

A Web server running the website can be hosted pretty much anywhere. Depending on your needs, the Web server can run from your premise, by your favorite hoster or on Amazon Instance in AWS.

 

As for the website data, you have the following primary deployment choices:

1. [PREFERRED] Take the whole website data to Amazon S3

2. Only migrate website content to Amazon S3 while storing media files in the uploads folder on the Web server running WordPress.

3. Only upload media files to Amazon S3.

Open Source Solutions

·         Ready-to-run WordPress on S3 – Yapixx

OblakSoft provides a ready-to-run WordPress on Amazon S3 appliance as an Amazon Machine Image (AMI).  The AMI contains a fully configured WordPress stack with a demo website called Yet Another Picture Sharing Site (Yapixx). You can use this AMI as a starting point for your own new WordPress website, or as an example of properly configured WordPress site that runs on Amazon S3.

·         WP2Cloud WordPress plugin

WP2Cloud extends WordPress to store media files (such as pictures) on the cloud storage.

 

WordPress on S3: Yapixx

Description

Yapixx demonstrates the easiest way to build a dynamic website on cloud storage.  Yapixx stands for Yet Another Picture Sharing Website.

Yapixx is WordPress, configured as a picture sharing site, that stores all its data in Amazon S3 (thanks to OblakSoft ClouSE).  Yapixx AMI is available from http://www.oblaksoft.com/downloads.  It has fully configured WordPress, WP2Cloud plugin and ClouSE, such that all data is stored in Amazon S3. 

Yapixx serves as an example of a beautiful yet powerful dynamic Website that seamlessly gets the benefits of cloud storage:

reliability:  The website stores valuable assets - personal pictures.  Thus it would benefit from pictures being automatically instantaneously stored in one of the most trusted and reliable cloud storage such as Amazon S3;

scalability:  When large files of this site are accessed via cloud storage URLs (as opposed to local URLs), they can be served directly from cloud storage relying on its enormous power to make delivering the content highly scalable;

data is always on:  The fact that data is always available in the cloud without replication or backup brings a lot of flexibility.  E.g. in case the website rapidly picks up in popularity, it can get quickly re-hosted to a larger web server without moving data around.

unified data management:  When unstructured data files (pictures) and related structured data (such as meta tags, blog text, thumbnails) are managed in the same transactional manner, both programming and management models are greatly simplified.

Create your own WP on S3 with Yapixx

Here are the five easy steps to get Yapixx up and running:

1.       Sign up for an AWS account.

2.       Create an S3 bucket.

3.       Start EC2 instance using Yapixx AMI.

4.       Connect to the web application from a web browser.

5.       Enter the S3 data location and authentication information.

(The full step-by-step guide for using Yapixx as a WP on S3 template is available here.)

You can use Yapixx as a starting point to create your own beautiful WordPress site.  The plugins that turn WordPress into Yapixx, such as the WP2Cloud plugin, the Yapixx theme, etc. are available under the GPL completely FREE

WordPress on S3: manual steps

The Cloud Storage Engine for MySQL ClouSE (ClouSE) is required to be installed and configured on the MySQL server that holds the website.

Here are the steps for installation and configuration of ClouSE:

1.       Sign up for an AWS account.

2.       Create an S3 bucket if you don’t have one.

3.       Install and configure ClouSE.

Move website content to the cloud

You can move the whole WordPress database table by table using the following MySQL statements:

ALTER TABLE wp_commentmeta ENGINE=ClouSE;

ALTER TABLE wp_comments ENGINE=ClouSE;

ALTER TABLE wp_links ENGINE=ClouSE;

ALTER TABLE wp_options ENGINE=ClouSE;

ALTER TABLE wp_postmeta ENGINE=ClouSE;

ALTER TABLE wp_posts ENGINE=ClouSE;

ALTER TABLE wp_term_relationships ENGINE=ClouSE;

ALTER TABLE wp_term_taxonomy ENGINE=ClouSE;

ALTER TABLE wp_terms ENGINE=ClouSE;

ALTER TABLE wp_usermeta ENGINE=ClouSE;

ALTER TABLE wp_users ENGINE=ClouSE;

Move media files to the cloud

Follow installation instructions for WP2Cloud WordPress plugin to have media content stored in the cloud storage.

Now all WordPress data is stored in the cloud storage!

WP2Cloud WordPress plugin

Description

WP2Cloud stores media files such as pictures, music, videos, documents in the cloud. Media files that are uploaded to the WordPress are actually uploaded to the cloud storage, not to the local file system of the Web server hosting this website.

The media files are served from the cloud storage, the website pages now refer to the media files via direct cloud storage URLs. This makes your site directly powered by the enormous scale and reliability of Amazon S3.

To make serving media files even faster, the plugin can be configured to use a Content Distribution Network (CDN), such as Amazon CloudFront. When the plugin is configured to use a CDN, the website pages refer to the media files via the CDN URLs. The CDN serves the media files from locations around the world to provide the best performance.

WP2Cloud plugin kills three birds with one stone:

1. Media files are stored reliably in the cloud and don't need to be backed up.

2. Website now can leverage the cloud power to scale out content delivery to the browser directly from the cloud storage. The file content is served by the cloud storage utility provider which takes load off of the Web server. This is different from the default WordPress behavior where media files are local files, and are served by the Web server and consume network bandwidth, disk I/O and CPU power of the Web server.

3. WordPress web tier is now stateless, so web tiers can now be auto-scaled and auto-balanced as needed to meet the website's scalability goals.

Installation

If you plan to store all WordPress site’s data on Amazon S3 storage, use a ready-to-run WordPress on Amazon S3 (Yapixx) AMI as a starting point or check out the detailed instructions for manual configuration.

In case you are interested only in uploading media files to cloud, please follow WP2Cloud installation instructions below.

You can download and install WP2Cloud plugin using the built-in WordPress plugin installer.  If you download WP2Cloud manually, make sure it is uploaded to "/wp-content/plugins/wp2cloud/".

WP2Cloud requires the Cloud Storage Engine for MySQL (ClouSE) to be installed and configured on the MySQL server.  If ClouSE is not installed, WP2Cloud will fail to activate.

Here are the steps for installation and configuration of ClouSE:

1.       Sign up for an AWS account.

2.       Create an S3 bucket if you don’t have one.

3.       Install and configure ClouSE.

Once ClouSE is installed and configured, you can activate WP2Cloud plugin:

1. In your WordPress administration, go to the Plugins page

2. Activate the WP2Cloud plugin.

Now all new media files are going to be uploaded to the cloud. 

Your website can gain higher availability and scalability!

Optional: to configure the plugin to use a Content Distribution Network (CDN), go to the WordPress to Cloud Settings page and specify the Cloud Distribution URL. The CDN must be configured to use the cloud storage bucket as a content origin.

Requirements

·         MySQL Server 5.5.19 or above

·         Apache 2.2.15 or above

·         PHP 5.3.2 or above

·         ClouSE 1.0b.1.1 or above

Advanced deployment configuration with Media Server

If you don't have permissions to install the Cloud Storage Engine (ClouSE) on the MySQL server that stores your WordPress database, you can configure WP2Cloud to use a separate Media Server. The Media Server makes it possible to use cloud storage to store and serve media files, while keeping your existing database solution to store website content.

To use a Media Server, first install and configure a MySQL server with ClouSE. After the Media Server is up and running, create a database for WP2Cloud on your Media Server, as well as a MySQL user who has all privileges for accessing and modifying it.

Edit wp-config.php and fill in the Media Server database configuration into the MEDIA_DB_* settings (similar to the DB_* settings):

// ** MySQL media server settings ** //
/** The name of the database for WordPress media files */
define('MEDIA_DB_NAME', 'putyourdbnamehere');

/** MySQL database username */
define('MEDIA_DB_USER', 'usernamehere');

/** MySQL database password */
define('MEDIA_DB_PASSWORD', 'yourpasswordhere');

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

Screenshots

1. Add media: when media files are uploaded to the WordPress they are actually uploaded to the cloud storage.  The derivative media files (e.g. thumbnails for pictures) are also uploaded to the cloud storage. Note that Link URL points to the WP2Cloud media file redirector: this URL redirects to the cloud storage URL. Note that this changes the default WordPress behavior for media files and their related derivative files to be stored on the local file system of the Web server hosting the website.

 

2. Insert a picture into a post: when a picture is inserted into a post, WP2CLOUD shortcodes are stored in the post for the webpage instead of the actual picture and thumbnail URLs.  Such WP2CLOUD shortcode contains the ID that uniquely identifies the media file on the website.

 

3. View post source: before the page is delivered by the Web server to the Web client (browser), the WP2CLOUD shortcodes are translated into the actual direct URLs that point to the cloud storage on Amazon S3.  The web browser downloads all the media files (including thumbnails) from the cloud storage, bypassing the web server. Note that media files are served by Amazon S3 directly relying on enormous power of the cloud to make serving the content highly scalable.

 

4. Setup CDN (optional): to make content delivery even faster, you can setup a Content Distribution Network (CDN) for the media files. When the CDN URL is specified, the media files URLs point to the CDN that takes care of distributing files in the most optimal fashion.

 

5. View post source with CDN: when a CDN is used, the media files are served from the CDN.

 

Translations

  • Español por Andrew de WebHostingHub
  • Русский предоставил OblakSoft

Frequently Asked Questions

What makes WP2Cloud different from other plugins that upload files to Amazon S3?

WP2Cloud plugin for WordPress:

1.       Is the last piece in the puzzle of moving the whole WordPress site to Amazon S3 storage. It allows taking full advantage of cloud storage by consolidating both website content and media on the cloud storage.

2.       Makes WordPress web tier stateless: media is stored on cloud storage, not on the web tier filesystem. This makes it possible to auto-scale and auto-balance WordPress web tiers.

3.       Uploads files faster because it relies on OblakSoft WebStor - high performance library for Amazon S3.

4.       Handles media file uploads in a transactional manner. Either both the whole file and all its derivative files (e.g. thumbnails for pictures) get uploaded or nothing does.

Is there a limit on number or size of files being uploaded?

Not at all. Since cloud storage space is nearly limitless, you can use as much of it as you need. WP2Cloud can upload very large files as it uses multi-part upload and thus it is not restricted by the available memory on the Web server.

How long do I have to wait for the files to be uploaded to cloud storage?

Media files are uploaded to cloud storage as fast as physically possible with the help of WebStor - high performance library for Amazon S3.

Can I update media files using this plugin?

Absolutely, your media experience is not affected by this plugin. You can change image, add title, alternative text, media tags – whatever you might need.

Can I use BuddyPress with this plugin?

Yes, just make sure you use ClouSE 1.0b.1.4 (or later) and WP2Cloud 1.2.0 (or later).

I'm using the WordPress-on-S3 AMI, how can I edit files on the EC2 instance?

You can use ssh or PuTTY to log into the instance. You need to have the private key of the key pair that you've used to launch the instance. The ssh command would look like this:

ssh -i your-keypar.pem ec2-user@ec2-N-N-N-N.compute-X.amazonaws.com

The command will get you logged into the instance as the ec2-user. The ec2-user can execute the sudo command, so if you need superuser privileges, just prefix the desired command with sudo. The WordPress root is at /var/www/wordpress and the tree is owned by the apache user, so to edit files there, you must use sudo prefix, e.g. sudo nano /var/www/wordpress/wp-config.php.

To copy files to the instance, you can use scp or PuTTY. The scp command would look like this:

scp -i your-keypar.pem foo.php ec2-user@ec2-N-N-N-N.compute-X.amazonaws.com:.

The command will copy the file foo.php to the ec2-user's home directory. Then you can log into the instance and copy the file to the desired location.

I'm using ClouSE and WP2Cloud to store my website's data in Amazon S3, can I export the data?

Yes. Standard MySQL tools work well with ClouSE. For example, you can use mysqldump to export the whole WordPress database into a file. In fact, WP2Cloud makes data export easier and more robust, because the database dump now includes the media, so the dump fully represents all website's data.

I don't have permissions to install ClouSE on my WordPress database server, can I still use WP2Cloud?

Yes, you can configure WP2Cloud to use a separate Media Server. The configuraiton instructions are provided here.

How to prevent hotlinking to files in cloud storage?

You can rely on Amazon S3 bucket policies. For details please refer to WordPress on S3: how to prevent hotlinking.

I am hesitant to store some of the sensitive data on Amazon S3. What are my options?

You can guarantee data confidentiality in the cloud by running the webserver in a datacenter that is different than the datacenter managing your data (Amazon S3). ClouSE encrypts relational data using strong AES-256 encryption before it leaves the database management site. This ensures that the data is visible neither on the wire nor at the cloud storage provider site. In that respect, ClouSE is the only cloud-based relational data management technology available today that solves the problem of data confidentiality in the cloud.

Where do I go to file a bug or ask a question?

The comprehensive documentation can be found here.

Please visit this forum for questions or comments. Older support discussions can be found here.

If you aren’t able to find a resolution, please email us at bugs@oblaksoft.com. The authors are available for professional consulting to meet your configuration, troubleshooting and customization needs.

Known issues

  • Some Linux distributions have custom-built MySQL binaries that are different from the official MySQL builds available from www.mysql.com. ClouSE may fail to install with custom-built MySQL binaries, printing an error like "ERROR 1126 (HY000): Can't open shared library '/usr/lib64/mysql/plugin/ha_clouse-5.5.20.so' (errno: 13 undefined symbol: my_pthread_fastmutex_init)". In this case you need to install the official MySQL binaries from www.mysql.com. See this and this forum posts for more details.
  • The wp-smushit plugin doesn't work with WP2Cloud. wp-smushit assumes that the images reside on the web server's filesystem, which is not true with WP2Cloud.
  • The existing media files are not automatically moved to the cloud when the plugin is activated. They need to be re-uploaded manually. Media migration functionality may be implemented in the future.

Changelog

1.3.14

  • Fix incorrect media URLs in posts created via XMLRPC (e.g. from a mobile app)
  • Add Spanish translation by Andrew Kurtis, WebHostingHub

1.3.13

  • Handle blog switching in multi-site setup (see this post)

1.3.12

  • Add link to Amazon CloudFront setup guide into the CDN settings description
  • Embed links to step-by-step guides into the "ClouSE is missing" activation error
  • Add Russian translation
  • Implement plugin localization support

1.3.11

  • Add support for wp2cloud-config.php, which can be used to add custom ABSPATH
  • Handle weblob_id-based (redirect) URLs in WooCommerce downloads

1.3.10

  • Make wp2cloud_get_file_url handle files that haven't been uploaded to cloud yet

1.3.9

  • Add wp2cloud_download_file hook for other plugins to integrate with WP2Cloud

1.3.8

  • Add wp2cloud_* hooks for other plugins to integrate with WP2Cloud
  • Handle weblob_id-based (redirect) URLs in sitemaps generated by WordPress SEO plugin
  • Handle weblob_id-based (redirect) URLs in parentheses

1.3.7

  • Handle single-quoted weblob_id-based (redirect) URLs
  • Implement a more robust way of translating weblob_id-based (redirect) URLs to direct cloud URLs
  • Use 301 code (permanent redirect) for weblob_id-based redirects

1.3.6

  • Add a warning to inform the admin when WordPress tables are not on cloud storage

1.3.5

  • Fix a problem with thumbnail updates; now thumbnails can be updated w/o updating the main image
  • Perf: avoid extra database queries when rendering cloud URLs

1.3.4

1.3.3

  • Fix a problem with images that have names containing non-Latin characters
  • Add support for PHP versions that don't have exif_read_data function

1.3.2

  • Properly generate weblob_id-based (redirect) URLs with default WP_CONTENT_URL

1.3.1

  • Add support for WordPress 3.5
  • Fix code that caused PHP warnings in the error log

1.3.0

  • Add support for Media Server
  • Fix code that caused PHP warnings in the error log

1.2.1

  • Fix a problem with uploading images that contain Exif tags

1.2.0

  • Add support for BuddyPress; now BuddyPress avatars are stored on cloud storage
  • Fix a problem with CDN distribution URLs that contain ports; now the port is properly preserved

1.1.5

  • Eliminate some debug-only warnings
  • Properly handle image resize arguments in the weblob_id-based (redirect) URLs
  • Fix compatibility issues with wpallimport plugin

1.1.4

  • Fix problems with translating weblob_id-based (redirect) URLs to direct cloud URLs
  • Fix problems with editing images when using path-based multisite setup

1.1.3

  • Eliminate usage of 'goto' as it's not supported by some PHP versions

1.1.2

  • Add cache control headers for resources that don't change
  • Fix code that caused PHP warnings in the error log
  • Fix problems with images in the header that are wider than the required width
  • Fix problems with image editing after recovery from cloud: help WordPress to auto-create directories for images
  • Fix problems with editing images that were uploaded with a different theme (that had custom image sizes)

1.1.1

  • Fix problems with multisite setup caused by unfortunately named settings.php; thanks to thorstone137 for investigating the issue and providing a fix
  • Fix problems with network-activating the plugin; now it can be network-activated in the multisite setup and won't require activation for each site
  • Fix problems with moving the plugin to a different directory; now it can properly self-reference without hardcoding the path to the plugin

1.1.0

  • Add support for Content Distribution Network (CDN)

1.0.3

  • NOTE: the data format has changed, if you have production data created with version 1.0.2, please contact us
  • Fix problems with image editing
  • Fix problems with images in the header and background
  • Fix problems with showing images in the Visual Editor

1.0.2

  • Fix media URLs for the generic uploader; previously it only worked correctly for media in posts

1.0.1

  • Fix error handling for MySQL errors
  • Fail to activate if ClouSE is not configured, and provide guidance to the user

1.0.0

  • WP2Cloud released

Download source code

Download WP2Cloud (WordPress To Cloud) Source Code: wp2cloud-1.3.14.tgz

Donate

 

Future Plans

Our goal is to design the best WordPress-to-Cloud experience for YOU. Cloud storage is very powerful, we'd love to take full advantage of its capabilities! We really appreciate your feedback. What are your scenarios? What would you like to see added, improved? What problems can we help you with? Feel free to contact us. Thank you in advance!

See also

WordPress on S3: run a beautiful website on Amazon cloud storage.

WordPress on S3: how it works.

WordPress on S3: run it anywhere.

WordPress on S3: no more backups.

WordPress on S3: now with CDN.