G Статьи

Установка (Обноление) 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
  натолкнула на мысль, что проблема в том, что полуночные (а дело было в полночь) регламентные процессы на сервере держали Апач.
  Через десять минут проблема пропала сама собой.

Ссылки по теме