Установка для «чайников»: nginx + php-cgi + mysql + eaccelerator + memcache на Debian 5.0 «lenny»

    Данная заметка является шпаргалкой для новичков в установке нормально работающего комплекса, описанного в заголовке. Все пункты установки протестированы несколько раз на разных vds, поэтому проблем с нехваткой чего-то быть не должно, как это обычно бывает, когда ставишь что-то по мануалам, надерганных из разных источников. Подробно описания настроек и «тюнинга» в заметке нет, т.к. это всё очень индивидуально и требует понимания что, как и зачем делается, а это невозможно охватить в одной даже очень большой шпоре.

    Перво-наперво обновляем список пакетов:

    apt-get update
    

    Ставим необходимое для ручной установки и некоторых других хитрым манипуляций:

    apt-get install  build-essential
    

    NGINX


    Ставим библиотеки, необходимые для установки nginx в той конфигурации, которую мы будем ставить (pcre обязательная всегда, ssl — опционально, если конфигурируем nginx с ней):

    apt-get install libpcre3-dev
    apt-get install openssl
    apt-get install libcurl4-openssl-dev
    

    В пакетах Дебиана, к сожалению, в стабильном варианте валяется очень старая версия nginx, поэтому будем ставить сервер вручную. Заходим в темп:

    cd /tmp
    

    Качаем последнюю стабильную версию nginx, распаковываем и заходим в папку установки:

    wget httр://sysoev.ru/nginx/nginx-0.7.61.tar.gz
    tar -zxvf nginx-0.7.61.tar.gz
    cd nginx-0.7.61
    

    Конфигурим и устанавливаем:

    ./configure \
    	   --user=www-data \
    	   --group=www-data \
    	   --with-http_ssl_module \
    	   --with-http_realip_module \
    	   --with-http_addition_module \
    	   --with-http_sub_module \
    	   --with-http_dav_module \
    	   --with-http_flv_module \
    	   --with-http_gzip_static_module \
    	   --with-mail \
    	   --with-mail_ssl_module
    make
    make install
    


    Запускаем:
    /usr/local/nginx/sbin/nginx
    

    Заходим в браузер, набираем наш ip/домен и видим:

    Welcome to nginx!

    Значит, всё хорошо. Теперь нам нужно добавить nginx в автозагрузку. Для этого создаем файл '/etc/init.d/nginx' следующего содержания:

    #! /bin/sh
    
    ### BEGIN INIT INFO
    # Provides:          nginx
    # Required-Start:    $all
    # Required-Stop:     $all
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: starts the nginx web server
    # Description:       starts nginx using start-stop-daemon
    ### END INIT INFO
    
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DAEMON=/usr/local/nginx/sbin/nginx
    NAME=nginx
    DESC=nginx
    
    test -x $DAEMON || exit 0
    
    # Include nginx defaults if available
    if [ -f /etc/default/nginx ] ; then
            . /etc/default/nginx
    fi
    
    set -e
    
    case "$1" in
      start)
            echo -n "Starting $DESC: "
            start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON -- $DAEMON_OPTS
            echo "$NAME."
            ;;
      stop)
            echo -n "Stopping $DESC: "
            start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON
            echo "$NAME."
            ;;
      restart|force-reload)
            echo -n "Restarting $DESC: "
            start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON
            sleep 1
            start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON -- $DAEMON_OPTS
            echo "$NAME."
            ;;
      reload)
          echo -n "Reloading $DESC configuration: "
          start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON
          echo "$NAME."
          ;;
      *)
            N=/etc/init.d/$NAME
            echo "Usage: $N {start|stop|restart|force-reload}" >&2
            exit 1
            ;;
    esac
    
    exit 0

    Делаем исполняемым и добавляем nginx в автозагрузку:

    chmod 755 /etc/init.d/nginx
    update-rc.d nginx defaults
    

    Теперь мы можем управлять нашим http-сервером с помощью следующих команд:

    /etc/init.d/nginx start
    /etc/init.d/nginx restart
    /etc/init.d/nginx stop
    


    PHP-FASTCGI


    PHP я предлагаю ставить из коллекции пакетов. Сейчас там лежит стабильная версия 5.2.6 — да, не последняя из 5.2, но зато не глючит. Я пробовал ставить 5.2.10 из тестовых пакетов, в связке с nginx работало не стабильно. Устанавливаем PHP с некоторыми обязательными расширениями (необходимые именно вам расширения вы можете добавить сразу или позже):

    apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-json php5-mcrypt php5-memcache
    

    Далее заходим в '/etc/php5/cgi/php.ini', где добавляем строку в конец файла:

    cgi.fix_pathinfo = 1
    

    Добавим php в автозагрузку. Для чего оздаем скрипт '/etc/init.d/php-fastcgi' следующего содержания:

    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          php-fastcgi
    # Required-Start:    $all
    # Required-Stop:     $all
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Start and stop php-cgi in external FASTCGI mode
    # Description:       Start and stop php-cgi in external FASTCGI mode
    ### END INIT INFO
    
    # Author: Kurt Zankl <kz@xon.uni.cc>
    
    # Do NOT "set -e"
    
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    DESC="php-cgi in external FASTCGI mode"
    NAME=php-fastcgi
    DAEMON=/usr/bin/php-cgi
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
    
    # Read configuration variable file if it is present
    [ -r /etc/default/$NAME ] && . /etc/default/$NAME
    
    # Load the VERBOSE setting and other rcS variables
    . /lib/init/vars.sh
    
    # Define LSB log_* functions.
    # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
    . /lib/lsb/init-functions
    
    # If the daemon is not enabled, give the user a warning and then exit,
    # unless we are stopping the daemon
    if [ "$START" != "yes" -a "$1" != "stop" ]; then
            log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes"
            exit 0
    fi
    
    # Process configuration
    export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
    DAEMON_ARGS="-q -b $FCGI_HOST:$FCGI_PORT"
    
    
    do_start()
    {
            # Return
            #   0 if daemon has been started
            #   1 if daemon was already running
            #   2 if daemon could not be started
            start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1
            start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- $DAEMON_ARGS || return 2
    }
    
    do_stop()
    {
            # Return
            #   0 if daemon has been stopped
            #   1 if daemon was already stopped
            #   2 if daemon could not be stopped
            #   other if a failure occurred
            start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON
            RETVAL="$?"
            [ "$RETVAL" = 2 ] && return 2
            # Wait for children to finish too if this is a daemon that forks
            # and if the daemon is only ever run from this initscript.
            # If the above conditions are not satisfied then add some other code
            # that waits for the process to drop all resources that could be
            # needed by services started subsequently.  A last resort is to
            # sleep for some time.
            start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
            [ "$?" = 2 ] && return 2
            # Many daemons don't delete their pidfiles when they exit.
            rm -f $PIDFILE
            return "$RETVAL"
    }
    
    case "$1" in
      start)
            [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
            do_start
            case "$?" in
                    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
            esac
            ;;
      stop)
            [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
            do_stop
            case "$?" in
                    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
            esac
            ;;
      restart|force-reload)
            log_daemon_msg "Restarting $DESC" "$NAME"
            do_stop
            case "$?" in
              0|1)
                    do_start
                    case "$?" in
                            0) log_end_msg 0 ;;
                            1) log_end_msg 1 ;; # Old process is still running
                            *) log_end_msg 1 ;; # Failed to start
                    esac
                    ;;
              *)
                    # Failed to stop
                    log_end_msg 1
                    ;;
            esac
            ;;
      *)
            echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
            exit 3
            ;;
    esac
    

    Делаем исполяемым:

    chmod 755 /etc/init.d/php-fastcgi
    

    Создаем другой файл '/etc/default/php-fastcgi', чтобы мы могли контролировать php-fastcgi (слушать порты, получать количество дочерних процессов и другие запросы), такого содержания:

    #
    # Settings for php-cgi in external FASTCGI Mode
    #
    
    # Should php-fastcgi run automatically on startup? (default: no)
    START=yes
    
    # Which user runs PHP? (default: www-data)
    EXEC_AS_USER=www-data
    
    # Host and TCP port for FASTCGI-Listener (default: localhost:9000)
    FCGI_HOST=localhost
    FCGI_PORT=9000
    
    # Environment variables, which are processed by PHP
    PHP_FCGI_CHILDREN=5
    PHP_FCGI_MAX_REQUESTS=1000
    


    Запускаем php-fastcgi:
    /etc/init.d/php-fastcgi start
    

    Добавляем в автозагрузку:

    update-rc.d php-fastcgi defaults
    


    Дружим NGINX и PHP


    Создадим папку для сайтов, например, '/home/www'.

    Редактируем '/usr/local/nginx/conf/nginx.conf'. Указываем под кем будем запускать nginx:

    user www-data www-data;
    


    В контейнере server {} изменим/раскоментируем следующие строки:

    location / {
                root   /home/www;
                index  index.php index.html index.htm;
            }
    
            location ~ \.php$ {
                root           /home/www;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /home/www$fastcgi_script_name;
                include        fastcgi_params;
            }
    

    Перезапускаем nginx:

    /etc/init.d/nginx restart
    

    Создаем файл для теста '/home/www/info.php' следующего содержания:

    <?php
    phpinfo();
    ?>

    Проверяем в браузере — httр://ваш-адрес/info.php

    MYSQL


    Ставим:

    apt-get install mysql-server mysql-client
    

    В процессе будет предложено установить пароль рута, который можно всегда поменять так:

    mysqladmin -u root password tralala
    

    EACCELERATOR


    Печально, но eAccelerator вообще отсутствует в установочных пакетах Debian. Будем ставить руками. Предварительно нам потребуется установить библиотеку php-developer:

    apt-get install php5-dev

    Теперь скачиваем и устанавливаем eAccelerator:

    cd /tmp
    wget httр://bart.eaccelerator.net/source/0.9.5.3/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

    Создаем конфигурационный файл '/etc/php5/conf.d/eaccelerator.ini' следующего содержания:

    extension="eaccelerator.so"
    eaccelerator.shm_size="64"
    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="3600"
    eaccelerator.shm_prune_period="1800"
    eaccelerator.shm_only="0"
    eaccelerator.compress="1"
    eaccelerator.compress_level="9"
    

    Создаем папку для хранения файлов eAccelerator'а:

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

    Перезапускаем php:

    /etc/init.d/php-fastcgi restart
    

    MEMCACHE


    Устанавливаем:

    apt-get install memcached
    

    Перезапускаем php ещё разок:

    /etc/init.d/php-fastcgi restart
    


    Удачной работы!

    btw, кому интересно, здесь вы можете посмотреть тесты работы этого комплекса на vds: 480 MHz / 256 Mb и 1280 MHz / 1024 Mb.
    Метки:
    Поделиться публикацией
    Похожие публикации
    Комментарии 78
    • 0
      Спасибо за мануал.Скоро пригодится…
      • 0
        Было бы еще не плохо узнать как поставить и настроить ftp и mail сервер.
        Но все равно, спасибо))
        • 0
          А зачем они обычному сайту?
          Вы, наверное, хотите свой хостинг организовать. :)
          • 0
            Не, просто для нужд компании и для удобства.;)
            • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              Ставьте Pure-FTPd. Ставиться и конфигурируется легко, один раз настроил и забыл.
              ru.wikipedia.org/wiki/Pure-FTPd
              • 0
                что скажите насчет ProFTPd?
                я все колеблюсь между тремя серверами с которых начать обучение: PureFTPd ProFTPd i VsFTPd

                само собой что за время практики скорее всего я перепробую все три но всетки хочется начать с одного самого распространеного который поддерживает мускулы, тоесть виртуальных юзеров и тп и тд.

                спасибо.
                • 0
                  Может конечно мне не повезло или я такой глупый, но вирутуальных юзеров с указанием папок для каждого из них на ProFTPd я не смог. Наверное стоило хорошенько еще конфиг порыть, не знаю…

                  Мне не нужен был монтср, мне нужен был фтп сервер который я бы мог быстро развернуть. Pure-FTPd запустился в нужной мне конфигурации менее чем за час, большую часть этого времени я читал доки. Сервер с лихвой покрывает требование поддежки виртуальны юзеров, папок для них, дисковые квоты и степень использования канала вкупе с chroot. Поэтому для меня выбор очевиден. Поюзай ProFTPd, если получиться не очень, всегда можно развернуть Pure-FTPd )
              • +3
              • +5
                Такая установка это не debianway. Я бы так делать на боевом серваке не стал. Обслуживать очень неудобно.
                Лучше собирайте deb пакет.
                А если вам нужен полный контроль — ставьте Gentoo.
                Для sid 0.7.61 есть.
                • 0
                  sid — unstable
                  • +3
                    Взять src-пакет из sid'а и на его основе собрать свой пакет nginx'а — дело недолгое.
                    • –1
                      С таким же успехом можно свой пакет из исходников собрать, если требуется не разовая установка, а планируем пакет использовать часто.
                      • +1
                        Освойте Apt-Pinning.

                        Не учите дедетей с молоду криво ставить Debian, пожалуйста
                        • 0
                          Любой пакет необходимо будет поддерживать в актуальном состоянии. Понятия «разовая установка» не существует.

                          Пересобирать из исходников каждый раз при обнаружении remote buffer overflow / DoS PoC не вариант.
                      • +1
                        И? Что мешает взять пакет и собрать его у себя? Или просто установить его руками?
                        • –7
                          Во-первых, зачем мне пакет, если я один раз установил и забыл?

                          Во-вторых, прочитайте, пожалуйста, внимательно заголовок — там есть слово «для чайников».
                          • +4
                            я один раз установил и забыл?


                            А потом через месяц (два месяца, год) в установленном софте будет обнаружена уязвимость (возможно и не одна). И что дальше? Забудем и о них?

                            И как раз чайников нельзя учить «быстро и грязно». Пусть научатся правильно, а как сделать «грязно» потом сами разберутся (когда будут понимать, что делают и какие риски).
                            • +1
                              Вот для чайников вообще здорово было бы собрать пакет со всем этим и просто дать ссылки, а то это слакварь получается
                          • +2
                            sid — не слакварь и не LFS. make install в пакетном дистрибутиве — это непрофессионально и за это отрывают руки.
                            • 0
                              Да, вы могли бы для чайников собрать это все в .deb и выложить где-нибудь.
                          • +3
                            > Перво-наперво обновляем порты

                            Ага, порты. В Debian.

                            Лучше для начала ознакомиться хотя бы с терминологией, прежде чем советовать другим людям превращать свою систему в Slackware командой make install.
                            • –7
                              Чё вы к терминам придираетесь?
                              nginx из «портов» не подходит — собираем руками.
                              eccelerator’a нету — тоже собираем руками.
                              всё остальное ставится из портов.
                              полезная статься для новичков.
                              • +2
                                вы путаетесь в терминах,
                                «все остальное» ставиться в статье из пакетов
                                система пакетов это уже скомпилированное по, которое вы просто инсталлируете
                                система портов, это система получения исходников, последующая их компиляция и инсталляция
                                • 0
                                  тут irony нету, я знаю разницу между пакетами и портами
                                • +1
                                  Есть репозиторий где можно взять eaccelerator
                              • +7
                                Зачем слакифицировали Дебиан-то? Про анстейбл и експерементал репозитории не слышали?
                                • –4
                                  А вы из них что-нибудь ставить пробовали и тестировать под нагрузкой? Попробуйте для начала из sid поставить nginx 0.7.61 и php 5.2.10. И сделать так, чтобы сервер не выдавал при каждом втором запросе 50о-ую ошибку.
                                  • +2
                                    Да собсна, работает…
                                    • 0
                                      Может, поделитесь, как?
                                      Было бы любопытно узнать, что я делаю не так.
                                      • +5
                                        Да так же, только без плясок со сборкой и написанием инит-скриптов…
                                    • +2
                                      аналогично, отлично работает. Ни разу 500-ку не выдает.
                                      Точно так же — никаких бубнов и костылей, исключительно прямые руки и здравый смысл.
                                      • +1
                                        Под нагрузкой надо ставить улучшенный php-fpm
                                    • –1
                                      Не поверите. Сегодня только настраивал эту связку (ну +python) и наткнулся на этот мануал на вашем сайте. А вечером захожу почитать хабр — дежавю так и прет :)
                                      Мир тесен
                                      • 0
                                        Не думал, что мой сайт кто-то читает, кроме меня и пары друзей. :)
                                        • 0
                                          Так же как и я свой :)
                                          Как всегда, статья, писавшаяся для себя, оказалась полезна еще кому-то. Гугл-то читает.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                        • –1
                                          Я для себя этот вопрос решил просто — перешёл на FreeBSD, где в портах есть всё мне необходимое, не приходится возиться с установкой.
                                          • 0
                                            Да-да-да, у плохих танцоров всегда полы во всем виноваты (ну или выступающие части тела, кому как)
                                          • 0
                                            «пакетные» конфигурации еще кто-то должен сделать. А взял исходники php 5.3.0, накатил патч, загнал все воркеры с chroot и горя себе не знаю. А дожидаться покеда, когда самому собрать можно…
                                            • +1
                                              shock@shock:~$ cat /etc/apt/sources.list | tail -n 7 | head -n 3
                                               # PHP 5.3
                                               deb http://php53.dotdeb.org stable all
                                               deb-src http://php53.dotdeb.org stable all
                                              shock@shock:~$ php --version
                                               PHP 5.3.0-0.dotdeb.8 with Suhosin-Patch 0.9.7 (cli) (built: Aug 12 2009 18:11:27)
                                               Copyright © 1997-2009 The PHP Group
                                               Zend Engine v2.3.0, Copyright © 1998-2009 Zend Technologies

                                              Я уже больше месяца на стабильном php 5.3. Как думаете, знаю ли я себе горе?
                                              • 0
                                                И это php-fpm?
                                                • 0
                                                  точно, в вашем посте я не увидел упоминания о php-fpm.
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                            • –1
                                              Обидно — у самого написана подобная статья, ждал нормализации кармы… Правда вместо debian у меня ubuntu server, вместо nginx + fcgi у меня описывался nginx + apache, вместо eaccelerator xcache + самостоятельная сборка PHP с дополнительными модулями(причины есть, почему не подходит версия из репозитория).
                                              • +1
                                                А чего обидно-то? Опубликуйте!
                                                • 0
                                                  Ну просто треть статьи похожа.
                                                  Я тогда ее еще дополню парой интересных вещей, сразу 3 части сделаю видимо ;) Благо одна готова и вторая реализована, осталось снабдить комментариями.
                                                • 0
                                                  Мне было бы интересно почитать, как поставить nginx для статики на отдельный поддомен, когда apache работает с самим движком. Так что ­— ждём вашей статьи.
                                                  • 0
                                                    Вы не поверите, но эта часть занимает 2 строки у меня ) Запостил статью.
                                                    • 0
                                                      Кстати где? В списке статей не нашел.
                                                • 0
                                                  Ничего не понятно
                                                  • 0
                                                    PHP_FCGI_CHILDREN=5
                                                    ну очень малое число для нагруженного проекта. Он ведь не умеет плодить процессы… то есть максимум будет возможно обрабатывать только 5 одновременных РНР скриптов…

                                                    Кстати, под Дебиан поставить php-fpm единственный вариант — компилять вручную из сорцов порушив стройную систему deb-пакетов? deb-src есть какой нибудь (искал-ненашёл). Работаем по варианту примерно как в статье.
                                                    • 0
                                                      В дополнение… вот тут есть скрипт, который позволяет запускать пых-пых через соккеты:
                                                      till.klampaeckel.de/blog/archives/51-Ubuntu-nginx+php-cgi-on-a-socket.html
                                                      • +2
                                                        Два дополнения. В Lenny надо использовать aptitude вместо apt-get — в соответствии с рекомендациями. Второе — то что в статье рекомендовано — глупость, так как из стабильного работающего дистрибутива делается чёрт знает что. Проще было поставить sid и не мучаться, всего-то сделать что-то вроде «aptitude install nginx apache2 php-cgi» и это почти всё что надо.

                                                        Перл про старую версию в пакетах… Она работающая, в отличии от чуда которое собрали. Вообще хабр из интересного сайта с интересными статьями превращается в какое-то собрание легенд и дурных советов.

                                                        PS
                                                        В дискуссии ввязываться не буду, сразу минусуйте, можно не комментировать.
                                                        • –1
                                                          из-за любви aptitude к чистке пакетов — я его терпеть не могу. Однажды он удалил мне какой-то пакет со шрифтами «За ненадобностью». После этого в нескольких прогах, в том числе в Фоксе пропал текст (место под текст есть, словно он никуда не пропадал, а самого текста — нету). Пришлось смотреть, что же он там удалил, apt-get install <Имя пакета> и, о чудо, текст вернулся на место.
                                                        • 0
                                                          ну ёпрст. два дня назад ставил всю эту красоту на том же Debian, намудохался как конь. сейчас проверю все ли сделал как надо. в закладки.
                                                          • 0
                                                            А зачем новичкам nginx + php-cgi + mysql + eaccelerator? «Как построить АЭС для чайников»?
                                                            • 0
                                                              Новички разные бывают. У некоторых посещаемость по 5000 уников в сутки.

                                                              А статьи такие нужны. Иначе новички никогда «старичками» не станут :)
                                                              • +1
                                                                Администрирование и «уники» это разные вещи.
                                                                Особенно когда эти новички будут настраивать сервера не себе, а как фрилансеры. :)
                                                                К написанию подобных howto надо подходить ответственно и думать, что получится в итоге.
                                                            • 0
                                                              Перенесли бы в «системное администрирование» или в «серверную оптимизацию»… Это же не дебиан-специфично :)

                                                              p.s. а почему не php-fpm и зачем memcached на VDS 256mb памяти?
                                                              • 0
                                                                Перенес. php-fpm патч не ставил, т.к. разницы в производительности не заметил, а готовый пакет поставить проще.

                                                                memcached даже на 256mb дает прирост производительности, если приложение с ним грамотно работает. 64мб мемкэшу и 64мб еакселератору можно отдать.
                                                              • +1
                                                                не согласен.
                                                                • +1
                                                                  первый пост комом… shift-enter сабмит?
                                                                  ладно.
                                                                  проект с посещаемостью 10к-13к уников в сутки.
                                                                  debian sid
                                                                  ядро 2.6.30
                                                                  все пакеты — «изкаропки»
                                                                  nginx — spawn-cfgi — php — xcahce — mysql
                                                                  ничего не падает.
                                                                  правда, в отличие от автора, для коннекта к фцги-серверам ( их несколько — каждый под свой сайт )
                                                                  используются unix-sockets
                                                                  • 0
                                                                    CPU
                                                                    meow.kiev.ua/tmp/cpu-week.png
                                                                    ETH
                                                                    meow.kiev.ua/tmp/if_eth0-week.png
                                                                    LA
                                                                    meow.kiev.ua/tmp/load-week.png
                                                                    MYSQL
                                                                    meow.kiev.ua/tmp/mysql_queries-week.png
                                                                    • –1
                                                                      Осталось рассказать, на каком железе. ;)
                                                                      • 0
                                                                        спасибо доброжелателям за "-"

                                                                        старый ProLiant DL380 G3
                                                                        2*xeon 3.0
                                                                        4G DDR 266
                                                                        • +1
                                                                          но изначально ведь спор был не о железе, а о том, что можно ли использовать unstable в продакшн. или только stable.

                                                                  • 0
                                                                    > make
                                                                    > make install

                                                                    И вот опять…

                                                                    Читаем до просветления:
                                                                    linux.org.ru/wiki/en/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC
                                                                    • 0
                                                                      Снова php-fastcgi…
                                                                      Когда сервер начнет говорить 503 вместо контента, поднимаем назад апач и nginx используем по назначению? :)
                                                                      • 0
                                                                        собственно апач на нгинх поменял из-за того что первый вобще ничего на нагруженой машине отдать не мог — коннект принимает и ждет, ждет… пока не заканчивались все обработчики… клиенты ведь ломятся… а «залипшие» сокеты не освобождаются…
                                                                        лечше честно сказать 503 Ну_не_шмогла_я чем мурыжить.
                                                                        ИМХО — отдача контета больше 20-30 сек — уже нехорошо.
                                                                      • 0
                                                                        fastcgi_param script_FILENAME /home/www$fastcgi_script_name; исправьте на
                                                                        fastcgi_param script_FILENAME /home/www$fastcgi_script_name;
                                                                        а то не заработает
                                                                        • 0
                                                                          аа тут хитрость… хабр сам убрал в нижний регистр часть названия переменной. вообщем вместо script_filename надо писать бальшими букаваками )
                                                                        • 0
                                                                          еще следует добавить в /etc/sysctl.conf строчку:
                                                                          kernel.shmmax=67108864
                                                                          и выполнить:
                                                                          echo 67108864 > /proc/sys/kernel/shmmax

                                                                          во избежание возникновения:

                                                                          eAccelerator: Could not allocate 67108864 bytes, the maximum size the kernel allows is 33554432. Lower the amount of memory request or increase the limit in /proc/sys/kernel/shmmax.
                                                                          PHP Warning: [eAccelerator] Can not create shared memory area in Unknown on line 0
                                                                          PHP Fatal error: Unable to start eAccelerator module in Unknown on line 0
                                                                          • 0
                                                                            Вроде все собрал, настроил nginx, запустил php-cgi. А вместо любой странички *.php показывает " No input file specified". Статику всю нормально отображает. Не знаете, в чем может быть дело?
                                                                            • 0
                                                                              Есть поправка, когда настраиваем php через fastcgi то при прописывании localhost nginx его упорно не хотел видеть, нужно было исправить на 127.0.0.1 — и тогда настало мне счастье :) — если что людям на заметку.
                                                                              • 0
                                                                                eAccelerator вылетает всё равно с еррором:
                                                                                eAccelerator: shmmax should be at least 2MB
                                                                                PHP Warning: [eAccelerator] Can not create shared memory area in Unknown on line 0
                                                                                PHP Fatal error: Unable to start eAccelerator module in Unknown on line 0

                                                                                пробовал и добавлять в /etc/sysctl.conf kernel.shmmax=67108864, и echo 67108864 > /proc/sys/kernel/shmmax и /sbin/sysctl -w kernel.shmmax=67108864 и /sbin/sysctl -p
                                                                                всё равно одно и тоже. есть совет у умных человеков?
                                                                                • 0
                                                                                  при таком конфиге меня не заработало

                                                                                  location ~ \.php$ {
                                                                                  root /home/www;
                                                                                  fastcgi_pass 127.0.0.1:9000;
                                                                                  fastcgi_index index.php;
                                                                                  fastcgi_param script_FILENAME /home/www$fastcgi_script_name;
                                                                                  include fastcgi_params;
                                                                                  }

                                                                                  а вот так все ок.
                                                                                  fastcgi_param script_FILENAME /home/www$fastcgi_script_name;
                                                                                  include /etc/nginx/fastcgi_params;
                                                                                  • 0
                                                                                    Если кому будет нужно, то в freebsd проблема с последним портом eaccelerator решается так:
                                                                                    cp /usr/local/share/examples/eaccelerator/eaccelerator.ini /usr/local/etc/php/
                                                                                    /usr/local/etc/rc.d/php-fpm restart && ./nginx restart && ./apache22 restart

                                                                                    до того как стал использовать, получил ошибку
                                                                                    eAccelerator: shmmax should be at least 2MB
                                                                                    при этом умер php-fpm и apache c mod_php.

                                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.