Dklab_Realplexor для Apache и 2 IP

Допустим у нас есть 2 сетевые карты, обе видны в интернете. Переводим все сайты в DNS на IP 85.233.100.1
85.233.100.1
85.233.200.2
Создаём в DNS chat.localhost.com и указываем IP 85.233.200.2

Настройка Apache

Оставнавливаем Apache
# /etc/init.d/apache2 stop


Идем в директорию /etc/apache2/ и меняем в фаиле ports.conf строчку
Listen 80 на Listen 85.233.100.1:80 если её нет то добавляем.

NameVirtualHost 85.233.100.1:80

Чтобы Apache слушал порт 80 на итрерфейсе сетевой карты 85.233.100.1 а другой адрес не использовался.

В директории /etc/apache2/sites-available/

Создаём фаил localhost.com
Содержание:

<VirtualHost localhost.com:80>
   
    # Осн. настройки домена
    ServerName localhost.com
    ServerAlias www.localhost.com
    DocumentRoot /var/www/localhost.com/
    ServerAdmin himic@himc.ru
    DirectoryIndex index.php index.html

    # Пишем логи
    #LogLevel warn
    # Так Также создаём директорию и фаил, иначе закоментируем данные строчки
    #ErrorLog     /var/log/localhost.com/apache_error.log 
    #CustomLog /var/log/localhost.com/apache_access.log combined 

</VirtualHost>


Создаём символическую ссылку
# ln -s /etc/apache2/sites-available/localhost.com /etc/apache2/sites-enabled/localhost.com


Создаём директорию:
/var/www/localhost.com/

Проверка Apache


Проверяем правильность настроек конфигурации
# apache2 -t
Syntax OK


Не должно быть ошибок

Проверяем настройку Apache


Запускаем сервис Apache2

# /etc/init.d/apache2 start


В директории /var/www/localhost.com/ создаём фаил index.php
С содержанием
<?=phpinfo();?>

Заходим на localhost.com Должно отобразиться phpinfo() иначе localhost.com/index.php

Если не отобразилось то ищем логи Apache

/var/log/apache2/access.log
/var/log/apache2/error.log

Также можно смотреть:
/var/log/messages
/var/log/syslog


Проверка нужных команд


Для начала проверяем существование необходимых команд:
chkconfig
pear
php5-cgi или у кого php5
php5-dev
phpize
php-pear PEAR
dpkg-dev
re2c
gcc и g++


Установка chkconfig — его использовал для запуска сервисов
# apt-get install chkconfig

В Debian есть update-rc.d но я им не пользовался.
Вместе с chkconfig будет установлен insserv, если не поставиться автоматичести как зависимость то:
# apt-get install insserv


До установки PEAR и pcntl нам потребуются re2c dpkg-source dpkg-dev

Установка dpkg-source идет вместе с dpkg-dev
# apt-get install dpkg-dev


Установка re2c
# apt-get install re2c


Установка php5-dev
# apt-get install  php5-dev


Установка PEAR
# apt-get install php-pear

Установка gcc и g++
# apt-get install libc6-dev g++


Проверяем присутствие модулей PHP pcntl.so и sockets
Командами
# php5 -m
# php5-cgi -m
# php -m


Также при выводе команды не должно быть ошибок.

Ставим pcntl

# cd /opt/
# apt-get source php5
далее идем в папку с нашим модулем –
# cd php5*/ext/pcntl
и пробуем поставить отдельно :
#phpize
#./configure
#make
#make test 
# make install


Повторяем команды:
# php5 -m
# php5-cgi -m
# php -m

Если модуль pcntl отсутствует в списке то делаем:
# echo "extension=pcntl.so" > /etc/php5/conf.d/pcntl.ini


Возможно:
Если пишет: PHP Warning:  Module 'pcntl' already loaded in Unknown on line 0
Что означает что модуль pcntl подгружен 2 раза.
То немного ручками правим конфиги PHP с подключенным модулем pcntl.so 
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini
/etc/php5/cli/php.ini
/etc/php5/conf.d/php.ini

если в этих фаилах подключен модуль, то удаляем /etc/php5/conf.d/pcntl.ini возможно вы ошибочно его подключили 2 раза.


в EV.pm на 82 строчке использует модуль: common::sense

Устанавливаем common::sense
# perl -MCPAN -e "install common::sense"


Устанавливаем libevent2 из пакетов

# cd /opt
# wget http://ftp.ru.debian.org/debian/pool/main/libe/libevent/libevent2_2.0.3-alpha-1_i386.deb
# dpkg -i libevent2_2.0.3-alpha-1_i386.deb


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

# wget http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/EV-3.9.tar.gz
# tar xf EV-3.9.tar.gz
# cd EV*
# perl Makefile.PL
# make
# make test
# make install


Настройка dklab_realplexor


Скачиваем, переходим в каталог с dklab_realplexor
# cd /opt
# wget http://github.com/DmitryKoterov/dklab_realplexor/tarball/master
# tar zxf *realplexor*.tar.gz
# mv *realplexor*/ dklab_realplexor


Создаём символическую ссылку конфигурационного фаила в /etc/dklab_realplexor.conf.
Чтобы при зауске сервиса в ручную и автоматически подгружался один и тотже конфигурационный фаил.
# ln -s /opt/dklab_realplexor/dklab_realplexor.conf /etc/dklab_realplexor.conf


Меняем значения в фаиле: /etc/dklab_realplexor.conf

$CONFIG{WAIT_ADDR} = [ '0.0.0.0:80' ]; # IP address of chat.localhost.com

0.0.0.0:8088 на адрес второй сетевой карты 85.233.100.1:80

$CONFIG{WAIT_ADDR} = [ '85.233.100.1:80' ]; # IP address of chat.localhost.com

Теперь при обращении на chat.localhost.com мы будем попадать в Realplexor

IN_ADDR => ['127.0.0.1:10010']
Оставляем как есть: 127.0.0.1:10010

Проверяем работоспособность:
#cd /opt/dklab_realplexor/
# ./dklab_realplexor.pl


или с подргужением другого конфигурационного фаила
[code]# ./dklab_realplexor.pl /etc/dklab_realplexor.conf[/code]

Недолжно выводиться ошибок типа:
Error: EV library is not found in your system:
	http://search.cpan.org/~mlehmann/EV-3.9/EV.pm
	You must install EV, e.g.:
	 yum install gcc
	 perl -MCPAN -e install EV
	 apt-get install gcc; 
	 perl -MCPAN -e install EV


Либо других ошибок.
  • 0

Нет комментариев