Информационные технологииStfw.Ru 🔍

Установка полнофункционального сервера на домашний компьютер под 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 - если вы конечно не меняли порты.

На этом думаю все, как видно ничего тут сложного нет, все как на ладони и нет нужды использовать всякие там инсталляционные пакеты которые ставят все что нужно и не нужно ничего не спрашивая.

Windows   Теги: Apache, Xp

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉