Ho visto molte domande su SO riguardo questo argomento e ho provato quanti più metodi possibile ma non risolve ancora il problema per me quindi spero che questo post possa essere utile.Nginx + uWsgi + Django 'Autorizzazione negata durante il collegamento a monte' (presa)
Sto seguendo il tutorial da questo sito per configurare Django su Nginx wtih uWSGI: http://www.oliverelliott.org/article/computing/tut_setup_nginx_django/
file di uwsgi.ini
[uwsgi]
chdir=/home/ec2-user/project/awssite
module=awssite.wsgi
home=/home/ec2-user/project
master=true
processes=2
socket=/home/ec2-user/project/awssite/awssite.socket
chmod-socket=666
vacuum=true
etc/nginx/sites-enabled/awssite_nginx.conf
upstream django {
server unix:///home/ec2-user/project/awssite/awssite.socket;
}
server {
listen 8080;
server_name localhost;
charset utf-8;
#max upload size
client_max_body_size 75M;
#Django media
location /media {
alias /home/ec2-user/project/awssite/awssite/media;
}
location /static {
alias /home/ec2-user/project/awssite/awssite/static;
}
location /favicon.ico {
log_not_found off;
}
location/{
uwsgi_pass django;
include /home/ec2-user/project/awssite/uwsgi_params;
}
}
Questo è il codice di errore nella /var/log/nginx/error.log
2016/02/15 01:21:22 [crit] 22159#0: *3 connect() to unix:///home/ec2-user/project/awssite/awssite.socket failed (13: Permission denied) while connecting to upstream, client: CLIENT_IP, server: localhost, request: "GET /menu/ HTTP/1.1", upstream: "uwsgi://unix:///home/ec2-user/project/awssite/awssite.socket:", host: "HOST_IP:8080"
Nota: CLIENT_IP & HOST_IP sono valori di indirizzo IP.
Si tratta di ciò che ho provato e non lavorato:
1. chmod 755
home directory e funzionante uwsgi --socket awssite.socket --module awssite.wsgi --chmod-socket=666
2. Aggiunta utente nginx al mio gruppo di utenti e funzionante uwsgi --socket awssite.socket --module awssite.wsgi --chmod-socket=664
3. cambiamento ini file aggiungendo queste nuove righe
chown-socket=ec2-user:nginx
uid=nginx
gid=nginx
e quindi eseguito ing uwsgi --ini uwsgi.ini
Questo ritorna con 'Permesso negato a chown', ma quando ho eseguito il comando con sudo
, ottengo sudo: uwsgi: command not found
(uWSGI è installato a livello di sistema)
4. Mettere tutti i file in una directory diversa (al di fuori di utente ec2-user
) ma che non mi permette di accedervi a meno che non corro come root
e anche allora non funziona
5. esecuzione uwsgi --socket awssite.socket --module awssite.wsgi --chmod-socket=664/666
con i parametri --uid nginx
--gid nginx
--chown-socket=nginx:nginx
Nota: 664/666
significato ho provato entrambi i permessi
6. nginx Rinominato. conf.default e nginx.conf.rpmnew file (così che l'unico file conf per nginx da leggere è nginx.conf
)
Qualcuno potrebbe far luce su come posso risolvere questo problema? Continuerò ad aggiungere metodi che ho provato e non ho lavorato a questa domanda mentre ci lavoro. Grazie :)
EDIT: Grazie alla risposta @GwynBleidD, ho finalmente funzionato. Questo è ciò che funziona:
mantenuto il mio file di socket in /tmp
etc/nginx/sites-enabled/awssite_nginx.conf
upstream django {
server unix:///tmp/djangosocket/awssite.socket;
}
....
uwsgi.file ini
[uwsgi]
chdir=/home/ec2-user/project/awssite
module=awssite.wsgi
home=/home/ec2-user/project
master=true
processes=2
socket=/tmp/djangosocket/awssite.socket
chmod-socket=666
vacuum=true
ho aggiunto il mio ec2-user
(utenti registrati) al gruppo nginx
.
ho cambiato i permessi dei file di conseguenza
chown -R ec2-user:nginx djangosocket
chmod g+rwx djangosocket
Puoi provare a cambiare il tuo chdir in 'chdir =/home/ec2-user/project'? – Selcuk
@Selcuk no che non ha funzionato. per quanto ne so, 'chdir' è il percorso per l'app nel progetto, non il progetto stesso. –
Mi chdir sempre alla dir del progetto ma non includo l'argomento home. – Selcuk