Eu tenho tentado por muito tempo para configurar um ambiente de desenvolvimento no meu Ubuntu 12.04. Minha intenção é configurar tudo como eu teria que fazer mais tarde em um ambiente de produção, então eu segui este tutorial sobre como configurar o Nginx como um proxy reverso com o Apache 2.
Estou pesquisando e minha pergunta é bem parecida com um , mas nenhuma resposta foi dada lá e não posso comentar sobre isso para adicionar algumas das minhas pesquisas.
Vamos entrar nos arquivos:
Apache e wsgi
Primeiro, eu instalei o mod_wsgi do apt-get e criei um arquivo mysite em / etc / apache2 / sites-available:
<VirtualHost *:8080>
ServerAdmin [email protected]
ServerName mysite.dev
ErrorLog /path/to/developmentfolder/mysite/logs/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog /path/to/developmentfolder/mysite/logs/access.log combined
WSGIDaemonProcess mysite
WSGIProcessGroup mysite
WSGIScriptAlias / /path/to/developmentfolder/mysite/apache/django.wsgi
<Directory /path/to/developmentfolder/mysite/apache>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Note que eu não mudei o httpd.conf para essa configuração (não sei se isso é um erro).
Depois modifiquei o ports.conf:
#NameVirtualHost *:80
#Listen 80
#Modificaciones para usar nginx
Listen 8080
NameVirtualHost *:8080
Em seguida, criei
import os, sys
apache_configuration = os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
sys.path.append('/path/to/developmentfolder/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Em seguida, execute:
# a2ensite mysite
#/etc/init.d/apache2 restart
E eu terminei a configuração do Apache.
Neste ponto, depois de adicionar uma entrada ao meu arquivo hosts, eu posso ir para mysite.dev:8080 e ver a mensagem "It works" do Django.
Nginx
Eu criei o Nginx 1.6.
Criado um usuário para executar o servidor nginx:
# adduser –system –no-create-home –disabled-login –disabled-password –group nginx
Em seguida, criei um script para o nginx iniciar automaticamente. Na verdade, baixei o link colocou-o em /etc/init.d/, renomeou para nginx e fez algumas alterações:
#! /bin/sh
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO
PATH=/opt/nginx/sbin:/sbin:/bin:/usr/sbin:/usr/bin
# Changed the path of the DAEMON as the one in the original script didn't match mine
DAEMON=/usr/sbin/nginx
#Everything from here is exactly as it was
NAME=nginx
DESC=nginx
test -x $DAEMON || exit 0
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /opt/nginx/logs/$NAME.pid \
--exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/$NAME.pid \
--exec $DAEMON
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
/opt/nginx/logs/$NAME.pid --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --pidfile \
/opt/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile /opt/nginx/logs/$NAME.pid \
--exec $DAEMON
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0
Em seguida, crie as pastas / usr / local / nginx / conf / sites-aviable / e / usr / local / nginx / conf / sites-enabled / e editado /usr/local/nginx/conf/nginx.conf para isso (após algumas modificações do original do tutorial):
user nginx;
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
#modificado el include con una ruta donde realmente se encuentra el archivo
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
include /usr/local/nginx/conf/sites-enabled/*;
}
Em seguida, crie / usr / local / nginx / conf / sites-aviable / mysite. Como o meu Apache parece estar funcionando bem, e depois de ler algumas recomendações do Nginx, tenho a sensação de que o problema está neste arquivo , mas sou novo com servidores e não consigo descobrir o porquê:
server {
listen 80;
server_name mysite.dev;
access_log /path/to/developmentfolder/mysite/logs/nginx_access.log;
error_log /path/to/developmentfolder/mysite/logs/nginx_error.log;
location / {
proxy_pass http://mysite.dev:8080;
include /usr/local/nginx/conf/proxy.conf;
}
location ~ /(js/|css/|imagenes/|media).* {
root /path/to/developmentfolder/mysite/mysite/static;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Este é o arquivo proxy.conf incluído acima:
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;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
Em seguida, criou um link simbólico nos sites ativados para o arquivo de configuração nos sites disponíveis:
# ln -s / usr / local / nginx / conf / sites-aviable / ceia / usr / local / nginx / conf / sites-enabled /
Nginx reiniciado:
# /etc/init.d/nginx restart
E quando eu acesso mysite.dev eu só recebo a página "Welcome to Nginx", mas, se eu entendi direito, deveria ser a página "It worked" (welcome to django) novamente.
Também notei que não consigo encontrar os logs de erro nginx, não na minha pasta de desenvolvimento (localizada na minha pasta pessoal) ou em / usr / local / nginx / conf
Como posso fazer o nginx redirecionar corretamente para o apache?
Este é um problema de permissões relacionado ao usuário do nginx que eu criei?
Muito obrigado, desculpe pelo grande post.