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

Установка 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)
Просмотров: 1770 | Теги: nginx, memcache, eaccelerator, FreeBSD, php-fpm | Рейтинг: 0.0/0

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


05/Фев/12Как сделать декоративное украшение из компьютерной решетки для блока питания
03/Май/13Тест и обзор оперативной памяти Hynix HMT351U6CFR8C-H9 (2х 4 Гб)
17/Май/13Способы устранения, причины и описание ошибки 0x8004240f или как создать том свыше 2Гб
03/Май/13Обзор игровой гарнитуры ASUS Echelon Camo Edition
03/Май/13Обзор и тестирование SSD-диска Plextor PX-256M3P
03/Май/13Обзор и тест материнской платы ASRock Z77 Extreme9 (часть 1)
17/Май/13Создание DAG кластера на серверах Mailbox Exchange
06/Май/13Использование моментальных снимков (Snapshots) в Hyper-V
03/Май/13Обзор и тест SSD-накопителя Plextor PX-256M5S (256 Гб)
18/Янв/12Как восстановить Windows без потери информации

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