Рубрики
Наследие

Восстановление прав на пользовательские директории

Очень часто после восстановления из бэкапов «теряются» владельцы файлов. Особенно этим страдает cPanel. Симптомы — не работают запароленные .htaccess, не подходят пароли к ftp и т.п.

Для быстрого восстановления необходимо выполнить следующие команды под суперпользователем в оболочке bash:

cd /home
for i in `ls`; do chown -R $i $i; done

Рубрики
Старье

Автоподъем демона после падения

Напишем простой и универсальный скрипт на шелле, который бы каждые три секунды проверял, есть ли процесс в памяти, и, при его отсутствии, рестартовал его.

while [ 0 -eq 0 ]; do
[ -z «`ps axu | grep имя процесса | grep имя пользователя под которым процесс работает | grep -v grep`» ] && команда для запуска
sleep 3
done

Для более легкого понимания рассмотрим скрипт для рестарта апача, если тот неожиданно упадет.
Имя процесса — httpd, пользователь родительского процесса — root. Команда для старта — apachectrl startssl
Соответственно:

#!/bin/sh
while [ 0 -eq 0 ]; do
[ -z "`ps axu | grep http | grep root | grep -v grep`" ] && apachectrl startssl
sleep 3
done

Так как при выходе из ssh все процессы закрываются, то скрипты необходимо запускать через nohup, а для автоматического старта после перезагрузки - прописать их в /etc/rc.local.

Рубрики
Мусорка

Подстава от myhosting.ru

Обещано было:
сервер: пень 2.8, 160 гиг места, гиг памяти, установленный пингвин, 100-мегабитный канал, возможность держать варез, с-панель.

Получено было:
очень криво установленный пингвин (спец правил его недели две), 160 гиг места (и то через недели три). Канал дали где-то через месяц и не 100 мегабит, а 74. Дальше круче — с-панель стала орать о регистрации почти каждую неделю (функции администрирования она блокировала напрочь). Поддержки никакой вообще. Ловля хостера превратилась в детектив какой-то (на звонки не отвечает, в аську тоже).

Итог за 2,5 месяца такого хостинга:
форум не работал в общей сложности 18 дней (1+1+1+4+9,5+1) плюс еще не знаю сколько часов (еще на суток несколько). Варез на нем под раздачу не выкладывался вообще (работал тока небольшой обменник). Перевод с одного рухнувшего харда на другой занял неделю, еще почти неделю после этого мы ловили хостера — он сменил пароли и у нас не было доступа даже к админке.
В итоге посещаемость форума упала примерно на 1/3.

Короче, дурят там неплохо.

Вот тут вы можете почитать про примерно такое же кидалово от них: http://www.antipunk.com/forum/site/715

Все вышеперечисленное написано в целях предостеречь народ от наших ошибок.

Рубрики
Наследие

Экстренный бэкап всех аккаунтов

Если выделенному серверу грозит отключение или выход из строя, самое главное — не паниковать. Необходимо создать ftp-аккаунт где-то на резервном сервере и скопировать туда все аккаунты.

Приступаем к созданию резервных копий:
for i in `ls /home/`; do [ -d "/home/$i" ] && /scripts/pkgacct `basename $i /`; done
А теперь быстро закачиваем их на резервный сервер:
ncftpput -u логин -p пароль хости ./ /home/*.gz.

Рубрики
Старье

Выдача сайтов быстрее, а загрузка сервера — меньше

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

А помогут нам в этом mod_proxy и mod_expire. Первый даст возможность кэшировать динамические страницы, а второй укажет посетителям, через какой диапазон их обновлять.
Перейдем к практике. Допустим, у нас есть сайт, представляющий собой информационный портал. Наполнение происходит с дискретностью в 15 минут.
Укажем это в конфигурации виртуального хоста:
ExpiresActive On
ExpiresDefault "access plus 15 minutes"

Таким образом, апач будет указывать клиентам, что скачивать информацию следует через 15 минут. Это снизит трафик и, соответственно, нагрузку.
Далее перейдем к кэшированию.
Создаем для кэша директорию в корневом каталоге апача, например, /usr/local/apache/cache/, и вносим изменения в конфиг httpd.conf:
ProxyRequests Off
ProxyVia On


CacheRoot "/usr/local/apache/cache/"
CacheSize 50000000
CacheGcInterval 2
CacheMaxExpire 2
CacheLastModifiedFactor 5.0
CacheDefaultExpire 1

Далее изменяем виртуальный конфиг и вешаем его на другой порт, например, 8000.
Создаем идентичный конфиг для 80-го порта и указываем:

ProxyPass / http://dedic.ru:8000/
ProxyPassReverse / http://dedic.ru:8000/
ProxyPass / http://www.dedic.ru:8000/
ProxyPassReverse / http://www.dedic.ru:8000/
CacheRoot "/usr/local/apache/cache/"
CustomLog domlogs/dedic.ru combined
NoCache admin

В оригинальном конфиге файл логов лучше сделать иным, дабы отличать реальный трафик от кэшированного.
Директива NoCahce запрещает кэшировать указанные объекты. Это может быть полезным, если на сайте присутствуют чат или форум.

Рубрики
Старье

Быстрая установка apache + php + mysql на FreeBSD

Итак, перед нами коробка с… FreeBSD. После того, как новое ядро установлено, приступаем к установке ПО.
Устанавливать мы будем грамотно, через утилиту portinstall, из последней ветки портов, обновленной через cvsup. Причем устанавливать будем не просто, а с параметрами для максимальной оптимизации и с сохранением их на случай последующего обновления ПО:


pkg_add -r cvsup
rehash
perl -pi.bak -e "s/CHANGE_THIS/cvsup4/g" /usr/share/examples/cvsup/ports-supfile
cd /usr/ports/sysutils/portupgrade/
make install clean
rehash
portsdb -Uu
echo WITH_APACHE_SUEXEC=YES >> /etc/make.conf
echo APACHE_HARD_SERVER_LIMIT=1024 >> /etc/make.conf
echo APACHE_FD_SETSIZE=4096 >> /etc/make.conf
echo APACHE_PERF_TUNING=YES >> /etc/make.conf
echo WITH_APACHE_MODACCEL=YES >> /etc/make.conf
portinstall apache13
echo WITH_RATIO=YES >> /etc/make.conf
echo WITHOUT_IPV6=YES >> /etc/make.conf
echo WITH_OPENSSL=YES >> /etc/make.conf
echo WITH_QUOTA=YES >> /etc/make.conf
portinstall proftpd
echo WITH_CHARSET=utf8 >> /etc/make.conf
echo WITH_LINUXTHREADS=yes >> /etc/make.conf
echo BUILD_OPTIMIZED=yes >> /etc/make.conf
portinstall mysql40-server mysql40-client
portinstall php4

Выйдет меню, где необходимо убрать поддержку IPv6:

portinstall php4-extensions

И, наконец, появится меню для сборки дополнений к php.

Поздравляю! Связка apache + mysql + php готова.