Главная » Статьи » Администрирование » Серверная оптимизация

Установка nginx + php-fpm + memcache + eaccelerator на FreeBSD
Зачем всё это? — спросите вы. Да просто захотелось поделиться с общественностью некоторым опытом, полученным в процессе оптимизации vds под нужды одного общеизвестного блого-социального движка, который на обычном хостинге чувствует себя, мягко скажем, некомфортно.

Началось всё с того, что я ушёл от firstvds, где уже ничто не спасёт от тормозов. Ушел на ганди.нет, взял одну шару (1 share), которую дали на месяц бесплатно. Кстати, акция эта (This summer, your server is free!) вроде еще не закончилась. ;) И начал на этой шаре проводить зверские эксперименты с установкой разного ПО. Тестировал результаты с помощью siege.

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

Перво-наперво обновляем дерево портов, если давно этого не делали. А если никогда не делали, то без этого дальше никуда:
# portsnap fetch update

NGINX


Устанавливаем последнюю стабильную версию nginx из портов:
# cd /usr/ports/www/nginx
# make install clean

Добавляем строку 'nginx_enable=«YES»' в файл '/etc/rc.conf'.

Основные настройки nginx по-умолчанию, чтобы знать где искать:
  • Конфиг: /usr/local/etc/nginx/nginx.conf
  • Порты http / https: 80 / 443
  • Логи ошибок: /var/log/nginx-error.log
  • Логи доступа: /var/log/nginx-access.log
  • Коневая папка: /usr/local/www/nginx/

PHP-FPM


Сначала ставим сам php:
# cd /usr/ports/lang/php5
# make install clean

Поддержка PHP в FreeBSD построена по модульному принципу, поэтому базовая установка обладает ограниченной функциональностью. Дополнительные расширения могут быть легко добавлены при помощи порта php5-extensions. Установим расширения, которые нам необходимы (например, mbstring, gd, mysql...):
# cd /usr/ports/lang/php5-extensions
# make install clean

Далее ставим патч php-fpm. В портах freebsd этот патч отсутствует, но это не беда. Предлагаю всё-таки поставить его через порт, а не собрать из исходников. Скачиваем порт для FreeBSD с сайта php-fpm.org и распаковываем в директорию портов по-умолчанию, откуда и устанавливаем:
# fetch php-fpm.anight.org/downloads/freebsd-port/php-5.2.10-fpm-0.5.13.tar.gz
# tar -xvf php-5.2.10-fpm-0.5.13.tar.gz -C /usr/ports/lang/
# cd /usr/ports/lang/php5-fpm
# make install clean

Добавляем строку 'php_fpm_enable=”YES"' в файл '/etc/rc.conf'.

Дружим NGINX и PHP


Заходим в кофиг нашего http-сервера. По-умолчанию он находится здесь '/usr/local/etc/nginx/nginx.conf'. Стираем всё. Для начала конфиг будет такой с минимумом настроек:
user www;
worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

server {
listen 80;
server_name localhost;

charset utf-8;

location / {
root /usr/local/www/nginx;
index index.php index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/www/nginx$fastcgi_script_name;
include fastcgi_params;
}
}
}

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

Далее редактируем конфигурацию php-fpm. По-дефолту он лежит тут '/usr/local/etc/php-fpm.conf'. Находим в файле строки:
<!–- <value name=”user”>nobody</value> -–>
<!–- <value name=”group”>nobody</value> -–>

И меняем их на:
<value name=”user”>www</value>
<value name=”group”>www</value>

Тем самым указав пользователя и группу, под которыми будет крутиться php. Подробное описание этих и других настроек php-fpm есть на официальном сайте на русском языке.

MEMCACHE


Ставим расширение memcache:
# cd /usr/ports/databases/pecl-memcache
# make install clean

После чего заходим в файл '/usr/local/etc/php/extensions.ini', где добавляем строчку:
extension=memcache.so

EACCELERATOR


Устанавливаем:
# cd /usr/ports/www/eaccelerator
# make install clean

Аналогично memcache заходим в файл '/usr/local/etc/php/extensions.ini' и добавляем строчку:
extension=eaccelerator.so

Создаем папку, где eAccelerator будет хранить свой кэш, задаем владельца www и устанавливаем права:
# mkdir /tmp/eaccelerator
# chown www /tmp/eaccelerator
# chmod 0700 /tmp/eaccelerator

РЕЗУЛЬТАТ


Запускаем php и nginx:
# /usr/local/etc/rc.d/php-fpm start
# /usr/local/etc/rc.d/nginx start

Пришло время проверить, получилось ли у нас что-нибудь. :) Создаем файл '/usr/local/www/nginx/info.php' c содержимым "". И смотрим результат в браузере: httр://ваш-домен/info.рhр .

За рамки данной заметки вышли: установка mysql (ставится так же просто, как и всё остальное из портов) и куча различных настроек, читай тюнинга, всего этого великолепия. 

источник http://habrahabr.ru

Категория: Серверная оптимизация | Добавил: Tatiana (09/Май/13)
Просмотров: 1674 | Теги: nginx, memcache, eaccelerator, FreeBSD, php-fpm | Рейтинг: 0.0/0

Быстрый переход на популярные ИТ статьи:


09/Май/13Многопоточное приложение под Tornado
03/Май/13Обзор и тест материнской платы ASRock Z77 Extreme6 (часть 2)
09/Май/13Выпущена финальная версия Web Farm Framework 2
03/Май/13Обзор и тест материнской платы ASUS Maximus V Formula
06/Май/13Продолжаем говорить о памяти – Page Sharing
31/Дек/11Как выбрать б.у. ноутбук
06/Фев/12Как сделать необычную лампу
06/Фев/12Модели городов из компьютерных комплектующих, которые делает Franco Recchia
03/Май/13Обзор и тест памяти Samsung M378B5773CH0-CH9 (2x 2 Гб)
06/Май/13Резервное копирование данных простым языком

puls.az,puls-az.com – рейтинговая система Азербайджана Яндекс.Метрика