Tag Archive for 'httpd'

Linux VPS: Переносим apache на отдельный порт

Еще одна задача, которая возникла после настройки VPS под свои нужды.

У меня на VPS работает frontend - аккселератор и поэтому мне нужно, чтоб 80-ый порт был бы свободен. А apache при этом использовал бы какой-то другой порт.

Если у вас на VPS стоит панель управления cpanel - в ней придется покопаться.

Переносим apache на порт 8080

Открываем /var/cpanel/cpanel.config и подправляем apache_port=80 на apache_port=8080

Далее - нужно пересоздать конфигурацию - /usr/local/cpanel/whostmgr/bin/whostmgr2 –updatetweaksettings

После этого нужно проверить, что в файле /usr/local/apache/conf/httpd.conf прописался нужный порт

grep Listen /usr/local/apache/conf/httpd.conf

И скрипт, проверяющий работоспособность сервисов, тоже обновил свои настройки:

@www1 /etc> cat /etc/chkserv.d/httpd
service[httpd]=8080,GET / HTTP/1.0,HTTP/1..,/scripts/checkmaxclients;killall -TERM httpd;sleep 2;killall -9 httpd;/etc/rc.d/init.d/httpd stop;/etc/rc.d/init.d/httpd startssl;/usr/local/apache/bin/apachectl startssl;/etc/rc.d/init.d/httpd start;/usr/local/apache/bin/apachectl start
@www1 /etc>

После этого стоит перезапустить apache  (/etc/init.d/httpd restart) и ChkServ (/scripts/restartsrv_chkservd ) — иначе он вас забросает письмами о том, что сервис не работает и будет постоянно его перезапускать.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Linux VPS: Падение хостинга или “Пожелай врагу переезд”

Добрый день!

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

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

Что такое VPS?

VPS расшифровываестя как Virtual Private Server — Виртуальный Частный Сервер.  А если просто и в двух словах - то берется один мощный сервер и при помощи какой-либо технологии виртуализации (Xen/OpenVZ) нарезается на много маленьких изолированных друг от друга серверов. У всех у них меньше памяти/дискового пространства/процессорного времени, но зато они существенно дешевле, чем арендовать большой сервер. Тем более когда вам и не нужны мощности выделенного сервера.

Итак

Из чего состоит переезд?

К сожалению, у меня переезд совершился в авральном режиме и без соответствующей подготовки - на то были причины.

Но в целом вам нужно представить этапы:

  1. Делаем предварительный полный backup
  2. Находим новый хост, оплачиваем, получаем к нему доступ
  3. Перекачиваем весь полный backup на новый хост
  4. Поднимаем/восстанавливаем на новом хосте конфигурацию со старого (не всегда это возможно проверить, но тем не менее можно все подготовить) - тут есть много тонкостей
  5. Снижаем время обновления DNS до 5-10 минут
  6. Приостанавливаем/переводим в readonly старый хостинг
  7. Делаем окончательную синхронизацию файлов
  8. Поднимаем все сервисы на новом хосте
  9. Вносим изменения в DNS
  10. PROFIT
  11. Поднимаем время обновления DNS до нормального

Естественно, там есть много мелких деталей, которые могут сделать вашу перенос хостинга более или менее болезненным.

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

В качестве примера будет испльзоваться CentOS, поскольку он стоит на большинстве нормальных VPS хостингов.

Я буду выпускать бесплатную версию курса - где можно будет просто скачать аудио файлы и послушать их.

Будет так же и платная версия курса

  • доступ во время к онлайн вещания, возможность задавать вопросы на ходу
  • скринкасты
  • примеры скриптов и живой, работающей конфигурации

После окончания переезда (ну и соответственно и курса) я, как всегда, подыму цену — до 4500 рублей.

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

Спешите записаться, потому что курс будет идти прямо в режиме online - я сейчас в процессе переезда и буду его подробно освещать.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Книга FreeBSD + apache + mysql + php - конфигурационный файл apache

В книгу добавилась глава о конфигурационном файле apache  - httpd.conf

Конфигурационный файл apache состоит из директив и из секций.
Директивы указывают различные настройки сервера, а секции показывают к чему
именно они относятся.

4 типа секций, которые нас интересуют:

VirtualHost –  указывает настройки для виртуального хоста, который имеет
собственное отдельное имя и/или отдельный IP и/или отдельный порт

Location — указывает на специфичные настройки внутри отдельного
виртуального хоста для конкретного URL. При этом Location не имеет ничего общего
с физической файловой системой для данного хоста - она оперирует только с URL, a
они могут кардинально отличаться от путей на файловой системе. Разновидностью
этой же директивы является LocationWatch, которую мы рассмотрим дальше.

Directory — указывает на специфичные настройки именно для данной директории

Files — указывает на спефицичные настройки для данного файла или всех
файлов попадающих под соответстсвующий шаблон

Более подробно - в 16-ой главе книги по ‘Установке и настройке FAMP‘.

Там же вы найдете:
- Подробное описание секций VirtualHost, Location, Directory, Files
- Как указывать несколько имен для одного и того же хоста
- Как разрешать/запрещать доступ с конкретного IP/подсети к определенным директориям и файлам
- Как менять настройки PHP интерпретатора только для одной директории или только для одного хоста.

Все в подробностях - на странице  книги ‘Установка и настройка FreeBSD+apache+mysql+php‘. Узнайте в подробностях, из чего состоит конфигурационный файл apache и как его настраивать.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Apache: файлы .htaccess и .htpasswd, как ставить пароли

Как создать и поменять .htpasswd, файл паролей apache

Перемещено! Я поменял и доработал материал по .htaccess и .htpasswd.

Для работы с файлами паролей есть утилита htpasswd, поставляемая вместе с apache.

Для того, чтоб посмотреть какие пользователи определены - можно просто открыть файл и посмотреть - имена пользователей написаны в начале строки до символа :. Пароли в расшифрованом виде оттуда прочести невозможно. Только путем перебора паролей.

Для создания файла можно применить команду
htpasswd -c имя_файла имя_пользователя
и ввести пароль пользователя.

Для того, чтоб поменять пароль у уже существующего пользователя — достаточно сделать
htpasswd имя_файла имя_пользователя
и тоже ввести новый пароль и подтверждение.

Доступ к .htaccess и .htpasswd

По умолчанию apache отказывает в любой попытке чтения при помощи HTTP запроса этих файлов. Это не надо ни в коем случае менять, эти файлы должны быть недоступны при помощи web сервера.

Тем не менее, нужно убедиться, что сам веб сервер может их прочитать — поэтому либо они должны принадлежать пользователю www, либо иметь права доступа -rwxr–r–.

Новая глава в книге по FAMP

Я дописал еще одну главу в книжку по ‘Установке и настройке FreeBSD+apache+mysql+php+phpmyadmin‘, которую и выложу сегодня.

Вот новые разделы в книжке:

  • Как поставить пароль на директорию в apache

    • Все в конфигурационном файле
    • Гибкий вариант при помощи .htaccess
    • Как создать и поменять .htpasswd, файл паролей apache
    • .htaccess и .htpasswd
    • Что следует проверить, если пароль не запрашивается
  • Как ограничить доступ только с определенных IP
    • Все в конфигурационном файле
    • Гибкий вариант при помощи .htaccess
    • Allow from
    • Deny from
    • Order allow,deny
    • Order deny,allow
    • Что необходимо для работы?

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD: В какую папку ставится Apache по умолчанию

При инсталляции порта или пакета apache* он создает папку с путем /usr/local/www, под которыми и располагаются все его файлы данных.  Сайт, который отображатся при запросе, находится в папке /usr/local/www/data. В принципе это символический линк и вы можете поменять его, чтоб он указывал на любую другую директорию.

Лог файлы apache по умолчанию - это файлы httpd-access.log и  httpd-error.log в директории /var/log/ .

Подробнее об установке и настройке apache сервера на FreeBSD можно прочесть в моей книжке.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Бедненькие пиратеги по 10 рублей!

На одном варезном форуме люди просят поделиться книжкой ‘Установка и настройка FreeBSD+apache+mysql+php‘.

Ну ладно бы, если бы они просили халявную версию.

Нет, все существенно лучше - они предлагают скинтуься деньгами и купить ее вскладчину.

Всем кто хочет получить эту книгу (и даже БОЛЬШЕ) не потратив денег - даю наводку.

У меня есть тексты, которые нужно перевести из аудио в текстовый файл и привести в порядок разметку (разметить в формате LaTeX).  Взамен можно получить книжку о FreeBSD сервере :). В качестве бонуса - получите следующую книгу тоже ;)

Таким образом — тратите пару часов времени и книжка ваша :).

Адрес для связи: gasparch@gmail.com

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Как отладить apache при помощи strace

Стоял у меня один apache сервер на Linux/CentOS сервере, и вдруг он стал ни с того ни с сего падать :)

Совершенно причем непонятно - сервер запускался, работал пару секунд и падал.

Пришлось доставать из загажника тяжелые инструменты. В частности, утилиту strace. Для не-программиста ее вывод страшен и может испугать до смерти. В действительности, ничего страшного там нет.

Давайте посмотрим как это было.

Я мониторил все лог файлы на своем сервере:

tail -f /data/sites/*/logs/error_log /var/log/*

Ошибка, с которой слетает команда tail -
Too many open files

Отлично, увеличиваем лимит количества открытых файлов
limit descriptors 250
и tail запускается.

Apache вылетает и при этом полная тишина в файлах. Вообще. Ти-ши-на.

Значит будем смотреть, что еще делает apache, перед тем как вылететь.

fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
pipe([25, 26]) = 0
fcntl(25, F_GETFL) = 0 (flags O_RDONLY)
fcntl(25, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
open(”/etc/httpd/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 27
dup2(27, 2) = 2
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 28
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 29
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 30
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 31
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 32
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 33
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 34
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 35
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 36
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 37
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 38
open(”/data/sites/nevazhno.ru/logs/error_log”, O_WRONLY|O_CREAT|O_APPEN
open(”/data/sites/nevazhno.ru/logs/access_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 69
open(”/data/sites/nevazhno.ru/logs/access_log”, O_WRONLY|O_CREAT|O_APPEND, 0666) = 70
open(”/etc/mime.types”, O_RDONLY) = 71
fstat(71, {st_mode=S_IFREG|0644, st_size=13099, …}) = 0
read(71, “# This is a comment. I love comm”…, 4096) = 4096
read(71, “ion/vnd.groove-tool-message\nappl”…, 4096) = 4096
read(71, “-wbxml\napplication/vnd.uplanet.s”…, 4096) = 4096
read(71, “\ntext/sgml\t\t\tsgml sgm\ntext/tab-s”…, 4096) = 811
read(71, “”, 4096) = 0
close(71) = 0
semget(IPC_PRIVATE, 1, IPC_CREAT|0600) = -1 ENOSPC (No space left on device)
open(”/etc/localtime”, O_RDONLY) = 71
fstat(71, {st_mode=S_IFREG|0644, st_size=1267, …}) = 0
fstat(71, {st_mode=S_IFREG|0644, st_size=1267, …}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×2a98c29000
read(71, “TZif\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\4\0″…, 1024) = 1024
read(71, “\0\1\0\1\0\1\0\1\2\3\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1″…, 1024) = 243
close(71) = 0
munmap(0×2a98c29000, 4096) = 0
write(27, “[Fri Feb 20 17:39:14 2009] [crit"..., 110) = 110
write(2, "Configuration Failed\n", 21) = 21
close(70) = 0
close(69) = 0
close(68) = 0
close(67) = 0
close(66) = 0
close(65) = 0
close(64) = 0
close(63) = 0
close(62) = 0
close(61) = 0
close(60) = 0
close(59) = 0
close(58) = 0
close(57) = 0

Ого, я заметил лог файл, который я не мониторил (/etc/httpd/logs/error_log), ну и видна ошибка (Configuration Failed).

Начинаем мониторить еще один файл
tail -f /etc/httpd/logs/error_log

Читаем сообщение:

[Fri Feb 20 17:40:01 2009] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock
Configuration Failed

Проверяем место на диске:

@gasparch ~> df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vzfs xxxxx xxxxx 1150814 xx% /
@gasparch ~>

Есть как минимум один гигабайт свободно места - и тем не менее No space left.

Попутно я проверил количество свободный inodes - они тоже были свободны. А места нет :)

@gasparch ~> strace -o log httpd
@gasparch ~> grep rewrite log
open("/etc/httpd/modules/mod_rewrite.so", O_RDONLY) = 4

Записываем лог выполнения httpd в файл log и проверяем, что же там вытворяет rewrite модуль и какой файл он пытается отрыть. В результате - пустота. Странно. Проверяем по конфигу.

@gasparch ~> grep -i rewrite /etc/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so

Значит rewrite модуль активируется где-то в .htaccess файлах.

Я помню, что запуск Rewrite модуля был в корневой директории какого-то сайта, поэтому можно искать просто patter-ом, а не командой find.

Просто командой
grep -i rewrite /data/sites/*/htdocs/.htaccess

Никах упоминаний RewriteLog или чего-то подобного.

А вот как я это лечил и заставил всю эту фигню работать - это читайте в книжке.  Плюс там я подробнее разберу, как именно разбирать и понимать лог файл strace. На FreeBSD аналог этой команды - ktrace/kdump.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).