After rather successful year of using WordPress, I have decided to move my blog to AWS. I was considering the move for long time, motivated by Free Tier and finally I found some time to do it.
At first, I have created WordPress Stack using CloudFormation, but personally I prefer Ubuntu over Amazon Linux and I will focus on configuration of Ubuntu EC2 instance here.
- Export your existing blog
WP-Admin > Tools > Export
- Login to AWS console and Create Key Pair
- Launch EC2 instance
I use Ubuntu HVM. I recommend t2.micro, as it’s free for the first year. You should specify created/uploaded key.
- Login to your EC2 instance using Public DNS or IP and your key
ssh -i .aws/your_key.pem ubuntu@ec2xxxxx.compute.amazonaws.com
NOTE: you key should be readable only by you. To achieve that, you can do:
chmod 600 .aws/your_key.pem
- Configure Ubuntu
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install apache2 php5 php5-mysql libapache2-mod-php5 libapache2-mod-auth-mysql mysql-server
- Configure MySQL
sudo mysql_secure_installation
mysql -uroot -p
CREATE DATABASE wordpress;
CREATE USER 'wordpress' IDENTIFIED BY 'SOMEPASS';
GRANT ALL ON wordpress.* TO 'wordpress';
- Configure wordpress
sudo -i
cd /var/www/html/
wget https://wordpress.org/latest.tar.gz
tar xpfz latest.tar.gz
rm latest.tar.gz
cd wordpress/
mv wp-config-sample.php wp-config.php
sudo chown -R www-data:www-data /var/www/html
# edit wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'SOMEPASS');
define('DB_HOST', 'localhost');
- Configure Apache
# edit /etc/apache2/sites-available/wordpress.conf
ServerName ec2xxxxx.compute.amazonaws.com
ServerAlias YOURDOMAIN.COM
DocumentRoot /var/www/html/wordpress
DirectoryIndex index.php
AllowOverride All
Order Deny,Allow
Allow from all
# enable wordpress in apache2
sudo a2ensite wordpress
sudo service apache2 restart
- Enable HTTP access to your EC2 instance
Go to EC2 console > Instances > Select you instance > Description >
Click on your `Security group` > Select Inbound > Edit > Add rule > HTTP > Save
- Point your webrowser to your EC2 instance: http://ec2xxxxx.compute.amazonaws.com/
- Setup your wordpress account
- Upload dumped wordpress data
WP-Admin > Tools > Import > WordPress > > Upload file import
NOTES:
You will need to install WordPress Importer plugin.
- Assign post to correct user.
Don’t forget to Import Attachments!
- Install your favourite plugins and themes
As for plugins, I strongly recommend: JetPack, SyntaxHighlighter Evolved, Google Analytics Dashboard for WP and BackUpWordPress or ajax-load-more.
- Add favicon
Copy selected favicon.ico to /var/www/html/wordpress
Voilà !
BTW: You may want to increase security of your instance and setup swap just in case memory usage exceeds your EC2 instance size.