Tue 02 April 2013 | -- (permalink)
I'm doing an analysis of volunteer data and I set up an aws instance with Postgres to act as a database for the project.
I thought it might be helpful to document the steps I took to set this up.
1. Sign up for AWS, and login
I've been using AWS for a while so I really don't have any advice here. I think it was pretty straight forward.
2. Create a new EC2 instance
From the EC2 Management console click the "Launch Instance" Button.
Use the Quick Launch wizard
Chose a working key pair, use Amazon Linux AMI as the Launch configuration, then Continue.
3. Create a security group
I created a new security group that enabled only ssh (22) and postgres (5432). This may have been unnecessary, let me know if the default security groups would have worked.
- Click on edit details
- Choose the Security Settings button
- Create a new Security Group
- Call it Postgres
- Add rule SSH
- Port: 22
- Source 0.0.0.0/0
- Add rule Postgres
- Port: 5432
- Source 0.0.0.0/0
- Save
- Launch
4. Login in to the box
Download the key pem file to your local machine. I called it ami.pem on my machine.
Then use ssh to log in:
ssh -i w.pem ec2-user@ec2-xx-xx-xx-xx.compute-1.amazonaws.com
You can get the DNS from the EC2 config console.
5. Update
Update the installed services using yum:
sudo yum update
6. Install PostgreSQL
Install the psql client:
sudo yum install postgresql
7. Install PostgreSQL server
Install the psql server:
sudo yum install postgresql-server
Configure by following the install notes:
service postgresql initdb
chkconfig postgresql on
8. Start postgres and create a user
Start the postgres server:
service postgresql start
Test login:
sudo su - postgres
psql
postgres=# create user jsmith with password 'testpass';
9. Configure Postgres for external connections
Set up postgres to allow external access. Configure the pg_hba.conf first by adding to the end of /var/lib/pgsql9/data/pg_hba.conf:
# Allow access from any ip
host all all 0.0.0.0/0 md5
Also update the Postgres config file to listen on an address by changing the listen address parameter in /var/lib/pgsql9/data/postgres.conf:
listen_addresses = '*'
10. Restart
Restart postgres to pick up the new config files:
service postgresql restart
Test that your user can login from the server:
psql -U jsmith -h localhost
And now try from your local machine (assuming you have the psql client installed):
psql -U jsmith -h ec2-user@ec2-xx-xx-xx-xx.compute-1.amazonaws.com
11. Success
At this point you should be all set to start loading data. You'll want to create users for the other collaborators and grant them necessary permissions.
