2014-09-02 73 views
2

我试图用VIRTUALENV,马戏团和Chaussette运行Django的,与CentOS的7虚拟主机,但我不断收到此错误,当我运行circusd circus.ini部署Django的与VIRTUALENV,马戏团和Chaussette

(djenv)[[email protected] django]# circusd circus.ini 
2014-09-01 22:06:38 circus[2406] [INFO] Starting master on pid 2406 
2014-09-01 22:06:38 circus[2406] [INFO] sockets started 
2014-09-01 22:06:38 circus[2406] [WARNING] error in 'settings': [Errno 2] No such file or directory: '~/.virtualenv/djenv/bin/chaussette' 
2014-09-01 22:06:38 circus[2406] [WARNING] error in 'settings': [Errno 2] No such file or directory: '~/.virtualenv/djenv/bin/chaussette' 
2014-09-01 22:06:38 circus[2406] [WARNING] error in 'settings': [Errno 2] No such file or directory: '~/.virtualenv/djenv/bin/chaussette' 
2014-09-01 22:06:38 circus[2406] [WARNING] error in 'settings': [Errno 2] No such file or directory: '~/.virtualenv/djenv/bin/chaussette' 
2014-09-01 22:06:38 circus[2406] [WARNING] error in 'settings': [Errno 2] No such file or directory: '~/.virtualenv/djenv/bin/chaussette' 
2014-09-01 22:06:38 circus[2406] [INFO] settings stopped 
2014-09-01 22:06:38 circus[2406] [INFO] Arbiter now waiting for commands 
2014-09-01 22:06:38 circus[2406] [INFO] circusd-stats started 
2014-09-01 22:06:38 circus[2415] [INFO] Starting the stats streamer 

# Here i close circusd with ctrl+c 

2014-09-01 22:19:40 circus[2406] [INFO] Got signal SIG_INT 
2014-09-01 22:19:40 circus[2406] [INFO] Arbiter exiting 
2014-09-01 22:19:41 circus[2406] [INFO] circusd-stats stopped 
Exception ignored in: <module 'threading' from '/usr/local/lib/python3.4/threading.py'> 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.4/threading.py", line 1294, in _shutdown 
    t.join() 
    File "/usr/local/lib/python3.4/threading.py", line 1057, in join 
    raise RuntimeError("cannot join current thread") 
RuntimeError: cannot join current thread 

我的django项目的路径是/opt/webapps/django/。这是这条道路的结构:

(FYI:设置是我给我的Django项目名称)

/django/ 
/django/manage.py 
/django/circus.ini 
/django/settings/ 
/django/settings/urls.py 
/django/settings/wsgi.py 
/django/settings/settings.py 

我的virtualenv的路径是:〜/ .virtualenv/djenv/。这是这条道路的结构(BIN):

/djenv/ 
/djenv/bin/ 
/djenv/bin/circusd 
/djenv/bin/chaussette 
/djenv/bin/circushttpd 
/djenv/bin/python3.4 
/djenv/bin/pip 

circus.ini内容是:

[circus] 
endpoint = tcp://127.0.0.1:5555 
pubsub_endpoint = tcp://127.0.0.1:5556 
stats_endpoint = tcp://127.0.0.1:5557 

[watcher:settings] 
cmd = ~/.virtualenv/djenv/bin/chaussette django:/opt/webapps/django --fd $(circus.sockets.settings)$ --django-settings settings.settings 
use_sockets = True 
numprocesses = 3 

[socket:settings] 
host = 0.0.0.0 
port = 8080 
+1

而不是'〜',使用您的环境的完整路径。 – 2014-09-02 03:53:41

+0

已经尝试过,但我不断收到相同的错误。 – iDevFS 2014-09-02 06:51:25

+0

毕竟我真的需要改变〜完整路径(/根/)。谢谢 – iDevFS 2014-09-02 09:55:39

回答

2

所以,我终于找到一个解决方案。这是我做的。

首先,我改变了我的circus.ini这样:

[circus] 
endpoint = tcp://127.0.0.1:5555 
pubsub_endpoint = tcp://127.0.0.1:5556 
stats_endpoint = tcp://127.0.0.1:5557 

[watcher:settings] 
cmd = /root/.virtualenvs/djenv/bin/chaussette settings.wsgi.application 
args = --fd $(circus.sockets.settings) 
use_sockets = True 
numprocesses = 3 
copy_env = True 
virtualenv = /root/.virtualenvs/djenv/ 

[socket:settings] 
host = 0.0.0.0 
port = 8080 

因为我跑这个马戏团在Python 3.4.1我是越来越另一个错误:

OSError: [Errno 9] Bad file descriptor 

寻找一个解决方案对这个问题,我发现这个修复https://github.com/mozilla-services/circus/pull/800/files

希望这可以帮助别人。

+0

如果你用Python 3.5.1运行这段代码,期望得到这个错误 TypeError:get()得到一个意外的关键字参数'raw'。 该解决方案已被发表在这里:https://github.com/circus-tent/circus/commit/d0d2ac4fd843bb9f050a8c678956fe3682371001 只需添加** kwargs在/path/to/virtualenv/lib/python3.5/site建议-packages/circus/config.py – iDevFS 2015-12-28 11:12:33

+1

对于试图在生产环境中使用马戏团的人,你可以看看这篇文章(http://aameer.github.io/circus-as-an-alternative-to-supervisor/ )可能有帮助。谢谢 – Aameer 2016-04-07 06:09:35

2

这个回复是迟了,但可能会对其他有用。现在,随着python3.4和django1.9

在这里工作是我的/etc/circus/circusd.ini

[circus] 
check_delay = 5 
include_dir = /etc/circus/conf.d 
logoutput = /var/log/circus/system.log 
statsd = True 

[plugin:flapping] 
use = circus.plugins.flapping.Flapping 

而且我的项目/etc/circus/conf.d/project.ini

[project_name] 
cmd = chaussette project_name.wsgi.application --backend waitress --fd $(circus.sockets.project_name) 
use_sockets = True 
virtualenv = /path/to/env # if you are using virtualenv 
working_dir = /path/to/project 
copy_env = True 

stdout_stream.class = FileStream 
stdout_stream.filename = /path/to/logs/stdout.log 
stdout_stream.refresh_time = 0.3 

stderr_stream.class = FileStream 
stderr_stream.filename = /path/to/logs/error.log 
stderr_stream.refresh_time = 0.3 

[project_name] 
PYTHONPATH = /path/to/project 

[socket:project_name] 
host = localhost 
port = 8000 

处理/ path/to/logs /和/var/log/circus/system.log的权限。目录应该存在。