User:Pedro Sá Couto/TW/Deployment
- 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 * http://127.0.0.1/watermark * http://127.0.0.1/watermark/uploadbook * http://127.0.0.1/watermark/about
- added page /test `watermark/test` for testing url_for() - correct
- made urls relative
- service file with `--env SCRIPT_NAME=/watermark` see above
gunicorn -w 4 -b :5000 app:app