Pedro Sá Couto 33cba5d96b | 4 years ago | |
---|---|---|
__pycache__ | 5 years ago | |
app | 5 years ago | |
.gitignore | 5 years ago | |
README.md | 4 years ago | |
app.log | 5 years ago | |
config.py | 5 years ago | |
file.db | 5 years ago | |
gunicorn_run.sh | 5 years ago | |
requirements.txt | 5 years ago | |
run.py | 5 years ago | |
wsgi.py | 5 years ago |
README.md
Run
in Development
export FLASK_APP=run.py
export FLASK_ENV=development
flask run
Using gunicorn:
gunicorn --env SCRIPT_NAME=/watermark -w 4 -b 127.0.0.1:5000 app:app --log-level debug
-w
workers-b
bind to address / unix socker
And gunicorn with using unix sock: (this how it should run in production) ` gunicorn --env SCRIPT_NAME=/watermark --workers 4 --bind unix:app.sock -m 007 app:app --log-level debug
in Production with gunicorn and unix sockets
Based on https://medium.com/faun/deploy-flask-app-with-nginx-using-gunicorn-7fda4f50066a
systemd service file
Add to /etc/systemd/system/watermarks.service
[Unit]
After=network.target
[Service]
User=psc
Group=www-data
WorkingDirectory=/var/www/TacticalApp
Environment="PATH=/var/www/TacticalApp/venv/bin"
ExecStart=/var/www/TacticalApp/venv/bin/gunicorn --env SCRIPT_NAME=/watermarks --workers 4 --bind unix:app.sock -m 007 app:app
[Install]
WantedBy=multi-user.target
enable & start service file
systemctl enable watermarks.service
systemctl start watermarks.service
It is also a good idea to check the status of the service
systemctl status watermarks.service
Nginx config
location / {
# if using gunicorn with app sock, use:
proxy_pass http://unix:/var/www/TacticalApp/app.sock;
# if using gunicord with port 5000, use:
proxy_pass http://127.0.0.1:5000;
}
debug.
It might be helpful to enable gunicorn logging, while in development, to check what is going on,
by replacing in watermarks.service, the ExecStart=
value with:
ExecStart=/var/www/TacticalApp/venv/bin/gunicorn --log-level debug --error-logfile /var/www/TacticalApp/app.log --workers 4 --bind unix:app.sock -m 007 app:app
And reloading the services
systemctl daemon-reload
systemctl restart watermarks.service
and the start following app.log:
tail -f /var/www/TacticalApp/app.log
But in the long run logging should be disabled
09.06.2020 Handling url path /watermarks
-
gunicorn has to be started with argument
--env SCRIPT_NAME=/watermark
which defines its path:gunicorn --env SCRIPT_NAME=/watermark --workers 4 --bind unix:app.sock -m 007 app:app --log-level debug
- allows for the following URLs
-
added page /test
watermark/test
for testing url_for() - correct -
made urls relative
-
service file with
--env SCRIPT_NAME=/watermark
see above