Тэг ‘server’

Настройка собственных NS-серверов

Для настройки собственных NS-серверов я сделал следующее:

У регистратора доменных имен прописал DNS-сервера для домена mydomain.com примерно так:

ns1: ns1.mydomain.com 155.155.155.154
ns2: ns2.mydomain.com 153.153.153.154

Где вместо фиктивных IP-адресов подставил IP-адреса своего сервера.

На сервере по аналогии прописал “A”-записи.

ns1.mydomain.com - A - 155.155.155.154
ns2.mydomain.com - A - 153.153.153.154

Пока баловался - успел поймать ошибку:

Попытка тестирования DNS-серверов для домена mydomain.com завершена неудачно. Обнаружены следующие ошибки:

1. В качестве имени DNS-сервера ns1.mydomain.com используется CNAME

Еще раз убедился, что RTFM надо внимательнее. :)

Опубликовано Январь 11, 2009 | автор: levik  |  Нет комментариев »

plesk - не подходит лицензия

Заказанная лицензия к панели Plesk по ошибке (или невнимательности) оказалась более новой версии, чем установленная версия Plesk на Вашем сервере? Ключ от версии Plesk 9 не подходит к панели plesk 8.6, как выяснилось уже позже.

При попытке обновить сервер ругается - ключ не содержит лицензии.

Не торопитесь расстраиваться и проплачивать ещё одну лицензию.

Как минимум, можно попробовать обновить версию Plesk из самой панели администрирования:
Server -> Updater (в одной из версий этот пункт назывался “Updates”).

После обновления до Plesk 9 сервер распознал ключ в лицензионном файле.

Кстати, старая “horde” перестала работать - после обновления версии plesk, возможно, потребуется обновить некоторые пакеты/компоненты.

Опубликовано Декабрь 24, 2008 | автор: levik  |  Нет комментариев »

mysql на vps - отлавливаем тяжелые запросы к базе

Для многих сайтов производительность напрямую зависит от скорости ответов на mysql-запросы. Конечно, если выполняется запрос на выборку по ключу, да ещё из одной таблицы (да и в таблице записей немного) - то, скорее всего, результат будет известен быстро.

Если же требуется выполнить тяжелый (медленный?) mysql-запрос на выборку несколько связанных таблиц с кучей условий… и такого рода различных запросов порядка сотни… Чувствуется, что база не справляется, сервер “трещит по швам”… однако, где конкретно самое узкое место - непонятно. “Где тонко, там и рвется”. Возможно, достаточно оптимизировать один-два запроса, и mysql будет “летать”.. А возможно и нет.

Итак, как найти, какие mysql запросы наиболее сильно грузят сервер. Какие запросы наиболее требовательны к памяти и процессорному времени?

mysql-сервер предоставляет возможность отслеживать запросы, которые выполнялись слишком долго (long query time)

Журнал медленных запросов MYSQL

Это log-файл, в который помещается информация о запросах, которые выполняются больше указанного времени. Указанного где? Конечно, в конфигурационном файле. Кстати, по умолчанию журнал отключен - без исправлений в conf-файле не обойтись. Файл настроек для mysql обычно называется my.conf и хранится в каталоге /etc

Для включения логгирования медленных (предположительно тяжелых) запросов к серверу mysql добавляем в секцию [mysqld] следующие строки:

log-slow-queries=/var/log/mysql/slow-queries.log
long_query_time=3
log-queries-not-using-indexes

Здесь в первой строке (log-slow-queries)указан путь к журналу медленных запросов (следует “организовать” сам файл и доступ к нему пользователю, от имени которого запускается mysql)
long_query_time - время выполнения медленного запроса
log-queries-not-using-indexes - фиксируем запросы, не использующие индексы

http://www.mysqlperformanceblog.com/2006/09/06/slow-query-log-analyzes-tools/
http://www.day32.com/MySQL/
http://www.job-blog.bullgare.ru/wp-content/uploads/2009/08/tuning-primer.sh
http://habrahabr.ru/blogs/mysql/66684/
http://xpoint.ru/forums/computers/dbms/mysql/thread/40479.xhtml

http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/
заменяем ORDER BY RAND()

http://ruseller.com/lessons.php?rub=28&id=692
Советы по оптимальному использованию MySQL

Опубликовано Декабрь 19, 2008 | автор: levik  |  Нет комментариев »

Виртуальный выделенный сервер для начинающих

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

“Услышав невозможное, некоторые скажут “А почему? А зачем?”, а другие - “А почему НЕТ?”..

В общем, тестируем VDS-сервер от firstvds.ru - недорогой но полноценный. Естественно, по некоторым параметрам он уступает серверам от “монстров” хостинговой индустрии. Однако, в качестве ознакомительного - более чем достаточно.

Сервер подняли быстро - в течение двух дней. Техподдержка отзывчивая, правда не круглосуточная. Но в общем-то цена оправдана. Пока вполне устраивает, потому как не особо требовательный, наверное.

Опубликовано Ноябрь 29, 2008 | автор: levik  |  Нет комментариев »

htaccess или конфигурируем веб-сервер Apache

.htaccess - служебный файл веб-сервера Apache (и не только), в котором можно указать дополнительные настройки для отдельного сайта или каталога.

Краткая шпаргалка по настройкам в htaccess:

# Кодировка страниц по умолчанию
AddDefaultCharset utf-8

ErrorDocument *собственные страницы ошибок
ErrorDocument 404 /404.htm

#
Options +FollowSymlinks

# запрет выдачи списка файлов при отсутствии индексного файла
Options -Indexes

# запрещаем выводить в списке файлов файлы по маске
Options Indexes
IndexIgnore *.php* *.pl

#разрешаем запуск CGI
Options +ExecCGI

# индексный файл по умолчанию - DirectoryIndex указывается для каталога в котором расположен htaccess и всех нижележащих
DirectoryIndex index.html index.shtml index.pl index.cgi index.php

Запрет доступа к файлам - Deny, Allow

# Запрещаем доступ для всех
Order Deny,Allow
Deny from all
# или запрещаем для всех, кроме “избранных”
Order Deny,Allow
Deny from all
Allow from local.
Allow from 97.23.41.14, 97.23.41.15

#запрещаем просматривать изображения всем, кроме пользователя с IP-адреса
#синтаксис регулярных выражений
<FilesMatch “\.(gif|jpe?g|png)$”>
Order Deny,Allow
Deny from all
Allow from  97.23.41.15
</FilesMatch>

Авторизация пользователя средствами htaccess

AuthName “Control Panel”
AuthType Basic
AuthUserFile /home/www/users/levik/secure/.htpasswd
require valid-user

полный путь к файлу можно определить, выполнив в PHP скрипте команду echo __FILE__;

Считаете нужным добавить? Отпишитесь в комментариях.

Опубликовано Ноябрь 20, 2008 | автор: levik  |  Нет комментариев »

cacti для vps/vds или мониторим виртуальную память и диск

Cacti очень удобен для мониторинга системных ресурсов - изменения в работе сервера в буквальном смысле выделяются на графиках (резкие всплески и падения). И не станет неожиданностью очередное переполнение логами (что очень актуально для vds-vps)

По умолчанию, в Cacti для Localhost настроены следующие графики:
Localhost - Memory Usage
Localhost - Load Average
Localhost - Logged In Users
Localhost - Processes

Если последние три графика отображают действительно то, что нужно (во всяком случае, очень похоже), то первый - ну ни в какие ворота не лезет!!! Все дело в том, что системные команды, используемые для получения информации о памяти (попробуйте в shell-е /*подключившись по SSH*/ ввести команду top и обратите внимание на 3 и 4 строку) получают не совсем верную информацию. :) И поскольку, для графика Memory Usage в Cacti используются данные всего физического сервера (не только vps), то, естественно, получаем не совсем то, что хотелось бы - ну к чему нам горизонталь в 64 Гб оперативки??

Отследить память виртуального сервера можно при помощи небольшой программки. На некоторых VDS она входит в состав предустановленного ПО. Попробуем запустить (для запуска обычно требуются права root)

memory

Если в ответ получили “чистый экран” и что-то изменяющееся и похожее на:

VPS CPU
user: 0.00 nice: 0.00 system: 0.00 idle: 100.00
VPS Memory
total: 256.00MB used: 105.29MB (41.13%) free: 150.71MB (58.87%)

Если же “файл не найден”, то качаем и компилируем (еще хорошо бы проверить какой-нидь хеш..md5 abee82e42576f72cff7146c6b2318f95):

wget http://www.cubedthree.com/projects/openvz/openvzmon.c
md5sum openvzmon.c
gcc -o openvzmon.c

Итак, информацию о загрузке памяти вирутального сервера нашли. Теперь нужно как-то передать её в cacti (точнее, не совсем в cacti, а в rrdtool, но все равно через… одно место). Запуск memory -m выдаст в stdout строку с текущими данными о загрузке памяти. Кстати, можно подредактировать файл openvzmon.c перед компиляцией (не нужно быть великим программистом), чтобы в выводе с параметром -m “убрать лишнее” - тогда на выходе будем получать “голые числа”. Ищем по строке “if(memonly_flag)”. Если же редактировать не хоцца - пробуем запустить
memory -m | awk {’print $4′} | sed -e s/\.[0-9].MB//g | tr -d ‘\012′
- выведет текущее целое/числовое значение памяти в Mb (memory -m | awk {’print $4′} - подставляя вместо $4 что-нибудь рядом, можно получить другие значения). Не оптимально, но работает.

Теперь нужно научить cacti забирать эту информацию:
создаем скрипт vpsmem.sh в каталоге /usr/share/cacti/scripts (можно скопировать diskfree.sh, например) и помещаем туда следующее:
#!/bin/sh
memory -m | awk {'print $4'} | sed -e s/\.[0-9].MB//g | tr -d '\012'

переходим к web-интерфейсу (для более полного понимания, рекомендуется ознакомиться со структурой данных в cati. Несмотря на кажущуюся “запутанность”, она довольно логична и удобна, если количество Devices возрастает):

- Data Input Methods - Add (правый верхний угол). В появившейся форме вносим что-то вроде
Name “VPS/VDS Memory” (как этот Data Input будет обзываться);
Input Type - выбираем “Script/Command”;
Input String “/scripts/vpsmem.sh”
Output Fields - kilobytes
Сохраняем

- Data Templates - Add
Name “VPS/VDS Memory - Free”
Name “|host_description| - VPS/VDS Memory - Free”
Data Input method - выбираем VPS/VDS Memory
Associated RRA’s (я выбрал все кроме первого - по аналогии с шаблоном Linux-Memory usage)
Internal Data Source Name “mem_buffers” (пока воспользуемся шаблоном графика(!) для Linux-Memory - название должно быть аналогичное:))
Секцию Custom Data пока не трогаем- Data Sources - Add (все там же). В форме выбираем наш VPS/VDS-memory (Name) и Localhost - create;

Graph Management - Add
Выбираем шаблон (пока выбрал Linux memory usage) и Localhost - Create
В дополнительных полях выбираем наш Data Source (для начала - в обоих.. красоту будем наводить потом)

Ждем пару минут и ищем график в разделе “graphs”
Если график отображается пустым, а текущие значения - Nan, то скорее всего всё сделано правильно. :)
Если на графике отображаются цифры - опасно. :) значит, cacti-пользователь спокойно запускает утилитку memory, которая берет информацию из файла /proc/vz/vestat, доступ к которому только у root-а.

Итак, надо как-то дать cacti-пользователю возможность запускать наш скрипт с правами / от имени root-а. Если cacti-пользователь, как и рекомендуется - apache, то можно воспользоваться модулем suExec. Еще можно воспользоваться командой sudo. Или же просто, установить для memory флаг “set user ID on execution”. В любом случае, сохранять пароль root в открытом виде не рекомендуется :)

Запускаем процесс от имени root без ввода пароля
редактируем файл /etc/sudoers (можно командой visudo)- биже к концу добавляем строку вида:
apache ALL=NOPASSWD:/bin/memory
(даем пользователю apache возможность запускать скрипт memory)
Еще одна маленькая хитрость. По умолчанию для запуска sudo установлено Defaults requiretty - требуется консоль. На время тестирования можно закомментировать, или изменить…

И ещё… после редактирования любым сторонним редактором рекомендуется проверить на ошибки командой
visudo -c

Устанавливаем set user ID on execution

chmod u+s /bin/memory

Ссылки (?) - Не уверен, что пригодятся все

http://dig7er.livejournal.com/6655.html
http://system-administrators.info/?p=2662
http://forum.openvz.org/index.php?t=msg&goto=2790
http://forum.openvz.org/index.php?t=selmsg&reply_count=0&&frm_id=0&mr=1&start=520

http://www.labradordata.ca/home/13

Опубликовано Октябрь 23, 2008 | автор: levik  |  Комментарии (2) »

Cacti и snmp или мониторим сеть

Про установку и настройку Cacti

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

Итак, настраиваем Cacti для сбора данных по сети

Установка службы SNMP (snmp-агент) на наблюдаемый компьютер (проверяем, установлен ли:)
rpm -q net-snmp
и, если необходимо - ставим
yum install net-snmp

файл конфигурации искать где-то тут:/etc/snmpd.conf, /etc/snmp/snmpd.conf, /usr/local/etc/snmpd/snmpd.conf

! следует обратить внимание, что SNMP предоставляет довольно обширную информацию о системе. При недостаточном внимании к безопасности, эта информация может быть получена злоумышленником и использована “против вас” :)

Неплохая статья о конфигурации SNMP и Nagios
http://www.samag.ru/cgi-bin/go.pl?q=articles;n=11.2004;a=01

Можно воспользоваться утилитой создания файлов конфигурации:
snmpconf -g

или взять за основу готовый файл (изменить белиберду на другую не менее белибердовую - что-то вроде пароля, а адрес - на допустимый для запроса):
sysservices = 79
rocommunity IndhiNue45 localhost
rwcommunity tuI937NB92 localhost

После настройки snmpd.conf запускаем
service snmpd start
И, если все в порядке (проверим командой snmpwalk -c community_name -v 1 localhost), добавляем "автозагрузку"
chkconfig --level 3 smnpd on

пока так

Мониторим сетевые интерфейсы с помощью Cacti

Graph-management  - Add (в правом верхнем углу.. с непривычки можно не найти

Статья дополняется…

настраиваем SNMP в  (Linux/Unix):
Переходим в /etc/snmp/ и правим  snmp.conf до такого: (старый можно сохранить - мало ли)
http://www.opennet.ru/openforum/vsluhforumID1/84222.html
syslocation Test.
syscontact INF <mail@test.ru>
#      sec.name   source          community (password)
com2sec Mybox     localhost          public
com2sec cacti     <ip адрес>     public
com2sec Outside   default            public
#      group.name sec.model  sec.name
group   RWGroup    v2c       Mybox
group   ROGroup    v1        cacti
group   ROGroup    v2c       cacti
group   Others     v2c       Outside
view all     included  .1        80
view system  included  system    fe
#              context sec.model sec.level prefix  read    write  notif
access  ROGroup   ""      any    noauth    exact   all     none   none
access  RWGroup   ""      v2c    noauth    exact   all     all    all
access  Others    ""      v2c    noauth    exact   system  none   all

Опубликовано Октябрь 17, 2008 | автор: levik  |  Нет комментариев »

Установка Cacti на Linux (Unix)

Cacti  (Кактус)  - cacti.net - официальный сайт.

Cacti предоставляет удобный интерфейс для отслеживания изменений параметров сервера. Вообще-то, можно настроить на отображение чего угодно (вплоть до прогноза погоды, курса доллара), но обычно мониторят что-то вроде загрузки процессора, оперативную память,  отслеживают свободное место на диске, количество запущенных процессов, время отклика, трафик… В общем, есть, чего мониторить.

Установка Cacti на Linux сервер

В сети куча инструкций-мануалов (помимо официального) по установке-настройки Cacti

http://system-administrators.info/?p=2619
http://hostinfo.ru/articles/773
http://noty.net/tech/cacti (статья та же, зато ресурс “под рукой”)
http://www.lissyara.su/articles/freebsd/programms/cacti/
http://forum.lissyara.su/viewtopic.php?f=3&t=11256&start=75#p102179
http://belgorod.lug.ru/wiki/index.php/Cacti_-_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0

Отмечу лишь некоторые моменты при установке Cacti, которые могут оказаться полезным мне (и не только).

Не забываем отключить SafeMode
(и до кучи не забываем перезапустить service httpd restart)

Часть проблем можно снять, если запускать poller с правами Root-а. Тут уж хозяин-барин.
Не забываем дать права на файл конфигурации db.php

При запуске poll.php ошибка нет файла/директории
sh: /php: No such file or directory
sh: /rrdtool: No such file or directory

при указании cron не забываем путь к php-интерпретатору - вместо
*/5 * * * * cactiuser php /usr/share/cacti/poller.php > /dev/null 2>&1
пишем что-то вроде
*/5 * * * * cactiuser /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
И не забываем пустую строчку в конце файла crontab

cacti не рисует графики

Если Cacti не рисует графики даже для Localhost.. да и вообще, если с ним чего не ладится - первым делом смотрим в логи Apache (могут быть тут: /etc/httpd/logs/error_log или тут : /var/log/httpd/error_log - чтоб наверняка - посмотреть в httpd.conf)

sh: /rrdtool: No such file or directory
следует настроить путь к rrdtool - в web-интерфейсе вкладка “console”, в меню - Configuration - Settings- нижняя вкладка paths - отсутствующие файлы выделяются красным

Cacti - settings - general исправляем версию RRDtool (1.2.x, по умолчанию 1.0.x). Если реальная версия выше, то есть шанс, что работать будет (проверялось для версии 1.3 работало)

ERROR: opening ‘/var/www/html/cacti/rra/yourfile: No such file or directory
sh: line 14: /var/www/html/cacti/log/rrd.log: Permission denied -

Cacti отображает пустые графики

Похоже, проблема в “исходных” данных для cacti (а точнее для RRD) - если скрипт ничего не нашел, то cacti ничего и не покажет. Будем разбираться, почему “нет данных”

Если в логах (или при запуске вручную  “#/usr/bin/php /usr/share/cacti/poller.php” (лучше от cactiuser)
su cactiuser
/usr/bin/php /usr/share/cacti/poller.php
появляется сообщение про 300 секунд - значит или не запускается cron или… не пишет данные скрипт. Кстати, на момент отладки можно убрать из cron-а “> /dev/null 2>&1″ и добавить чуть выше MAILTO=my@email-addres.tld

POLLER: Poller[0] WARNING: Cron is out of sync with the Poller Interval!  The Poller Interval is ‘300′ seconds, with a maximum of a ‘300′ second Cron, but 637 seconds have passed since the last poll!

Если удалось добиться отображения графиков для Localhost - полдела сделано. :)
Осталось ещё полтора!

Опубликовано Октябрь 9, 2008 | автор: levik  |  Комментарий (1) »

Собственная 404 страница - страницы не существует

404 pages found

Довольно часто, приходя на различные сайты можно увидеть красиво оформленную страницу, на которой значится “Страницы не существует, попробуйте посмотреть что-нибудь ещё”. “Так почему же у меня на белом фоне огромадными буквами высвечивается 404 ERROR?”

Будем исправлять! Тем более, что это не так сложно, а выйгрыш, пожалуй, будет значителен.

Делаем собственную страницу 404 ошибки

“Рецепт” создания своей собственной 404 страницы прост: читать дальше о создании собственной 404 страницы

Опубликовано Сентябрь 12, 2008 | автор: levik  |  Нет комментариев »

MySQL fatal error - Error writing file ‘/tmp/MYxxxxxx’ (Errcode: 122)

При выполнении SQL запроса возникает ошибка с кодом 122.

Ошибка MySQL Error writing file ‘/tmp/MYxxxxxx’ с кодом 122 (Errcode:122) говорит о невозможности.. записать временный файл. Чтобы понять это, особого знания английского языка не требуется. Гораздо интереснее, почему же mysql не может записать этот временный (или постоянный) файл в каталог tmp (или каталог баз данных). Кстати, ошибка может появляться при выполнении различных SQL-запросов, как на выборку, так и на запись.

Error code 122: Disk quota exceeded (см. коды ошибок MySQL)

Причины ошибки Can’t create/write to file ‘/tmp/MYxxxxxx’ (Errcode: 122)

Одной из возможных (довольно частых) причин ошибки создания файла может быть … переполнение диска, временного каталога или каталога пользователя. СтОит проверить (по SSH - команда df). Если дело действительно в переполнении - ищем “лишние файлы”. Если есть ssh-доступ - довольно удобно воспользоваться командой du (du –max-depth=1) Если места хватает, смотрим квоту пользователя, от имени которого запущен MySQL.

Если хостинг предоставляется как услуга - смело обращайтесь в службу поддержки.

VPS и Ошибка MySQL “Can’t create/write to file” (Errcode: 122)

Если у вас выделенный сервер (или виртуальный выделенный сервер) и вы столкнулись с ошибкой MySQL при создании временных файлов, то, скорее всего… на VPS кончилось место. Смотрим, куда же делось свободное место и удивляемся… Рекомендую проверить каталог с log-файлами. Если дело в логах - настраиваем ротацию (или удаляем по cron-у). Если не помогло - ищем “мусорку” с помощью du.

Знаете другие способы решения ошибки MySQL 122 Can’t create/write to file? Пишите в комментарии!

ps. Интересно, что по запросу MySQL Error writing file (Errcode: 122) в Yandex на первой странице довольно весомые (%) сайты абсолютно не связанные с компьютерной тематикой. Никто не застрахован от ошибок! (Если появится желание проверить - следует учитывать, что ситуация со временем меняется…)

Опубликовано Сентябрь 5, 2008 | автор: levik  |  Нет комментариев »