Установка (Обноление) Apache с PHP
Практическое руководство (инструкция) по установке (обновлению) Апача и ПХП
© 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 натолкнула на мысль, что проблема в том, что полуночные (а дело было в полночь) регламентные процессы на сервере держали Апач. Через десять минут проблема пропала сама собой.
Ссылки по теме
- httpd.apache.org/download.cgi - последние версии Апача.
- php.net - последние версии PHP.
- opennet.ru/openforum/vsluhforumID8/1556.html - о проблеме с логами.
- cisco.opennet.ru/openforum/vsluhforumID9/1329.html - о проблеме с занятостью файла httpd.
- о загрузке модулей в Апач