Настройка Web-сервера
Для работы web-сервера будем использовать связку nginx + php-fpm
Перед сборкой подтягиваем необходимые пакеты:
root@otp01:/tmp# apt-get install bzip2 gcc libxml2-dev libcurl4-openssl-dev libz-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libmcrypt-dev libmm-dev libpcre3-dev libperl-dev
nginx
Скачиваем исходный код с сайта Игоря Сысоева, распаковываем и конфигурируем:
./configure --prefix=/usr/local/nginx-0.7.61 \
--with-pcre \
--with-rtsig_module \
--with-select_module \
--with-poll_module \
--with-http_sub_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_perl_module
После сборки и установки создадим конфигурацию для logrotate
/var/log/nginx/*.log {
compress
delaycompress
daily
dateext
missingok
notifempty
rotate 14
sharedscripts
postrotate
test ! -f /usr/local/nginx-0.7.61/logs/nginx.pid || kill -USR1 `cat /usr/local/nginx-0.7.61/logs/nginx.pid`
endscript
}
Для перехвата кодов HTTP-ошибок от FastCGI-бэкенда в секцию http конфигурационного файла добавляем
fastcgi_intercept_errors on;
При использовании awstats может выясниться, что формат лога невозможно распарсить с помощью имеющихся в awstats.conf настроек. Для этого перед началом реальной работы сервера вводим дополнительный формат логирования:
log_format main2 '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
Теперь awstats сможет его разбирать с конфигурационным форматом
LogFormat='%host - %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %otherquot'
php
Собираем php, предварительно наложив патч php-fpm
./configure --prefix=/usr/local/php-5.3.0-fpm \
--enable-fastcgi \
--enable-fpm \
--disable-ipv6 \
--with-zlib \
--with-zlib-dir \
--enable-bcmath \
--with-curl \
--with-curlwrappers \
--disable-dom \
--enable-ftp \
--enable-mbstring \
--with-gd \
--with-jpeg-dir=/usr \
--with-xpm-dir=/usr \
--enable-gd-native-ttf \
--with-ttf \
--with-freetype-dir=/usr \
--with-mhash \
--with-mysql \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--disable-reflection \
--with-mm \
--with-mcrypt \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--enable-libxml \
--disable-simplexml \
--disable-xmlreader \
--disable-xmlwriter \
--with-pear \
--with-zend-vm
При сборке php версии 5.2.10 могут возникнуть проблемы при инсталляции PEAR. В этом случае в скрипте конфигурации заменяем --with-pear на --without-pear и проводим сборку без PEAR, после чего устанавливаем его вручную:
andrew@otp01:/tmp$ wget http://pear.php.net/go-pear
andrew@otp01:/tmp$ /usr/local/php-5.2.10-fpm/bin/php go-pear
...
1. Installation prefix ($prefix) : /usr/local/php-5.2.10-fpm
2. Temporary files directory : /tmp/php-pear
3. Binaries directory : $prefix/bin
4. PHP code directory ($php_dir) : /usr/local/php-5.2.10-fpm/lib/php
5. Documentation base directory : $php_dir/docs
6. Data base directory : $php_dir/data
7. Tests base directory : $php_dir/tests
...
Далее инсталлятор всё сделает автоматически или задаст простые вопросы.
|
Здесь тоже, как и для nginx, нужна конфигурация logrotate
/var/log/php/error.log /usr/local/php-5.3.0-fpm/logs/*.log {
compress
delaycompress
daily
dateext
missingok
notifempty
rotate 14
sharedscripts
postrotate
test ! -f /usr/local/php-5.3.0-fpm/logs/php-fpm.pid || kill -USR1 `cat /usr/local/php-5.3.0-fpm/logs/php-fpm.pid`
endscript
}
APC и memcache
Для работы под нагрузкой понадобятся APC и драйвер memcache
andrew@otp01:/var/tmp/memcache-2.2.5$ /usr/local/php-5.2.9-fpm/bin/phpize
andrew@otp01:/var/tmp/memcache-2.2.5$ ./configure --help
andrew@otp01:/var/tmp/APC-3.1.2$ /usr/local/php-5.2.9-fpm/bin/phpize
andrew@otp01:/var/tmp/APC-3.1.2$ ./configure --enable-apc-mmap --with-php-config=/usr/local/php-5.2.9-fpm/bin/php-config
Приведённый выше материал изложен для версий
nginx-0.7.61.tar.gz
php-5.3.0.tar.gz
php-5.2.9-fpm-0.5.10.diff.gz
APC-3.1.2.tgz
memcache-2.2.5.tgz
разработка, php, nginx, debian |