По умолчанию апач обычно пишет в логи только уровень error и выше. Меняем на warn и выше: после ErrorLog пишем
LogLevel warn
и перезапускаем апач.
среда, 30 мая 2012 г.
понедельник, 28 мая 2012 г.
FreeBSD: ставим пакеты
Некоторый софт проще и быстрее поставить из пакетов, а не портов, особенно это касается такого софта как m4, ruby (для меня это просто побочный пакет, не более) итд.
У portinstall для этого есть хороший ключик -PP (packages-only)
Я не знаю, как сделать что-то вроде
cd /usr/ports/sysutils/smartmontools && make package, поэтому способ чуть сложнее, для этого можно посмотреть нужные пакеты в
http://ftp6.ru.freebsd.org/pub/FreeBSD/ports/packages/All/
(много файлов!)
cd /usr/ports/ports-mgmt/portupgrade
make package-depends-list
cd /usr/ports/packages
fetch "http://ftp6.ru.freebsd.org/pub/FreeBSD/ports/packages/All/ruby-1.8.7.358%2c1.tbz"
pkg_add *
(запятую заменяем на %2c или просто берем аргументы для fetch в кавычки)
По идее, есть опция USE_PACKAGE_DEPENDS, но чего-то она не работает.
Вариант 2 - через pkg-add -r
Но всё-равно надо полное имя. Впрочем, для ряда пакетов есть симлинки на сервере, поэтому pkg_add -r mc поставит mc, но это не система такая умная, а просто симлинк на фтп.
У portinstall для этого есть хороший ключик -PP (packages-only)
Я не знаю, как сделать что-то вроде
cd /usr/ports/sysutils/smartmontools && make package, поэтому способ чуть сложнее, для этого можно посмотреть нужные пакеты в
http://ftp6.ru.freebsd.org/pub/FreeBSD/ports/packages/All/
(много файлов!)
cd /usr/ports/ports-mgmt/portupgrade
make package-depends-list
cd /usr/ports/packages
fetch "http://ftp6.ru.freebsd.org/pub/FreeBSD/ports/packages/All/ruby-1.8.7.358%2c1.tbz"
pkg_add *
(запятую заменяем на %2c или просто берем аргументы для fetch в кавычки)
По идее, есть опция USE_PACKAGE_DEPENDS, но чего-то она не работает.
Вариант 2 - через pkg-add -r
Но всё-равно надо полное имя. Впрочем, для ряда пакетов есть симлинки на сервере, поэтому pkg_add -r mc поставит mc, но это не система такая умная, а просто симлинк на фтп.
Установка FreeBSD 9 c ZFS
Ставим freebsd с корнем на zfs
Что 8, что 9 инсталлер штатно не умеет zfs, поэтому надо на обоих грузиться в консоль. Отличия в том, что в 8 это был выкидыш fixit, который был крайне, дико убог, а в 9 появился нормальный shell, который и листать историю умеет, и ls есть, и вообще поведение уже человеческое.
Под 8 версию уже был мануал, теперь сделаем под 9.
Что 8, что 9 инсталлер штатно не умеет zfs, поэтому надо на обоих грузиться в консоль. Отличия в том, что в 8 это был выкидыш fixit, который был крайне, дико убог, а в 9 появился нормальный shell, который и листать историю умеет, и ls есть, и вообще поведение уже человеческое.
Под 8 версию уже был мануал, теперь сделаем под 9.
воскресенье, 27 мая 2012 г.
svn: Can't convert string from 'UTF-8' to native encoding
svn: Can't convert string from 'UTF-8' to native encoding:
...
Характерно для freebsd, поскольку он не умеет utf-8. Решение:
setenv LC_CTYPE "ru_RU.CP1251"
опционально, ломает показ файлов (ls), показывая русский где он не нужен:
setenv LANG "ru_RU.CP1251"
(как минимум работает в csh, так что можно дописать в .cshrc)
линки
http://chatlogs.jabber.ru/freebsd@conference.jabber.ru/2008/11/22.html
http://stackoverflow.com/questions/2116718/svn-error-cant-convert-string-from-native-encoding-to-utf-8
...
Характерно для freebsd, поскольку он не умеет utf-8. Решение:
setenv LC_CTYPE "ru_RU.CP1251"
опционально, ломает показ файлов (ls), показывая русский где он не нужен:
setenv LANG "ru_RU.CP1251"
(как минимум работает в csh, так что можно дописать в .cshrc)
линки
http://chatlogs.jabber.ru/freebsd@conference.jabber.ru/2008/11/22.html
http://stackoverflow.com/questions/2116718/svn-error-cant-convert-string-from-native-encoding-to-utf-8
debian: percona, свежий nginx и subversion 1.7
Поскольку иногда требуется перкона + в штатной поставке ну вообще древний nginx аж 1.7 ветки, надо подключать доп репы, пишем каждую репу в свой файл в /etc/apt/sources.list.d/
nginx
http://wiki.nginx.org/Install
deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx
percona
Перкона молодцы, у них есть репы для основных линукс-дистрибутивов.
http://www.percona.com/docs/wiki/repositories:apt
deb http://repo.percona.com/apt squeeze main
deb-src http://repo.percona.com/apt squeeze main
MariaDB
Ещё одна замена оригинального mysql, более совместимая с оригиналом, но без некоторых плюшек
https://downloads.mariadb.org/mariadb/repositories/
для 5.5:
deb http://mirror.timeweb.ru/mariadb/repo/5.5/debian squeeze main
deb-src http://mirror.timeweb.ru/mariadb/repo/5.5/debian squeeze main
subversion
Штатный 1.6, и обновлять его не собираются, но мы давно перешли на 1.7, в частности из-за только 1 каталога .svn в корне проекта вместо тучи по всем каталогам.
deb http://opensource.wandisco.com/debian/ squeeze svn17
И ключи
nginx
gpg --keyserver hkp://keys.gnupg.net --recv-keys ABF5BD827BD9BF62
gpg -a --export 7BD9BF62 | apt-key add -
percona
gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
gpg -a --export CD2EFD2A | apt-key add -
mariadb
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
subversion
gpg --keyserver hkp://keys.gnupg.net --recv-keys E9F0E9223BBF077A
gpg -a --export 3BBF077A | apt-key add -
После этого делаем
apt-get update
Что странно: на оф странице ничего про эти ключи не было сказано, но по аналогии с перконой всё оказалось очень просто: после apt-get update получили ошибку
W: GPG error: http://nginx.org squeeze Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABF5BD827BD9BF62
Номер ключа у нас есть, подставили в 1 команду вместо ключа перконы, получили
gpg: requesting key 7BD9BF62 from hkp server keys.gnupg.net
gpg: key 7BD9BF62: public key "nginx signing key <signing-key@nginx.com>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
Вот и номер ключа есть, его во 2 строку.
Теперь можно поставить percona-server-server и nginx
Для перконы советую также поставить percona toolkit (пакет percona-toolkit), замена maatkit-у.
C свн - проще снести старую версию и поставить новую, в конце напишет
Setting up subversion (1.7.5-1+WANdisco) ...
Setting up libsvn1 (1.7.5-1+WANdisco) ...
PS
Возможные ошибки.
gpg: requesting key 3BBF077A from hkp server keys.gnupg.net
?: keys.gnupg.net: Network is unreachable
gpgkeys: HTTP fetch error 7: couldn't connect: Network is unreachable
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
nginx
http://wiki.nginx.org/Install
deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx
percona
Перкона молодцы, у них есть репы для основных линукс-дистрибутивов.
http://www.percona.com/docs/wiki/repositories:apt
deb http://repo.percona.com/apt squeeze main
deb-src http://repo.percona.com/apt squeeze main
MariaDB
Ещё одна замена оригинального mysql, более совместимая с оригиналом, но без некоторых плюшек
https://downloads.mariadb.org/mariadb/repositories/
для 5.5:
deb http://mirror.timeweb.ru/mariadb/repo/5.5/debian squeeze main
deb-src http://mirror.timeweb.ru/mariadb/repo/5.5/debian squeeze main
Штатный 1.6, и обновлять его не собираются, но мы давно перешли на 1.7, в частности из-за только 1 каталога .svn в корне проекта вместо тучи по всем каталогам.
deb http://opensource.wandisco.com/debian/ squeeze svn17
И ключи
nginx
gpg --keyserver hkp://keys.gnupg.net --recv-keys ABF5BD827BD9BF62
gpg -a --export 7BD9BF62 | apt-key add -
percona
gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
gpg -a --export CD2EFD2A | apt-key add -
mariadb
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
gpg --keyserver hkp://keys.gnupg.net --recv-keys E9F0E9223BBF077A
gpg -a --export 3BBF077A | apt-key add -
После этого делаем
apt-get update
Что странно: на оф странице ничего про эти ключи не было сказано, но по аналогии с перконой всё оказалось очень просто: после apt-get update получили ошибку
W: GPG error: http://nginx.org squeeze Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABF5BD827BD9BF62
Номер ключа у нас есть, подставили в 1 команду вместо ключа перконы, получили
gpg: requesting key 7BD9BF62 from hkp server keys.gnupg.net
gpg: key 7BD9BF62: public key "nginx signing key <signing-key@nginx.com>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
Вот и номер ключа есть, его во 2 строку.
Теперь можно поставить percona-server-server и nginx
Для перконы советую также поставить percona toolkit (пакет percona-toolkit), замена maatkit-у.
C свн - проще снести старую версию и поставить новую, в конце напишет
Setting up subversion (1.7.5-1+WANdisco) ...
Setting up libsvn1 (1.7.5-1+WANdisco) ...
PS
Возможные ошибки.
gpg: requesting key 3BBF077A from hkp server keys.gnupg.net
?: keys.gnupg.net: Network is unreachable
gpgkeys: HTTP fetch error 7: couldn't connect: Network is unreachable
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
Для nginx - можно скачать подпись с офсайта.
wget http://nginx.org/packages/keys/nginx_signing.key
cat nginx_signing.key | apt-key add -
PPS Также есть репа dotdeb.org
echo deb http://packages.dotdeb.org squeeze all > /etc/apt/sources.list.d/dotdeb.list
echo deb-src http://packages.dotdeb.org squeeze all >> /etc/apt/sources.list.d/dotdeb.list
curl -s http://www.dotdeb.org/dotdeb.gpg | apt-key add -
echo deb http://packages.dotdeb.org squeeze all > /etc/apt/sources.list.d/dotdeb.list
echo deb-src http://packages.dotdeb.org squeeze all >> /etc/apt/sources.list.d/dotdeb.list
curl -s http://www.dotdeb.org/dotdeb.gpg | apt-key add -
вторник, 22 мая 2012 г.
git: post-receive hook
При попытке реализовать хук в гите на post-receive, сначала постоянно будет лезть ошибка
error: git-shell died of signal 13
fatal: The remote end hung up unexpectedly
error: error in sideband demultiplexer
Дело в том, что данный хук сделан каким-то извращенцем, поэтому аргументы хуку передаются через stdin и единственно верный (официально) метод чтения (для sh):
while read oldrev newrev refname
do
...
done
На другие языки переписать по аналогии.
И попутно заметка: если был коммит в мастер, запустить ssh
error: git-shell died of signal 13
fatal: The remote end hung up unexpectedly
error: error in sideband demultiplexer
Дело в том, что данный хук сделан каким-то извращенцем, поэтому аргументы хуку передаются через stdin и единственно верный (официально) метод чтения (для sh):
while read oldrev newrev refname
do
...
done
На другие языки переписать по аналогии.
И попутно заметка: если был коммит в мастер, запустить ssh
#!/bin/sh while read oldrev newrev refname do if expr "$refname" : '.*master$' >/dev/null; then ssh user@server.local /var/www/site/up fi done
вторник, 15 мая 2012 г.
суббота, 12 мая 2012 г.
FreeBSD в DomU на xen
В HVM запустить не проблема: подключаем диск, сдром, указываем vnc-опции. (подробно - по ссылкам ниже есть)
!! Есть проблемы запуска на AMD, разные версии не запускаются по разному. В результате платформа была заменена на интел.
!!Хорошие новости: Microsoft обеспечит официальную поддержку платформы виртуализации Hyper-V во FreeBSD
Дело в том, что цитрикс, текущий владелец хена, также хороший партнер мелких. Так что кодовая база hyper-v и xen как минимум пересекается, а значит наработки для hyper-v появятся в xen + код, который будет отдан в freebsd, также будет поддерживать и xen. Так что скорее всего через годик фря будет работать и в hvm на всех платформах, и в pv, и драйвера отладят нормально.
PV-режима под amd64 нету. Есть ядро с pv-xen драйверами, так что это будет смешанный режим - запускаться как hvm, но сеть например в pv. Для продакшена не очень хорошая идея, но для тестов и разработки сгодится.
Под i386 есть конфиг XEN - собираем ядро, ставим его куда-либо, откуда можно будет вытащить (make KERNCONF=XEN DESTDIR=/root/myboot kernel), подсовываем в конфиг в dom0. Можно через pygrub (где-то было, что заменяется на pv-grub), но там есть нюансы, напрямую оно не запустится.
Но чтобы собрать ядро, надо уже иметь систему в hvm, что у меня было сделано. С нуля - есть в интернете готовые ядра, проблема найти посвежее. По линкам ниже тоже будет.
Ограничения: максимум 850мб памяти, в PV проблемы с работой VNC - для его запуска скорее всего придется достать бубен...
Из доработок:
1) файл в dom0:
в стандартный конфиг под pv вписываем сеть, диск, память менее 850мб, название машины. Ядро указываем через pygrub или напрямую (kernel = "/var/xen/kernel.8.2"). Для запуска этого достаточно, но словим mountpoint> и надо будет указать /, поэтому сразу можно вписать строку
extra = "vfs.root.mountfrom=ufs:ad0s1a,machdep.idle_mwait=0,boot_verbose=1"
Теперь можно запустить как xm create -c freebsd.pv - и мы увидим весь процесс загрузки.
2) В самой системе. Как минимум, надо в rc.conf скопировать всё про сеть, заменив название нашей карты на xn0 (xen network), так:
ifconfig_re0="inet 192.168.2.5/24"
ifconfig_xn0="inet 192.168.2.5/24"
2 разных сетевых с 1 айпи? Да, можно, поскольку у нас не может одновременно встретиться обе карты и образ получается более "универсальным"
Также будет ругань про консоли
...
May 12 20:21:38 fbsd8 getty[1035]: open /dev/ttyv4: No such file or directory
...
Причина в том, что этих консолей у нас нет. Можно оставить для совместимости, можно закомментировать, но тогда в hvm у нас не будет переключения консолей (а было ли оно вообще? Это же не реальный сервер...)
Сначала такое преобразование было проделано мной методом тыка, но потом найдена хорошая дока Xen FreeBSD 8.2 DomU (PV) -- Step by Step Howto, оттуда же взяты Xen DomU configuration examples - FreeBSD and CentOS и Xen 3.4.3 on CentOS 5.5 -- Tutorial
Собственно, если freebsd интересен - эти доки небольшие и к ознакомлению обязательны, особенно первая дока.
Официальный статус: http://wiki.freebsd.org/FreeBSD/Xen
FreeBSD on EC2
Есть pypxeboot, но это для совсем уж гиков.
!! Есть проблемы запуска на AMD, разные версии не запускаются по разному. В результате платформа была заменена на интел.
!!Хорошие новости: Microsoft обеспечит официальную поддержку платформы виртуализации Hyper-V во FreeBSD
Дело в том, что цитрикс, текущий владелец хена, также хороший партнер мелких. Так что кодовая база hyper-v и xen как минимум пересекается, а значит наработки для hyper-v появятся в xen + код, который будет отдан в freebsd, также будет поддерживать и xen. Так что скорее всего через годик фря будет работать и в hvm на всех платформах, и в pv, и драйвера отладят нормально.
PV-режима под amd64 нету. Есть ядро с pv-xen драйверами, так что это будет смешанный режим - запускаться как hvm, но сеть например в pv. Для продакшена не очень хорошая идея, но для тестов и разработки сгодится.
Под i386 есть конфиг XEN - собираем ядро, ставим его куда-либо, откуда можно будет вытащить (make KERNCONF=XEN DESTDIR=/root/myboot kernel), подсовываем в конфиг в dom0. Можно через pygrub (где-то было, что заменяется на pv-grub), но там есть нюансы, напрямую оно не запустится.
Но чтобы собрать ядро, надо уже иметь систему в hvm, что у меня было сделано. С нуля - есть в интернете готовые ядра, проблема найти посвежее. По линкам ниже тоже будет.
Ограничения: максимум 850мб памяти, в PV проблемы с работой VNC - для его запуска скорее всего придется достать бубен...
Из доработок:
1) файл в dom0:
в стандартный конфиг под pv вписываем сеть, диск, память менее 850мб, название машины. Ядро указываем через pygrub или напрямую (kernel = "/var/xen/kernel.8.2"). Для запуска этого достаточно, но словим mountpoint> и надо будет указать /, поэтому сразу можно вписать строку
extra = "vfs.root.mountfrom=ufs:ad0s1a,machdep.idle_mwait=0,boot_verbose=1"
Теперь можно запустить как xm create -c freebsd.pv - и мы увидим весь процесс загрузки.
2) В самой системе. Как минимум, надо в rc.conf скопировать всё про сеть, заменив название нашей карты на xn0 (xen network), так:
ifconfig_re0="inet 192.168.2.5/24"
ifconfig_xn0="inet 192.168.2.5/24"
2 разных сетевых с 1 айпи? Да, можно, поскольку у нас не может одновременно встретиться обе карты и образ получается более "универсальным"
Также будет ругань про консоли
...
May 12 20:21:38 fbsd8 getty[1035]: open /dev/ttyv4: No such file or directory
...
Причина в том, что этих консолей у нас нет. Можно оставить для совместимости, можно закомментировать, но тогда в hvm у нас не будет переключения консолей (а было ли оно вообще? Это же не реальный сервер...)
Сначала такое преобразование было проделано мной методом тыка, но потом найдена хорошая дока Xen FreeBSD 8.2 DomU (PV) -- Step by Step Howto, оттуда же взяты Xen DomU configuration examples - FreeBSD and CentOS и Xen 3.4.3 on CentOS 5.5 -- Tutorial
Собственно, если freebsd интересен - эти доки небольшие и к ознакомлению обязательны, особенно первая дока.
Официальный статус: http://wiki.freebsd.org/FreeBSD/Xen
FreeBSD on EC2
Есть pypxeboot, но это для совсем уж гиков.
четверг, 10 мая 2012 г.
SuexecUserGroup и AssignUserID
Часто бывает нужно, чтобы скрипты на сайте исполнялись не от системного юзера (www/www-data/apache), а от пользователя, которому принадлежит сайт. В зависимости от режима работы apache разные методы для указания пользователя.
Основные методы это SuexecUserGroup и AssignUserID, и в своих конфигах можно указывать оба атрибута, плюс вариант под peruser:
Существенные отличия тут в том, что только itk обеспечивает полную работу от указанного юзера, тогда как тот же SuexecUserGroup обеспечивает смену пользователя только для динамики. Статика отдаётся при этом от системного юзера.
Если при смене типа воркера используется ispmanager, надо сделать еще ряд манипуляций.
# perl -p -i -e 's/SuexecUserGroup/AssignUserID/g' /etc/httpd/conf/httpd.conf
В ispmgr.conf надо добавить
Option ApacheMPM
и возможно
ApacheProcName httpd.itk
Линки
http://forum.ispsystem.com/ru/showthread.php?t=17740
http://wiki.firstvds.ru/index.php/Apache_MPM-ITK_на_CentOS_с_ISPmanager
http://ru.ispdoc.com/index.php/Файл_конфигурации_ISPmanager_(ISPmanager)
Основные методы это SuexecUserGroup и AssignUserID, и в своих конфигах можно указывать оба атрибута, плюс вариант под peruser:
<IfModule peruser.c> ServerEnvironment user user Processor user user </IfModule> <IfModule mod_suexec.c> SuexecUserGroup user user </IfModule> <IfModule mod_suexec> SuexecUserGroup user user </IfModule> <IfModule itk.c> AssignUserID user user </IfModule>Также надо проверить, что есть сам блок про itk. Если нету -- надо вписать
<IfModule itk.c> StartServers 1 MinSpareServers 1 MaxSpareServers 5 ServerLimit 110 MaxClients 100 MaxRequestsPerChild 4000 </IfModule>Ну и подогнать под свои нужды.
Существенные отличия тут в том, что только itk обеспечивает полную работу от указанного юзера, тогда как тот же SuexecUserGroup обеспечивает смену пользователя только для динамики. Статика отдаётся при этом от системного юзера.
Если при смене типа воркера используется ispmanager, надо сделать еще ряд манипуляций.
# perl -p -i -e 's/SuexecUserGroup/AssignUserID/g' /etc/httpd/conf/httpd.conf
В ispmgr.conf надо добавить
Option ApacheMPM
и возможно
ApacheProcName httpd.itk
Линки
http://forum.ispsystem.com/ru/showthread.php?t=17740
http://wiki.firstvds.ru/index.php/Apache_MPM-ITK_на_CentOS_с_ISPmanager
http://ru.ispdoc.com/index.php/Файл_конфигурации_ISPmanager_(ISPmanager)
среда, 2 мая 2012 г.
Не работает HTTP авторизация в CMS Bitrix
Отсюда:
http://forum.hostdvor.com/viewtopic.php?f=35&p=119
http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=35&LESSON_ID=1967 (офсайт)
Форматирование - оригинальное, так что все плевки о грязи в коде - в оригинал.
http://forum.hostdvor.com/viewtopic.php?f=35&p=119
http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=35&LESSON_ID=1967 (офсайт)
Форматирование - оригинальное, так что все плевки о грязи в коде - в оригинал.
Подписаться на:
Сообщения (Atom)