оптимизация web сервера

Главные вкладки

Аватар пользователя gumk gumk 22 августа 2008 в 19:23

Сижу на Firstvds, нашел у них статью по оптимизации на основе nginx но не понимаю куда что вставлять в первый раз сталкиваюсь с такой проблемой,

вот оригинал статьи:

В этой статье описана процедура установки высокопроизводительной связки nginx + php-fpm + eaccelerator для операционной системы FreeBSD.

Важно отметить, что используемая связка весьма экономно нагружает память, и позволяет более эффективно использовать ресурсы вашего VDS.
Содержание
[убрать]

* 1 Используемое ПО
* 2 Исходные настройки
* 3 Установка
o 3.1 Nginx
o 3.2 php-fpm
o 3.3 eAccelerator
* 4 Настройка конфигурации
o 4.1 Настройка конфигурации php-fpm
o 4.2 Настройка конфигурации nginx

[править] Используемое ПО

* nginx (engine x) — это свободный Веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах (тестировалась сборка и работа на FreeBSD, GNU/Linux, Solaris, Mac OS X). Разрабатывается Игорем Сысоевым с 2002-го года для компании Rambler и постоянно модернизируется. Осенью 2004 года вышел первый публично доступный релиз.

* php-fpm - это патч для PHP, для использования PHP как FastCGI процесса в высоконагруженных системах. Устраняет ряд проблем мешающих использовать PHP в режиме FastCGI.

* eAccelerator является PHP-акселератором, основное назначение которого состоит в кэшировании бинарного представления кода. Он увеличивает производительность PHP скриптов за счет их кеширования в скомпилированном состоянии, тем самым предотвращая их постоянную перекомпиляцию. В результате происходит увеличение скорости их выполнения. eAccelerator обычно уменьшает нагрузку на сервер и увеличивает скорость исполнения PHP кода на величину от 1 до 10 раз.

[править] Исходные настройки

Предполагается что домен, на котором будет работать данная связка имеет адрес mydomain.com, а корневым www каталогом является /home/www. Также использована возможность php-fpm изолировать (chroot) свои процессы в домашнем каталоге, для дополнительной безопасности (при взломе через уязвимые скрипты потери будут минимальны).
[править] Установка
[править] Nginx

cd /usr/ports/www/nginx-devel
make install clean

В большинстве конфигураций необходимо отметить следующие пункты:

* [X] HTTP_MODULE
* [X] HTTP_PERL_MODULE
* [X] HTTP_REWRITE_MODULE

а если нужна поддержка SSL, то и

* [X] HTTP_SSL_MODULE

[править] php-fpm

cd /usr/ports/lang
fetch http://php-fpm.anight.org/downloads/freebsd-port/php5-fpm.tar.gz
tar -zxf php5-fpm.tar.gz
cd php5-fpm
make install clean

Отмечаем следующие пункты:

* [X] SUHOSIN
* [X] MULTIBYTE
* [X] MAILHEAD
* [X] PATHINFO

[править] eAccelerator

cd /usr/ports/www/eaccelerator
make install clean
mkdir /tmp/eaccelerator
chown www /tmp/eaccelerator
chmod 0700 /tmp/eaccelerator

Редактируем /usr/local/etc/php.ini:

; eAccelerator

; Подключаем расширение
zend_extension="eaccelerator.so"

; Включаем eAccelerator
eaccelerator.enable="1"

; Максимальный размер кеша в мегабайтах
eaccelerator.shm_size="64"

; Корневой каталог для хранения кеша
eaccelerator.cache_dir="/tmp/eaccelerator"

; Встроенный оптимизатор кода
eaccelerator.optimizer="1"

; Включаем проверку модификации PHP файлов.
eaccelerator.check_mtime="1"

; Режим отладки
eaccelerator.debug="0"

; Фильтр файлов, которые должны быть закэшированы
eaccelerator.filter=""

; Максимально допустимое значение которое может быть
; отправлено в разделяемую память. По-умолчанию - без ограничений.
eaccelerator.shm_max="0"

; Когда акселлератору потребуется отправить в разделяемую
; память какой-то объект и при этом в памяти для этого
; не окажется места, он попытается удалить файлы, которые
; не были запрошены в течении последних "shm_ttl" секунд.
; По-умолчанию, это значение равно "0" - не удалять ничего.
eaccelerator.shm_ttl="3600"

; Когда акселлератору потребуется отправить в разделяемую
; память какой-то объект и при этом в памяти для этого
; не окажется места, он попытается удалить старые скрипты,
; если предыдущие такие попытки были не больше, чем
; "shm_prune_period" секунд назад.По-умолчанию, это значение
; равно "0" - не удалять ничего.
eaccelerator.shm_prune_period="0"

; Включить или отключить кеширование скомпиленных скриптов
; _только_ на диск. Этот параметр не влияет на данные сессий
; и кеширование контента. По-умолчанию, значение 0, что означает
; что данные будут кешироваться и в памяти и на диске.
eaccelerator.shm_only="0"

; Включить или отключить сжатие закешированного контента.
; По-умолчанию, "1" - сжимать.
eaccelerator.compress="1"

; Уровень сжатия. По-умолчанию, "9" - максимум.
eaccelerator.compress_level="9"

[править] Настройка конфигурации
[править] Настройка конфигурации php-fpm

Редактируем файл /usr/local/etc/php-fpm.conf:

<?xml version="1.0" ?>

/var/run/php-fpm.pid
/var/log/php-fpm.log
notice
10
1m
Time limit on waiting child's reaction on signals from master
5s
yes

Main pool

main
127.0.0.1:3000

-1

0666

www
www

static
1

20
5
35

31s
1024
unlimited
chroot в домашнюю директорию
/home/www

yes
500
127.0.0.1

$HOSTNAME
/usr/local/bin:/usr/bin:/bin
/tmp
/tmp
/tmp
$OSTYPE
$MACHTYPE
2

Позднее, могут быть добавлены дополнительные секции pool для виртуальных доменов, причем благодаря гибкости php-fpm, каждый из пулов может быть изолирован при помощи chroot. Это обеспечивает дополнительную безопасность (при взломе через уязвимые php скрипты потери будут минимальны).

Стартуем php:

/usr/local/etc/rc.d/php-fpm start

Добавляем запуск в /etc/rc.conf:

phpfpm_enable="YES"

[править] Настройка конфигурации nginx

Редактируем файл /usr/local/etc/nginx/nginx.conf:

user www;
worker_processes 2;

pid /var/run/nginx.pid;
error_log /var/log/nginx-error.log warn;

events {
worker_connections 1024;
use kqueue;
}

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

# log options
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';

# nginx options
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
server_tokens off;

# fastcgi
fastcgi_intercept_errors on;

server {
listen 80;
server_name mydomain.com;

access_log /var/log/nginx.mydomain.log main;

location ~ \.php$ {
fastcgi_pass 127.0.0.1:3000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
include fastcgi_params;
}

location / {
root /home/www/;
index index.php index.html index.htm;
}
}

Стартуем nginx:

/usr/local/etc/rc.d/nginx start

Добавляем запуск в /etc/rc.conf:

nginx_enable="YES"

Сервер готов к работе!

Ну вобщем-то может кто-нибудь по понятней объяснить что делать?

Комментарии

Аватар пользователя gumk gumk 22 августа 2008 в 22:53

"gumk" wrote:
cd /usr/ports/www/nginx-devel
make install clean

В большинстве конфигураций необходимо отметить следующие пункты:

* [X] HTTP_MODULE
* [X] HTTP_PERL_MODULE
* [X] HTTP_REWRITE_MODULE

а если нужна поддержка SSL, то и

* [X] HTTP_SSL_MODULE

[править] php-fpm

cd /usr/ports/lang
fetch http://php-fpm.anight.org/downloads/freebsd-port/php5-fpm.tar.gz
tar -zxf php5-fpm.tar.gz
cd php5-fpm
make install clean

Отмечаем следующие пункты:

* [X] SUHOSIN
* [X] MULTIBYTE
* [X] MAILHEAD
* [X] PATHINFO

[править] eAccelerator

cd /usr/ports/www/eaccelerator
make install clean
mkdir /tmp/eaccelerator
chown www /tmp/eaccelerator
chmod 0700 /tmp/eaccelerator



вот эти изменения в каком файле делать?

Аватар пользователя gumk gumk 23 августа 2008 в 2:03

мне тоже так кажется, однако факт на лицо, средняя генерация страницы до оптимизации 3-6 секунд, после от 0,6-1,9