Lumber room
22 July 2008

Настройка Apache2.2+Nginx+eAccelerator+SVN+Trac на медленном VDS — часть первая

Вторая часть

Сразу хочу заметить, что статья эта не претендует на авторитетность — делал всё в первый раз на удалённой машине с Линуксом. Соответственно, прошу особо не пинать, а лучше высказывать замечания — как что-то можно было сделать по-другому, или советы по настройке. Всё нижеперечисленное было сделано по мануалам из гугла.


Итак, досталась мне хиленькая VDS от FirstVDS — с Debian и ISPManager.
Попытки оптимизировать ее работу вылились в следующее:

1. Оптимизация Apache и установка Nginx
2. Установка eAccelerator

Ну и для души —

3. Установка SVN
4. Установка Trac.


1. Апаж был уже установлен, и я думаю, что то, как его установить — нет смысла описывать — это уже прописные истины.
Хочу уделить внимание только тому, что в Debian имеется хитрая разноска — /etc/apache2/
  • apache2.conf — это основной конфиг-файл
    envvars — окружение
    mods-available — здесь лежат указатели для всех возможных для установки модудей
    ports.conf — указатель — где и что слушать
    sites-enabled — описания существующих и включённых сайтов
    conf.d — папка для других конфигов, типа PhpMyAdmin, в ней ничего даже и не делал, только просмотрел
    httpd.conf — пустой файл для пользовательских конфигов
    mods-enabled — включённые модули, ссылки на файлы из mod-availible
    sites-available — возможные сайты (описания)


    Соответственно, посмотрев на это, я сказал системе —
    apt-get update
    apt-get install nginx


    И через несколько минут у меня был установленный и запущенный nginx.

    Следующее действие — иду в ports.conf, и там меняю
    Listen 80


    на

    Listen 127.0.0.1:8080


    — то есть переводим Апач в режим backend, грубо говоря.

    После чего надо сменить все прописанные сайты. ISPManager отчего-то не стала сайты прописывать в sites-availible и sites-enabled, а напрямую запихнула их в apache2.conf

    Ну, собственно, каркас такой —
    <VirtualHost 127.0.0.1:8080>
    ServerName site.ru
    DocumentRoot /var/www/site.ru
    SuexecUserGroup user_name group_name
    CustomLog /var/www/httpd-logs/site.ru.access.log combined
    ErrorLog /var/www/httpd-logs/site.ru.error.log
    ServerAdmin admin@site.ru
    AddDefaultCharset utf8
    php_admin_value open_basedir "/var/www/site.ru/data:."
    php_admin_value upload_tmp_dir "/var/www/site.ru/data/tmp"
    php_admin_value session.save_path "/var/www/site.ru/data/tmp"
    AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
    AddType application/x-httpd-php-source .phps



    Как-то. Меняется фактически порт и ip — на тот, который указан в Listen

    Следом мы идём в /etc/nginx/, и правим nginx.conf
    Всё основное Nginx сделал за меня при установке, мне осталось только прописать хосты

    server {
    listen my.ip.is.here:80;
    server_name site.ru;
    location / {
    proxy_pass 127.0.0.1:8080;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|html|htm)$ {
    root /var/www/site.ru;
    access_log /var/www/httpd-logs/site.ru.access.log;
    }
    }


    Сделал столько конструкций, сколько у меня сайтов — везде прописал соответствующую информацию для каждого сайта.

    Поправил в /etc/apache2/apache2.conf некоторые установки

    Timeout 5
    KeepAlive Off
    #MaxKeepAliveRequests 50
    #KeepAliveTimeout 5
    <IfModule mpm_prefork_module>
    StartServers 5
    MinSpareServers 5
    MaxSpareServers 10
    MaxClients 20
    MaxRequestsPerChild 0

    <IfModule mpm_worker_module>
    StartServers 2
    MaxClients 20
    MinSpareThreads 5
    MaxSpareThreads 10
    ThreadsPerChild 25
    MaxRequestsPerChild 0


    Ну, вроде и всё.

    Всё, мы установили Nginx фронтендом на Apache. Делаем

    /etc/init.d/apache2 restart
    /etc/init.d/nginx restart


    (reload не прокатит — именно restart)

    2. Установка eAccelerator

    Полностью следуя инструкции с HowToForge, установил без проблем. Перепишу своими словами.

    Прежде всего — контрольный выстрел

    apt-get install build-essential php5-dev


    Качаем сам eAccelerator (когда ставил — версия посвежее была, нежели на HowToForge — 9.5.3)

    cd /tmp
    wget bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.3.tar.bz2
    tar xvfj eaccelerator-0.9.5.3.tar.bz2
    cd eaccelerator-0.9.5.3
    phpize # не забудьте эту команду!!=)
    ./configure
    make
    make install


    После чего создаём и правим конфиг.

    vi /etc/php5/conf.d/eaccelerator.ini


    вставляем туда:

    extension="eaccelerator.so"
    eaccelerator.shm_size="16"
    eaccelerator.cache_dir="/var/cache/eaccelerator"
    eaccelerator.enable="1"
    eaccelerator.optimizer="1"
    eaccelerator.check_mtime="1"
    eaccelerator.debug="0"
    eaccelerator.filter=""
    eaccelerator.shm_max="0"
    eaccelerator.shm_ttl="0"
    eaccelerator.shm_prune_period="0"
    eaccelerator.shm_only="0"
    eaccelerator.compress="1"
    eaccelerator.compress_level="9"


    Сохраняем и закрываем, а потом —

    mkdir -p /var/cache/eaccelerator
    chmod 0777 /var/cache/eaccelerator


    Ну и традиционный ребут Апача

    /etc/init.d/apache2 restart


    Если всё было сделано правильно — вывод phpinfo должен выглядеть примерно так

    Не сказать, что после всех этих действий Wordpress у меня залетал аки сокол — но тормозил заметно меньше.

    Плюнул на оптимизацию, решил отложить перенос до «После отпуска», и решил для души настроить SVN+Trac — с этим возни было куда больше)

    Сегодня-завтра допишу про них)

+11
1.3k 75
Comments 19
Top of the day