Итак, нам необходимо организовать http - сервер с возможностью выполнения
скриптов и доступа из скриптов до какого-либо SQL сервера. В качестве
http-сервера обячно выбирают apache, как наиболее продвинутый и развиваемый
сервер для юникс-платформ. Для выполнения скриптов тоже есть куча версий языков
(начиная от бэйсика и заканчивая явой), я выбрал php, как наиболее удобный и
красивый для _меня_ в плане написаня программ. Ну а выбор SQL серверов для вас
огромен. Я выбрал MySQL - так как для моих целей он вполне подходит (нагрузки у
меня огромной не предвидится ;-)) да и бесплатный он, в отличие от того-же
Oracle ;-). Итак, начнем делать связку apache+php+MySQL. Для этого нам
необходимо иметь сконфигуренное ядро линукса (прграммам требуется некоторые
файлы оттуда), Perl и собственно сами программы. Найти вы их можете либо у меня,
либо по поисковикам (apache*, php*, mysql*).
Скачал и развернул MySQL. К
сожалению, последняя версия MySQL у меня не захотела компилиться и собираться,
поэтому я взял mysql-3.21.33b.
./configure --with-charset=koi8_ru
Сконфигурил MySQL с поддержкой русского языка в кодировке КОИ-8 по умолчанию
(там есть много кодировок, посмотрите по configure --help). После создания всех
конфигов, я сделал make;make install и пока на этом успокоился.
Скачал (с
apache.lexa.ru) и развернул apache_1.3.4rusPL28.6. В этом файле уже сразу
пропатчены нужные файлы для поддержки русского языка. Если же вы предпочитаете
патчить исходные версии - то посмотрите на INSTALL.rus ;-). Ниже я его просто
вставлю.Да, и еще один довод в пользу именно именно этой версии - тут наконец-то
сделана нормальная перекодировка и при соответствующих настройках русские
странички, отданные этим сервером, тепрь нормально оседают в кешах. В старых
версиях приходилось писать скрипты. За подробностями обращайтесь на
apache.lexa.ru в раздел FAQ ;-).
1) скачать дистрибутивный Apache less INSTALL; less README.configure
./configure --help ./configure ...options make make install
2) установка из комплекта 'дистрибутивный Apache +
patches_n.n.n.rusPLNN.M'
a) распаковать дистрибутивный Apache:
tar xzvf apache_1.3.0.tar.gz
tar xzvf ../patches_1.3.0rusPLNN.M.tar.gzc) прочитать этот файл
./configure --with-mysql --with-apache=../apache_1.3.4rusPL28.6 --with-mod_charset
Этой командой мы конфигурируем PHP для работы с MySQL (кстати, никто не мешает сконфигурить его для работы с несколькими разными SQL серверами), указываем каталог с апачей и говорим конфигурялке, что апача у нас русская.
make make install
Все, PHP у нас установлен .... Теперь снова идем в каталог с апачей ;-).
./configure --activate-module=src/modules/php3/libphp3.a
Этим мы подключаем модуль PHP к апаче. Теперь спокойно говорим make. Апач начинает собираться. После сборки проверьте, на месте ли модули, зайдите в каталог src, скажите ./httpd -l
............. mod_charset.c ............. mod_php3.c .............
Обратите внимание .... в этом списке обязательно должны быть эти модули.
Первый обеспечивает автоматическую перекодировку, второй как раз php ;-). Потом
make install - апач поставится в /usr/local/apache.
Опять оставим в покое
апач из каталога с исходниками php возьмем файл php3.ini-dist и положим его в
каталог /usr/local/lib/php3.ini. Теперь его можно посмотреть и отредактировать
(Единственное, что я там сделал, так отконфигурировал порты и пользователей по
умолчанию для MySQL).
Теперь пришла пора окончательной настройки индейца
.... идем в каталог /usr/local/apache/conf и начинаем править файлик httpd.conf.
Здесь я приведу, что я правил в оригинальном файле.
Я расскомментировал
строчку
AddType application/x-httpd-php3 .phtml
что бы phtml файлы опозновались и работали нормально
Я заккоментировал
строчку Port 80 и расскомментировал следующие строчки
Listen 80 Listen 8100 Listen 8101 Listen 8102 Listen 8103 Listen 8104 CharsetByPort koi8-r 8100 CharsetByPort windows-1251 8101 CharsetByPort ibm866 8102 CharsetByPort iso-8859-5 8103 CharsetByPort x-mac-cyrillic 8104
Этим я разрешил серверу сидеть на 81* портах и жестко привязал перекодировку
к соответствующим портам.
Теперь расскомментируем следующие строчки
# "AutoRedirect" setup # CharsetAutoRedirect koi8-r :8100 CharsetAutoRedirect windows-1251 :8101 CharsetAutoRedirect ibm866 :8102 CharsetAutoRedirect iso-8859-5 :8103 CharsetAutoRedirect x-mac-cyrillic :8104 CharsetNormalizeTypes image/ application/ video/ audio/ CharsetNormalizeToURL :80 200
Этими строчками мы как раз обеспечиваем правильную переадресацию и
перекодировку, да так, что бы перекодированные странички оседали в кэше. ;-) ну
заодно и кнопочки Back на формах в браузерах будут работать ;-) (будет
сохраняться информация в формах).
Затем я создал /etc/rc.d/rc.httpd. По
умолчанию этот файлик в Slackware вызывается из rc.M (если у него стоит бит
выполняемости) . В нем записана следующия строчка
/usr/local/apache/bin/apachectl start
Этот скрипт пускает httpd сервер, соответственно stop его останавливает ;-)
Теперь заставим так же по умолчанию пускаться MySQL. Сначала надо установить
базы по умолчанию, в которых MySQL держит все свои настройки. Заходим в каталог
с дистрибутивом, затем в каталог scripts, оттуда запускаем mysql_install_db ,
создадутся нужные каталоги, перепишутся нужные файлы и запустится MySQL сервер
;-))
Теперь надо придумать, куда запихать загрузку , я сделал в каталоге
/etc/rc.d файл rc.sql и сделал его выполняемым, внутри поставил вызов
/usr/local/bin/mysql.server start
и в rc.M перед вызовом апача прописал следующие строки
# Start MySQL server: if [ -x /etc/rc.d/rc.sql ]; then . /etc/rc.d/rc.sql fi
Надо именно перед ... почему ? Ну во-первых, серверу надо некоторое время,
что бы сервер запустился, а потом ... вдруг у вас сразу же после загрузки пойдут
запросы к базе ;-).
Ну и теперь обеспечим нормальный шутдаун серверов ;-)
Ведь нам надо красиво закрыть систему .. я не нашел лучшего места, чем начало
файла /etc/rc.d/rc.6, сразу после PATH (Если вы знаете лучшее место, напишите
мне ;-)
echo echo "Shutdown the MySQL server" /usr/local/bin/mysql.server stop echo "Shutdown the Apache" /usr/local/apache/bin/apachectl stop
Теперь не забудьте поменять пароль root для MySQL (не путать с паролем root в
системе !!)
Делается это так
mysql -u root -e "update user set password=password('new_password') where user='root'" mysql
Где новый пароль - new_password, также пропишите его в mysql.server в строчке
mysql_root_pwd=new_password. Это необходимо для того, что бы этот скрипт мог
нормально управлять сервером. Затем сказать mysqladmin reload, что бы
изменения вступили в силу ( вообще-то эта комманда перезагружает сервер, сброс
файла паролей можно было сделать по другому, но мне так больше нравится)
Необходимо также сменить права mysql.server на 600, что-бы обезапаситься от
нехороших юзверей ;-).