FreeBSD 9.* первые шаги на пути к высоконагруженному веб серверу

июля 06, 2013 0 Comments

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





Сразу после установки необходимо создать нового пользователя и добавить его в группу wheel. Это нужно чтобы мы могли зайти по ssh, т.к. по стандарту у нас есть только пользователь root, а рутом мы не зайдем по ssh(если кое что не поправим в конфиге sshd.conf), сделано это для безопасности.

# adduser имя_пользователя
Отвечая на вопросы, не забываем добавить нового пользователя в группу wheel. Вдальнейшем, когда будем заходить по ssh этим пользователем, нужно написать su и ввести пароль рута и вуаля у нас полный доступ к системе

Скорее всего при установке был выбран режим DHCP, который присваевает новый динамический ip при каждой перезагрузке, исправим на статичный адресс - редактируем /etc/rc.conf приводим строчки к такому виду

ifconfig_em0="inet 192.168.0.254 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
Теперь можно спокойно заходить по SSH (кстати тоже самое можно сделать выполнив sysinstall от root зайдя в configure > networking > interfaces)


Приступим

С самого начала запустим обновление системы. Оно скачает и установит необходимые патчи ядра, без его компиляции.

# freebsd-update fetch
# freebsd-update install

Можно пока открыть второй ssh и в нем запустить скачивание и распаковку портов:

# nice -10 portsnap fetch extract
Порты скачаются в папку /usr/ports
(в последстии для обновления портов использовать # portsap fetch update)

чтобы найти нужный порт перейдите в директорию /usr/ports и выполните команду:
# cd /usr/ports
# make search name=nginx
будет выведен список похожих портов. Название можно комбинировать например # make search name=php5 mysql
Еще можно выполнить поиск нужного порта по адресу http://www.freebsd.org/cgi/ports.cgi


Если каким то образом у вас появилось сообщение snapshot is corrupt, то выполняем такие действия(у меня еще такого небыло)

# rm -rf /var/db/portsnap
# mkdir /var/db/portsnap
# portsnap fetch extract

Ускоряем загрузку портов


Так как веб сервер мы будем собирать исключительно из портов, то после их загрузки, сразу, соберем 2 жизненно необходимых порта, которые вдальнейшем избавят нас от томительного ожидания, во время скачивания нужных исходных кодов с медленных зеркал:

Axel утилита, которая заменит сдандартный fetch она поможет нам качать исходные коды в несколько потоков

# cd /usr/ports/ftp/axel/
# make
# make install clean

после установки правим /etc/make.conf (если его нет, то просто создайте его) добавляем в него:

FETCH_CMD=axel
FETCH_BEFORE_ARGS= -n 6 -a
DISABLE_SIZE=yes

-n - количество соединений
-a - показывать статус скачивания
-s [скорость] - указать предельную скорость(Байт/c, Bps)
Об остальном можно почитать в # man axel

выполняем команду # rehash

fastest_sites утилита которая поможет определить самые быстрые для нас зеркала исходных кодов. Комадна выполняет прямое tcp соединение с зеркалами вместо обычного пинга, что приводит к более правдоподобному результату.

# cd /usr/ports/ports-mgmt/fastest_sites/
# make
# make install clean

И сразу же запустим ее с выводом в текстовый фаил
# python2.7 /usr/local/bin/fastest_sites > /usr/local/etc/ports_sites.conf

Полученные настройки добавляем в наш make.conf такой командой
# echo '.include "/usr/local/etc/ports_sites.conf"' >> /etc/make.conf

# rehash

На всякий случай проверяем в make.conf это должно выглядеть вот так .include "/usr/local/etc/ports_sites.conf"

Можно внести задание в крон 0 6 * * * /usr/local/bin/fastest_sites > /usr/local/etc/ports_sites.conf

...

Кстати, добавим несколько записей в make.conf чтобы освободить собираемые порты от ненужных нам фич

NO_GAMES=yes
WITHOUT_X11=YES
NO_X11=YES
WITHOUT_IPV6=yes


Локализация UTF-8


Проверяем доступные UTF-8 локализации
# locale -a | grep UTF-8

Видим ru_RU.UTF-8

Изменяем фаил локализации
# ee /etc/login.conf

спускаемся до строки

:ignoretime@:\
:umask=022:

и приводим к такому виду

:ignoretime@:\
:umask=022:\
:charset=UTF-8:\
:lang=ru_RU.UTF-8:

То есть просто дописываем опции
Обратите внимание таких строк несколько, нам нужна лишь та, что в самом начале! И соответственно посмотрите на синтаксис, не забудьте добавить \ в umask


переинициализируем бд авторизации командой:
# cap_mkdb /etc/login.conf
# passwd

Если у нас есть DE то нужно еще задать кое какие команды:
# ee /etc/profile

и добавить
LANG=ru_RU.UTF-8; export LANG
GDM_LANG=ru_RU.UTF-8; export GDM_LANG

выйдем и зайдем обратно для быстрого применения изменений
# exit
наслаждаемся русифицированной консолью(кстати UTF-8 хорош всем, за исключением того, что трафика на нем ровно в 2 раза больше)

0 коммент.: