Django App Prerequisites for AWS Elastic Beanstalk: Difference between revisions
| Line 3: | Line 3: | ||
* Install all prerequisites necessary for the Django app, e.g. Python, pip, Django, etc. | * Install all prerequisites necessary for the Django app, e.g. Python, pip, Django, etc. | ||
* See [Working With Django Projects, The Basics] | * See [[Working With Django Projects, The Basics]] | ||
* Run and test the Django application locally, e.g. with `python manage.py runserver`. | * Run and test the Django application locally, e.g. with `python manage.py runserver`. | ||
Revision as of 17:03, 11 February 2016
Create a Django application locally
- Install all prerequisites necessary for the Django app, e.g. Python, pip, Django, etc.
- See Working With Django Projects, The Basics
- Run and test the Django application locally, e.g. with
python manage.py runserver.
Create a virtual Python environment for the EC2 instance
Install virtualenv if needed:
$ which virtualenv $ pip install virtualenv
Create the virtual Python Environment[1]
$ virtualenv -p python3.4 ./.venv
Where py34_nrose_env is a name that makes sense for the app's virtual environment.
Start the virtual environment:
$ . ./.venv/bin/activate
Confirm the Python version:
$ python --version
Leave the virtual environment:
$ deactivate
Install Django [2]
(Make sure to use the virtual Python 3 environment.)
$ pip install django
Confirm the installation with
$ pip freeze | grep -i django Django==1.9.2
Install the Django project and its dependencies.
Install AWS Elastic Beanstalk CLI [3]
It's necessary to give the EC2 IAM role permission to assign AWS Elastic Beanstalk roles.
N.B. It would probably be better to have a dedicated IAM user account to perform these actions, and assign this policy to a group that the user account would then be included in.
AWS IAM Management Console > Roles > nrosedevs_ec2_iam_role > Permissions tab > Attach Policiy button > select AWSElasticBeanstalkFullAccess
Install the AWS Elastic Beanstalk cli:
N.B. See [Troubleshooting_Deploying_a_Django_Application_With_Elastic_Beanstalk#Errors_installing_awsebcli_on_Mac_OS_for_Python_2.7|the Troubleshooting article] for issues installing awsebcli on Mac OS X.
$ pip install awsebcli
Confirm the installation with eb --version
Create an Elastic Beanstalk application in the project directory:
$ eb init
This command will prompt for properties of the application, e.g. application name, keyname pair, python version, region, etc.
Create an Elastic Beanstalk environment. This will prompt for the name of the environment and a domain name prefix for the environment.
$ eb create
This command--even when run locally--will launch a new Elastic Beanstalk environment, and with it a new EC2 instance to support it.
The new EB environment and EC2 instance can be seen in the AWS Management Console.
This command and eb deploy take the local files (and a snapshot of the database?) and upload them to the corresponding EB environment.
I was unaware of this point for the first two days of working my way through the documentation. Maybe it's because I jumped into the topic of deploying a Django app that I missed it, but it wasn't really stated plainly the abstract concept of working locally and pushing a working version of the app to the EC2 instance.
Install Git and PostgreSQL
$ sudo yum install git-all
Notes
See also
- Common Steps for Deploying Python Applications - AWS Elastic Beanstalk documentation
- Installing Python - AWS Elastic Beanstalk documentation
- Deploying a Django app on AWS
References
- ↑ Setting up a virtual Python environment (AWS documentation)
- ↑ Install Django (Deploying a Django Application - AWS Elastic Beanstalk)
- ↑ Installing the AWS Elastic Beanstalk CLI (AWS documentation)