What is Covered
Slide Topic
3 Architecture Overview
4 Signup for AWS
5-13 Part 1: Create an EC2 Instance
14-16 Part 2: Configure your EC2 Instance
17-27 Part 3: Create an RDS Instance
28-33 Part 4: Install WordPress
34-37 Part 5: Configure S3
38-52 Part 6: Install Git
53 Done.
Part One:
Create an EC2 instance
In AWS-speak creating a new virtual server is called an
“instance”. “Spinning up an EC2 instance” is a phrase
you will hear quite often which just refers to starting a
new EC2 instance.
EBS refers to the “hard drive” that is attached to the
EC2 instance. It’s where all the system files will reside.
Step 1: From the AWS Management Console click on EC2
Step 2: Click on “Launch Instance” and select Quick Launch Wizard
(Enter the Instance name, create a new key pair, download the key pair and select Ubuntu Server 12.04)
Step 3: Select Amazon Linux AMI
(Under Instance Details make sure t1.micro is selected it’s part of the free trial, then select Launch)
Step 7: Right click on the IP address and select Associate. Assign it to your new instance.
Step 8: Select your new Instance and right click on it
(this contains some very useful information you might need later on)
Part Two:
Configure your EC2 instance
Now that the EC2 instance has been created it’s time to
install the LAMP (Linux, Apache, MySQL and PHP) stack
which we’ll need before you can install WordPress. The
Linux kernel was preinstalled when the EC2 instance was
created. Apache and PHP will be installed in this section.
MySQL will be installed in the next section.
There are two ways you can connect to EC2, one is to right click on the EC2 instance name and launch a
Java SSH client. The other way is to use a command line SSH client such as Terminal.app on the Mac.
This tutorial will use Terminal.
Step 1: Connect to the EC2 instance
From Terminal go to the directory that contains <filename>.pem (the file contains your credentials to
access your EC2 instance.)
Change the permission of the file:
chmod 400 [filename].pem
Connect to your EC2 instance:
ssh -i [filename].pem ubuntu@[Elastic IP]
Switch to superuser:
sudo su
Install any new updates:
sudo apt-get update
Install Apache:
apt-get -y install apache2
Install PHP:
apt-get -y install php5 php5-mysql
Step 2: Install Apache and PHP
From Terminal go to the directory that contains <filename>.pem
Change the permission of the file:
chmod 400 [filename].pem
Connect to your EC2 instance:
ssh -i [filename].pem ubuntu@[Elastic IP]
Switch to superuser:
sudo su
Change to the root directory:
cd /var/www
Download the latest WordPress package:
wget http://wordpress.org/latest.tar.gz
Extract WordPress:
tar -xzvf latest.tar.gz
Move WordPress to the root www folder:
mv wordpress/* /var/www/
Delete the WordPress tar file and the existing index.html file
rm latest.tar.gz
rm index.html
Change permissions on the directory:
chown -hR www-data:www-data /var/www
chmod -R g+rw /var/www
Restart the Apache server
service apache2 restart
Step 1: Download and install WordPress
Step 2: Point your browser to the Elastic IP address and create the config file
Step 4: Goto your Elastic IP address and visit your new blog
Part Five:
Configure S3
S3 will be used to serve up media images (jpg, png,
etc...) on the WordPress blog. S3 uses the term
“bucket”, think of it as a container for your files. The
bucket name has to be unique across the entire S3
platform.
Step 1: From the Management Console click on S3 and select Create Bucket
Step 3: Click on Upload and add an image
(Use the S3 link when adding an image to a blog post in WordPress)
Part Six:
Install Git
Git is a powerful distributed version control system. For
this tutorial we’ll be using Git on the EC2 instance,
SourceTree an open source Git Mac client and Beanstalk*
a service to manage and deploy code. Beanstalk has a
free trial plan.
BeanstalkSourceTree
* Beanstalk should not be confused with Elastic Beanstalk which is an AWS offering to manage your application.
Not 100%
tested
1. Goto http://git-scm.com/downloads/ and download the latest version of Git. Double click on the
installer and follow the directions.
2. Download SourceTree an open source Git client from http://www.sourcetreeapp.com and follow the
instructions to install and configure it.
3. Open a terminal window
Goto the hidden SSH directory in your home directory:
cd ~/.ssh
Generate a key (don’t enter any passphrase):
ssh-keygen -t rsa
Copy the generated key to the clipboard (needed for Beanstalk):
cat ~/.ssh/id_rsa.pub | pbcopy
Step 1: Install Git on your local computer
1. Goto http://beanstalkapp.com and setup an account (it’s free for one user).
2. Add your computers SSH key to the account by going to:
https://<your-account>.beanstalkapp.com/public_keys
Step 2: Setup Beanstalk
3. Click on Add Public Key 4. Add your SSH key which is in the clipboard (⌘+P)
5. Add a repository by going to https://<your-account>.beanstalkapp.com/repositories and click on
Create a repository
Setup Beanstalk (cont.)
6. Give it a name and select “Git” for type and click Next Step
Setup Beanstalk (cont.)
8. Launch SourceTree and click on the icon with the database and plus symbol and add the Git
information from Beanstalk. You have successfully cloned the empty repository on Beanstalk to your
local computer.
Setup Beanstalk (cont.)
9. Before we can setup the Deployment Servers in Beanstalk, you need to commit and push a change to
Beanstalk. Add a file to the local destination path and then refresh SourceTree. Commit the file and
push the change.
Setup Beanstalk (cont.)
In Beanstalk we will configure the server that will have the code deployed to. From the Repository tab
click on Deployment and select Create Server & Environment
Step 3: Final setup for Beanstalk (cont.)
Select SFTP for the server type.
Step 3: Final setup for Beanstalk (cont.)
Enter the details of your EC2 instance. Click on “download the key” you will be coping this to your EC2
instance. (DO NOT click “Check Connection”, that will be in the next step)
Step 3: Final setup for Beanstalk (cont.)
Copy the <repository-name>.pub deployment key to your EC2 instance in the /home/ec2-user/
directory
Then from a terminal window add the <repository-name>.pub file to the EC2 authorized keys file:
cat <repository-name>.pub >> ~/.ssh/authorized_keys
Now click on “Check Connection”
Step 3: Final setup for Beanstalk (cont.)
Click on Next Step
Step 3: Final setup for Beanstalk
Done. You can now start to push code to your EC2 instance from Beanstalk.
From Terminal go to the directory that contains <filename>.pem (the file contains your credentials to
access the EC2 instance.)
Change the permission of the file:
chmod 400 [filename].pem
Connect to your EC2 instance:
ssh -i [filename].pem ubuntu@[Elastic IP]
Switch to superuser:
sudo su
Install Git:
apt-get -y install git
Create a new directory:
mkdir /var/www/ferrari
Setup a Git repository:
mkdir /var/www/ferrari
cd /var/www/ferrari
git init --bare
Copy the <repository-name>.pub file to EC2 then copy the <repository-name>.pub file to the EC2
authorized keys file:
cat beanstalk_rsa.pub >> ~/.ssh/authorized_keys
Step 4: Install Git on EC2
Done.
Now What?
Make things and break things to learn how all the various
services of AWS work together. Visit AWS for more
tutorials at:
http://aws.amazon.com/articles/
Created by:
Manish Jain
The backstory to why this presentation was created can
be found on my blog at:
http://celestri.org/
Create and edit the config file:
cd /var/www
mv wp-config-sample.php wp-config.php
nano wp-config.php
Quick nano tutorial – Control-X to exit.
You will need to edit the following entries in the config file with the values from your RDS MySQL
instance:
define(‘DB_NAME’, ‘wordpress’);
define(‘DB_USER’, ‘root’);
define(‘DB_PASSWORD’, ‘YOUR_PASSWORD’);
define(‘DB_HOST’, ‘localhost’);
Below is a mapping of the WordPress config file and the RDS MySQL instance:
‘DB_NAME’ = Database Name
‘DB_USER’ = Master Username
‘DB_PASSWORD’ = Master User Password
‘DB_HOST’ = RDS Endpoint
Instructions to manually edit the WordPress config file
From Terminal go to the directory that contains <filename>.pem
Change the permission of the file:
chmod 400 [filename].pem
Connect to your EC2 instance:
ssh -i [filename].pem ubuntu@[Elastic IP]
Switch to superuser:
sudo su
To install MySQL:
apt-get install -y mysql-server
Create a root password for MySQL when prompted
Enter into the MySQL shell to enter the commands
mysql -u root -p
(enter the password when prompted)
Now you are in the MySQL shell and will create a new database, you should see mysql>
CREATE DATABASE wordpressAWS;
Create a new user:
CREATE USER myadmin@localhost;
Set the password for the newly created user:
SET PASSWORD FOR myadmin@localhost = PASSWORD(“whatever”);
Instructions to install MySQL on an EC2 instance
Grant all privileges to the newly created user:
GRANT ALL PRIVILEGES ON wordpressAWS.* TO myadmin@localhost IDENTIFIED BY
“whatever”;
Then refresh MySQL:
FLUSH PRIVILEGES;
Exit the MySQL shell:
exit
From the command line secure your database installation:
mysql_secure_installation
Instructions to install MySQL on an EC2 instance (continued)
Cyberduck is an open source FTP/SFTP client. Enter the details below to configure it.
Use Cyberduck to copy files to EC2
Your [filename].pem
Select SFTP
Enter ubuntu