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.