Оптимизация Web-сервера

Тема в разделе "Администрирование серверов", создана пользователем root230101, 9 апр 2008.

Статус темы:
Закрыта.
Модераторы: mefish, stooper
  1. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    Собстна сабж. Давайте делиться тут информацией о том, как снизить нагрузку на сервак.
     
  2. unixman

    unixman

    Регистр.:
    6 сен 2006
    Сообщения:
    687
    Симпатии:
    61
    Поставить nginx
     
  3. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    А может какие-то настройки для apache и php? Мне именно на винде надо, т.к. кроме сервака это еще и моя рабочая машина.
     
  4. unixman

    unixman

    Регистр.:
    6 сен 2006
    Сообщения:
    687
    Симпатии:
    61
    Поставить nginx на фряхе перед виндой
     
  5. root230101

    root230101

    Регистр.:
    19 сен 2007
    Сообщения:
    304
    Симпатии:
    21
    А если я зашел в винду, то сервак уже не работает... Нет, так не пойдет.
     
  6. Tele2

    Tele2

    Регистр.:
    14 апр 2006
    Сообщения:
    784
    Симпатии:
    94
  7. unixman

    unixman

    Регистр.:
    6 сен 2006
    Сообщения:
    687
    Симпатии:
    61
    Почему, работает
    Просто nginx его акслерреирует
     
  8. v3sp3r

    v3sp3r Писатель

    Регистр.:
    9 ноя 2007
    Сообщения:
    3
    Симпатии:
    3
    http://wiki.firstvds.ru/index.php/Высокопроизводительный_web-сервер ;)
    Может поможет чем нибудь...

    Добавлено через 2 минуты
    блин. вобщем вот текст статьи:

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

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

    Используемое ПО
    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" ?>
    <configuration>
    <section name="global_options">
    <value name="pid_file">/var/run/php-fpm.pid</value>
    <value name="error_log">/var/log/php-fpm.log</value>
    <value name="log_level">notice</value>
    <value name="emergency_restart_threshold">10</value>
    <value name="emergency_restart_interval">1m</value>
    Time limit on waiting child's reaction on signals from master
    <value name="process_control_timeout">5s</value>
    <value name="daemonize">yes</value>
    </section>

    <workers>
    Main pool
    <section name="pool">
    <value name="name">main</value>
    <value name="listen_address">127.0.0.1:3000</value>
    <value name="listen_options">
    <value name="backlog">-1</value>
    <value name="owner"></value>
    <value name="group"></value>
    <value name="mode">0666</value>
    </value>
    <value name="php_defines">
    </value>
    <value name="user">www</value>
    <value name="group">www</value>
    <value name="pm">
    <value name="style">static</value>
    <value name="max_children">1</value>
    <value name="apache_like">
    <value name="StartServers">20</value>
    <value name="MinSpareServers">5</value>
    <value name="MaxSpareServers">35</value>
    </value>
    </value>
    <value name="request_execution_timeout">31s</value>
    <value name="rlimit_files">1024</value>
    <value name="rlimit_core">unlimited</value>
    chroot в домашнюю директорию
    <value name="chroot">/home/www</value>
    <value name="chdir"></value>
    <value name="catch_workers_output">yes</value>
    <value name="max_requests">500</value>
    <value name="allowed_clients">127.0.0.1</value>
    <value name="environment">
    <value name="HOSTNAME">$HOSTNAME</value>
    <value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
    <value name="TMP">/tmp</value>
    <value name="TMPDIR">/tmp</value>
    <value name="TEMP">/tmp</value>
    <value name="OSTYPE">$OSTYPE</value>
    <value name="MACHTYPE">$MACHTYPE</value>
    <value name="MALLOC_CHECK_">2</value>
    </value>
    </section>
    </workers>
    </configuration>

    Позднее, могут быть добавлены дополнительные секции 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"


    Сервер готов к работе!
     
  9. Tele2

    Tele2

    Регистр.:
    14 апр 2006
    Сообщения:
    784
    Симпатии:
    94
    v3sp3r
    ты не внимателен, у ТС винда
     
  10. v3sp3r

    v3sp3r Писатель

    Регистр.:
    9 ноя 2007
    Сообщения:
    3
    Симпатии:
    3
    ой ну извините :nezn: :ah:
     
Статус темы:
Закрыта.