Фев 082013
 

Начииная с 7-й ветки в FreeBSD появилась TMPFS, она портированна с NetBSD. Приступим к настройке.
Есть два способа ее включить, первый собрать ядро с поддержкой tmpfs добавляя в конфигурационный файл ядра опцию

options TMPFS

Второй способ, загрузить модулем.

echo 'tmpfs_load="YES"'>> /boot/loader.conf

Далее правим наш fstab

#/dev/ada2d     /tmp            ufs     rw,userquota,groupquota         2       2
tmpfs           /tmp            tmpfs   rw,mode=01777,size=2147483648   0       0

После перезагрузки системы проверяем.

tmpfs           2.0G     16k      2G     0%    /tmp

При ручном монтировании раздела команда будет выглядеть так

mount -t tmpfs -o mode=01777,size=2147483648 tmpfs /tmp

Где размер раздела равен 2 гб.
Tmpfs дает ощутимый прирост при больших нагрузках, если очень много временных файлов хранится в разделе /tmp, ранее раздел располагался на жестком диске, сейчас же в оперативной памяти, что дает больший прирост при чтении и записи.

Окт 022012
 

Обновлял на одном сервере софт, тестовый сервер, перестал запускаться Proftpd, вылетал с ошибкой

Fatal: unknown configuration directive 'SQLBackend'

Теперь для работы Proftpd с поддержкой mysql необходимо дополнительно устанавливать порт databases/proftpd-mod_sql_mysql
При этом необходимо в конфиг добавить следующее

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c

Перезапустить сервис Proftpd и радоваться его работе.

Сен 212012
 

Вот столкнулся с одной проблемой на одном из будущих серверов после обновления дерева портов.
Пытался поставить mc а в ответ получил такое

cd /usr/ports/misc/mc && make install clean
Unknown modifier 'u'

Unknown modifier 'u'

Variable NO_OPTIONS is recursive.

Загуглив, нашел решение, решение выглядит следующим образом.

Edit file /usr/ports/Mk/bsd.options.mk (and, if needed, other files in /usr/ports/Mk/) removing all ":u" (case sensitive, without quotes) from the file.
It is probably not good doing this, but works.

После всех махинаций все начало собираться 🙂

Авг 102012
 

Искал я себе панельку управления хостингом для локальных сайтов, тестов и т.д. Так как я хостингом профессионально не занимаюсь, не вижу смысла покупать панельку за деньги, типа ISPmanager и т.д.
Ранее пробовал панельку syscp, но проект закрылся, вместо него появился froxlor, мне он не сильно понравился, и мое внимание привлекла панелька ispCP Omega.
Имеем на данный момент только что установленную систему FreeBSD

FreeBSD test.slik.loc 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri May  1 08:49:13 UTC 2009     root@walker.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

Побыстрому обновил систему через portsnap и приступил к работе.

test# cd /usr/ports/ports-mgmt/portmaster/ && make install clean && rehash

В меню был выбор оболочки, я выбрал bash


                                │                  Options for portmaster 3.13.13                    │
                                │ ┌────────────────────────────────────────────────────────────────┐ │
                                │ │      [X] BASH  Install programmable completions for Bash       │ │
                                │ │      [ ] ZSH   Install programmable completions for zsh        │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                │ │                                                                │ │
                                ├─└────────────────────────────────────────────────────────────────┘─┤
                                │                       [  OK  ]       Cancel                        │
                                └────────────────────────────────────────────────────────────────────┘


и приступил к установке.
Далее необходимо скачать саму панельку, последней версии, и распаковать ее, что собственно мы и сделаем.

# mkdir -p /usr/local/src/ispcp/
# cd /usr/local/src/ispcp/
# fetch http://ignum.dl.sourceforge.net/project/ispcp/ispCP%20Omega/ispCP%20Omega%201.0.7/ispcp-omega-1.0.7.tar.bz2
# tar -xjvf ispcp-omega-1.0.7.tar.bz2

Далее согласно мануалу разработчиков необходимо поправить makefile в апаче, что мы и делаем.

vi /usr/ports/www/apache22/Makefile

Меняем с prefork на worker

WITH_MPM?=      worker # or prefork, event, itk

Continue reading »

Авг 072012
 

Появилась острая необходимость установить eAccelerator на одном из серверов, но не тут то было, при попытке установить, вылезла сразу ошибка

 cd /usr/ports/www/eaccelerator/ && make install clean
===>  eaccelerator-0.9.6.1_1 cannot install: doesn't work with PHP version : 5 (Doesn't support PHP 5).
*** Error code 1

Stop in /usr/ports/www/eaccelerator.

Было решено собирать его из исходников, скачал исходники и далее понеслась.

[root@slik45 /tmp]# cd /tmp/
[root@slik45 /tmp]# tar xvfj eaccelerator-eaccelerator-c5ac10d.tar.gz
[root@slik45 /tmp]# cd eaccelerator-eaccelerator-c5ac10d
[root@slik45 /tmp/eaccelerator-eaccelerator-c5ac10d]# phpize
[root@slik45 /tmp/eaccelerator-eaccelerator-c5ac10d]# ./configure
[root@slik45 /tmp/eaccelerator-eaccelerator-c5ac10d]# make && make install

После того как все установилось, добавляем в php.ini следующие строки

[eAccelerator]
extension="eaccelerator.so"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.name_space="dev.slik45.kiev.ua"
eaccelerator.log_file="/var/log/eaccel_www.log"
eaccelerator.shm_size="160"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="300"
eaccelerator.shm_prune_period="6000"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Сохраняем, и перезапускаем php-fpm
Далее проверяем подгрузился ли модуль
php -v

[root@slik45 /usr/local/etc]# php -v
PHP 5.4.5 (cli) (built: Aug  3 2012 15:44:11)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
    with eAccelerator v1.0-dev, Copyright (c) 2004-2012 eAccelerator, by eAccelerator
    with the ionCube PHP Loader v4.2.2, Copyright (c) 2002-2012, by ionCube Ltd.

Как видно из вывода команды, все подгрузилось и работает 🙂

Апр 252012
 

Вроде ничего и нового тут нету, но решил написать этот пост больше для себя. Учитывая то что у меня сейчас все крутится на основном месте работы на виндах DHCP, DNS, etc…, то сейчас стараюсь записывать все что делаю на FreeBSD, она мне ближе по душе как не крути.
И так поехали.

cd /usr/ports/net/isc-dhcp42-server/ && make install clean

Выбираем следующие опции

 Options for isc-dhcp42-server 4.2.3_2                 │
                                           │ ┌────────────────────────────────────────────────────────────────┐ │
                                           │ │      [ ] DHCP_IPV6      Enable support for IPv6                │ │
                                           │ │      [X] DHCP_PARANOIA  Enable support for chroot              │ │
                                           │ │      [ ] DHCP_LDAP      With LDAP support                      │ │
                                           │ │      [ ] DHCP_LDAP_SSL  Support LDAP over SSL/TLS              │ │
                                           │ │      [ ] BIND_SYMBOLS   Enable BIND internal symbol table

После инсталляции DHCP сервера приступаем к его конфигурации, файл конфигурации располагается тут

/usr/local/etc/dhcpd.conf

И приводим его к такому виду.
Continue reading »

Мар 122012
 

Очередное обновление proftpd вылезло боком. Перестали логиниться юзеры которые проходят авторизацию через mysql.
Через режим отладки было видно что, не модуль mysql не подключен. Оказалось разработчики изменили некоторые функции, теперь необходимо в конфиги писать следующее

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c

И после это перезапустить proftpd.
Мне помогло.

Фев 122012
 

Понадобилось на шлюз монтировать диски с виндовой шарой для работы по фтп. Вроде ничего сложного нету, открыл шару, смотрировал и все 🙂
В процессе подготовки данной задачи, у меня всплыло несколько не приятных моментов, если шара открыта для всех на чтение, то на FreeBSD при монтировании шел запрос пароля, мне это не подходило, так как могли и свет выключить, и сервак мог зависнуть, главное чтобы после ребута все поднималось автоматически, без моего участия.
Порывшись на просторах сети, на старых серверах, я нашел решение данной задачи. Главное все правильно сделать, и все будет работать как часы 🙂
Идем в

cd /etc/

и правим файлик

ee nsmb.conf

до такого состояния.

# First, define a workgroup.
[default]
workgroup=HOME - <strong>Ваша рабочая группа, обязательно указывать имя с заглавных букв</strong>

# The 'FSERVER' is an NT server.
[UPLOAD] - Имя вашей машины под виндой, обязательно указывать имя с заглавных букв
charsets=koi8-r:cp866
addr=192.168.0.3 - IP Вашей машины под виндой

[UPLOAD:SLIK] - тут указывается имя машины и локальная учетная запись на виндовой машине.
# use persistent password cache for user 'joe'
password=$$1767877DF - Это пароль для вашей учетной записи под виндой в зашифрованном виде.

Пароль шифруется такой командой

smbutil crypt 1234567

, где 1234567 Ваш пароль, на выходе он получает такое значение $$12a1a06767a6a5e
Почле чего можем приступать к монтированию шары, для это пишем такую команду в консоли:

mount_smbfs -E koi8-r:cp866 -W HOME //SLIK@upload/e$ /mnt/

У меня все прошло отлично, все при монтировалось, пароль не запрашивало, теперь имеем такой вывод

//SLIK@UPLOAD/E$    932G    885G     46G    95%    /tmp

Дальше можно написать простенький скрипт, и положить его в автозагрузку системы 🙂

Янв 272012
 

На одном из серверов сделал обновление системы , все прошло гладко, пока не появилась у меня необходимость в заливке файлов по фтп. Вот тут и выплыл странный глюк. Меня перестало пускать на фтп под моим логином и еще парой логинов моих знакомых.
Сразу полез в логи смотреть что там творится, увидел вот такое

Jan 27 09:54:54 slik45.kiev.ua proftpd[1554] FTP session opened.
Jan 27 09:54:55 slik45.kiev.ua proftpd[1554] Preparing to chroot to directory '/usr/local/webs/'
Jan 27 09:54:55 slik45.kiev.ua proftpd[1554] error: FreeBSD with vulnerable chroot (FreeBSD-SA-11:07.chroot)
Jan 27 09:54:55 slik45.kiev.ua proftpd[1554] chroot to '/usr/local/webs/' failed for user '******': Operation not permitted
Jan 27 09:54:55 slik45.kiev.ua proftpd[1554] error: unable to set default root directory
Jan 27 09:54:55 slik45.kiev.ua proftpd[1554] FTP session closed.

Ключевой момент в логах это error: FreeBSD with vulnerable chroot (FreeBSD-SA-11:07.chroot), погуглил, ответ нашелся сразу. Если очень коротко, была дырка и ее закрыли.
Уязвимость заключается в возможности выполнения произвольного кода пользователем, попавшего в chroot-окружение демона ftpd (если он так сконфигурирован)
Решение проблемы очень простое.
Делаем с консоли

# freebsd-update fetch
# freebsd-update install

Перезапускаем proftpd и радуемся его работе.

Ноя 242011
 

На одном проекте стоит у меня nginx как веб сервер, точнее сказать у меня он стоит везде, но только на одном проекте возник такой глюк.

400 Bad Request
Request Header Or Cookie Too Large400 Bad Request
Request Header Or Cookie Too Large

Лечится он добавлением в конфиг такой строки

large_client_header_buffers     8 8k;

Это не статья, а скорее заметка для меня.