Установка и конфигурация веб сервера Apache с поддержкой PHP, JSP и MySQL на Windows XP
Обзор
В ходе данной инструкции мы подробно рассмотрим установку веб сервера Apache, PHP, Tomcat (для поддержки JSP) и их привязку для совместной работы. Рассмотрим примерный файл конфигурации Apache. Затем мы произведем установку MySQL сервера и рассмотрим примеры доступа к нему из PHP и JSP. Установим PHPMyAdmin для работы с MySQL.
Необходимые компоненты
Мною были использованы следующие версии, по возможности самые последние.
Apache | 2.0.52 |
PHP | 4.3.9 |
Tomcat | 5.5.4 |
mod_jk | 1.2.6 |
J2SDK | 1.5.0 |
MySQL | 4.1.7 |
Connector/J | 3.1.6 |
PHPMyAdmin | 2.6.0 |
Где взять необходимые компоненты?
Apache Web Server
http://httpd.apache.org/PHP
http://www.php.net/JSP
- Tomcat
http://jakarta.apache.org - mod_jk
/downloads/downloads.html - Java
http://java.sun.com/
MySQL
- MySQL Database
http://dev.mysql.com/downloads/ - Connector/J
http://dev.mysql.com/downloads/ - PHPMyAdmin
http://www.phpmyadmin.net/
Установка Apache
Для начала давайте создадим на диске С папку Server, куда мы будем устанавливать все нам необходимое. Предварительно закачаем все необходимое нам программное обеспечение, можно те же версии что использовал я, а можно и выше.
Запускаем apache_2.0.52-win32-x86-no_ssl и видим окно приветствия:
Жмем «Next».
Появляется окошко, где нам предлагают ознакомиться с лицензией на использование данного продукта, выбираем «I accept….» и жмем «Next».
Немного истории, и снова «Next».
В окошко информации о сервере вводим данные, как показано выше на картинке:
Network Domain: localhost
Server name: localhost
Administrator`s Email Address: localhost»@localhost
Так же выберем "For All Users, on 80 port, as a Service -- Recommended". И далее «Next»
Выбираем Custom для выбора всех компонентов для установки.
Выбираем все для полной установки, меняем путь инсталляции на C:\Server\Apache2\
Опять жмем «Next».
Наблюдаем ход установки.
Установка завершена. В правом нижнем углу появился заначек?
Если да то наш веб-сервер установился. Щелкаем на значке левой кнопкой мыши и открываем панель управления:
Здесь мы можем стартовать, остановить, или перезапустить наш сервер.
Теперь протестируем наш сервер. Открываем браузер и в строке адреса, вводим http://localhost. Если вы увидите следующей результат:
Значит сервер установлен удачно.
Установка PHP
Извлекаем содержимое php-4.3.9-Win32.zip в папочку C:\Server\ и переименовываем получившеюся папку «php-4.3.9-Win32» в «php4».
Теперь нам надо дать понять серверу что у нас есть PHP интерпретатор.
Добавляем в конец конфигурационного файл нашего сервера C:\Server\Apache2\conf\httpd.conf следующею запись:
# Даём знать серверу что у нас есть PHP интерпретатор
ScriptAlias /php4/ "C:/Server/php4/"
Action application/x-httpd-php4 "/php4/php.exe"
# Устанавливаем расширения для PHP скриптов
AddType application/x-httpd-php4 .php .php3 .php4 .phtm .phtml
Сохраняем файл. Перезапускаем наш сервер (кнопочка restart в панели управления сервером), еще не забыли как?
Теперь нам надо проверить работает ли эта связка. В папочке C:\Server\Apache2\htdocs (эта папка по умолчанию стои корневой, доступной с http://localhost) создаем файл phpinfo.php следующего содержания:
<?php
phpinfo();
?>
Сохраняем. Открываем в браузере http://localhost/phpinfo.php, если все прошло удачно должны увидеть следующие:
Устанавливаем поддержку JSP
Для этого нам необходимо установить JDK версии 1.5, так как мы будем устанавливать Tomcat 5, а он на версии ниже 1.5 не работает.
Запускаем jdk-1_5_0-windows-i586.exe
Соглашаемся с лицензионным соглашением.
Оставляем все как есть
Ход установки.
Далее начинается установка среды выполнения
Также оставляем все как есть.
Выскакивает диалог выбора установки плагинов к имеющимся браузерам, как видите у меня только один.
JDK установлен!!!
Приступаем к установке Tomcat 5.
Запускаем jakarta-tomcat-5.5.4
Принимаем приветствие и лицензионное соглашение
Выбираем полную установку, помечая все компоненты галочками.
Устанавливаем все в туже папочку “Server”
Конфигурацию оставляем по умолчанию.
Проверяем путь до JRE.
Ход инсталляции
Ок. все готово. Но пока Tomcat работает сам по себе и не связан с Apache.
Проверяем работоспособность Tomcat. Открываем в браузере http://localhost:8080/, так как Tomcat по умолчанию слушает порт 8080. При положительном результате мы должны увидеть следующее:
Теперь наша задача состоит в том чтобы прикрутить Tomcat на localhost:
Для этого нам необходимо скопировать коннектор mod_jk.dll в папочку C:\Server\Apache2\modules и в конфигурационном файле httpd.conf Apache2 добавить следующую запись:
###########################################################
## JSP Support
## Copied from Tomcat auto-configuration file
## + added JkMount /*.jsp ajp13
## + removed Virtual Host
<IfModule; !mod_jk.c>
LoadModule jk_module C:/Server/Apache2/modules/mod_jk.dll
</IfModule>
JkWorkersFile "C:/Server/Tomcat 5.5/conf/workers.properties"
JkLogFile "C:/Server/Tomcat 5.5/logs/mod_jk.log"
JkLogLevel info
JkMount /manager ajp13
JkMount /manager/* ajp13
JkMount /servlets-examples ajp13
JkMount /servlets-examples/* ajp13
JkMount /jsp-examples ajp13
JkMount /jsp-examples/* ajp13
JkMount /tomcat-docs ajp13
JkMount /tomcat-docs/* ajp13
JkMount /webdav ajp13
JkMount /webdav/* ajp13
JkMount / ajp13
JkMount /*.jsp ajp13
После чего необходимо перезагрузить сервер Apache2.
Давайте теперь проверим, работает ли? Открываем в браузере http://localhost/jsp-examples/. И если видим следующее, то все работает!
Конфигурация сервера
Теперь нам необходимо привести в порядок наш сервер, настроим его под себя. Открываем файл httpd.conf, все оттуда удаляем и вставляем туда текст: (Этот текст лучше взять из архива)
# Папка куда установлен наш веб сервер
ServerRoot "C:/Server/Apache2"
# Порт, который слушает наш веб сервер
Listen 80
# Устанавливаем SSI, для файлов с расширением shtm, shtml html
AddType text/html .shtm .shtml .html
AddOutputFilter INCLUDES .shtm .shtml .html
# E-mail адрес админа веб сервера (поменяйте на свой)
ServerAdmin localhost@localhost
# Наш сервер:порт
ServerName localhost:80
UseCanonicalName Off
# Индексные файлы, через пробел
DirectoryIndex index.htm index.html index.shtm index.shtml
index.php index.php3 index.php4 index.jsp
# Имя встроенного конфигурационного файла
AccessFileName .htaccess
# Даём знать веб серверу, что у нас есть PHP интерпретатор
ScriptAlias /php4/ "C:/Server/php4/"
Action application/x-httpd-php4 "/php4/php.exe"
# Устанавливаем расширения для PHP скриптов
AddType application/x-httpd-php4 .php .php3 .php4 .phtm .phtml
# Папка куда будем складывать все наши html и прочие файлы.
DocumentRoot "C:/Server/www"
PidFile logs/httpd.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
HostnameLookups Off
# Модули
LoadModule access_module modules/mod_access.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_module modules/mod_auth.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule imap_module modules/mod_imap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule userdir_module modules/mod_userdir.so
# Закрываем доступ к файлам конфигурации (.htaccess) и паролей (.htpasswd)
<Files; ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
# База с типами файлов
TypesConfig conf/mime.types
# Тип всех документов - текстовый
DefaultType text/plain
<IfModule; mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>
# Файл отчёта с ошибками
ErrorLog logs/error.log
# Что записывать в файл отчёта, может принимать следующие значения:
# debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
# Шаблон записи строки в файл отчёта
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# Файл отчёта со списком всех доступов к веб серверу
CustomLog logs/access.log common
ServerTokens Full
# Подпись веб сервера (On - включена, Off - отключена,
# EMail - показывать e-mail админа сервера)
ServerSignature On
# Виртуальные папки
# Например:
# Alias /icons/ "C:/Server/Apache2/icons/"
# Зайдя на http://localhost/icons/
# мы увидем содержимое папки C:/Server/Apache2/icons/
Alias /icons/ "C:/Server/Apache2/icons/"
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
# Выбираем иконки для различных форматов
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
# Иконка для неизвестных форматов
DefaultIcon /icons/unknown.gif
# Если выводится содержимое какой-либо папки, cчитываются файлы описания:
ReadmeName README.html
HeaderName HEADER.html
# Файлы для игнорирования, при выводе листинга директории
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
# Наша кодировка
AddDefaultCharset WINDOWS-1251
# "C:/Server/Apache2/cgi-bin" директория CGI-скриптов
<Directory; "C:/Server/Apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
###########################################################
## JSP Support
## Copied from Tomcat auto-configuration file
## + added JkMount /*.jsp ajp13
## + removed Virtual Host
<IfModule; !mod_jk.c>
LoadModule jk_module C:/Server/Apache2/modules/mod_jk.dll
</IfModule>
JkWorkersFile "C:/Server/Tomcat 5.5/conf/workers.properties"
JkLogFile "C:/Server/Tomcat 5.5/logs/mod_jk.log"
JkLogLevel info
JkMount /manager ajp13
JkMount /manager/* ajp13
JkMount /servlets-examples ajp13
JkMount /servlets-examples/* ajp13
JkMount /jsp-examples ajp13
JkMount /jsp-examples/* ajp13
JkMount /tomcat-docs ajp13
JkMount /tomcat-docs/* ajp13
JkMount /webdav ajp13
JkMount /webdav/* ajp13
JkMount / ajp13
JkMount /*.jsp ajp13
Сохраняем. Перезагружаем сервер.
Устанавливаем MySQL сервер
Распаковываем файл mysql-4.1.7-win.zip и запускаем файл Setup.exe
Приветствие, жмем Next
Здесь выбираем Custom, так как нам необходимо установить полностью все компоненты и указать путь инсталляции.
Выбираем все компоненты для установки, и указываем путь для инсталляции C:\Server\MySQL Server 4.1\. Идем далее.
Готовы к началу процесса инсталляции? Жмем Install.
Наблюдаем процесс инсталляции.
Пропускаем шаг регистрации на MySQL.com.
Ставим галочку на опции «Конфигурировать MySQL сервер». И завершаем процесс установки приступая к конфигурации.
Опять приветствие.
Выбираем стандартную конфигурацию, что бы совсем не запудрить себе мозги, потом при желании можно попробовать полазить в настройках.
Указываем, что MySQL сервер будет запускаться как служба Windows.
Указываем пароль для администратора, допустим это будет «password».
Execute и все готово! После чего мы наблюдаем следующую картинку в нижнем правом углу:
Теперь тестируем наш MySQL сервер. Создадим в папке www файл index.php следующего содержания:
<?# Адрес нашего MySQL сервера
$mysql_host = "localhost";
# Пользователь, который осуществляет соединение
$mysql_user = "root";
# Пароль для доступа к MySQL базе
$mysql_password = "password";
# Соединяемся с MySQL сервером
$mysql = mysql_connect($mysql_host, $mysql_user, $mysql_password);
if ($mysql)
{
echo "Hello World!!!";
}
# Закрываем соединение
mysql_close($mysql);
?>
Сохраняем.
Открываем в браузере http://localhost/index.php и....
Не тут то было! Вылезет ошибка «Client does not support authentication protocol requested by server; consider upgrading MySQL client»
Ну что же это небольшая не совместимость. . . В MySQL 4.1 применяется новый способ хранения паролей и из-за этого вылезает несовместимость всех старых клиентов с MySQL. Что же делать?
Запускаем C:\Server\MySQL Server 4.1\bin\mysql.exe и набираем следующую команду как показано на рисунке:
Набираем set password for жмем Enter
Набираем root@localhost = old_password(‘password’)
Жмем Enter. Набираем \q жмем Enter, окошко закрывается.
Ну теперь должно заработать, открываем в браузере http://localhost/index.php и....
Работает!!!
Теперь нам необходимо прикрутить коннектор для подключения к MySQL серверу из JSP.
Распаковываем mysql-connector-java-3.1.6.zip. Папочку mysql-connector-java-3.1.6. переименовываем в jconnector (C:\Server\jconnector). Берем из этой папочки файл mysql-connector-java-3.1.6-bin.jar и копируем его в папку C:\Server\Tomcat 5.5\common\lib.
Ну теперь надо попробовать подключиться к MySQL серверу из JSP. Давайте в папочке C:\Server\Tomcat 5.5\webapps\jsp-examples создадим файл test.jsp:
<%@ page contentType="text/html; charset=windows-1251" %>
<%@ page import ="java.net.*" %>
<%@ page import ="java.sql.*" %>
<HTML;>
<HEAD;>
<TITLE;> Доступные БД </TITLE>
</HEAD>
<BODY;>
<h3;>Доступные БД</h3>
<%
//Загружаем драйвер
Class.forName("com.mysql.jdbc.Driver").newInstance();
//Подключаемся к бд
Connection conn =
DriverManager.getConnection("
jdbc:mysql://localhost/test?user=root&password;=password");
Statement stmt = null;
ResultSet rs = null;
stmt = conn.createStatement();
//Запрос на имеющиеся БД
rs = stmt.executeQuery("SHOW DATABASES");
boolean more = rs.next ();
while (more)
{
// Получае значение первой колонки
out.print(rs.getString(1));
out.print("<br;>");
// Передвигаемся на следующую строку набора данных
more = rs.next ();
}
%>
</BODY>
</HTML>
Открываем браузер http://localhost/jsp-examples/test.jsp
Ок все работает!
Ну и заключительный момент установка PHPMyAdmin
Для этого разархивируем phpMyAdmin-2.6.0-pl3.zip в папку C:\Server\www и переименуем в phpmyadmin.
Откроем файл config.inc.php
Заменим
$cfg['PmaAbsoluteUri'] = '';
на
$cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin/';
И аналогично поступаем со следующими строками файла:
$cfg['Servers'][$i]['controluser'] = ' root ';
$cfg['Servers'][$i]['controlpass'] = 'password';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'password';
Сохраняем. Открываем в браузере http://localhost/phpmyadmin/
И наблюдаем в случае положительного результата: