django – 未创建uwsgi套接字文件

前端之家收集整理的这篇文章主要介绍了django – 未创建uwsgi套接字文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在使用uwsgi和Nginx设置服务器时遇到问题.这是我的uwsgi ini文件(和vassals中的符号链接):

# ebook_uwsgi.ini file
[uwsgi]
#emperor = /etc/uwsgi/vassals
#plugins        = python #if uwsgi installed with pip,dont have to use this line
# Django-related settings
# the base directory (full path)
chdir           = /var/www/django/ebook/ebook/wsgi/ebook/
# Django's wsgi file
module          = controller.wsgi:application
# the virtualenv (full path)
home            = /var/www/django/ebook

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10

# the socket (use the full path to be safe
socket         = /var/uwsgi/ebook.sock
# ... with appropriate permissions - may be needed
chmod-socket    = 664
uid             = www-data
gid             = www-data
# clear environment on exit
vacuum          = true


no-site         = True
wsgi-file       = /var/www/django/ebook/ebook/wsgi/ebook/controller/wsgi.py
#env             = DJANGO_SETTINGS_MODULE=controller.settings # set an environment variable

这是我的Nginx conf文件

# mysite_Nginx.conf

# the upstream component Nginx needs to connect to
upstream django {
    server unix:///var/uwsgi/ebook.sock; # for a file socket
    #server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}

# configuration of the server
server {
    # the port your site will be served on
    listen      8000;
    # the domain name it will serve for
    server_name IP; #www.domain.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 /var/www/django/ebook/ebook/data;  # your Django project's media files - amend as required
    }

    location /static {
        alias /var/www/django/ebook/ebook/wsgi/static/; # your Django project's static files - amend as required
    }

    # Finally,send all non-media requests to the Django server.
    location / {
        include     /var/www/django/ebook/ebook/uwsgi_params; # the uwsgi_params file you installed
    }
}

当我以我的用户身份运行uwsgi时(lucas03)

uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data

这是输出

*** Starting uWSGI 2.0.10 (64bit) on [Tue May 12 20:43:19 2015] ***
compiled with version: 4.7.2 on 14 April 2015 16:47:40
os: Linux-2.6.32-042stab104.1 #1 SMP Thu Jan 29 12:58:41 MSK 2015
nodename: zoltan
machine: x86_64
clock source: unix
pcre jit disabled
detected number of cpu cores: 8
current working directory: /var
detected binary path: /usr/local/bin/uwsgi
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 2062113
your memory page size is 4096 bytes
detected max file descriptor number: 1024
*** starting uWSGI Emperor ***
*** has_emperor mode detected (fd: 6) ***
[uWSGI] getting INI configuration from ebook_uwsgi.ini
*** Starting uWSGI 2.0.10 (64bit) on [Tue May 12 20:43:19 2015] ***
compiled with version: 4.7.2 on 14 April 2015 16:47:40
os: Linux-2.6.32-042stab104.1 #1 SMP Thu Jan 29 12:58:41 MSK 2015
nodename: zoltan
machine: x86_64
clock source: unix
pcre jit disabled
detected number of cpu cores: 8
current working directory: /etc/uwsgi/vassals
detected binary path: /usr/local/bin/uwsgi
chdir() to /var/www/django/ebook/ebook/wsgi/ebook/
your processes number limit is 2062113
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /var/uwsgi/ebook.sock fd 3
Python version: 2.7.3 (default,Mar 13 2014,11:26:58)  [GCC 4.7.2]
Set PythonHome to /var/www/django/ebook
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0xea41a0
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 800448 bytes (781 KB) for 10 cores
*** Operational MODE: preforking ***
virtualenv is active
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0xea41a0 pid: 6291 (default app)
mountpoint  already configured. skip.
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 6291)
Tue May 12 20:43:19 2015 - [emperor] vassal ebook_uwsgi.ini has been spawned
spawned uWSGI worker 1 (pid: 6292,cores: 1)
spawned uWSGI worker 2 (pid: 6293,cores: 1)
Tue May 12 20:43:19 2015 - [emperor] vassal ebook_uwsgi.ini is ready to accept requests
spawned uWSGI worker 3 (pid: 6294,cores: 1)
spawned uWSGI worker 4 (pid: 6295,cores: 1)
spawned uWSGI worker 5 (pid: 6296,cores: 1)
spawned uWSGI worker 6 (pid: 6297,cores: 1)
spawned uWSGI worker 7 (pid: 6298,cores: 1)
spawned uWSGI worker 8 (pid: 6299,cores: 1)
spawned uWSGI worker 9 (pid: 6300,cores: 1)
spawned uWSGI worker 10 (pid: 6301,cores: 1)

ebook.sock创建:

drwxrwxr-x  2 www-data www-data  3 máj 12 20:43 .
drwxr-xr-x 13 root     root     15 apr 14 16:29 ..
srw-rw-r--  1 lucas03  lucas03   0 máj 12 20:43 ebook.sock

但我得到了502 Bad Gateway.所以我将ebook.sock的所有者更改为www-data sudo chown www-data:www-data ebook.sock,我的网站正确加载.好吧,我觉得这很棒.现在我只需要运行uwsgi就可以创建ebook.sock作为用户www-data.
所以我设置了uwsgi to start on startup,我编辑了/etc/rc.local.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data
exit 0

但是,在我重新启动服务器后,虽然uwsgi运行,但根本没有创建文件ebook.sock. (我可以在ps aux | grep uwsgi中看到它).所以我认为它运行相同或类似的方式,就像我以root身份运行该文件一样.
所以我运行文件/etc/rc.local,这是输出

*** Starting uWSGI 2.0.10 (64bit) on [Tue May 12 20:57:35 2015] ***
compiled with version: 4.7.2 on 14 April 2015 16:47:40
os: Linux-2.6.32-042stab104.1 #1 SMP Thu Jan 29 12:58:41 MSK 2015
nodename: zoltan
machine: x86_64
clock source: unix
pcre jit disabled
detected number of cpu cores: 8
current working directory: /var/uwsgi
detected binary path: /usr/local/bin/uwsgi
setgid() to 33
setuid() to 33
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 2062113
your memory page size is 4096 bytes
detected max file descriptor number: 1024
*** starting uWSGI Emperor ***

由于输出较短,我猜/ / etc / uwsgi / vassals中的配置文件未加载,并且运行皇帝附庸存在一些问题.
任何人都知道为什么?提前感谢您的任何回答或评论.

最佳答案
将/ var / www / django /的所有者更改为www-data使其工作.

具体问题是文件/ etc / Nginx / uwsgi_params的所有权.

猜你在找的Nginx相关文章