Re[6]: Балансировка нагрузки в proxy
L0rda
l0rda at l0rda.biz
Thu Jan 13 16:59:43 MSK 2005
Здравствуйте, Eugene.
Вы писали 13 января 2005 г., 16:34:41:
> Здравствуйте, L0rda.
> Интересная фича.
> Можно чуть подробнее как вы это так запустили?
> Можно ввиде конфигов/ссылок.
> Спасибо.
>> У меня сейчас на сервере стоит apache+fastcgi+php(as fastcgi)+suexec
>> suexec немного пропатчен, в результате чего php работает как fastcgi
>> но с suexec. Производительность почти не теряется, безопасность
>> повышается, возможно дать каждому пользователю свой конфиг php.ini, гибко
>> настроив все что нужно.
Извиняюсь за оффтопик.
# Сборка апача на федоре с mod_geoip,suexec,fastcgi,php
mkdir -p ~/pack; cd ~/pack
wget http://de.php.net/distributions/php-4.3.10.tar.gz -O php-4.3.10.tar.gz
wget http://www.apache.org/dist/httpd/apache_1.3.33.tar.gz -O apache_1.3.33.tar.gz
wget http://www.maxmind.com/download/geoip/api/mod_geoip/mod_geoip_1.2.6.tar.gz -O mod_geoip_1.2.6.tar.gz
wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz -O mod_fastcgi-2.4.2.tar.gz
rm -rf mod_geoip_1.2.[0-9]
rm -rf apache_1.3.[0-9][0-9]
rm -rf php-4.[0-9].[0-9][0-9]?
tar xzf apache_1.3.33.tar.gz
tar xzf php-4.3.10.tar.gz
tar xzf mod_geoip_1.2.6.tar.gz
tar zxf mod_fastcgi-2.4.2.tar.gz
mkdir -p /usr/local/mysql
ln -s /usr/lib/mysql/ /usr/local/mysql/lib
ln -s /usr/include/mysql/ /usr/local/mysql/include
cd apache_1.3.33
#
# редактируем файл src/support/suexec.c
# 1. добавляем нужные переменные в safe_env_list
# для меня это PHPRC и GEOIP_
# 2. не знаю сейчас нужно ли это, но когда PHP стоял как
# CGI(просто cgi), то необходимо было убрать строки,
# следующие после комментария
# ╚Error out if the target name/group is different from
# the name/group of the cwd or the program╩ до следующего комментария.
# (http://ptitov.ru/articles/2002/10/06.html)
#
make clean
CFLAGS="-Wall -DHARD_SERVER_LIMIT=4096" ./configure \
--prefix=/www \
--add-module=../mod_geoip_1.2.6/mod_geoip.c
# CGI php
cd ../php-4.3.10
make clean
./configure \
--prefix=/www/php \
--enable-sysvsem \
--enable-sysvshm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--with-zlib-dir=/usr/lib \
--with-ttf=/usr/lib \
--with-freetype-dir=/usr/lib \
--enable-gd-native-ttf \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-mysql-sock=/tmp/mysql.sock \
--enable-force-cgi-redirect
make
make install
# FastCGI
cd ../php-4.3.10
make clean
./configure \
--prefix=/www/fastphp \
--enable-sysvsem \
--enable-sysvshm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--with-zlib-dir=/usr/lib \
--with-ttf=/usr/lib \
--with-freetype-dir=/usr/lib \
--with-fastcgi=../mod_fastcgi-2.4.2 \
--enable-gd-native-ttf \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-mysql-sock=/tmp/mysql.sock \
--enable-force-cgi-redirect \
--enable-fastcgi
make
make install
# Apache
adduser -u 8000 www
cd ../apache_1.3.33
CFLAGS="-Wall -DHARD_SERVER_LIMIT=4096 -DNO_SUEXEC_FOR_AP_USER_N_GROUP=1" ./configure \
--prefix=/www \
--activate-module=src/modules/extra/mod_geoip.o \
--disable-module=actions \
--disable-module=autoindex \
--disable-module=imap \
--disable-module=userdir \
--disable-module=asis \
--enable-module=negotiation \
--enable-module=vhost_alias \
--enable-module=env \
--enable-module=cgi \
--enable-module=so \
--enable-module=rewrite \
--enable-module=actions \
--enable-suexec \
--suexec-caller=www \
--suexec-docroot=/ \
--suexec-logfile=/www/logs/suexec.log \
--activate-module=src/modules/fastcgi/libfastcgi.a
make
make install
#В конфиге апача:
<IfModule mod_fastcgi.c>
FastCgiSuexec On
FastCgiServer /www/fastphp/bin/phps
ScriptAlias /fast-php/ "/www/fastphp/bin/"
<Directory "/www/fastphp/bin/">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
RemoveHandler .php3 .php4 .phtml .php
AddHandler php-fastcgi .php3 .php4 .phtml .php
Action php-fastcgi /fast-php/phps
AddType application/x-httpd-php .php3 .php4 .phtml .php
</IfModule>
#Содержимое /www/fastphp/bin/phps:
#!/bin/sh
PHP_FCGI_CHILDREN=8
export PHP_FCGI_CHILDREN
exec /www/fastphp/bin/php
#############
для того чтобы прописать отдельный php.ini для вхоста прописываем в
нем путь к нему
SetEnv PHPRC /another/php/ini/dir
Вроде все должно быть интуитивно понятно.
Если есть какие-то замечания/предложения, пишите мне в почту.
--
С уважением,
L0rda mailto:l0rda at l0rda.biz
More information about the nginx-ru
mailing list