Форум сайта python.su
Попробовал недавно такую связку все нормально заработало но потом захотел несколько сайтов подцепить и чтото немного не так пошло.
Конфиг 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;
}
}
#/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)
Офлайн
Напрямую заставить нельзя - 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
Офлайн
Если хочешь разные сайты, то в nginx нужно для каждого свой “server” раздел сделать и свой uwsgi инстанс запустить (нужен другой файл/порт)
Если распределить нагрузку 1-го сайта на разные инстансы, тогда “server” один и в нем указать все инстансы.
Офлайн
o7412369815963 Да так и пришлось сделать. Спасибо.
Офлайн