10 сент. 2012 г.

Переходим на subversion для обновления FreeBSD

Всё никак не мог собраться перейти на subversion. Однако уже было анонсировано, что 28 февраля 2013 года поддержка cvs будет прекращена. Как оказалось, задействовать subversion не просто, а очень просто. Для начала понадобится subversion. Взять его можно в портах: devel/subversion. Если у вас очень старая версия портов, то devel/subversion-freebsd.

Перед переходом желательно очистить содержимое /usr/src и /usr/ports (за исключением distfiles, но если вам не жалко трафика, то можете удалить и его). Клонирование дерева портов осуществляем командой:

svn co svn://svn.FreeBSD.org/ports/head /usr/ports

Для скачивания исходных кодов мира и ядра нужно выполнить:

svn co svn://svn.freebsd.org/base/releng/9.1/ /usr/src

В данном случае скачивается ветка релиза 9.1 (releng/9.1/). Узнать какие существуют актуальные на данный момент ветки можно на официальном сайте FreeBSD. Например, на момент написания заметки имеются ветки stable/9 и releng/9.0. Все существующие ветки можно просмотреть через веб-интерфейс для svn по адресу: http://svnweb.freebsd.org.

Если у вас возникают затруднения, например, при использовании прокси-сервера, то вы можете заменить протокол svn на http или https: https://svn.freebsd.org/base/releng/9.1/.

Скачивание производится с основного сервера. Адреса других зеркал можно найти на в хендбуке.

Дальнейшее обновление исходных кодов и портов можно осуществлять командой svn update, предварительно перейдя в папку /usr/src или /usr/ports, соответственно.

Если вы желаете перейти на более свежую ветку, то достаточно переключить репозиторий командой:

svn switch svn://svn.freebsd.org/base/releng/9.2/ /usr/src

1 июл. 2012 г.

Установка устаревшего модуля sqlite на php-5.4.x

В новой версии php-5.4.0 экстеншен ext/sqlite был убран из дистрибутива. Однако microcosm, который я использую, требует именно его. Попытка установить из PECL не удалась - исходники упорно отказывались собираться выдавая кучу ошибок. Решение нашёл благодаря форуму сайта phpclub.ru. Итак, для установки sqlite выкачиваем текущую версию с помощью subversion и устанавливаем:

svn co http://svn.php.net/repository/pecl/sqlite/trunk sqlite
cd sqlite/
phpize
./configure && make install

Далее необходимо добавить полученную библиотеку в php.ini:

extension=sqlite.so

После чего перезапускаем php-fpm или тот процесс, который у вас занимается обработкой запросов. После этого можно убедиться через phpinfo что библиотека подключена.

Вот, собственно, и всё. Microcosm вновь работает :)

P.S. В последних версиях появилась поддержка mysql. Модуль sqlite больше не нужен.

15 апр. 2012 г.

Инструкция по настройке ADSL-соединения для Windows 7

Инструкция по настройке ADSL соединения для доступа в сеть интернет через провайдера Ютел. Возможно подходит для других провайдеров, но ориентирована именно на этого оператора. Рассчитан документ для печати в виде буклета на 1 листе. Если ваш принтер умеет печатать на двух сторонах листа, можете в настройках задать настройки и получить удобный для использования буклет. Инструкция по настройке ADSL-соединения для Windows 7

20 мар. 2012 г.

Microcosm и переход с lighttpd на nginx

Решил я заменить lighttpd на nginx. Уж очень часто его нахваливают в интернете. Всё прошло гладко. Но споткнулся о небольшое приложение для хранения геоданных - Microcosm. Написано оно на php. В документации есть только вариант для Apache:
# BEGIN Microcosm

RewriteEngine On
RewriteBase /api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /m/microcosm.php [L]


# END Microcosm
В lighttpd настройка была ещё проще:
url.rewrite = ( "^/api/(.*)$" => "m/microcosm.php/$1" )
С nginx получилось немного сложнее:
location /api/ {
   fastcgi_pass unix:/var/spool/php-fpm.socket; # PHP-FPM socket
   root   /home/web/htdocs/m/; # Microcosm directory
   fastcgi_index microcosm.php;
   include        fastcgi_params;
   fastcgi_split_path_info ^(\/api)(.*)$;
   fastcgi_param SCRIPT_FILENAME $document_root/microcosm.php;
   fastcgi_param PATH_INFO $fastcgi_path_info;
}
Используется директива fastcgi_split_path_info. Она разбивает адресную строку запроса на 2 части, которые описаны регулярными выражениями. Первая часть — это /api, попадает в переменную $fastcgi_script_name. Вторая часть попадает в $fastcgi_path_info. Её и скармливаем php в виде $_SERVER['PATH_INFO']. Эта переменная и используется в microcosm.