Ubuntu 11.10 com Nginx e uWSGI

6

Estou tentando obter uma pilha LNP [Linux Nginx Python] (isso é mesmo uma coisa? heh), mas estou tendo algumas dificuldades.

Muitos posts e documentação sobre isso parecem girar em torno do uso do Upstart para gerenciar o processo uWSGI, o que seria ótimo, mas estou percebendo que os pacotes instalados com um script init.d e alguns diretórios de configuração em% código%. Então, claramente, há uma maneira melhor de fazer isso.

Eu tenho alguns arquivos de configuração (abaixo), mas não consigo iniciar o processo do uwsgi, executar o script init.d não faz nada, relata sucesso, mas falha silenciosamente (sem nem mesmo um log).

Quando eu executo o uWSGI diretamente eu recebo isto:

% sudo uwsgi -i /etc/uwsgi/apps-enabled/site.ini
tmp = /
[uWSGI] getting INI configuration from /etc/uwsgi/apps-enabled/site.ini

/usr/lib/uwsgi/plugins/python27_plugin.so

Também vale a pena notar o erro gerado quando tento acessar o site:

% cat logs/error.log 
2012/01/08 23:26:12 [crit] 9167#0: *13 connect() to unix://tmp/site.sock failed (2: No such file or directory) while connecting to upstream, client: 60.241.99.33, server: mysite.com, request: "GET / HTTP/1.1", upstream: "uwsgi://unix://tmp/site.sock:", host: "mysite.com"

Configuração do uWSGI

% cat /etc/uwsgi/apps-enabled/config.ini 
[uwsgi]
uid = www-data
gid = www-data
home = /srv/www/site/myapp
socket = /tmp/site.sock
pythonpath = /srv/www/site/virtualenvs/default
harakiri = 60
daemonize = /srv/www/site/logs/uwsgi.log
plugins = http,python

Configuração Nginx

% cat /etc/nginx/sites-enabled/mysite.com 
server {
    listen 80;
    server_name mysite.com;
    access_log /srv/www/site/logs/access.log;
    error_log /srv/www/site/logs/error.log;
    root   /srv/www/site/public_html;
    index  index.html index.htm;


    location / {
        uwsgi_pass unix:///tmp/site.sock;
        include uwsgi_params;
    }

    location ~ /\. {
        access_log off;
        log_not_found off; 
        deny all;
    }

    location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
        access_log        off;
        log_not_found     off;
        expires           360d;
    }
}

Estou usando

% dpkg --get-selections | grep uwsgi
libapache2-mod-uwsgi        install
uwsgi                       install
uwsgi-core                  install
uwsgi-plugin-http           install
uwsgi-plugin-python         install
% dpkg --get-selections | grep nginx
nginx-common                install
nginx-extras                install
nginx-full                  deinstall

Algumas informações sobre a versão

% nginx -V                                                                                                                       
nginx: nginx version: nginx/1.0.5
nginx: TLS SNI support enabled
nginx: configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_flv_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_perl_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-development-kit --add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-upstream-fair --add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-lua --add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-http-push --add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-upload-progress --add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-secure-download
% uwsgi --version
uWSGI 0.9.8.1-debian
    
por devians 08.01.2012 / 15:48

4 respostas

1

Você daemonizou o servidor de aplicativos uwsgi com /srv/www/site/logs/uwsgi.log como um log. O log do uwsgi deve conter informações sobre o motivo pelo qual não foi possível criar o arquivo de sock em primeiro lugar.

    
por 09.01.2012 / 11:38
1

Olhando para o seu error.log pode ser um problema de permissões com o unix: ///tmp/site.sock, no seu uwsgi conf.ini você pode usar a opção chmod-socket delineada aqui: documentos da uwsgi

    
por 13.01.2012 / 15:16
0

Sempre sugiro que novos usuários comecem com o início rápido oficial, já que o uWSGI é construído com a ideia (que você pode gostar ou não) de que cada aplicativo é diferente dos outros, e cada um requer um ajuste específico. Então, configurá-lo sem entender totalmente os conceitos básicos pode ser uma PITA real (real).

A propósito, parece que você tem uma configuração quase pronta para funcionar, as coisas erradas que eu notei são:

A diretiva

uwsgi_pass no nginx deve ser

uwsgi_pass unix: /tmp/site.sock

(sem barras adicionais)

Você não precisa carregar o plugin http na instância do uWSGI, já que o nginx está usando nativamente o protocolo uwsgi.

Certifique-se de que / srv / www / site / logs seja gravável pelo usuário www-data e finalmente (como sugestão), comece a usar sockets TCP, pois eles não requerem permissões e podem ser facilmente verificados com ferramentas como netstat .

Outra nota: você pode tentar executar o uwsgi manualmente com o "uwsgi configfile" depois de ter removido a opção "daemonize". Dessa forma, você pode verificar se há erros no seu terminal.

    
por 10.01.2012 / 11:00
0

Eu sei que isso é muito tarde, mas depois de pesquisar um pouco Se o seu soquete não está sendo criado, você pode ter esquecido de criar um link do diretório ./apps-enabled para o ./apps-available

sudo ln -s /etc/uwsgi/apps-available/mysite.ini /etc/uwsgi/apps-enabled/mysite.ini

$ cat /etc/uwsgi/apps-enabled/README

Some files found in this directory are processed by uWSGI init.d script as uWSGI configuration files.

On system boot for each configuration file new uWSGI daemon instance is started with additional option. Name of this option is based on configuration file extension. Path to configuration files is passed as option value.

See more detailed information at: * /usr/share/doc/uwsgi/README.Debian.gz * /etc/default/uwsgi

é claro que você não precisa reiniciar o sistema, você pode apenas sudo service uwsgi restart

Observação: acabei de perceber que você está usando 11,10 e estou usando 12,04, então isso pode não funcionar para você.

    
por 21.02.2013 / 00:45