Running django channels with daphne on systemd

后端 未结 3 1302
Happy的楠姐
Happy的楠姐 2020-12-30 18:00

First of all, sorry for the long question, I hope a few of you have patience for this.

TL; DR: How do I load django settings correctly in systemd?

I am fol

3条回答
  •  不知归路
    2020-12-30 18:03

    Yes, supervisord did work. Key bits of the /etc/supervisor/conf.d/project_name.conf were (some further links in the commented portions):

    [program:platform_asgi_daphne]
    ; # https://stackoverflow.com/questions/17055951/how-to-set-environment-variables-in-supervisor-service
    ; # https://github.com/django/daphne/pull/37
    ; # https://wiki.cac.washington.edu/display/infra/Extracting+Certificate+and+Private+Key+Files+from+a+.pfx+File
    ; # daphne -e ssl:8443:privateKey=localhost.key:certKey=localhost.crt 
    environment =
        DJANGO_SECRET_KEY='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        DJANGO_DEBUG='True'
    directory=/path/to/project/
    ; # http://channels.readthedocs.io/en/stable/deploying.html
    ; command=/path/to/venv/bin/daphne --port 80 --bind 0.0.0.0 classact.asgi:channel_layer
    command=/path/to/venv/bin/daphne -e ssl:443:privateKey=../keys/server.key:certKey=../keys/server.crt --bind 0.0.0.0 projectfoldername.asgi:channel_layer
    ;user=webapps
    ;group=webapps
    user=root
    group=webapps
    
    [program:platform_asgi_workers]
    ; # https://github.com/django/channels/issues/408#issuecomment-276384104
    environment =
        DJANGO_SECRET_KEY='xxxxxxxxxxxxxxxxxxxxxxxxx',
        DJANGO_DEBUG='True'
    command=/path/to/venv/bin/python /path/to/project/manage.py runworker
    process_name=asgi_worker%(process_num)s
    numprocs=2
    ;user=webapps
    user=root
    group=webapps
    

    I had a couple of issues running as the user webapps which have yet to be sorted out so they run as root (writing to an encrypted folder with odd perms). I didn't get to the point where I wasn't repeating a bunch of environment vars in each section (there is probably a way). There are several others there like the database, user, static root etc depending on the platform (prod or dev).

    I also have some certs to deal with so that is shown as well (if not needed take out the ssl parts). Also note running two workers.

提交回复
热议问题