[英]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.