Администрирование

Поскольку я администратор не по призванию, а скорее по необходимости, никаких сложных заморочек вы тут скорее всего не найдете. В основном посты посвящены решению мелких «бытовых» проблем владельца выделенного сервера, ну и заодно собственного компьютера.

Страница 1 из 212

nginx + php-fpm + IP.Board — upstream sent invalid status 40

После переезда с Apache на связку nginx + php-fpm через какое-то время всплыла следующая проблема. При попытке отправить личное сообщение nginx начал выдавать страницу 502 Bad Gateway. Исследование логов nginx выдало такую строчку.

upstream sent invalid status "40" while reading response header from upstream

Nginx: редирект в named location

Периодически возникает задача передачи обработки url в нужный именованный location. Сделать это можно следующим образом.

location /abc {
	error_page 463 = @backend;
	return 463;
}

location @backend {
}

Google Chrome: Не рекомендуется загружать файл

В один прекрасный момент попытавшись скачать файл с одного своего сайта получил вот такое предупреждение от Google Chrome.

Сообщение в Google Chrome: Не рекомендуется загружать файл так как он может представлять опасность

Не рекомендуется загружать файл так как он может представлять опасность.

Файл 100% никакой опасности не несёт, вирусов или троянов в нём нет. В панели вебмастера Google тоже никаких сообщений по поводу сайта не имеется.

Синхронизация файлов по FTP

Возникла простая задача — по расписанию сливать с сервера свежие бэкапы на локальную машину. Перепробовав несколько программ, подавляющее число которых платное, остановился на бесплатном варианте с помощью WinSCP. Тем более ничего лишнего ставить не требуется, а эта программа не помешает в повседневной работе даже самому крутому админу, работающему на Windows.

Не все знают, что WinSCP поддерживает работу со скриптами. Воспользуемся этой возможностью для синхронизации файлов по FTP.

Как восстановить личные сообщения в IPBoard из резервной копии базы

Возникла на днях следующая ситуация. На одном довольно крупном форуме, работающем на движке IPBoard, через взломанное мыло пользователя был получен доступ на форум. Всё бы ничего, но на форуме работает аукцион, и злоумышленник ухитрился «продать» несколько лотов и получить за них деньги. После того как его запалили, быстренько удалил переписку в личке и пропал.

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

Универсальный код для склейки домена с www и без него

Итак, займёмся склейкой сайта с www и без него. Лично я, например, считаю, что www это бесполезный на сегодняшний день пережиток прошлого, но вот Гугл, Яндекс и хотя бы тот же Microsoft со мной в данном вопросе не соглашаются и упорно редиректят своих посетителей на домен с www. Поэтому мы рассмотрим обе версии склейки, туда и обратно.

Следующие фрагменты кода являются универсальными, то есть их можно использовать для любого домена без изменений. Ну, кроме таких редких доменов как www.ru, www.com, www.net и им подобных, шанс обладания которыми у обычного вебмастера стремится к нулю.

Настраиваем лимиты на размер ящика и письма в postfix

За размер почтового ящика отвечают директивы mailbox_size_limit — для локальных пользователей, и virtual_mailbox_limit — для виртуальных аккаунтов.

За максимальный размер письма отвечает директива message_size_limit. Значения данных настроек указываются в байтах.

Оптимизация настроек MySQL с помощью MySQLTuner

Не беда, если вы как и я не являетесь большим специалистом в области понимания тонкостей настроек MySQL. Специально для таких людей существует маленький, но очень полезный скрипт на языке Perl — MySQLTuner. Он хитрым образом анализирует статистику работы MySQL и выдает свои рекомендации по оптимизации настроек сервера.

Установка под Debian крайне проста.

apt-get install mysqltuner

Чтобы данные анализа были более корректными, сервер MySQL должен проработать некоторое время в боевом режиме, по рекомендации самого MySQLTuner не менее 24 часов. Желательно запускать скрипт с пользователем root.

mysqltuner --user root --pass xxxxxx

После секундного раздумья программа выдает примерно следующую информацию. Нас интересуют строки, помеченные символами [!!] и секция Recommendations.

Выгрузка и заливка дампа базы данных MySQL

Для небольших баз многие используют PHPMyAdmin, но на файлах большого размера это весьма полезное приложение пасует. Можно конечно использовать специализированный софт, например Sypex Dumper, однако самым надежным средством были и остаются стандартные инструменты MySQL.

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

OPTIMIZE TABLE для всех таблиц в базе данных

Сначала вкратце, зачем нужна команда OPTIMIZE TABLE. Если прочитать описание, то увидим, что данная операция реорганизует физическое пространство занимаемое таблицей и индексами, что обеспечивает уменьшение занимаемого места и ускорение операций ввода/вывода. Конкретно производимые действия отличаются для разных движков таблиц (поддерживаются MyISAM, ARCHIVE и InniDB), подробнее об этом можно почитать в документации MySQL.

Возникает естественный вопрос: как автоматизировать данную операцию? Если для конкретной таблицы это легко сделать SQL-запросом OPTIMIZE TABLE table_name, то как это сделать сразу для всех таблиц в базе? Легко и непринуждённо, с помощью идущей в поставке сервера утилиты mysqlcheck.

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