Існує декілька варіантів запуску django як fastcgi-серверу на продакшин-серверах. Типовим варіантом є написання startup-скрпту і розміщення його в /etc/init.d/ (детальніше https://code.djangoproject.com/wiki/InitdScriptForLinux).
Доволі зручним для запуску і контролю над django-програмами є supervisord. Supervisord дозволяє користувачам здійснювати моніторинг і контроль ряд процесів в UNIX-таких операційних систем. Його можна використовувати для запуску та конторлю різноманітних сервісів, зокрема django, celery, tornado, flask
Встанолюємо (на debain) supervisord:
aptitude install supervisor
supervisor напсианий на python-і, тому його можна і встановлювати за допомгою easy_install, pip ... Але якщо у вас немає потреб встановлювати певно кокретної версії, то краще скористатися штатним пакетним менеджером (aptitude, apt-get в debian-і)
конфігураціїні файли supervisor-а знаходяться в директорії /etc/supervisor:
/etc/supervisor/supervisord.conf - конф. файл самого supervisor-а,
а файли з лписом наших сервісів (зокрема django), які ми будемо запускати, повинні знаходитися в /etc/supervisor/conf.d/
ось, як виглядає конфігураційний файл (/etc/supervisor/conf.d/project.conf) для запуску django :
[program:project] # тут project - це унікальне імє проекту
command = /home/user/www/project/.env/bin/python manage.py runfcgi host=127.0.0.1 port=10889 daemonize=false
directory = /home/user/www/project/
user = user
autostart=true
autorestart=true
startsecs = 3
redirect_stderr=true
stdout_logfile=/var/log/supervisor/project.log
отже створили файл, далі запускаємо:
supervisorctl reread
supervisorctl update
і дивимося статус:
supervisorctl status
project RUNNING pid 2637, uptime 0:25:13
і ще приклад для flask-аплікації, яка запускається за допомогою gunicorn
[program:flask_app]
command = /home/user/flask/flask_app/.env/bin/gunicorn flask_app:app -b 127.0.0.1:10081
directory = /home/user/flask/flask_app/
user = user
autostart=true
autorestart=true
startsecs = 3
redirect_stderr=true
stdout_logfile=/var/log/supervisor/flask_app.gunicorn.log
Wednesday, March 13, 2013
Tuesday, March 12, 2013
Встановлення svn серверу на debian з підтримкою cyrus-sasl2
Встановлємо сам svn
aptitude install subversion
aptitude install sasl2-bin libsasl2-modules libsasl2-2
додаємо користувача
useradd -d /var/lib/svn/ -r -s /bin/false svn
створюємо домашній каталог, де і будуть розміщені наші svn-репозиторії
mkdir /var/lib/svn
chmod 750 /var/lib/svn/
створюємо сам репозиторій з іменем project
sudo -u svn svnadmin create project
редагуємо /var/lib/svn/project/conf/svnserve.conf:
[general]
anon-access = none
auth-access = write
realm = Project
[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256
створємо файл /usr/lib/sasl2/svn.conf з таким вмістом
pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: /var/lib/svn/project/passwd.db
mech_list: DIGEST-MD5
/var/lib/svn/project/passwd.db - це файл з паролями
додати користувача можна командою:
saslpasswd2 -f /var/lib/svn/project/passwd.db -u Project -c
wget wget http://odyniec.net/articles/ubuntu-subversion-server/svnserve
додаємо до start-stop-daemon опцію " --chuid svn:svn "
chmod u+x svnserve
mv svnserve /etc/init.d/svnserve
update-rc.d svnserve defaults
/etc/init.d/svnserve start
aptitude install subversion
aptitude install sasl2-bin libsasl2-modules libsasl2-2
додаємо користувача
useradd -d /var/lib/svn/ -r -s /bin/false svn
створюємо домашній каталог, де і будуть розміщені наші svn-репозиторії
mkdir /var/lib/svn
chmod 750 /var/lib/svn/
створюємо сам репозиторій з іменем project
sudo -u svn svnadmin create project
редагуємо /var/lib/svn/project/conf/svnserve.conf:
[general]
anon-access = none
auth-access = write
realm = Project
[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256
створємо файл /usr/lib/sasl2/svn.conf з таким вмістом
pwcheck_method: auxprop
auxprop_plugin: sasldb
sasldb_path: /var/lib/svn/project/passwd.db
mech_list: DIGEST-MD5
/var/lib/svn/project/passwd.db - це файл з паролями
додати користувача можна командою:
saslpasswd2 -f /var/lib/svn/project/passwd.db -u Project -c
wget wget http://odyniec.net/articles/ubuntu-subversion-server/svnserve
додаємо до start-stop-daemon опцію " --chuid svn:svn "
chmod u+x svnserve
mv svnserve /etc/init.d/svnserve
update-rc.d svnserve defaults
/etc/init.d/svnserve start
Wednesday, January 2, 2013
django startup script
#!/bin/sh -u
ROOT_DIR="/data/www"
PIDFILE="${ROOT_DIR}/django.pid"
SITE_DIR="${ROOT_DIR}/site"
USER="vova"
MANAGE="$SITE_DIR/wmf/manage.py"
COMMAND="${SITE_DIR}/.env/bin/python"
PORT="10080"
HOST="127.0.0.1"
OPTIONS="$MANAGE runfcgi method=threaded host=${HOST} port=${PORT} pidfile=${PIDFILE}"
case "$1" in
start)
echo "Starting django site ...";
/sbin/start-stop-daemon -S -p ${PIDFILE} -c ${USER} --exec $COMMAND -- $OPTIONS
;;
stop)
echo "Stoping django site ...";
/sbin/start-stop-daemon -Kp ${PIDFILE}
test -f ${PIDFILE} && rm ${PIDFILE}
;;
restart|reload)
echo "Restarting api2 server ...";
$0 stop;
sleep 1;
$0 start;
;;
*)
echo "use $0: stop|start"
;;
esac
where (django-1.5):
# ls -1a /data/www/site
.env/
.git/
.gitignore
README.md
requirements.txt
wmf/
# ls -1a /data/www/site/wmf/
manage.py
media/
static/
wmf/
ROOT_DIR="/data/www"
PIDFILE="${ROOT_DIR}/django.pid"
SITE_DIR="${ROOT_DIR}/site"
USER="vova"
MANAGE="$SITE_DIR/wmf/manage.py"
COMMAND="${SITE_DIR}/.env/bin/python"
PORT="10080"
HOST="127.0.0.1"
OPTIONS="$MANAGE runfcgi method=threaded host=${HOST} port=${PORT} pidfile=${PIDFILE}"
case "$1" in
start)
echo "Starting django site ...";
/sbin/start-stop-daemon -S -p ${PIDFILE} -c ${USER} --exec $COMMAND -- $OPTIONS
;;
stop)
echo "Stoping django site ...";
/sbin/start-stop-daemon -Kp ${PIDFILE}
test -f ${PIDFILE} && rm ${PIDFILE}
;;
restart|reload)
echo "Restarting api2 server ...";
$0 stop;
sleep 1;
$0 start;
;;
*)
echo "use $0: stop|start"
;;
esac
where (django-1.5):
# ls -1a /data/www/site
.env/
.git/
.gitignore
README.md
requirements.txt
wmf/
# ls -1a /data/www/site/wmf/
manage.py
media/
static/
wmf/
Wednesday, August 15, 2012
[alert] [client 192.168.1.2] /home/www/domains/domain.com/htdocs/.htaccess: AuthType not allowed here
to fix add to config AuthConfig option to AllowOverride directive:
AllowOverride ....... AuthConfig ......
......
to fix add to config AuthConfig option to AllowOverride directive:
......
gentoo portage archive
Index of /gentoo/portage-archive/2011/portage-20111215/app-emulation/lxc/
gentoo pecl-memcache problem
memcache-2.2.6 # make
/bin/sh /home/vova/memcache-2.2.6/libtool --mode=compile cc -I/usr/lib64/php5.2/include/php -I. -I/home/vova/memcache-2.2.6 -DPHP_ATOM_INC -I/home/vova/memcache-2.2.6/include -I/home/vova/memcache-2.2.6/main -I/home/vova/memcache-2.2.6 -I/usr/lib64/php5.2/include/php -I/usr/lib64/php5.2/include/php/main -I/usr/lib64/php5.2/include/php/TSRM -I/usr/lib64/php5.2/include/php/Zend -I/usr/lib64/php5.2/include/php/ext -I/usr/lib64/php5.2/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /home/vova/memcache-2.2.6/memcache.c -o memcache.lo
/home/vova/memcache-2.2.6/libtool: line 481: CDPATH: command not found
libtool: Version mismatch error. This is libtool 2.4, but the
libtool: definition of this LT_INIT comes from an older release.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4
libtool: and run autoconf again.
make: *** [memcache.lo] Error 63
If you have error with libtool version after make - way to install:
phpize --clean && phpize
rm aclocal.m4
aclocal
autoconf
./configure
make
make install
[memcache-2.2.6, gentoo.x86-64]
/bin/sh /home/vova/memcache-2.2.6/libtool --mode=compile cc -I/usr/lib64/php5.2/include/php -I. -I/home/vova/memcache-2.2.6 -DPHP_ATOM_INC -I/home/vova/memcache-2.2.6/include -I/home/vova/memcache-2.2.6/main -I/home/vova/memcache-2.2.6 -I/usr/lib64/php5.2/include/php -I/usr/lib64/php5.2/include/php/main -I/usr/lib64/php5.2/include/php/TSRM -I/usr/lib64/php5.2/include/php/Zend -I/usr/lib64/php5.2/include/php/ext -I/usr/lib64/php5.2/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /home/vova/memcache-2.2.6/memcache.c -o memcache.lo
/home/vova/memcache-2.2.6/libtool: line 481: CDPATH: command not found
libtool: Version mismatch error. This is libtool 2.4, but the
libtool: definition of this LT_INIT comes from an older release.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4
libtool: and run autoconf again.
make: *** [memcache.lo] Error 63
If you have error with libtool version after make - way to install:
phpize --clean && phpize
rm aclocal.m4
aclocal
autoconf
./configure
make
make install
[memcache-2.2.6, gentoo.x86-64]
Tuesday, July 31, 2012
fail2ban: Fix for iptables actions failing when run concurrently
Actions that call iptables fail when they are run at the same time by separate threads. I have added a lock to disallow prevent the problem. The patch should be applied to server/action.py
download there:
http://sourceforge.net/tracker/?func=detail&aid=3413485&group_id=121032&atid=689046
download there:
http://sourceforge.net/tracker/?func=detail&aid=3413485&group_id=121032&atid=689046
Subscribe to:
Posts (Atom)