Flask: Difference between revisions
Jump to navigation
Jump to search
| Line 37: | Line 37: | ||
=Integrate with nginx= | =Integrate with nginx= | ||
https://vladikk.com/2013/09/12/serving-flask-with-nginx-on-ubuntu/ | |||
Mayor part is from this site [https://vladikk.com/2013/09/12/serving-flask-with-nginx-on-ubuntu/]. | |||
These are the configuration files I needed. | |||
* Install uwgi-emperor and it's python plugin | |||
Generic configuration file (/etc/uwsgi-emperor/emperor.ini): | |||
[uwsgi] | |||
# try to autoload appropriate plugin if "unknown" option has been specified | |||
autoload = true | |||
# enable master process manager | |||
master = true | |||
# spawn 2 uWSGI emperor worker processes | |||
workers = 2 | |||
# automatically kill workers on master's death | |||
no-orphans = true | |||
# place timestamps into log | |||
log-date = true | |||
# user identifier of uWSGI processes (same as who runs the web-server) | |||
uid = www-data | |||
# group identifier of uWSGI processes (same as who runs the web-server) | |||
gid = www-data | |||
# vassals directory | |||
emperor = /etc/uwsgi-emperor/vassals | |||
plugins = python3 | |||
Application configuration file (/etc/uwsgi-emperor/vassals/welcome.ini) | |||
[uwsgi] | |||
#application's base folder | |||
base = /opt/apo/flask | |||
#python module to import | |||
app = welcome | |||
module = %(app) | |||
#home = %(base)/venv | |||
pythonpath = %(base) | |||
#socket file's location | |||
socket = /var/local/uwsgi/%n.sock | |||
#permissions for the socket file | |||
chmod-socket = 666 | |||
#the variable that holds a flask application inside the module imported at line #6 | |||
callable = app | |||
#location of log files | |||
logto = /var/log/uwsgi/%n.log | |||
plugins = python3 | |||
* Create a virtual webserver (port 80 is save enough if you have a secure front-end server) | |||
---- | |||
<syntaxhighlight lang="nginx"> | |||
server { | |||
listen 80 ; | |||
listen [::]:80 ; | |||
root /var/www/flask; | |||
server_name <fqdn>; | |||
location / { | |||
include uwsgi_params; | |||
uwsgi_pass unix:/var/local/uwsgi/welcome.sock; | |||
} | |||
} | |||
</syntaxhighlight> | |||
Revision as of 21:29, 14 February 2020
basics
Check this[1]
Hello world app:
#!/usr/bin/env python3
from flask import Flask
print(__name__)
app = Flask(__name__)
@app.route('/')
def main():
return 'Hello World'
if __name__ == '__main__':
app.run() # Default (listen to localhost port 5000, use flash run for options)
#app.run(host='0.0.0.0',port=8080,Debug=True) # Run in debug mode, listen to all hosts on port 8080
Run the build-in server listening to all
export FLASK_APP=welcome_app.py
flask run --host=0.0.0.0
welcome_app * Serving Flask app "welcome_app" * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Now you can browse to <serverIP>:5000
templates
https://flask.palletsprojects.com/en/1.1.x/patterns/templateinheritance/#template-inheritance
Integrate with nginx
Mayor part is from this site [2].
These are the configuration files I needed.
- Install uwgi-emperor and it's python plugin
Generic configuration file (/etc/uwsgi-emperor/emperor.ini):
[uwsgi] # try to autoload appropriate plugin if "unknown" option has been specified autoload = true # enable master process manager master = true # spawn 2 uWSGI emperor worker processes workers = 2 # automatically kill workers on master's death no-orphans = true # place timestamps into log log-date = true # user identifier of uWSGI processes (same as who runs the web-server) uid = www-data # group identifier of uWSGI processes (same as who runs the web-server) gid = www-data # vassals directory emperor = /etc/uwsgi-emperor/vassals plugins = python3
Application configuration file (/etc/uwsgi-emperor/vassals/welcome.ini)
[uwsgi] #application's base folder base = /opt/apo/flask #python module to import app = welcome module = %(app) #home = %(base)/venv pythonpath = %(base) #socket file's location socket = /var/local/uwsgi/%n.sock #permissions for the socket file chmod-socket = 666 #the variable that holds a flask application inside the module imported at line #6 callable = app #location of log files logto = /var/log/uwsgi/%n.log plugins = python3
- Create a virtual webserver (port 80 is save enough if you have a secure front-end server)
server {
listen 80 ;
listen [::]:80 ;
root /var/www/flask;
server_name <fqdn>;
location / {
include uwsgi_params;
uwsgi_pass unix:/var/local/uwsgi/welcome.sock;
}
}