© 2006 Игорь Гузей (Guzei.com)
Это не точная и окончательная инструкция к действию использующая правильные термины и оптимальные варианты. Это скорее лог текущей проблемы. Буду благодарен за любые замечания.
Практика одного обновления Апача с ПХП с учётом некоторых нюансов.
В какой-то момент потребовался модуль rewrite и оказалось, что он не ставится по-умолчанию. Так же лог-файл мусорился неприятными сообщениями о проблемах со шрфитами. Решив эти проблемы решил написать пошаговую инструкцию установки веб-сервара Apache с PHP, чтобы потом самому ей и пользоваться :).
Да, предполагается, что MySQL уже установлен.
Какие проблемы можно обойти:
1) В error_log пишутся строки:
^GFile 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2)
^GCharacter set '#14' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file
в огромном количестве.
Это может происходить после установки cp1251 как страницы по умолчанию в файле /etc/my.cnf
default-character-set=cp1251
при неправильной конфигурации PHP до этого.
Решение см. на 10-м шаге.
2) Могут не загружаться модули.
По двум причинам. Нет нужного модуля или нет модуля, который загружает модули :).
Решение см. на 15-м шаге.
Требуется творческий подход к нижеприведённым командам по части путей и версий.
1 # cd /usr/dist - Место для дистрибутивов на сервере.
2 # wget http://apache.rinet.ru/dist/httpd/apache_1.3.37.tar.gz - Забираем последнюю версию Апача.
3 # gunzip -c apache_1.3.37.tar.gz | tar xf - - Распаковываем.
4 # cd apache_1.3.37
5 # ./configure - Предварительная конфигурация.
6 # cd ..
7 # wget http://ru.php.net/get/php-4.4.4.tar.gz/from/this/mirror - Забираем последнюю версию PHP.
8 # gunzip -c php-4.4.4.tar.gz | tar xf -
9 # cd /usr/dist/php-4.4.4/ext/mysql/libmysql
10 # joe my_config.h - Решение проблемы номер 1.
#define SHAREDIR "NONEXISTENT" - Эту строку удаляем.
#define SHAREDIR "/usr/local/share/mysql/" - Эту строку пишем. Тут решётка это не комментарий. Проверьте Ваш путь к базе!
11 # cd /usr/dist/php-4.4.4
12 # ./configure - Конфигурируем PHP
--with-mysql со встроенной поддрежкой MySQL
--with-apache=/usr/dist/apache_1.3.37 и только что сконфигурированным Апачем.
--enable-memory-limit
13 # make install
14 # cd /usr/dist/apache_1.3.37
15 # ./configure - Окончательная конфигурация Апача
--prefix=/www с указанием дирректории для него,
--activate-module=src/modules/php4/libphp4.a модуля PHP
--enable-module=so so требуется для загрузки модулей через файл конфигурации апача.
16 # make
- Сравниваем подключённые модули в старой и новой версии.
Это на случай апгрейда. Чтобы не забыть какой-нибудь модуль :).
17 # ./src/httpd -l - Список модулей только что сделанного Апача.
18 # /www/bin/httpd -l - Список модулей работающего Апача.
19 # cd /usr/dist/apache_1.3.37/src/modules/standard
20 # apxs -c mod_rewrite.c - Создаём модуль rewrite для последующей загрузки.
Аналогично и другие, не ставящиеся по-умолчанию.
21 # cp mod_rewrite.so /www/libexec/ - Копируем модуль на законное место.
22 # joe /www/conf/httpd.conf
LoadModule rewrite_module libexec/mod_rewrite.so - Команда загрузки модуля.
23 # /www/bin/apachectl configtest - На всякий пожарный.
24 # cd /.../logs/ - Подчищаём общественные логи.
25 # rm *log
26 # /www/bin/apachectl stop - Останавливаем старый Апач.
27 # cp /usr/dist/apache_1.3.37/src/httpd /www/bin/ - Устанавливаем новый апач. Возможен нюанс Text file busy см. ниже.
28 # /www/bin/apachectl start - Стартуем новый.
----------------------------------------------------------------------------------------------------
На попытку копировать апач:
# cp /usr/dist/apache_1.3.37/src/httpd /www/bin/
получил:
cp: /www/bin/httpd: Text file busy
ветка:
http://cisco.opennet.ru/openforum/vsluhforumID9/1329.html
натолкнула на мысль, что проблема в том, что полуночные (а дело было в полночь) регламентные процессы на сервере держали Апач.
Через десять минут проблема пропала сама собой.