Установка
полнофункционального сервера на домашний компьютер под Windows
XP
В сети есть по меньшей мере три статьи
на эту тему, мне потребовалось установить сервер на свой
лаптоп и поэтому я решил детально описать всю процедуру
установки и настройки. В этой статье будет описана процедура
установки http сервера Apache с поддержкой mod_ssl и php,
perl, MySql сервера и клиента, Zend optimizer и наконец я
рассмотрю установку полнофункционального почтового
сервера.
Получение
нужных дистрибутивов
Сохраняем все в одну папку,
например в /dist.
Apache 1.3.27 [5.2 MB] - http://apache.org/dist/httpd/binaries/win32/apache_1.3.27-win32-x86-no_src.exe
Я использую версию 1.3.х Apache так как не вижу смысла
использовать вторую версию, если вы другого мнения то можете
ставить 2-ую версию. Настройки там немного отличается и я
никогда не прикручивал mod_ssl к второму Apache так что вам
придется разбираться самим.
mod_ssl [2.3 MB] - http://hunter.campbus.com/Apache_1.3.27-Mod_SSL_2.8.14-Openssl_0.9.7b-Win32.zip
openssl
[822 KB] - http://hunter.campbus.com/Openssl-0.9.7b-Win32.zip
php
4.3.2 [5.96 MB] - http://www.php.net/distributions/php-4.3.2-Win32.zip
На
момент написания статьи это была последняя версия.
Perl
[8.44 MB] - в даном случае чтобы долго не парится мы установим
ActivePerl 5.6.1 build 635 от ActiveState http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.635-MSWin32-x86.msi
. Вы можете взять и более новую версию, но она больше по
размеру, решать вам.
Нужные модули:
DBI [2.10 MB] - http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/DBI-1.37.zip
Другие
модули можно скачать на http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/
MySql
4.0.13 [18.1 MB] - http://mysql.directnet.ru/Downloads/MySQL-4.0/mysql-4.0.13-win.zip
Zend Optimizer [2.33 MB] - http://www.zend.com/store/getfreefile.php?pid=13&zbid=550
Скорее
всего у вас потребуют регистрации.
Извлекаем все архивы,
каждый в свою директорию.
Дерево
каталогов
При выборе диска на котором будет
хранится все это добро лучше всего использовать специально
отведенный для этого диск, я при разбивке дисков всегда создаю
диск F [SERVER] для этих целей, можно создать и виртуальный
диск, можно также хранить на любом другом диске (не рекомендую
использовать диск C который изредка требуется форматировать),
тут выбор за вами. Чтобы избежать любых хлопот в дальнейшем
при переносе файлов с локального тестового сервера на сервер в
интернет, нам нужно создать похожею схему. Я всегда выбираю
хостинг на базе Cpanel и поэтому структура каталогов в моем
случае будет следующей:
/usr - каталог для хранения
приложений
/home - хранение виртуальных
хостов
/home/<domain_name>/public_html - корневая
директория
сервера
/home/<domain_name>/public_html/cgi-bin - cgi
скрипты
/logs - журнальные файлы Apache
Установка Mysql
Выполним setup.exe из
директории /dist/mysql-4.0.13-win. При инсталляции не меняйте
Destination Folder, оставьте как есть C:/mysql, потом можно
будет переместить все например в x:/usr/mysql. Можно выбрать
тип установки Сustom и не устанавливать примеры и
документацию, это все есть в удобной форме на mysql.com. Чтобы
зарегистрировать мускуль как службу Windows нужно выполнить
следующие действия:
Открыть command.com
cd
x:/usr/mysql/bin
mysqld - install
должно
появится:
Service successfully installed.
Теперь
сервер установлен как служба, запустите его через Панель
Управления -> Администрирование -> Службы -> mysql
-> Запустить
Зашита новой инсталляции
По
умолчанию к серверу могут подключится все локальные анонимные
пользователи которые будут иметь доступ к базе test и другим
базам начинающиеся с test_. Для удаления этих привилегий
выполните команды:
mysql -u root
mysql> DELETE
FROM user WHERE Host='localhost' AND User='';
mysql>
QUIT
MySql при установке создает пользователя root без
пароля, сервер никак не защищен, чтобы установить пароль нужно
выполнить команду:
mysqladmin -u root password
здесь_новый_пароль
mysqladmin -u root reload
Установка Perl
Запустим
/dist/ActivePerl-5.6.1.635-MSWin32-x86.msi. Процесс установки
прост, скажу лишь что в качестве каталога установки укажем
x:/usr.
Установка DBI
cd
x:/dist/DBI-1.37
ppm install DBI.ppd
Установка Apache
Итак открываем
скаченный файл apache_1.3.27-win32-x86-no_src.exe, соглашаемся
с лицензионным соглашением, далее нам предложат внести
информацию для главного сервера, указываем:
Network Domain
- localhost
Server Name - localhost
Administrator's
Email Adress - admin@localhost
Жмем Next>,
Next>.
Destination Folder - жмем Change… , прописываем
x:/usr, далее Next> и Install. Apache будет установлен в
x:/usr/Apache. В Windows XP Apache будет установлен как сервис
и сразу же запустится. В браузере при обращении к http://localhost/
мы должны будем увидеть страницу сообщающею о том что Apache
был успешно установлен.
Базовая конфигурация
Apache
Откройте файл
x:/usr/Apache/conf/httpd.conf.
Раскомментируйте нужные вам
модули. Я например использую модули mod_status.so,
mod_info.so, mod_rewrite.so. Добавьте нужные модули, они
указаны ниже, директивы AddModule mod_name.c.
DocumentRoot
"f:/home/localhost/public_html" #в моем случае
Заменим
блок
<Directory />
Options
FollowSymLinks
AllowOverride
None
</Directory>
на
<Directory
/>
Options Indexes Includes
AllowOverride
All
</Directory>
В данном случае можно будет
менять установки при помощи .htaccess, и каталоги будут
индексироватся - будет наследоваться для всех виртуальных
хостов.
Далее идут директивы для главного хоста, там есть
много комментариев, замените все что находится между
<Directory "x:/usr/Apache/htdocs"> и </Directory>
на
<Directory
"x:/home/localhost/public_html">
Options Indexes
Includes
AllowOverride All
Order allow,deny
Allow
from all
</Directory>
в блоке <IfModule
mod_userdir.c> пропишим локальный каталог пользователей, в
нашем случае это:
UserDir "public_html"
В директиве
DirectoryIndex нужно указать файлы которые будут выдаваться по
умолчанию:
DirectoryIndex index.html index.htm index.shtml
index.shtm index.php
Место выполнения cgi
скриптов:
ScriptAlias /cgi-bin/
"x:/home/localhost/public_html/cgi-bin/"
<Directory "
x:/home/localhost/public_html/cgi-bin">
AllowOverride
All
Options ExecCGI
</Directory>
Указываем
расширения для cgi скриптов:
Ищем строку:
#AddHandler
cgi-script .cgi
заменяем на:
AddHandler cgi-script .cgi
.pl
Поддержка SSI:
Ищем строку:
#AddHandler
server-parsed .shtml
заменяем на:
AddHandler
server-parsed .shtml .shtm .sht
Для настройки других
директив смотрите документацию по Apache.
Чтобы новые
параметры вступили в силу нужно перезапустить Apache. Для
этого идем в Панель Управления -> Администрирование ->
Службы -> Apache -> Перезапустить. Если Apache не
запускается то откройте command.com
cd
x:/usr/Apache
apache.exe
будет выдана ошибка почему
не запускается, исправьте и попробуйте снова. Когда Apache
будет запущен остановите его нажав CTRL+C и запустите через
службы.
Создание виртуальных
хостов
Рассмотрим пример создание виртуального хоста
demo.com. Для начала пропишем его в файле hosts который
находится в C:/WINDOWS/system32/drivers/etc:
127.0.0.2
demo.com
Я не прописываю виртуальные хосты напрямую в файле
httpd.conf а вместо этого использую файл virtual_hosts.conf
который помещен в x:/usr/Apache/conf/. В таком случае в самом
конце httpd.conf нужно прописать Include conf/
virtual_hosts.conf. Создадим нужные
каталоги:
/home/demo.com/public_html
/home/demo.com/public_html/cgi-bin
/logs/demo.com
В
файле virtual_hosts.conf вписываем:
code:
# Виртуальный хост demo.com
# IP адрес 127.0.0.2
<VirtualHost 127.0.0.2>
# Имя сервера, должно быть прописанно в файле hosts
ServerName demo.com
# email по умолчанию для этого хоста
ServerAdmin admin@demo.com
# DocumentRoot указывает на созданную выше папку
# т.е. корневая директория хоста
DocumentRoot "/home/demo.com/public_html"
# параметры для корневой директории
# тут мы запрещяем индексирование каталогов не содержащие индексного файла
# разрешаем переопределение директив при помощи .htaccess
# даем всем доступ
# более подробно читайте в документации
<Directory "/home/demo.com/public_html ">
Options -Indexes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
# директория для выполнения cgi скриптов
ScriptAlias /cgi-bin/ "/home/demo.com/public_html/cgi-bin "
# файлы для ведения журнальных файлов и файлов ошибок
ErrorLog "/logs/demo.com/error.log"
CustomLog "/logs/demo.com/custom.log" common
</VirtualHost>
Перезапустим
Apache, наберем в браузере demo.com и должны получить страницу
где говорится что у нас нет прав для просмотра этой
директории.
Установка
PHP
Скопируем дистрибутив PHP из
/dist/php-4.3.2-Win32 в x:/usr/php. Создадим директорию
x:/usr/php/sessions - для хранения сессий. Скопируем
php4ts.dll в C:/windows/system32. Скопируем
php.ini-recommended в C:/windows и переименуем его в php.ini.
Базовое конфигурирование PHP
Открываем
C:/windows/php.ini и меняем следующие
параметры:
output_buffering = OFF
error_reporting =
E_ALL & ~E_NOTICE - можете оставить E_ALL но в таком
случае половина скриптов на подобе нюка не будут
запускаться.
display_errors = On - это для того чтобы
ошибки были видны в браузере а не сохранялись в файле как
стоит по умолчанию.
display_startup_errors =
On
log_errors = Off
register_globals = On - если вы его
выключите опять же могут быть проблемы с работой
скрипта.
include_path =
extension_dir =
x:/usr/php/extensions
Включите нужные модули в блоке
Windows Extensions, для этого просто раскомментируйте (уберите
точку с запятой спереди) . Убедитесь что модуль с таким именем
существует в каталоге extension_dir.
session.save_path =
x:/usr/php/sessions
Для правильной работы php этого
достаточно, если вас интересуют другие параметры php то
смотрите соответствующею документацию. Для работы php нам
нужно будет сконфигурировать Apache, для этого в httpd.conf
где-то перед ### Section 3: Virtual Hosts
добавим:
ScriptAlias "/php/" "x:/usr/php/"
Action
application/x-httpd-php "/php/php.exe"
LoadModule
php4_module x:/usr/php/sapi/php4apache.dll
В
conf/myme.types добавим:
application/x-httpd-php phtml php3
php
Установка mod_ssl и
Openssl
Выполняйте этот шаг если вы знаете что
это такое и будете его
использовать.
mod_ssl
Остановим Apache
(Панель Управления -> Администрирование -> Службы ->
Apache -> Остановка). Из директории
/dist/Apache_1.3.27-Mod_SSL_2.8.14-Openssl_0.9.7b-Win32
скопируем файлы Apache.exe и файлы с расширением *.dll в
директорию куда установлен Apache, реально мы заменим
существующие файлы. Также нам нужно поместить файл mod_ssl.so
из
/dist/Apache_1.3.27-Mod_SSL_2.8.14-Openssl_0.9.7b-Win32/modules/
в x:/usr/apache/modules/. В httpd.conf после #LoadModule
unique_id_module modules/mod_unique_id.so
добавим:
LoadModule ssl_module modules/mod_ssl.so
После
AddModule mod_setenvif.c добавим:
AddModule
mod_ssl.c
Ниже добавим:
### SSL config
SSLMutex
sem
SSLRandomSeed startup builtin
SSLSessionCache
none
SSLLog logs/SSL.log
SSLLogLevel info
После
Port 80
Добавим:
Listen 80
Listen
443
Openssl
Openssl нужен для генерирования
сертификатов. Разархивируйте Openssl-0.9.7b-Win32.zip в
x:/openssl, можно в любую другую директорию, но работать с ним
предстоит через командную строку и поэтому выбран такой
короткий путь. Скопируйте файлы ssleay32.dll и libeay32.dll в
x:/windows/system32. Для работы openssl.exe вам нужен
конфигурационный файл openssl.cnf, скачайте его отсюда, отредактируйте и сохраните как
openssl.cnf в директорию куда поместили openssl.
Теперь нам
нужно создать сертификаты, в качестве примера будем
использовать домен demo.com о котором говорилось выше. Откроем
command.com и выполним следующие комманды:
cd
x:/openssl
openssl req -config openssl.cnf -new -out
demo.com.csr
При помощи этой команды утилита openssl
создаст и подпишит сертификационный запрос. В последствии
будет заданно масса вопросов, самое главное указать правильное
доменное имя (Common Name) в нашем случае это
demo.com.
openssl rsa -in privkey.pem -out
demo.com.key
эта команда удалит passphrase из частного
ключа и таким образом будет доступен только
apache.
Теперь можно подписать сертификат, создав
временный сертификат для личного ключа
openssl x509 -in
demo.com.csr -out demo.com.cert -req -signkey demo.com.key
-days 365
Сертификат будет действителен один год о чем
говорит 365.
Этот материал основан на руководстве установке
SSL под Windows - The Apache + SSL on Win32
HOWTO.
Настройка виртуального хоста demo.com для
работы через безопасное соеденение
Скопируем полученные
файлы demo.com.cert и demo.com.key в x:/usr/apache/conf/ssl/.
Виртуальный хост который будет работать через безопасное
соединение не имеет ничего общего с обычным хостом demo.com
поэтому директивы не наследуются друг от друга, нам нужно
прописывать все директивы заного:
code:
# Виртуальный хост demo.com:443 - безопасное соединение (https)
# IP адрес 127.0.0.2:443
<VirtualHost 127.0.0.2:443>
# Включаем поддержку SSL
SSLEngine On
SSLCertificateFile conf/ssl/demo.com.cert
SSLCertificateKeyFile conf/ssl/demo.com.key
# Имя сервера, должно быть прописанно в файле hosts
ServerName demo.com
# email по умолчанию для этого хоста
ServerAdmin admin@demo.com
# DocumentRoot указывает на созданную выше папку
# т.е. корневая директория хоста
DocumentRoot "/home/demo.com/public_html"
# параметры для корневой директории
# тут мы запрещяем индексирование каталогов не содержащие индексного файла
# разрешаем переопределение директив при помощи .htaccess
# даем всем доступ
# более подробно читайте в документации
<Directory "/home/demo.com/public_html ">
Options -Indexes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
# директория для выполнения cgi скриптов
ScriptAlias /cgi-bin/ "/home/demo.com/public_html/cgi-bin "
# файлы для ведения журнальных файлов и файлов ошибок
ErrorLog "/logs/demo.com/error.log"
CustomLog "/logs/demo.com/custom.log" common
</VirtualHost>
В таком случае к
виртуальному хосту можно будет обращаться как по безопасному
так и по обычному соединению. Для запрещения обычных
соединений в определенные каталоги, в главном хосте demo.com
нужно прописать:
# пример для директории
/order/
<Location
/order/>
SSLRequireSSL
</Location>
Более
подробную информацию о директивах mod_ssl смотрите на http://www.modssl.org/docs/2.8/ssl_reference.html.
Запустите Apache, вы должны наблюдать описание:
Apache/1.3.27 (Win32) PHP/4.3.2 mod_ssl/2.8.14 OpenSSL/0.9.7b
что говорит о том что Apache установлен и запущен с поддержкой
php и mod_ssl.
Установка Zend
Optimizer
Заумного тут ничего нет. Открываем
полученный файл /dist/ZendOptimizer-2.1.0a-Windows-i386.exe и
следуем инструкциям. На вопрос о том чтобы укзать сервер для
определения версии php, можно выбрать Apache а можно Let me
select my PHP Version и далее указать PHP 4.3.x. Потом спросят
подтверждения о местонахождении php.ini, а далее сам процесс
установки. Появится предупреждение что оригинальный php.ini
будет сохранен под именем php.ini.bak, соглашайтесь, другого
выбора нет.
На этом этап установки всего добра
завершен. Перейдем к тестированию.
Тестируем php и
Mysql
В директории /home/demo.com/public_html/ создадим
файл test.php следующего содержания:
PHP:
<?php
$conect = mysql_connect('localhost','root','здесь
пароль');
mysql_select_db('mysql',
$conect);
$data
= mysql_query('SELECT * FROM
user',$conect);
$data = mysql_fetch_array($data);
echo "<pre>";
print_r ($data);
?>
Вызываем http://demo.com/test.php
Должен быть
напечатан массив таблицы привилегий. Если что-то не работает
ищите ошибку и исправляйте, пробуйте
снова.
Тестируем Perl
В директории
/home/demo.com/public_html/cgi-bin создадим файл test.cgi
следующего содержания:
code:
#!/usr/bin/perl
print "Content-type: text/html
";
print "Hello world";
Вызываем http://demo.com/cgi-bin/test.cgi
Должно
быть напечатано Hello world.
Для проверки ssl наберите
https://demo.com/test.php, браузер должен
начать ругаться что мол сертификат не подписан доверенным
лицом, жмите да и наслаждайтесь. Если не работает смотрите
журнальные файлы ssl (logs/SSL.log) и исправляйте
ошибки.
Установка Mail
сервера
Зачем может потребоваться почтовый
сервер? Да для разных нужд, например для тестирования веб мэйл
интерфейсов (hivemail ).
В сети есть огромное множество
почтовых серверов, я остановил свой выбор на CommuniGate Pro. В нем есть все что нужно
(imap, pop3, smtp, webmail…), также он работает в бесконечном
триальном режиме, просто добавляет строчку, заявляя о себе, в
каждое отправленное сообщение, для локального тестирования это
не мешает. Итак качаем отсюда. Распаковываем и выполняем
Installer.exe, в качестве путей можем указать x:/usr/mail и
x:/usr/mail/CommuniGatePro Files предварительно создав
директорию mail. В конце установки вам предложат запустить
службу, жмем 'Yes'.
Настройка
Для начала
откроем x:/usr/mail/CommuniGatePro
Files/Accounts/postmaster.macnt и узнаем какой нам назначили
пароль, это будет четырехзначный номер. Далее в браузере
вызываем http://localhost:8010./ Выбираем Domains,
вводим имя пользователя postmaster и пароль. Напротив кнопки
"Create Domain" вписываем demo.com и жмем кнопку. Жмем на
только что созданный домен и создаем нужных нам пользователей.
Настроек там куча, если что не понятно смотрите документацию.
Для доступа к веб интерфейсу используйте адрес http://localhost:8100/ и https://localhost:9100/ - если вы конечно не
меняли порты.
На этом думаю все, как видно ничего тут
сложного нет, все как на ладони и нет нужды использовать
всякие там инсталляционные пакеты которые ставят все что нужно
и не нужно ничего не спрашивая. Любые вопросы, пожелания,
замечания пишите в специально созданной для этого теме на форуме.
Эта статья находится
по адресу:
http://netadmin.ws/article.php?sid=42