Настройка Nginx + LAMP сервера в домашних условиях Часть 2: Настройка backend: PHP + MySQL

Здравствуйте.

В предыдущей статье, мы познакомились с настройкой связки nginx + apache в режиме хостинга и репозиториями dotdeb.
В этой статье мы познакомимся с настройкой backend: PHP, MySQL.

В части PHP мы познакомимся со следующими темами:
— общая настройка PHP
— правильная настройка PHP + Postfix для отправки писем через внутренний SMTP сервер посредством функции mail(),
— настройка кеширования кода и/или данных на основе APC.

В части MySQL я попробую раскрыть базовые моменты повышения производительности, ибо по умолчанию сервер MySQL настроен очень не эффективно.

Кто заинтересовался, добро пожаловать под кат



Информация:


Сам не являюсь профи по настройке баз данных. На то есть реально крутые перцы, и они люто мучают БД в разных конфигурациях на тестовых стендах и на реальных БД для получения максимальной производительности под конкретные задачи. В этой статье все проще. Основную конфигурацию я прикинул на глаз + поправил все проблемы которые увидел в SHOW VARIABLES. По ощущениям, после нормальной настройки основной ресурс стал работать быстрее чем раньше.

Снова приведем из прошлой статьи схему архитектуры настраиваемой системы, для наглядного представления ресурсов сервера (Картинко кликабельно)



Настройка PHP 5.3.18


В начале как всегда. Прошу мои конфиги php+apc: yadi.sk/d/0OuPvlBS0t01O

— Общая настройка PHP
В целом в файле php.ini я ничего интересного не нашел. Однако есть на что обратить внимание:

Очень важно, если берешь пакеты из dotdeb:

Производительность и ресурсы:

Скрытие присутствия PHP

Пару слов касательно вывода ошибок (+ Скрытие присутствия PHP 2):

— Настройка кешироваия APC (версия 3.1.9):
APC кеширует опкоды, кроме того он умеет кешировать данные. Я использую APC по причине того что фреймворк Yii рекомендует его. В Yii есть уже написанные классы, для работы с данным кешером. Другие кешеры не рассматривал и не сравнивал по указанным выше причинам.

Конфиг файла по умолчанию пустой, все значения выставлены по умолчанию. В частности под кеширование выделено 32M — на код хватит, на данные нет.
В указанном мной конфиге файла, стоит обязательно обратить внимание на следующие:

— Настройка фукции mail():
Из коробки функция mail() работать не должна. Что бы она работала нужен правильно работающий почтовый SMTP сервер. В предыдущей статье мы установили такой сервер.
Стоит в настройке обратить внимание на следующие вещи:


Настройка MySQL 5.5.28


Пока читал документацию наткнулся на причуды настройки на уровне фантастики. Люди специально заводят тесты, что бы выжимать из БД максимум производительности до 30 процентов на определенных настройках и на определенном железе.
У нас этого не будет. Мы просто будем следовать здравому смыслу и документации.

Добро пожаловать конфигам: yadi.sk/d/T1ov6qAF0t82y

Структура конфигурационных файлов:

В файле my.cnf прошу обратить внимание на следующие настройки

— SHOW VARIABLES
Для просмотра того, какие операции выполняет БД был создан SHOW VARIABLES. С помощью него вы сможете узнать о таких вещах как количество операций ввода вывода, количство попаданий в кеш, количество сортировок через файлы и другое. Советую для ознакомления.
В конфигах рядом с каждой настройкой, влияющая на производительность указана ссылка (see) на какой параметр SHOW VARIABLES нужно смотреть. Ко всем остальным подробностям прошу обращаться к документации.

Некоторые настройки, на которые следует обратить внимание:


Все остальные параметры вы сможете найти в конфигурационных файлах.

ЗЫ: Ух блин вылил. Надеюсь не слишком коряво? Если хотя бы 70% получилось донести, то это хорошо.

Если данная статья будет по вкусу, то собираюсь написать про настройку mail() + postfix + dkim в духе цикла статей. Потом написать про настройку прав доступа на сервере. Потом написать про разный опыт владения в своем распоряжении сервера, там же попробуем еще раз привести схему сервера и расписать основные узлы и потребления памяти и думаю туда же запихну скрипт для развертывания и управлением сервера (на уровне добавить и удалить пользователя) и соответственно разъясню все нюансы связанное например со стандартами именований принятые у меня. В конце всего цикла статей, я бы хотел познакомить с моим домашним сервером, который к слову можно совершенно просто масштабировать добавляя в «стойку» новые виртуальные машины и ноутбуки + еще виртуальные машины =). Все настройки вначале тестируются на этом маленьком сервере, перед тем как попадают на рабочие сервера.

Спасибо за внимание.

UPD 2012.11.26 13:30 — Судя по карме, на этом этапе мы закончим написание статей. А зря ведь, ибо в интернете нигде не найдешь обзора полного цикла настройки вебсервера и дележки опытом, только куча разноавторских мануалов. Спасибо за внимание, желаю всем удачи.
@wartur
26.11.2012 02:23 UTC
Первоисточник