Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python Deployment: Flask on Heroku or EC2 with Chef and supervisord

Python Deployment: Flask on Heroku or EC2 with Chef and supervisord

Going through the deployment of a Flask app on Heroku, and then setting up an EC2 environment with Chef, uWSGI, and supervisord.

Flaviu Simihaian

May 08, 2012
Tweet

More Decks by Flaviu Simihaian

Other Decks in Technology

Transcript

  1. In the virtual env: $pip freeze > requirements.txt $ vi

    Procfile web: python minitwit.py $ foreman start Tuesday, May 8, 12
  2. Script to install Chef $ curl -L http://bit.ly/Jd61QI | bash

    #!/usr/bin/env bash sudo apt-get -y update sudo apt-get -y install build-essential zlib1g-dev libssl-dev libreadline-gplv2-dev libyaml-dev git-core cd /tmp sudo wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz sudo tar -xvzf ruby-1.9.3-p125.tar.gz cd ruby-1.9.3-p125/ sudo ./configure --prefix=/usr/local sudo make sudo make install sudo gem install chef ruby-shadow --no-ri --no-rdoc Tuesday, May 8, 12
  3. Make recipes $ mkdir /var/chef $ cd /var/chef $ mkdir

    -p cookbooks/main/recipes $ vim cookbooks/main/recipes/default.rb Tuesday, May 8, 12
  4. include_recipe "python" # create a virtual env python_virtualenv "/home/flavma/envs/cltpy" do

    interpreter "python2.7" owner "admin" group "sudo" action :create end python_pip "flask" do virtualenv "/home/flavma/envs/flavma" action :install end Tuesday, May 8, 12
  5. Run Recipes $ vim solo.rb $ chef-solo -c solo.rb $

    vim node.json $ chef-solo -c solo.rb -j node.json Tuesday, May 8, 12
  6. [program:flask_app] command=/home/user/envs/flask_app/bin/uwsgi -s /home/user/flask/uwsgi.sock -w myapp:app -H /home/user/envs/flask_app --chmod-socket 666

    --touch- reload /home/user/flask --catch-exceptions directory=/home/user/flask user=user autostart=true autorestart=true stdout_logfile=/home/user/flask/logs/uwsgi.log redirect_stderr=true stopsignal=QUIT Tuesday, May 8, 12