By yaku buku
I’m trying to traceback through the errors to find the core problem as to why my domain is displaying a 502 bad Gateway error.
I’m running a Django app using Python3+ on Digital Ocean Ubuntu 16.04 using Nginx and supervisor (which manages daphne because ASGI is needed for Django Channels).
I just can’t get it to work, I must be missing something.
Both Nginx and Supervisor are running.
The nginx error log shows:
connect() failed (111: Connection refused) while connecting to upstream, client: 86.xxx.xxx.xxx, server: myapp.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:9000/", host: "www.myapp.com"
Running sudo /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
2019-02-27 16:39:55,627 CRIT Supervisor running as root (no user in config file)
2019-02-27 16:39:55,627 WARN Included extra file "/etc/supervisor/conf.d/myapp_asgi.conf" during parsing
2019-02-27 16:39:55,629 INFO Creating socket tcp://127.0.0.1:8000
2019-02-27 16:39:55,629 INFO Closing socket tcp://127.0.0.1:8000
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
my nginx conf file
upstream myapp {
server 127.0.0.1:8000;
}
server {
server_name myapp.com www.myapp.com;
location = /favicon.ico { access_log off; log_not_found off; }
location / {
try_files $uri @proxy_to_app;
}
location /static/ {
root /home/me/myapp/src/myapp;
}
location /media/ {
root /home/me/myapp/src/myapp;
include /etc/nginx/mime.types;
}
location @proxy_to_app {
proxy_pass http://myapp;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/myapp.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/myapp.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.myapp.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = myapp.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name myapp.com www.myapp.com;
return 404; # managed by Certbot
}
my supervisor config file
[fcgi-program:asgi]
environment=PYTHONPATH=/usr/lib/python3.6/
# TCP socket used by Nginx backend upstream
socket=tcp://localhost:8000
# Directory where your site's project files are located
directory=/home/me/myapp/src/myapp
# Each process needs to have a separate socket file, so we use process_num
# Make sure to update "mysite.asgi" to match your project name
command=/home/me/Env/myapp/bin/daphne -u run/daphne/daphne%(process_nu$
# Number of processes to startup, roughly the number of CPUs you have
numprocs=4
# Give each process a unique name so they can be told apart
process_name=asgi%(process_num)d
# Automatically start and recover processes
autostart=true
autorestart=true
# Choose where you want your log to go
stdout_logfile=/home/me/daphne/logs/asgi.log
redirect_stderr=true
Please if someone could look over this, I’ve spend days with no progress.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.