Пользователь
0,0
рейтинг
20 августа 2009 в 15:35

Администрирование → Установка для «чайников»: 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.
Александръ @skachko
карма
82,7
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (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.

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