Однажды после обновления с 9.0 до 9.2 на loopback-интерфейсе (lo0) появился сильный icmp-шторм. Помогло отключение TSO на внешнем интерфейсе:
ifconfig em0 -tsohttps://bugs.freebsd.org/bugzilla/show_bug.cgi?id=144311
make -C /usr/ports/lang/python32 install clean
make -C /usr/ports/databases/py-sqlite3 PYTHON_VERSION=python3.2 NO_PKG_REGISTER=yes install
(NO_PKG_REGISTER необходим для обхода конфликта с уже установленными версиями для дефолтного python2.7)
make -C /usr/ports/devel/py-distribute PYTHON_VERSION=python3.2 NO_PKG_REGISTER=yes install
pip-3.2 install virtualenv
su user
cd
virtualenv-3.2 --system-site-packages env
env/bin/pip install uwsgi
git clone git@127.0.0.1:/project.git
uwsgi:
chdir: /www/user/project
virtualenv: /www/user/env
uid: user
gid: user
# указываем socket, при помощи которого будет происходить
# взаимодействие между nginx и uwsgi
socket: /tmp/project_uwsgi.sock
# здесь указываем путь к проекту
pythonpath: /www/user/project
# путь к лог файлу
daemonize: /www/user/log/uwsgi.log
# прочие настройки, значения который можно посмотреть на сайте uWSGI
max-requests: 5000
buffer-size: 32768
harakiri: 30
reload-mercy: 8
master: 1
no-orphans: 1
# если выполнить команду "touch <имя ниже указанного файла>",
# то произойдет перезапуск uwsgi демона.
touch-reload: /www/user/uwsgi
paste: config:/www/user/project/production.ini
server {
listen 80;
server_name project.ru www.project.ru;
access_log /www/user/log/access;
error_log /www/user/log/error;
root /www/user/project/;
location / {
# ниже надо указать путь к socket'у, при помощи которого
# nginx и uwsgi будут сообщаться.
# в данном случае путь это '/var/tmp/odmin4eg_uwsgi.sock'
uwsgi_pass unix:///tmp/user_uwsgi.sock;
include uwsgi_params;
uwsgi_param SCRIPT_NAME /;
# 8 -- число буфферов
# 128k -- размер буфера
# фактически, мы сможем передать от project в nginx только 1 мб информации.
# играйтесь с этим значением при поднятии своего проекта
uwsgi_buffers 8 128k;
}
location /static/ {
# а вот здесь указываем абсолютный путь к директории со
# статическими файлами
alias /www/user/project/www/static/;
expires 30d;
}
}
cd /usr/ports/uwsgi
make
cd work/uwsgi-1.2.4/
echo "plugin_dir = /usr/local/lib/uwsgi" >> buildconf/core.ini
python uwsgiconfig.py --clean
python uwsgiconfig.py --build core
python uwsgiconfig.py --plugin plugins/python core python27
python32 uwsgiconfig.py --plugin plugins/python core python32
здесь возможно потребуется пересобрать Python3.2:
make -C /usr/ports/lang/python32/ CFLAGS=-fPIC deinstall install
cd /usr/ports/uwsgi
make install
pip-3.2 install PasteDeploy pyramid pyramid-debugtoolbar pyramid-tm waitress zope.sqlalchemy
Traceback (most recent call last):
File "/usr/local/lib/python3.2/site-packages/paste/deploy/loadwsgi.py", line 247, in loadapp
return loadobj(APP, uri, name=name, **kw)
File "/usr/local/lib/python3.2/site-packages/paste/deploy/loadwsgi.py", line 271, in loadobj
global_conf=global_conf)
File "/usr/local/lib/python3.2/site-packages/paste/deploy/loadwsgi.py", line 277, in loadcontext
if '#' in uri:
TypeError: Type str doesn't support the buffer API
Тогда надо добавить в /usr/local/lib/python3.2/site-packages/paste/deploy/loadwsgi.py перед строкой 277 содержащей if '#' in uri:
if isinstance(uri, bytes):
uri = uri.decode('utf-8')
FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
define(`confLOCAL_MAILER', `cyrusv2')
mailer(`cyrusv2')
S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n,
example.com cyrusv2:/var/imap/socket/lmtp
From:example.com RELAY
defaultdomain: example.com
unixhierarchysep: 1
virtdomains: userid
admins: admin
tls_cert_file: /var/imap/server.pem
tls_key_file: /var/imap/server.pem
admins: admin, admin@example2.com
openssl req -new -x509 -nodes -out /var/imap/server.pem -keyout /var/imap/server.pem -days 365
saslpasswd2 -c admin@example.com
cyradm --user admin@example.com example.com
cm user/user1@example.com
cm user/user1@example2.com
saslpasswd2 -c user1@example.com
saslpasswd2 -c user1@example2.com