2015-10-13 2 views
0

Я не в состоянии работать с uwsgi выскочки/supervisord, я использовал pyenv для установки питона с virtualenv myenv, myenv имеет python3.4.3 и питон системы, указывающий на python2.7.6. Я изменил pyenv global на 3.4.3.Невозможно запустить uwsgi с выскочкой/supervisord

Прямо сейчас, как my_user, which python =>/home/my_user/.pyenv/shims/python и python --version =>Python 3.4.3.

Когда я с Судом, я получаю sudo which python =>/usr/bin/python и sudo python --version =>Python 2.7.6.

/etc/init/uwsgi_servers.conf имеет

description "uWSGI instance to serve authservice in production" 

start on runlevel [2345] 
stop on runlevel [!2345] 

exec /usr/local/bin/uwsgi --emperor /etc/uwsgi/sites/ --uid my_user --gid my_user 

и /etc/uwsgi/sites/uwsgi.ini имеет

[uwsgi] 
# variables 
projectname = accounts 
base = /home/my_user/django/accounts/ 
for-readline = /home/my_user/conf/django/accounts/env_var 
    env = %(_) 
endfor = 

# config 
chdir = /home/my_user/django/accounts/ 
master = True 
processes = 5 
protocol = uwsgi 
env = in_accounts.settings.production 
module = in_accounts.wsgi 
socket = /tmp/uwsgi_%(projectname).sock 
chmod-socket = 666 
home = /home/my_user/.virtualenvs/accounts_production 
logto = %(base)/logs/uwsgi.log 
daemonize = /var/log/uwsgi/%(projectname).log 
vacuum = True 
pidfile = /tmp/%(projectname).pid 
die-on-term = true 

Когда я бегу sudo service uwsgi_servers start, я получаю сообщение об ошибке из журнала

*** Starting uWSGI 2.0.11.2 (64bit) on [Tue Oct 13 09:32:18 2015] *** 
compiled with version: 4.8.4 on 12 October 2015 11:59:31 
os: Linux-3.16.0-43-generiC#58~14.04.1-Ubuntu SMP Mon Jun 22 10:21:20 UTC 2015 
nodename: st-auths-web1 
machine: x86_64 
clock source: unix 
detected number of CPU cores: 1 
current working directory: /etc/uwsgi/sites 
writing pidfile to /tmp/accounts.pid 
detected binary path: /usr/local/bin/uwsgi 
!!! no internal routing support, rebuild with pcre support !!! 
chdir() to /home/my_user/django/accounts/current 
your processes number limit is 13731 
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 /tmp/uwsgi_accounts.sock fd 3 
Python version: 2.7.6 (default, Jun 22 2015, 18:01:27) [GCC 4.8.2] 
Set PythonHome to /home/my_user/.virtualenvs/accounts_production 
ImportError: No module named site 
VACUUM: pidfile removed. 
VACUUM: unix socket /tmp/uwsgi_accounts.sock removed. 

Из журнала можно увидеть, что, начиная uwsgi используя выскочка попробуйте использовать python2.7.6, поскольку Я использую sudo для запуска службы upstart, но он должен был использовать python3.4.3, это может быть причиной того, что сервер не запущен. Хотя я использую uid и gid Я получаю вышеуказанную ошибку. Я также пробовал setuid и setgid, но не повезло.

ПРИМЕЧАНИЕ. Я могу успешно запустить сервер uwsgi без upstart как uwsgi --emperor /etc/uwsgi/sites/. Я пробовал использовать supervisord, но не использовать, получая такую ​​же ошибку.

ответ

1

Для выполнения этой работы вам нужно будет сообщить wsgi, что virtualenv использовать с параметром -H. Если ваш virtualenv находится в вашей домашней папке, выскочка не сможет получить к нему доступ. Таким образом, переместить его в читаемое место и попробовать

uwsgi -H /usr/local/virtualenv 

или что-то подобное с правильным путем к virtualenv в вашей выскочке файла.

+0

Настройка 'home =/home/my_user/.virtualenvs/accounts_production' в uwsgi.ini будет в порядке? Я уже это сделал. Я также пробовал как «sudo uwsgi --emperor/etc/uwsgi/sites/-uid my_user -gid my_user' без выскочки и получения такой же ошибки. Это та же самая команда, которую я использовал в сценарии выскочки. – niren

+0

Если вы запускаете, когда ваша учетная запись должна быть в порядке. Но при запуске без выскочки вы использовали -H для установки виртуального пути? Id, вы пытаетесь установить в virtualenv direct и запустить оттуда? (pip install uswsgi?) – middlestump

+0

при запуске без выскочки я не дал -H явно и сервер работает нормально. вы имеете в виду установку uwsgi внутри среды? если да, он работает нормально внутри среды. – niren