Más contenido relacionado La actualidad más candente (20) Similar a Deploying flask with nginx & uWSGI (20) Deploying flask with nginx & uWSGI3. Flask Documents
• Deploying to a Web Server
• http://flask.pocoo.org/docs/quickstart/#deploying-
to-a-web-server
• Deploying with Distribute
• http://flask.pocoo.org/docs/patterns/distribute/
• Deployment Options
• http://flask.pocoo.org/docs/deploying/
13년 7월 23일 화요일
4. Prepare
• gcc & python-dev
• sudo apt-get update
• sudo apt-get install build-essential python-dev
python-pip
• Make User (Don’t use ‘root’ user)
• sudo useradd -r -g www-data -s /bin/false uwsgi
• Make dir
• sudo mkdir -p /var/www/myapp
13년 7월 23일 화요일
5. Prepare -VirtualEnv
• Install
• sudo pip install virtualenvwrapper
• Config
• export WORKON_HOME=~/VirtualEnvs
• mkdir -p $WORKON_HOME
• source /usr/local/bin/virtualenvwrapper.sh
13년 7월 23일 화요일
6. • Shell Script (~/.profile)
• export WORKON_HOME=~/VirtualEnvs
• source /usr/local/bin/virtualenvwrapper.sh
• Make Env. & Enter
• mkvirtualenv myapp
• workon myapp
Prepare -VirtualEnv
13년 7월 23일 화요일
7. Prepare - Cont.
• Install Flask
• Do(or Clone) your app
• Permission
• sudo chown uwsgi:www-data /var/www/myapp -R
• sudo chmod 775 application.py
• Add group
• sudo usermod -a -G www-data myuser
13년 7월 23일 화요일
8. uWSGI
• Install
• pip install uwsgi
• Make log file
• sudo mkdir -p /var/log/uwsgi
• sudo touch /var/log/uwsgi/myapp.log
• Config & Run
• sudo /home/ubuntu/VirtualEnvs/myapp/bin/uwsgi -x
uwsgi.xml
13년 7월 23일 화요일
11. nginx config
server {
listen 8080;
server_name myapp;
root /var/www/myapp;
try_files $uri @uwsgi;
location @uwsgi {
include uwsgi_params;
uwsgi_pass unix:/tmp/myapp.sock;
}
}
13년 7월 23일 화요일
12. nginx
• Write config file
• sudo vi /etc/nginx/sites-available/www
• Symbolic link
• sudo ln -s /etc/nginx/sites-available/www /etc/
nginx/sites-enabled/
• remove default from sites-enabled/
• Restart
• sudo service nginx restart
13년 7월 23일 화요일
14. Tips - Scripts
• start
• sudo /home/myuser/VirtualEnvs/myapp/bin/uwsgi -
x ./uwsgi.xml
• stop
• sudo /home/myuser/VirtualEnvs/myapp/bin/uwsgi --
stop /tmp/myapp.pid
• reload
• sudo /home/myuser/VirtualEnvs/myapp/bin/uwsgi --
reload /tmp/myapp.pid
13년 7월 23일 화요일
15. Tips - Logging Errors
• In production, you won’t see log messages
• Send Error Mails!
• Install Mail Server
• sudo apt-get install postfix
ADMINS = ['yourname@example.com']
if not app.debug:
import logging
from logging.handlers import SMTPHandler
mail_handler = SMTPHandler('127.0.0.1',
'server-error@example.com',
ADMINS, 'YourApplication
Failed')
mail_handler.setLevel(logging.ERROR)
app.logger.addHandler(mail_handler)
13년 7월 23일 화요일
16. Tips - Configuration
• Best Practice - http://flask.pocoo.org/docs/
config/#configuration-best-practices
• make_config.py
13년 7월 23일 화요일
17. Pitfall - ‘print’
• Unicode Encode Error
• No Daemon - OK, Daemon - Error!
• msg = u”한글”; print msg
• -> msg = u”한글”; print msg.encode(‘utf-8’)
13년 7월 23일 화요일
18. Pitfall - Pass EnvVars
• nginx UWSGI_SETENV not work (Bug!)
• uwsgi_param UWSGI_SETENV
DJANGO_SETTINGS_MODULE=myapp.settings;
• Use uwsgi ‘env’
• <env>MYAPP_DEBUG=False</env>
13년 7월 23일 화요일