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