Пока разбираюсь с тем что творится в жизни и душе, оставлю несколько заметок по поднятию (и удержанию) сервера node.js на centos. Благо тема лично для меня интересная и несколько познавательная.
Читать далее Ноду народу(нет)
Метка: линупс
Порой даже элементарная задача приносит кучу новых знаний и требует индивидуального подхода.
На просторах интернетов есть очень много гайдов на тему установки и настройки mod_fastcgi, всё сводится к паре команд и добавлению стандартного конфига. Но не всегда всё обстоит так просто.
Итак, мы имеем связку Apache 2 (бэкенд), nginx (фронтенд), и PHP 5.3.x в режиме mod_php.
Задача: перевести PHP в режим FastCGI
Очередная заметка про грабли, и болящую попу.
Допустим вы подключили новенький девственный hdd к своей шайтан-машине. Первым делом надо создать раздел:
fdisk /dev/sdx
n — создаем новый раздел
p — праймари
1 — номер раздела
t — тип файловой системы
83 — HEX код EXT3 (список кодов вы можете глянуть командой L)
w — сохранить изменения
проверьте всё ли верно создалось
fdisk -l
если да, двигаемся дальше и форматируем наш раздел
mkfs.ext3 /dev/sdx1
fsck -f -y /dev/sdx1
добавляем метку для диска иначе при загрузке будет попа (:
tune2fs -L /new-hdd /dev/sdx1
добавляем информацию в /etc/fstab
LABEL=/new-hdd /new-hdd ext3 defaults 1 2
пробуем смонтировать раздел
mount /new-hdd
df -h
если всё ок, то можно перезагружаться.
Если же во-время загрузки вы что-то напортачили и на горизонте маячит белый пушной зверёк, то вводим root пароль и переходим в режим Repair filesystem (: Но для того чтобы иметь возможность внести изменения в файл /etc/fstab надо сначала перемонтировать партицию с возможностью записи:
mount -w -o remount /
теперь открываем /etc/fstab и исправляем ошибки.
Сразу оговорюсь что велосипед не мой, но катается хорошо :D
Хостеры иногда предлагают клиентам так называймый burstable трафик, это когда можно на некоторое время зайти за лимит, скомпенсировав трафик во-время наименьшей нагрузки. Более подробно вы можете покурить педивикию, даже на русском!
Для того чтобы добавить сие решение к себе в munin придется немного попатчить RRD. Стоит отметить что пути от дистрибутива и версии могут отличаться, но смекалку никто не отменял ;)
Centos 5:
/usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm
Centos 6:
/usr/share/perl5/vendor_perl/Munin/Master/GraphOld.pm
Я не буду приводить листинг кода тут, так как парсер может его погрызть. Поэтому ссылочка на патчноуты Munin 1.4.x 95 percentage RRD patch или на оригинальный аттач в trac.
Вот думала что писала уже про это, а нет, заметки не оказалось. Между тем, для непосвященных няшек это может стать небольшой проблемой, так как стандартные мануалы не подразумевают наличия SELinux и других ништяков.
Итак, для того чтобы изменить стандартный порт доступа надо сделать 3 вещи:
1. открываем /etc/ssh/sshd_config и раскомментируем строку
Port 22
меняем 22 на выбранный вами порт. Если вы хотите чтобы ssh слушал только на IPv4, то раскомментируйте строку
ListenAddress 0.0.0.0
остальные настройки по вкусу (:
2. добавляем правило для iptables (вы можете изменить стандартное правило для 22-го порта)
iptables-save > /path/to/rules.list
добавляем строку
-A INPUT -p tcp -m state —state NEW -m tcp —dport 1234 -j ACCEPT
и сохранив файлик обновляем правила
iptables-restore < /path/to/rules.list
НО, данный вариант будет работать только до первой перезагрузки! Если вы хотите добавить постоянное правило, изменения следует вносить в /etc/sysconfig/iptables
И вот казалось бы всё, но в этом случае перезапустив sshd вы рискуете потерять доступ к серверу, так как включенный по-умолчанию SELinux будет считать что негоже использовать иной порт. Так что переходим к пункту…
3. для того чтобы selinux не возникал, необходимо добавить ваш порт как порт для ssh
semanage port -a -t ssh_port_t -p tcp 1234
проверяем
semanage -l | grep ssh
Так же, вы можете столкнуться с проблемой когда центось вам скажет что знать не знает такой команды, тогда выполняем
yum whatprovides /usr/sbin/semanage
и получив ответ, устанавливаем нужный пакет. в моём случае это
yum install policycoreutils-python
Вот теперь можно смело (перепроверив не забыли ли вы чего!) перезапускать sshd и ломиться на новый порт
service sshd restart
Парочка полезных команд:
чтобы глянуть какой бардак творится со свободным местом
df -h
добавление сервиса либо скрипта в автозагрузку
chkconfig —level 345 %scriptname% on
удаление из автозагрузки
chkconfig %scriptname% off
Wiki по run level (http://en.wikipedia.org/wiki/Runlevel)
0 — Halt (выключение)
1 — Single User mode
2 — Multi User mode (without networking)
3 — Multi-user mode (with networking, console logins only)
4 — User-definable
5 — Multi-user mode (with console, with display manager X11)
6 — reboot (перезагрузка)
Список сервисов
chkconfig —list
Столкнулась с проблемой отказа некоторых серверов принимать мыло с серевера. Как вариант решила попробовать добавить SPF.
Итак, основная идея в том, что для всех доменов находящихся на сервере (и не только) указывается один MX сервер, который и занимается обработкой сообщений. Указывать надо именно тот домен, который прописан в PTR записи.
Если допустим в PTR записи указан домен main.com, то для обслуживаемых доменов днс записи будут следующие:
domain.ru. MX 10 mail.main.com
domain.ru. TXT «v=spf1 a:mail.main.com mx ptr -all»
Полезные ссылочки:
http://old.openspf.org/dns.html (примеры SPF записей)
Небольшая заметка о ротации логов для себя.
/etc/logrotate.d/ — настройки для сервисов использующих ротацию логов. Особенно полезно если скажем логи апача хранятся в отдельной директории(ях) но надо чтобы они парсились вместе с основными.
# useradd [options] login_name
создаем нового пользователя
# usermod [options] login_name
редактируем параметры пользователя
# userdel [options] login_name
удаляет пользователя. Используйте -r опцию чтобы автоматически удалять домашний каталог и почтовый пул.
# passwd login_name
задаем пароль для пользователя
# groupadd [options] group_name
создаем группу
# groupmod [options] group_name
редактируем параметры группы
# groupdel group_name
удаляем группу
Первая заповедь гласит: всегда делай бекапы.
Сегодня мы и займемся соблюдением этой заповеди при помощи святой мощи rsync и бесовского паладина cwrsync.
Для начала настроим хост. Создаем файл /etc/rsyncd.conf и прописываем туда следующее:
uid=root
read only=true
use chroot=false
max connections=2
log file=/var/log/rsyncd.log
hosts allow=192.168.0.12[backup]
comment=»Backup of host»
path=/path/to/data
list=true
auth users=%username%
secrets file=/etc/rsyncd.secrets
strict modes=true
Я не буду вдаваться в описание каждой настройки, всё это можно почитать тут. Если кратко, то мы запускаем rsync от рута (да-да, надо в чрут, но сейчас не про это) и разрешаем доступ с доверенного хоста. Заодно запрещая ему что-либо записывать. Ниже идет секция задания. В конфиге их может быть несколько. Там мы указываем что бекапить, и какому юзеру можно это делать.
Следующим шагом будет как раз добавление юзеров для работы с rsync. Тут всё предельно просто. Создаем файл /etc/rsyncd.secrets и добавляем туда пользователей и пароли для них вот в таком формате:
username:password
Настройки есть, пользователи тоже. Далее обезопасимся от еретиков и откроем врата. =)
# chown root:root /etc/rsyncd.*
# chmod 600 /etc/rsyncd.*
# rsync —daemon
Далее добавим правила для iptables:
-A INPUT -s 192.168.0.0/255.255.255.0 -p tcp -m tcp —dport 873 -j ACCEPT
-A INPUT -p tcp -m tcp —dport 873 -j DROP
С хостом мы закончили. Но если что-то не получится, то можно попробовать отключить SELinux
# getsebool -P rsync_disable_trans 1
На бекапной машине (в моём случае это форточки) мы ставим cwrsync открываем консоль и пишем следующее:
c:\path to\cwrsync\bin\rsync.exe xxx.xxx.xxx.xxx::
Если всё отлично, то результат будет в виде списка заданий. Вызвать задание можно следующим образом:
rsync —recursive —update —delete -v user@xxx.xxx.xxx.xxx::backup /cygdrive/X/path to/
В данном случае мы делаем рекурсивное сохранение с удалением несуществующих файлов на бекапной машине.