Установка полнофункционального сервера на домашний компьютер под Windows XP
🕛 01.02.2008, 12:09
В сети есть по меньшей мере три статьи на эту тему, мне потребовалось установить сервер на свой лаптоп и поэтому я решил детально описать всю процедуру установки и настройки. В этой статье будет описана процедура установки http сервера Apache с поддержкой mod_ssl и php, perl, MySql сервера и клиента, Zend optimizer и наконец я рассмотрю установку полнофункционального почтового сервера.Получение нужных дистрибутивов
Сохраняем все в одну папку, например в /dist.
Apache 1.3.33
Я использую версию 1.3.х Apache так как не вижу смысла использовать вторую версию, если вы другого мнения то можете ставить 2-ую версию. Настройки там немного отличается и я никогда не прикручивал mod_ssl к второму Apache так что вам придется разбираться самим.
mod_ssl
openssl
php 4.3.11
Возможно поставить и пятую версию php, процесс установки ничем не отличается.
Perl - в даном случае чтобы долго не парится мы установим ActivePerl 5.6.1 build 635 от ActiveState . Вы можете взять и более новую версию, но она больше по размеру, решать вам.
Нужные модули:
DBI
MySql 4.1.11
Zend Optimizer
Извлекаем все архивы, каждый в свою директорию.
Дерево каталогов
При выборе диска на котором будет хранится все это добро лучше всего использовать специально отведенный для этого диск, я при разбивке дисков всегда создаю диск 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 поэтому директивы не наследуются друг от друга, нам нужно прописывать все директивы заного:
# Виртуальный хост 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); ?>
Вызываем demo.com/test.php
Должен быть напечатан массив таблицы привилегий. Если что-то не работает ищите ошибку и исправляйте, пробуйте снова.
Тестируем Perl
В директории /home/demo.com/public_html/cgi-bin создадим файл test.cgi следующего содержания:
#!/usr/bin/perl print "Content-type: text/html "; print "Hello world";
Вызываем 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 - если вы конечно не меняли порты.
На этом думаю все, как видно ничего тут сложного нет, все как на ладони и нет нужды использовать всякие там инсталляционные пакеты которые ставят все что нужно и не нужно ничего не спрашивая.