Уведомления

Группа в Telegram: @pythonsu

#1 Март 19, 2012 23:09:13

alexandre
От:
Зарегистрирован: 2010-11-16
Сообщения: 104
Репутация: +  0  -
Профиль   Отправить e-mail  

nginx uwsgi несколько сайтов

Попробовал недавно такую связку все нормально заработало но потом захотел несколько сайтов подцепить и чтото немного не так пошло.
Конфиг nginxa:

#/etc/nginx/sites-enabled/default
server {
listen 80;
server_name site.com *.site.com
location / {
include uwsgi_params;
uwsgi_pass unix:/var/tmp/aaa.sock;
}
}
Конфиги uwsgi:
#/etc/uwsgi-python/apps-enabled/aaa
[uwsgi]
socket= /var/tmp/aaa.sock
http = :3031
pythonpath=/home/user/aaa
module=index_wsgi
#/etc/uwsgi-python/apps-enabled/bbb
[uwsgi]
socket= /var/tmp/aaa.sock
http = :3031
pythonpath=/home/user/bbb
module=index_wsgi
Запускается по любому адресу только первый попавшийся файл. Как сделать чтоб запускались все?



Отредактировано (Март 19, 2012 23:12:47)

Офлайн

#2 Март 20, 2012 06:03:50

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

nginx uwsgi несколько сайтов

Напрямую заставить нельзя - uwsgi крутит ровно один WSGI-сервер.

Сам я для таких случаев использую следующий workaround:

1. Так как у меня все проекты на сервере запускаются строго под virtualenv (например, в папке /opt/myproject), то в первую очередь я копирую бинарник uwsgi в папку bin виртуального окружения

2. передаю в uwsgi нужные параметры строго через аргументы, типа такого:

#!/bin/sh

### BEGIN INIT INFO
# Provides: uwsgi
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the uwsgi app server
# Description: starts uwsgi app server using start-stop-daemon
### END INIT INFO

PATH=/opt/uwsgi:/sbin:/bin:/usr/sbin:/usr/bin

HOME=/opt/myproject

DAEMON=$HOME/bin/uwsgi

OWNER=uwsgi

NAME=myproject
DESC="Daemon for myproject.ru"

export PYTHON_EGG_CACHE=$HOME/.python-eggs

test -x $DAEMON || exit 0

set -e

DAEMON_OPTS="--socket :8000 -H $HOME --pythonpath $HOME/myproject --module wsgi_app -d /var/log/myproject.log"

case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --chuid $OWNER:$OWNER --user $OWNER \
--exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --signal 3 --user $OWNER --quiet --retry 2 --stop \
--exec $DAEMON
echo "$NAME."
;;
reload)
killall -1 $DAEMON
;;
force-reload)
killall -15 $DAEMON
;;
restart)
echo -n "Restarting $DESC: "
start-stop-daemon --signal 3 --user $OWNER --quiet --retry 2 --stop \
--exec $DAEMON
sleep 1
start-stop-daemon --user $OWNER --start --quiet --chuid $OWNER:$OWNER \
--exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
status)
killall -10 $DAEMON
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
exit 1
;;
esac
exit 0



Офлайн

#3 Март 20, 2012 16:06:10

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

nginx uwsgi несколько сайтов

Если хочешь разные сайты, то в nginx нужно для каждого свой “server” раздел сделать и свой uwsgi инстанс запустить (нужен другой файл/порт)

Если распределить нагрузку 1-го сайта на разные инстансы, тогда “server” один и в нем указать все инстансы.

Офлайн

#4 Март 20, 2012 18:08:57

alexandre
От:
Зарегистрирован: 2010-11-16
Сообщения: 104
Репутация: +  0  -
Профиль   Отправить e-mail  

nginx uwsgi несколько сайтов

o7412369815963 Да так и пришлось сделать. Спасибо.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version