简体   繁体   English

Nginx和uWSGI的内部服务器错误

[英]Internal Server Error with Nginx and uWSGI

I'm trying to host an app using Nginx on Linode.com but I'm stuck early on uWSGI config. 我正在尝试在Linode.com上使用Nginx托管应用程序,但在uWSGI配置上却停留得很早。

I've used "Getting Started" guide and "WSGI using uWSGI and nginx on Ubuntu 12.04 (Precise Pangolin)" guide and I've succesfully deployed Nginx (got Nginx welcome message in browser). 我已经使用了“入门”指南“在Ubuntu 12.04上使用uWSGI和nginx的WSGI(精确的穿山甲)”指南,并且已经成功部署了Nginx(在浏览器中获得了Nginx欢迎消息)。

Although above tutorial is for Ubuntu 12.04 I've used 14.04. 尽管以上教程适用于Ubuntu 12.04,但我使用的是14.04。

The problem starts when I got to uWSGI configuration and 'Hello World' Python app. 当我开始使用uWSGI配置和“ Hello World” Python应用程序时,问题就开始了。 Going to location / in browser returns Failed to load resource: the server responded with a status of 500 (Internal Server Error) and nothing gets logged in server error.log. 在浏览器中转到location / ,返回Failed to load resource: the server responded with a status of 500 (Internal Server Error) ,服务器error.log中未记录任何内容。 location /static works though and serves files without a hitch. 虽然location /static可以工作,并且可以毫无障碍地提供文件。

I've tried many things and looked extensively for fix on Google and Stackoverflow but nothing, and I'm kind of frustrated right now. 我已经尝试了很多事情,并广泛地寻求针对Google和Stackoverflow的修复程序,但一无所获,现在我有点沮丧。

Thank you for any help. 感谢您的任何帮助。

Here are my config files (I've hidden my domain and ip): 这是我的配置文件(我已经隐藏了我的域和IP):

/etc/hosts

127.0.0.1   localhost
127.0.1.1   ubuntu
XX.XX.XX.XXX mars

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

/etc/nginx/sites-enabled/example.com

server {
    listen      80;
    server_name $hostname;
    access_log  /srv/www/example.com/logs/access.log;
    error_log   /srv/www/example.com/logs/error.log;

    location / {
        #uwsgi_pass 127.0.0.1:9001;
        uwsgi_pass  unix:///run/uwsgi/app/example.com/example.com.socket;
        include     uwsgi_params;
        uwsgi_param UWSGI_SCHEME $scheme;
        uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
    }

    location /static {
        root        /srv/www/example.com/public_html/;
        index       index.html index.htm;
    }

}

/etc/uwsgi/apps-enabled/example.com.xml

<uwsgi>
    <plugin>python</plugin>
    <socket>/run/uwsgi/app/example.com/example.com.socket</socket>
    <pythonpath>/srv/www/example.com/application/</pythonpath>
    <app mountpoint="/">

        <script>wsgi_configuration_module</script>

    </app>
    <master/>
    <processes>4</processes>
    <harakiri>60</harakiri>
    <reload-mercy>8</reload-mercy>
    <cpu-affinity>1</cpu-affinity>
    <stats>/tmp/stats.socket</stats>
    <max-requests>2000</max-requests>
    <limit-as>512</limit-as>
    <reload-on-as>256</reload-on-as>
    <reload-on-rss>192</reload-on-rss>
    <no-orphans/>
    <vacuum/>
</uwsgi>

/srv/www/example.com/application/wsgi_configuration_module.py

import os
import sys
sys.path.append('/srv/www/example.com/application')
os.environ['PYTHON_EGG_CACHE'] = '/srv/www/example.com/.python-egg'

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])

    return 'Hello world!'

last access log

XX.XX.XX.XXX - - [05/Jul/2015:10:03:37 -0400] "GET / HTTP/1.1" 500 32 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
XX.XX.XX.XXX - - [05/Jul/2015:10:03:38 -0400] "GET /favicon.ico HTTP/1.1" 500 32 "http://example.com/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"

only error log I've got only one time when trying to fix this

2015/07/05 08:49:06 [crit] 25301#0: *17 connect() to unix:///run/uwsgi/app/example.com/example.com.socket failed (2: No such file or directory) while connecting to upstream, client: XX.XX.XX.XXX, server: mars, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///run/uwsgi/app/example.com/example.com.socket:", host: "example.com"
2015/07/05 08:49:07 [crit] 25301#0: *17 connect() to unix:///run/uwsgi/app/example.com/example.com.socket failed (2: No such file or directory) while connecting to upstream, client: XX.XX.XX.XXX, server: mars, request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://unix:///run/uwsgi/app/example.com/example.com.socket:", host: "example.com", referrer: "http://example.com/"

I do not understand what is it /etc/nginx/sites-enabled/dev.host.in? 我不知道/etc/nginx/sites-enabled/dev.host.in是什么? how to or why *.in? 如何或为什么* .in? i think u should try it 我认为你应该尝试

step 1.

create project.ini file

# django_project.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /home/username/django_project
# Django's wsgi file
module          = blog.wsgi
# the virtualenv (full path)
home            = /home/username/Env/project
# process-related settings
master          = true
pidfile         = /tmp/proj_uwsgi.pid
# maximum number of worker processes
processes       = 5
# the socket
socket          = :8001
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum           = true
# background the process
daemonize        = /home/username/django_project/error_uwsgi.log


step 2.

create mysite.conf in nginx, vim /etc/nginx/conf.d/mysite.conf

upstream django {
    #server unix:///home/username/django_project/djproj.sock; # for a file socket
    server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}

# configuration of the server
server {
    # the port your site will be served on
    listen      80;
    # the domain name it will serve for
    server_name localhost mysite.com www.mysite.com; # substitute your machine's IP address or FQDN
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    # Django media
    location /media  {        alias /home/username/django_project/media;  # your Django project's media files - amend as required
    }

    location /static {        alias /home/username/django_project/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  127.0.0.1:8001;#project;        
        include     /home/username/django_project/uwsgi_params; # the uwsgi_params file you installed
    }
}



step 3.

ln -s /etc/nginx/uwsgi_params /home/username/django_project/

step 4.

uwsgi --ini django_project.ini

uwsgi --stop /tmp/proj_uwsgi.pid
uwsgi --reload /tmp/proj_uwsgi.pid

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM