This commit is contained in:
Joseph Schorr 2013-09-30 17:33:14 -04:00
commit e4653cd7cf
8 changed files with 99 additions and 10 deletions

View file

@ -0,0 +1,38 @@
# Yum install the packages we need for python2.7
# on the EC2 box. python27-devel, make and httpd-devel
# are required for getting modwsgi setup with python27.
packages:
yum:
python27: []
python27-devel: []
make: []
httpd-devel: []
commands:
# The modwsgi version currently installed on the system
# is built with support for python2.6 only. This
# command compiles and installs modwsgi with python2.7 support.
installmodwsgi27:
command: '[ -f mod_wsgi-3.4.tar.gz ] && echo "mod_wsgi-3.4 is already installed" || { wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz; tar xzvf mod_wsgi-3.4.tar.gz; cd mod_wsgi-3.4; ./configure --with-python=python27; make; make install; } | iconv -f utf-8 -t us-ascii//TRANSLIT'
# When our app is being deployed a virtualenv is setup
# automatically for us. This injects the --python=python2.7
# argument into the virtualenv CLI. This tells virtualenv to
# use python2.7 instead of the default python2.6.
usepython27:
command: grep "python2.7" 03deploy.py || sed -i 's/--distribute/--python=python2.7 &/' 03deploy.py
cwd: /opt/elasticbeanstalk/hooks/appdeploy/pre
container_commands:
# Now that our app is installed using python2.7 we
# need to fix some paths that the wsgi configuration
# has pointing to python2.6. Copy the default eb wsgi.conf,
# check it into git and replace the paths pointing
# to python2.6. Check this diff out for the changes required:
# https://github.com/leetreveil/elasticbeanstalk-python27/commit/3b3c955cfe686b9df77e0dddaf299ce6e1a20f32
01replacewsgiconf:
command: scp /opt/python/ondeck/app/wsgi.conf /opt/python/ondeck/wsgi.conf
option_settings:
"aws:elasticbeanstalk:container:python:staticfiles":
"/static": "static/"

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
*.pyc *.pyc
venv venv
.elasticbeanstalk/

View file

@ -1,6 +1,6 @@
import logging import logging
from app import app from app import app as application
import endpoints.index import endpoints.index
import endpoints.api import endpoints.api
@ -8,9 +8,12 @@ import endpoints.web
import endpoints.tags import endpoints.tags
import endpoints.registry import endpoints.registry
# Remove this for prod config
application.debug = True
if __name__ == '__main__': if __name__ == '__main__':
FORMAT = '%(asctime)-15s - %(levelname)s - %(pathname)s - ' + \ FORMAT = '%(asctime)-15s - %(levelname)s - %(pathname)s - ' + \
'%(funcName)s - %(message)s' '%(funcName)s - %(message)s'
logging.basicConfig(format=FORMAT, level=logging.DEBUG) logging.basicConfig(format=FORMAT, level=logging.DEBUG)
app.run(port=5001, debug=True) application.run(port=5001, debug=True)

View file

@ -1,8 +1,8 @@
import logging import logging
import json
from flask import make_response, request, session, Response, abort from flask import make_response, request, session, Response, abort
import simplejson as json
from functools import wraps from functools import wraps
from datetime import datetime from datetime import datetime
from time import time from time import time

View file

@ -1,8 +1,8 @@
import logging import logging
import json
from flask import abort, request, jsonify, make_response from flask import abort, request, jsonify, make_response
import simplejson as json
import storage import storage

8
requirements-nover.txt Normal file
View file

@ -0,0 +1,8 @@
peewee
flask
py-bcrypt
Flask-Principal
Flask-Login
Flask-Mail
python-dateutil
boto

View file

@ -1,6 +1,17 @@
peewee Flask==0.10.1
flask Flask-Login==0.2.7
py-bcrypt Flask-Mail==0.9.0
Flask-Principal Flask-Principal==0.4.0
Flask-Login Jinja2==2.7.1
Flask-Mail MarkupSafe==0.18
Werkzeug==0.9.4
argparse==1.2.1
blinker==1.3
boto==2.13.3
distribute==0.6.34
itsdangerous==0.23
peewee==2.1.4
py-bcrypt==0.4
python-dateutil==2.1
six==1.4.1
wsgiref==0.1.2

28
wsgi.conf Normal file
View file

@ -0,0 +1,28 @@
LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome /opt/python/run/venv
WSGISocketPrefix run/wsgi
WSGIRestrictEmbedded On
<VirtualHost *:80>
Alias /static /opt/python/current/app/static/
<Directory /opt/python/current/app/>
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias / /opt/python/current/app/application.py
<Directory /opt/python/current/app/>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess wsgi processes=1 threads=15 display-name=%{GROUP} \
python-path=/opt/python/current/app:/opt/python/run/venv/lib/python2.7/site-packages user=wsgi group=wsgi \
home=/opt/python/current/app
WSGIProcessGroup wsgi
</VirtualHost>