(Notes) UNIX (2004 год)

Web-сервер

К Apache существует множество разнообразных трудносовместимых приблуд, и на этой страничке я расскажу только об одной из них - PHP3.
Несмотря на то, что на сервере FreeBDS 5.1 установлены все последние версии портов, напрямую из порта установить PHP3 не получится:

# pwd ;make install
/usr/ports/www/mod_php3
===> mod_php3-3.0.18_4 is marked as broken: Conflicting dependencies (mysql 3.x and 4.x).

Как же обойти это ограничение на установку PHP3?

Для начала надо осознать, что PHP3 в принципе можно установить во FreeBSD тремя путями: Далее на этой станичке будет рассмотрен именно третий вариант установки.


ШАГ1. Поскольку из порта PHP установить не получается, то с http://www.php.net/releases.php сгружаем PHP 3.0.18 Source Code. Затем распаковываем php-3.0.18.tar.gz в подходящую директорию, скажем в /usr/ports/www/.php-3.0.18.
Мы не будем касаться на этой страничке отдельного вопроса правильного конфигурирования PHP3, и всевозможных приблуд к нему типа PHPAccelerator, скажу лишь что файл PHP.INI формируется или параметрами, задаваемыми на следующем шаге или в диагоге:



ШАГ2. Для начала изготавливаем обьектный файл PHP3, пригодный для линковки с Apache. Для этого запускаем вот такой скрипт MY_CONFIG_STATIC:

#!/bin/sh
cd /usr/ports/www/.php-3.0.18
./configure --with-apache=../apache13/work/apache_1.3.33 --enable-track-vars

В результате работы которого получается вот такой журнал.
После этого в каталоге /usr/ports/www/.php-3.0.18 выдаем

make
make install

make должен выдать вот такой журнал, а make install - вот такой.
И наконец, главное, в результате этого этапа в каталоге /usr/ports/www/apache13/work/apache_1.3.33/src/modules появляется подкаталог php3 с вот таким содержимым:

# pwd; ls -l
/usr/ports/www/apache13/work/apache_1.3.33/src/modules/php3
total 5608
-rw-r--r-- 1 root wheel 252 Dec 7 13:02 Makefile.libdir
-rw-r--r-- 1 root wheel 2431 Dec 7 13:02 Makefile.tmpl
-rw-r--r-- 1 root wheel 5677576 Dec 7 13:02 libmodphp3.a
-rw-r--r-- 1 root wheel 207 Dec 7 13:02 libphp3.module
-rw-r--r-- 1 root wheel 22613 Dec 7 13:02 mod_php3.c
-rw-r--r-- 1 root wheel 12 Dec 7 13:02 mod_php3.exp
-rw-r--r-- 1 root wheel 3750 Dec 7 13:02 mod_php3.h
-rw-r--r-- 1 root wheel 29 Dec 7 13:02 php_version.h


ШАГ3. Теперь выполняем сборку Apache. Переходим в каталог /usr/ports/www/apache13/work/apache_1.3.33 и выполняем в нем скрипт MY_CONFIGURE:

#!/bin/sh
cd /usr/ports/www/apache13/work/apache_1.3.33
./configure --prefix=/usr/local --activate-module=src/modules/php3/libphp3.a --verbose \
--enable-module=vhost_alias \
--enable-module=so \
> MY_CONFIGURE.LOG
make > MY_MAKE.LOG

При этом журнал MY_CONFIGURE.LOG должен выглядеть вот так, а MY_MAKE.LOG - вот так.

Изготовленную конфигурацию Apache сохраняем командой config_status. Эта команда должна выдать вот такой журнал, который опять же подтверждает, что PHP3 прилинковалось нормально. Текущая конфигурация при этом будет записана в файл configuretion.apaci, который должен в нашем случае выглядеть вот так.
Обратите внимание как изменился каталог с PHP3 - в нем добавились долгожданные Makefile, mod_php3.o и libphp3.a:

# pwd;ll
/usr/ports/www/apache13/work/apache_1.3.33/src/modules/php3
total 11208
-rw-r--r-- 1 root wheel 3973 Dec 8 13:29 Makefile
-rw-r--r-- 1 root wheel 252 Dec 8 13:10 Makefile.libdir
-rw-r--r-- 1 root wheel 2431 Dec 8 13:10 Makefile.tmpl
-rw-r--r-- 1 root wheel 5677576 Dec 8 13:10 libmodphp3.a
-rw-r--r-- 1 root wheel 5689130 Dec 8 13:21 libphp3.a
-rw-r--r-- 1 root wheel 207 Dec 8 13:10 libphp3.module
-rw-r--r-- 1 root wheel 22613 Dec 8 13:10 mod_php3.c
-rw-r--r-- 1 root wheel 12 Dec 8 13:10 mod_php3.exp
-rw-r--r-- 1 root wheel 3750 Dec 8 13:10 mod_php3.h
-rw-r--r-- 1 root wheel 11196 Dec 8 13:21 mod_php3.o
-rw-r--r-- 1 root wheel 29 Dec 8 13:10 php_version.h


ШАГ4. Переписываем собранный Apache в его рабочие директории командой

make install

При этом в журнале можно посмотреть - какие именно будут использованы рабочие каталоги и где именно находится HTTPD.CONF.
Дело в том, что если выполнить потом установку какого-нибудь порта типа www/mod_php4, то будет создана другая (затирающая данную) установка с другим httpd.conf.

Чтобы этого не происходило (и установка с прилинкованным PHP3 происходила в стандартные директории) надо подбирать префиксы в команде .configure, которых существует много:

# FreeBSD layout...
    prefix: /usr/local
    exec_prefix: $prefix
    bindir: $exec_prefix/bin
    sbindir: $exec_prefix/sbin
    libexecdir: $exec_prefix/libexec/apache
    mandir: $prefix/man
    sysconfdir: $prefix/etc/apache
    datadir: $prefix/www
    iconsdir: $datadir/icons
    htdocsdir: $datadir/data
    manualdir: $prefix/share/doc/apache
    cgidir: $datadir/cgi-bin
    includedir: $prefix/include/apache
    localstatedir: /var
    runtimedir: $localstatedir/run
    logfiledir: $localstatedir/log
    proxycachedir: $datadir/proxy


Но поскольку в моих версиях PHP4 и PHP3 в одной конфигурации Apache не живут - поэтому меня устраило два разных Apache в разных каталогах - один с поддержкой PHP3, другой с поддержкой PHP4.

ШАГ5. Для нужного сайта добавляем в HTTPD.CONF строчки вызова PHP3:

AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .php3s

ШАГ6. Наконец-то стартуем apache:

apachectl start

и наслаждаемся проделанной работой:

# httpd -l
Compiled-in modules:
    http_core.c
    mod_env.c
    mod_log_config.c
    mod_mime.c
    mod_negotiation.c
    mod_status.c
    mod_include.c
    mod_autoindex.c
    mod_dir.c
    mod_cgi.c
    mod_asis.c
    mod_imap.c
    mod_actions.c
    mod_userdir.c
    mod_alias.c
    mod_access.c
    mod_auth.c
    mod_setenvif.c
    mod_php3.c
suexec: disabled; invalid wrapper /usr/local/bin/suexec

ШАГ7. (необязательный) Я бы настоятельно рекомендовал установить модули mod_info и mod_status, особенно в той ситуации, когда Апачей существует несколько. Так очень удобно смотреть текущую действующую конфигурацию Apache а также конкретные, заданные каждому модулю директивы:


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

Дополнительные сведения.


Комментарии к этой страничке ( )
ссылка на эту страничку: http://www.vb-net.ru/hosting/php3/index.html
<Назад>  <Назад>  <На главную>  <В раздел ASP>  <В раздел NET>  <В раздел SQL>  <В раздел Разное>  <Написать автору>  < Поблагодарить>