User:Pedro Sá Couto/TW/Deployment

From XPUB & Lens-Based wiki
< User:Pedro Sá Couto‎ | TW
Revision as of 15:32, 19 June 2020 by Pedro Sá Couto (talk | contribs) (Created page with "# 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:...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
  1. Run
    1. 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

    1. in Production with gunicorn and unix sockets

Based on https://medium.com/faun/deploy-flask-app-with-nginx-using-gunicorn-7fda4f50066a

      1. 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 ```

    1. 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`

    1. 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;
   }

```

    1. 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