Показаны сообщения с ярлыком OpenSSL. Показать все сообщения
Показаны сообщения с ярлыком OpenSSL. Показать все сообщения

суббота, 11 июня 2016 г.

OpenSSL для Apache под Windows Server

 

При генерации сертификата вылетала вот такая ошибка:

WARNING: can't open config file: c:/openssl-1.0.2g-win64/ssl/openssl.cnf

Решение в моем случае было таким:

set OPENSSL_CONF=D:\iServer\Apache\conf\openssl.cnf

надо было прописать в переменную окружения путь к файлу конфига

найдено тут http://impradeep.com/warning-cant-open-config-file-copenssl-1-0-1esslopenssl-cnf/

WARNING: can’t open config file: c:/openssl-1.0.1e/ssl/openssl.cnf
Unable to load config info from c:/openssl-1.0.1e/ssl/openssl.cnf

This error occurs mainly on windows when you are using openssl package, The reason is that openssl failed to locate the openssl.cnf file.

There is an environment variable called OPENSSL_CONF that can be set.

I will recommend that you do the following (one windows only)

In my case I set the environment variable like this –
set OPENSSL_CONF=E:\ApacheSoftwareFoundation\Apache2.2\conf\openssl.cnf

A tricky part of getting it to work is with the openssl.cnf file itself. Windows shows it as a file type “SpeedDial” and hides the extension so the filename looks like it is just “openssl”. I tried renaming it to “openssl.cnf”. That looks correct in windows explorer but if you look at the filename in a dos window the actual filename became “openssl.cnf.cnf”. So even though Windows shows the name without the .cnf extension it is there. That was confusing because I have my explorer set to not hide file extensions.

Remember that every-time you open a command prompt you have to run the above command unless you set this as your environment variable.

 

И кроме того после настройки сертификатов так Apache не запускался по ошибке:

Invalid command 'SSLMutex', perhaps misspelled or defined by a module not included in the server configuration

Ошибка была тут SSLMutex default

Эта команда не поддерживается после Apache 2.2 вместо нее надо использовать

Mutex default

Решение найдено тут http://stackoverflow.com/questions/13969272/apache-sslmutex-issue

пятница, 12 июля 2013 г.

Установка и настройка Apache + OpenSSL, PHP, MySQL под Windows Server 2012


Время идет :) верней несется :). Сегодня будем устанавливать и настраивать на Windwos Server 2012 Data Center расположенный в облаке Azure следующие компоненты:
  • Apache 2.2.25 (Win32 x86) с OpenSSL 0.9.8y (download)
  • PHP 5.4.17 (Win32, VC9 x86 Thread Safe) (download)
  • MySQL 5.6.12.2 (x64) (download)
Так как мы хотим подготовить сервер для реального домашнего хостинга, то сразу создадим структуру каталогов для нашего сервера и сайтов. Исполняемые (бинарные) файлы, а так же файлы конфигурации Apache, PHP, MySQL и т.д., мы разместим на одном диске (в моем случае диск F), а файлы наших сайтов, баз данных и лог файлы на другом диске (в моем случае диск G).

A0001
И так поехали!
1) В корне диска F: создаем папку iServer и в ней создаем папку PHP
2) Прописываем путь к папке PHP в системную переменную PATH. Для этого выполняем следующие операции:
  • нажимаем клавиши  Windows+Break
  • выбираем Advanced System Settings
  • далее выбираем Environment Variables
  • в части System Variables выбираем параметр PATH, клацаем по нему два раза и добавляем к концу строки наш путь (с точкой запятой перед ним) ;F:\iServer\PHP
A0002
  • Затем клацаем везде ОК и делаем выход из системы и снова входим. Это нужно для того чтобы переменная Path получила новое значение.
  • Запускаем cmd.exe и проверяем что переменная Path получила новое значение введя команду set и жмакнув по Enter
A0003
3) В корне диска G: создаем две папки iSites (тут будут лежать наши сайты) и iLogs (тут будут жить общие логи сервера).
4) В папке G:\iSites создаем два подкаталога localhost и testru и далее в каждом из них свои подкаталоги www,log и ssl
A0004
5) Скачиваем дистриб Apache под Win32 с поддержкой SSL (на момент написания статьи httpd-2.2.25-win32-x86-openssl-0.9.8y.msi). И запускаем на выполнение.
6) На этом окошке смело жмем Next

A0005
7) Принимаем лицензионное соглашение

A0006
8) Внимательно и вдумчиво читаем вот это...

A0007
9) Заполняем все поля как на скриншоте

A0008
10) Выбираем Custom

A0009
11) Выбираем опции как на скриншоте и путь установки F:\iServer\Apache

A0010
12) Жмакаем Install...

A0011
13) После установки в трее должен появиться значек консоли управления сервисом - Apache  A0012
Если по нему дважды клацкнуть, то должно открыться окошко управления сервисом

A0013
14) Проверяем установку запустив браузер и введя в строке адреса localhost. Видим страницу с надписью It Works!. Радуемся жизни. Что-то уже работает.

A0014
15) Далее отыскиваем файлик hosts, который обычно находится по пути C:\WINDOWS\system32\drivers\etc\ и добавляем в него запись 127.0.0.1 test.ru и сохраняем.

A0015
Это укажет браузеру где искать наш тестовый домент test.ru. Кстати, заметьте, что в файле уже присутствует запись 127.0.0.1 localhost. Именно по этому браузер и узнал ip сайта localhost, когда мы ввели это имя в строке адреса браузера. Проверяем теперь это в браузере.

A0016
Но не шибко радуемся. Так как это еще не мультихостинг. :) Для него еще много что надо настроить.
16) Теперь будем прикручивать PHP. На текущий момент это версия PHP 5.4.17. Качаем дистриб в ZIP архиве. Еще раз повторюсь не инсталер с расширением .MSI, а именно ZIP архив. Файлик на момент написания статьи называется php-5.4.17-Win32-VC9-x86.zip, вот его и качаем.
17) Разархивируем содержимое скачанного архива в папку F:\iServer\PHP
18) Прикручивать PHP к Apache будем как модуль Apache. Для этого идем в каталог F:\iServer\Apache\conf, и добавляем в файлик httpd.conf в окончание блока инструкций LoadModule (в строки 130 и 131) две строки:
LoadModule php5_module "F:/iServer/PHP/php5apache2_2.dll"
PHPIniDir "F:/iServer/PHP/"

19) Находим в файлике httpd.conf инструкции AddType, в конец этого блока (в моем случае в строку 409) вставляем инструкцию:
AddType application/x-httpd-php .php
20) Находим в файле httpd.conf блок инструкций DirectoryIndex. И добавляем в инструкцию DirectoryIndex указание на файл index.php. Чтобы в конечном виде инструкция выглядела так:
DirectoryIndex index.html index.php
Сохраняем httpd.conf и выходим.
21) Переименовываем или копируем файл php.ini-production (в каталоге F:\iServer\PHP) в файл php.ini.
22) Находим в файле php.ini строку short_open_tag = Off. И приводим ее к виду short_open_tag = On
23) Создаем в каталоге R:\Server\Apache\htdocs файлик phptest.php и пишем в нем следущий код:
<?
phpinfo();
?>
Сохраняем файлик.
24) Останавливаем и снова запускаем Apache через консоль управления Apache. После перезапуска Apache можно открыть окно управления сервисом Apache дважды кликнув по иконке в трее. Должны увидеть следующее окошко:
A0017
Обратите внимание, что в статусной панели сервиса управления Apache отображается, что так же загружен модуль PHP и указана его версия.
Если вы этого не увидели, то сверните окошко и разверните его снова. Если и это не помогло, значит, что то сделали не так и 25 шаг, скорее всего у вас сделать не получится.
25) Тестируем работу PHP. Набираем в браузере http://localhost/phptest.php и видим следующую картинку и радуемся жизни. PHP заработал:
A0018
Если такого не видим, то повторяем все шаги снова, до тех пор пока не увидим :).
26) Позаботимся немного о безопасности нашего сервера. По умолчанию, при установке, сервис Apache запускается под пользователем SYSTEM, который имеет в системе максимальные права. Это не есть гуд. Сейчас будем исправлять эту ситуацию.
  • создаем учетную запись iUser и назначаем ей пароль срок действия которого ни когда не истекает
  • проверяем чтобы она входила только в группу пользователи
  • запрещаем для пользователя iUser локальный вход и выставляем право работать в режиме операционной системы и вход в качестве службы через оснастку gpedit.msc
A0019
  • Даем учетной записи iUser право на запись в папку F:\iServer\Apache\logs. И только в эту папку. По умолчанию в другие папки доступа на запись и не должно быть. Потом, после переноса файлов логов сервера в другое место, права на эту папку для iUser можно убрать, так как они будут не нужны.
  • Через оснастку управления службами устанавливаем запуск сервиса Apache2.2 под учетной записью iUser
A0020
  • Перезапускаем службу Apache2.2
  • Ну и проверяем работу зайдя по адресу http://localhost
27) Настраиваем виртуальные хосты. На 4 шаге мы создали структуру расположения сайтов на нашем сервере. Теперь, так же, выдаем права для учетной записи iUser на запись в папку G:\iLogs, а на папку G:\iSites (со всеми ее подкаталогами), только на чтение, за исключением подкаталогов log, для которых даем право на запись.
Кроме того, для некоторых CMS типа Joomla, нужно будет дать разрешение отдельно и только на запись в файл конфигурации. Это еще одна из настроек безопасности для сайта. Ну это так для общего развития инфа :)
28) Идем в папку F:\iServer\Apache\conf\extra и редактируем файл httpd-vhosts.conf. Приводим его к вот такому виду:

A0021
29) Раскомментируем в файле httpd.conf строчки
LoadModule logio_module modules/mod_logio.so
Include conf/extra/httpd-vhosts.conf

30) В файле httpd.conf находим строку DocumentRoot "F:/iServer/Apache/htdocs" и меняем ее на DocumentRoot "G:/iSites/localhost/www"
31) В файле httpd.conf находим строку <Directory "F:/iServer/Apache/htdocs"> и меняем ее на <Directory "G:/iSites">
32) В файле httpd.conf находим строку ErrorLog "logs/error.log" и меняем ее на ErrorLog "G:/iLogs/error.log"
33) В файле httpd.conf находим строку CustomLog "logs/access.log" common и меняем ее на CustomLog "G:/iLogs/access.log" combinedio
34) В каталоге G:\iSites\localhost\www создаем файлик index.html со следующим содержимым:
<H1>It is my LocalHost</H1>
35) В каталоге G:\iSites\testru\www создаем файлик index.html со следующим содержимым:
<H1>It is my TEST.RU</H1>
36) Рестартуем Apache. Заходим браузером по адресу http://localhost и видим следующие:

A0022
Заходим по адресу test.ru и видим следующее:

A0023
Радуемся реально работающему виртуальному хостингу.
Если не видим, то не радуемся. И ищем где ошиблись.
37) Языковые настройки. Редактируем файлик F:\iServer\Apache\conf\extra\httpd-languages.conf. Комментируем все строки AddLanguage с теми языками, которые нам не нужны. Я оставил только строки:

AddLanguage en .en
AddLanguage ru .ru

Находим строку LanguagePriority и убираем там все языки, которые не нужны. У меня эта строчка выглядит так:

LanguagePriority en ru

Сохраняем файл.

В файле httpd.conf расскомментируем строчку Include conf/extra/httpd-languages.conf.

38) Включаем SSI. В файле httpd.conf находим строки:

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

И расскоментируем их.
Находим блок <Directory "G:/iSites"> и в нем строку Options Indexes FollowSymLinks. Приводим ее к виду Options Indexes FollowSymLinks Includes

Сохраняем файл.
39) В каталоге G:\iSites\localhost\www создаем файл ssi.html со следующим содержимым:

SSI тест прошел успешно - ssi.html!

Затем, там же создаем файл ssitest.shtml со следующим содержимым:

<!--#include virtual="/ssi.html" -->

40) Рестартуем Apache. В броузере вводим адрес http://localhost/ssitest.shtml и видим следующее:

A0024
Радуемся что работает русский язык и SSI. Если не увидели, то упорно ищем ошибку.
41) Вот и настала очередь мускула. Скачиваем x64 версию 5.6.12.2 MySQL (эта последняя на момент написания статьи и файлик назывался mysql-installer-community-5.6.12.2.msi). Стоит обратить внимание что хоть файл msi 32 разрядный, но он устанавливает обе версии x32 или x64 в зависимости от платформы. И так, клацаем по нему и понеслась установка…
сперва мелькнет вот такой экран

A0025
потом такой

A0026
и вот на этом выбираем  Install MySQL Products

A0027
42) Соглашаемся с лицензией и жмем Next

A0028
43) Ставим еще одну галку… ну не надо нам проверять наличие новой версии… и так новую уже качнули самую новую
A0029
44) Выбираем пункт меню Custom и каталоги где будут размещаться бинарные файлы и файлы баз данных. Восклицательный знак в желтом треугольнике предупреждает, что каталог для данных уже существует. Но я сам его создал и он пустой, так что все ок. Жмем Next…

A0030
45) Теперь кастомизируем :)

A0032
И жмакаем Next
46) Тут может потребовать еще установить недостающие компоненты типа библиотек VC, если попросил, то качаем, ставим и продолжаем установку. У меня уже стоял редистрибютив VC10, так что просто жмем Next

A0033
47) Терь жмем Execute

A0034
48) Отекзекютили… :) и жмем Next

A0035
49) Опять жмем Next

A0036
50) Выбираем все как на скрине и жмем Next

A0037
51) Задаем root пароль для MySQL и создаем первого пользователя – администратора баз данных
обращаем внимание что поле Current Root Password оставляем пустым

A0038
A0039
A0040
И жмем Next
52) Задаем как будет называться наш сервис MySQL в службах винды и так же пользователя под которым она будет запускаться. И очень важно!!! Пользователю iUser надо  дать разрешение на запись в папку G:\iMySQLData и все ее подпапки.

A0041
53) Задаем где будут жить логи скуля и жмем Next

A0042
54) Опять жмем Next

A0043
55) Жмем Finish

A0044
56) Проверяем работу MySQL (пока отдельно без привязки к Apache и PHP). Даем из командной строки команду

"F:\iServer\MySQL\MySQL Server 5.6\bin\mysql.exe" -h localhost -P 3306 -u root -p

на запрос пароля вводим пароль и даем команду

show databases;

видим это:
A0045
И радуемся если видим. Если не видим, чешем репу и ищем ошибки.

57) Прикручиваем MySQL к Apache, хотя вернее сказать к PHP, ну а он уже прикручен к Apache. Вот такой паровозик получается. Итак редактируем файлик F:\iServer\PHP\php.ini. Находим в нем строчки
extension=php_mysql.dll
extension=php_mysqli.dll

и раскомментируем их. Затем находим строку mysql.default_port = и приводим ее к виду mysql.default_port = 3306. Далее находим строку mysql.default_host = и приводим ее к виду mysql.default_host = localhost
Находим строку extension_dir = "ext", расскомментируем ее и приводим ее к виду extension_dir = "F:/iServer/PHP/ext"
Указывая этим самым где находятся файлы расширений PHP.

Перезапускаем Apache.

В каталоге G:\iSites\localhost\www создаем файлик mysqltest.php и вводим туда следующий код:

<?php
$db = mysql_connect("localhost", "root", "ВАШ ROOT ПАРОЛЬ К MySQL")
or
die("Could not connect : " . mysql_error());
mysql_select_db("test",$db) or die ("Could not select database");

$date = mysql_query("SELECT CURDATE()") or die ("Query failed: " . mysql_error());
echo mysql_result($date, 0);
mysql_close($db);
?>

В броузере вводим адрес http://localhost/mysqltest.php и если все сделали правильно, то видим текущую дату.

58) Включим функции PHP для работы с графикой. Редактируем файлик F:\iServer\PHP\php.ini. Находим строку extension=php_gd2.dll  и расскоментируем ее. Перезапускаем Apache.

59) В каталоге G:\iSites\localhost\www создаем файлик gdtest.php и вводим следующий код:

<?
$pic=imagecreate(350,100);
$piccolor=imagecolorallocate($pic, 255,255,255);
$textcolor=imagecolorallocate($pic, 0,0,0);
$linecolor=imagecolorallocate($pic, 0,0,255);
$text="GD test successful - gdtest.php!";
imagerectangle($pic, 1,99, 349,0, $linecolor);
imagestring($pic,5,30,40, $text, $textcolor);
header("content-type: image/png");
imagepng($pic);
imagedestroy($pic);
?>


Вводим в браузере адрес http://localhost/gdtest.php и видим:




A0046 
Радуемся жизни... Если видим. Да и если даже не видим, все  равное радуемся :)

60) Теперь настроим rewrite_module, оч полезная штука :). В файле httpd.conf расскомментируем строчку

LoadModule rewrite_module modules/mod_rewrite.so

Далее ищем конструкцию

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

И заменяем в ней строку AllowOverride None на строку AllowOverride All
Затем чуть ниже так же будет просто строка AllowOverride None ее надо поменять на AllowOverride All
Это включает обработку ВСЕХ параметров ВСЕХ .htaccess во всех каталогах.

Теперь проверяем работу модуля rewrite. Рестрартуем Apache

В каталоге G:\iSites\localhost\www создаем файлик .htaccess и в него вносим одну строку


Redirect /index.html http://ya.ru



эта строка перенаправляет с файла index.html на сайт ya.ru

В браузере просто набираем localhost и нас должно перебросить на страничку ya.ru

Если сработало, то все настроили правильно. Ну а если нет, то ищем где накосячили.

четверг, 22 октября 2009 г.

Установка и настройка Apache, PHP, CGI, MySQL, OpenSSL и Perl под Windows

Установку, как и в прошлый раз, проводил на Windwos XP, но все это будет работать и на серверных осях.
На этот раз будем устанавливать и настраивать, для совместной работы под Windwos, следующую связку:
  • Apache 2.2.14 (Win32 x86) с OpenSSL 0.9.8k
  • РHP 5.3.0 (win32 x68)
  • MySQL 5.1.39
  • ActivePerl 5.10.1.1006
Так как мы хотим подготовить сервер для реального домашнего хостинга, то сразу создадим структуру каталогов для нашего сервера и сайтов. Исполняемые (бинарные) файлы, а так же файлы конфигурации Apache, PHP, MySQL и т.д., мы разместим на одном диске (в моем случае диск R), а файлы наших сайтов, баз данных и лог файлы на другом диске (в моем случае диск X).


И так пошагали...

1) В корне диска R: создаем папку Server и в ней создаем подкаталог PHP.

2) Прописываем путь к каталогу PHP в системную переменную PATH. Для этого выполняем следующие операции:
  • Клацаем правой кнопкой мыши по иконке "Мой Компьютер" и выбираем из контекстного меню пункт "Свойства"
  • Переходим на вкладку дополнительно и клацаем по кнопке "Переменные среды"
  • В окошке системные переменные находим параметр Path, клацаем по нему и к концу строки добавляем наш путь (с точкой запятой перед нашей строкой) - ;R:\Server\PHP
  • Затем клацаем везде ОК и делаем выход из системы и снова входим. Это нужно для того чтобы переменная Path получила новое значение.
  • Запускаем cmd.exe и проверяем что переменная Path получила новое значение введя команду set и жмакнув по Enter

3) В корне диска X: создаем две папки Sites (тут будут лежать наши сайты) и Logs (тут будут жить общие логи сервера).

4) В папке X:\Sites создаем два подкаталога localhost и testru и далее в каждом из них свои подкаталоги www и cgi.

5) Скачиваем дистриб Apache под Win32 с поддержкой SSL. На момент установки последним был файлик apache_2.2.14-win32-x86-openssl-0.9.8k.msi. И запускаем на выполнение.

6) На этом окошке смело жмем Next

7) Принимаем лицензионное соглашение.

8) Внимательно и вдумчиво читаем вот это...

9) Заполняем все поля как на скриншоте

10) Выбираем Custom

11) Выбираем опции как на скриншоте и путь установки R:\Server\Apache

12) Жмакаем Install...

13) После установки в трее должен появиться значек консоли управления сервисом - Apache Service Taskbar

14) Проверяем установку запустив браузер и введя в строке адреса localhost. Видим страницу с надписью It Works!. Радуемся жизни. Что-то уже работает.

15) Далее отыскиваем файлик hosts, который обычно находится по пути C:\WINDOWS\system32\drivers\etc\ и добавляем в него запись 127.0.0.1 test.ru и сохраняем.

Это укажет браузеру где искать наш тестовый домент test.ru. Кстати, заметьте, что в файле уже присутствует запись 127.0.0.1 localhost. Именно по этому браузер и узнал ip сайта localhost, когда мы ввели это имя в строке адреса браузера. Проверяем теперь это в браузере.
Но не шибко радуемся. Так как это еще не мультихостинг. :) Для него еще много что надо настроить.

16) Теперь будем прикручивать PHP. На текущий момент это версия PHP 5.3.0. Качаем дистриб в ZIP архиве. Еще раз повторюсь не инсталер с расширением .MSI, а именно ZIP архив. Файлик на момент написания статьи называется php-5.3.0-Win32-VC6-x86.zip, вот его и качаем.

17) Разархивируем содержимое скачанного архива в папку R:\Server\PHP.

18) Прикручивать PHP к Apache будем как модуль Apache. Для этого идем в каталог R:\Server\Apache\conf, и добавляем в файлик httpd.conf в окончание блока инструкций LoadModule (в строки 127 и 128) две строки:

LoadModule php5_module "R:/Server/PHP/php5apache2_2.dll"
PHPIniDir "R:/Server/PHP/"

19) Находим в файлике httpd.conf инструкции AddType, в конец этого блока (в моем случае в строку 406) вставляем инструкцию:

AddType application/x-httpd-php .php

20) Находим в файле httpd.conf блок инструкций . И добавляем в инструкцию DirectoryIndex указание на файл index.php. Чтобы в конечном виде инструкция выглядела так:

DirectoryIndex index.html index.php

Сохраняем httpd.conf и выходим.

21) Переименовываем или копируем файл php.ini-production (в каталоге R:\Server\PHP) в файл php.ini.

22) Находим в файле php.ini строку short_open_tag = Off. И приводим ее к виду short_open_tag = On

23) Создаем в каталоге R:\Server\Apache\htdocs файлик phptest.php и пишем в нем следущий код:
<?
phpinfo();
?>
Сохраняем файлик.

24) Останавливаем и снова запускаем Apache через консоль управления Apache. После перезапуска Apache можно открыть окно управления сервисом Apache дважды кликнув по иконке в трее. Должны увидеть следующее окошко:

Обратите внимание, что в статусной панели сервиса управления Apache отображается, что так же загружен модуль PHP и указана его версия.
Если вы этого не увидели, то сверните окошко и разверните его снова. Если и это не помогло, значит, что то сделали не так и 25 шаг, скорее всего у вас сделать не получится.

25) Тестируем работу PHP. Набираем в браузере http://localhost/phptest.php и видим следующую картинку и радуемся жизни. PHP заработал:

Если такого не видим, то повторяем все шаги снова, до тех пор пока не увидим :).

**) Небольшое, лирическое отступление от темы установки. Любой сетевой сканер прочитав банер Apache покажет вот такую, или примерно такую инфу:

Что с потрохами выдает и ОС, и версию Apache и версию PHP, что очень не очень хорошо. Как с этим бороться рассмотрим чуть ниже.

26) Позаботимся немного о безопасности нашего сервера. По умолчанию, при установке, сервис Apache запускается под пользователем SYSTEM, который имеет в системе максимальные права. Это не есть гуд. Сейчас будем исправлять эту ситуацию.
  • создаем учетную запись webserver и назначаем ей пароль
  • проверяем чтобы она входила только в группу пользователи
  • запрещаем для пользователя webserver локальный вход и выставляем право работать в режиме операционной системы и вход в качестве службы через оснастку gpedit.msc
  • Даем учетной записи webserver право на запись в папку R:\Server\Apache\logs. И только в эту папку. По умолчанию в другие папки доступа на запись и не должно быть.
  • Через оснастку управления службами устанавливаем запуск сервиса Apache2.2 под учетной записью webserver
  • Перезапускаем службу Apache2.2
  • Ну и проверяем работу зайдя по адресу http://localhost
27) Настраиваем виртуальные хосты. На 4 шаге мы создали структуру расположения сайтов на нашем сервере. Теперь, так же, выдаем права на запись в папку X:\Logs и папку X:\Sites (со всеми ее подкаталогами), право на запись для учетной записи webserver.

28) Идем в папку R:\Server\Apache\conf\extra и редактируем файл httpd-vhosts.conf. Приводим его к вот такому виду:

29) Раскомментируем в файле httpd.conf строчки
LoadModule logio_module modules/mod_logio.so
Include conf/extra/httpd-vhosts.conf

30) В файле httpd.conf находим строку DocumentRoot "R:/Server/Apache/htdocs" и меняем ее на DocumentRoot "X:/Sites/localhost/www".

31) В файле httpd.conf находим строку <Directory "R:/Server/Apache/htdocs"> и меняем ее на <Directory "X:/Sites">

32) В файле httpd.conf находим строку ErrorLog "logs/error.log" и меняем ее на ErrorLog "X:/Logs/error.log".

33) В файле httpd.conf находим строку CustomLog "logs/access.log" common и меняем ее на CustomLog "X:/Logs/access.log" common.

34) В каталоге X:\Sites\localhost\www создаем файлик index.html со следующим содержимым:
<H1>It is my LocalHost</H1>

35) В каталоге X:\Sites\testru\www создаем файлик index.html со следующим содержимым:
<H1>It is my TEST.RU</H1>

36) Рестартуем Apache. Заходим браузером по адресу http://localhost и видим следующие:

Заходим по адресу test.ru и видим следующее:

Радуемся реально работающему виртуальному хостингу.
Если не видим, то не радуемся. И ищем где ошиблись.

37) Языковые настройки. Редактируем файлик R:\Server\Apache\conf\extra\httpd-languages.conf. Комментируем все строки AddLanguage с теми языками, которые нам не нужны. Я оставил только строки:

AddLanguage en .en
AddLanguage ru .ru

Находим строку LanguagePriority и убираем там все языки, которые не нужны. У меня эта строчка выглядит так:

LanguagePriority en ru

Перед блоком AddCharset вставляем строку AddDefaultCharset WINDOWS-1251.
Сохраняем файл.

В файле R:\Server\Apache\conf\httpd.conf расскомментируем строчку Include conf/extra/httpd-languages.conf.

38) Включаем SSI. В файле R:\Server\Apache\conf\httpd.conf находим строки:

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

И расскоментируем их.

Находим блок <Directory "X:/Sites"> и в нем строку Options Indexes FollowSymLinks. Приводим ее к виду Options Indexes FollowSymLinks Includes.

Сохраняем файл.

39) В каталоге X:\Sites\localhost\www создаем файл ssi.html со следующим содержимым:

SSI тест прошел успешно - ssi.html!

Затем, там же создаем файл ssitest.shtml со следующим содержимым:

<!--#include virtual="/ssi.html" -->

40) Рестартуем Apache. В броузере вводим адрес http://localhost/ssitest.shtml и видим следующее:

Радуемся что работает русский язык и SSI. Если не увидели, то упорно ищем ошибку.

41) Настройка CGI. В файле R:\Server\Apache\conf\httpd.conf находим строчку ScriptAlias /cgi-bin/ "R:/Server/Apache/cgi-bin/" и приводим ее к виду ScriptAlias /cgi-bin/ "X:/Sites/localhost/cgi/" и добавляем следующей строкой еще одну строчку ScriptAlias /cgi/ "X:/Sites/localhost/cgi/". Находим строку AddHandler cgi-script .cgi, расскоментируем ее и приводим к виду AddHandler cgi-script .cgi .bat .exe, указывая этим расширения файлов, которые будут исполняться как cgi скрипты. Находим строку Directory "R:/Server/Apache/cgi-bin" и приводим ее к виду Directory "X:/Sites/localhost/cgi/".
Вообще это не безопасно если не понимаем, что делаем. Привожу это здесь на всякий случай, может кому пригодится. Сохраняем файл.

42) Далее редактируем файл R:\Server\Apache\conf\extra\httpd-vhosts.conf. Добавляем инструкции ScriptAlias /cgi/ "X:/Sites/localhost/cgi/" и ScriptAlias /cgi/ "X:/Sites/testru/cgi/" в соответствующие блоки. Сохраняем файл.

43) Создаем файл cgitest.bat в каталоге X:\Sites\testru\cgi и вписываем туда следующий код:

@echo off
echo Content-type: text/html
echo.
echo.
echo TEST.RU CGI тест прошел успешно - cgitest.bat!

Создаем файл cigtest.bat в каталоге X:\Sites\localhost\cgi и вписываем туда следующий код:

@echo off
echo Content-type: text/html
echo.
echo.
echo LOCALHOST CGI тест прошел успешно - cgitest.bat!

44) Перезапускаем Apache и тестируем работу CGI введя в броузере следующие адреса:







Обращаем особое внимание на последний скриншот. Не смотря на то, что доменом указан test.ru, сработал cgi сценарий из папки cgi в localhost. Это обусловлено нашими настройками cgi. Папка cgi в localhost является общей для всех виртуальных хостов при обращении к ней через алиас cgi-bin.

45) Теперь очередь за MySQL. Хотя на момент написания была доступна версия 5.4.3-beta под Windwos. Я не стал с ней экспериментировать, а скачал версию 5.1.39 для Win32. Если у вас винда 64-разрядная, то скачиваете соответствующий дистриб вот от сюда. В моем случае файлик назывался mysql-5.1.39-win32.msi. Клацаем по нему и понеслась установка...

клацаем Next

Выбираем Custom клацаем Next

Меняем путь установки, выбираем нужные нам компоненты (я выбрал все) и клацаем Next и затем Install. Понеслась установка...

После завершения установки любуемся красивой картинкой и клацаем Next два раза, так как там еще будет одна красивая картинка :).

Так как сейчас уже MySQL принадлежит корпорации Sun, то нам предлагают зарегистрировать этот продукт, что можно смело пропустить. Оставляем только галку Configure MySQL Server now и клацаем Finish. После этого запустится мастер конфигурирования.

Клацаем Next.

Делаем правильный выбор и клацаем Next.

Тут нам предлагают определиться с типом сервера. От этого будет зависеть использование сервером MySQL ресурсов машины. На выбор дается три варианта:
  • Developer Machine. Как следует из названия, использовать этот вариант следует, если вы ставите MySQL на машине разработчика, где крутится еще куча всякого нужного (и ненужного, как обычно у разработчиков) софта. В этом случае MySQL автоматически будет настроен на минимальное использование ресурсов.
  • Server Machine. В этом случае предполагается, машина серверная и что на машине, кроме MySQL, крутится еще парочка серверных приложений. Например - Apache. В этом случае, очевидно, MySQL будет настроен на совместное использование ресурсов с несколькими, потенциально ресурсоемкими приложениями.
  • Dedicated MySQL Server Machine. Последний вариант - это монопольное использование ресурсов MySQL. Если у вас есть выделенная машина ТОЛЬКО под базу MySQL, я вас поздравляю - выбирайте этот вариант.
Так как у нас WEB сервер, то выбираем Server Mashine и клацаем Next.

Выбираем тип хранилища базы.
  • Mutltifunctional Database. Я обычно выбираю эту опцию. В этом случае создаются хранилища "общего назначения", с возможностью использования как InnoDB, так и MyISAM таблиц.
  • Transactional Database Only. База оптимизируется для серверов приложений или Web приложений с большим числом транзакций. Основным движком для хранилищ становится InnoDB.
  • Non-Transacional Database Only. Используется для большинства простых Web приложений, для сбора статистики и т. п. Активируется только движок MyISAM.
Что выбрать - ваше дело.

Преимущества транзакционных таблиц InnoDB:
  • Надежность.
  • Можно сочетать несколько операторов и принимать все эти операторы одной командой COMMIT.
  • Поддержка откатов
  • Если произойдет сбой во время обновления, все изменения будут восстановлены (в нетранзакционных таблицах все внесенные изменения не могут быть отменены).
  • Лучше обеспечивает параллелизм при одновременных обновлениях таблицы и чтении.
Преимущества нетранзакционных таблиц MyISAM:
  • Скорость
  • Меньший расход дискового пространства
  • Для обновлений используется меньше памяти.
Так что отталкивайтесь от задач. Для нас, на мой взгляд, лучшим будет первый вариант. Выбираем его и клацаем Next.

Так как мы выбрали Mutltifunctional Database, то у нас спрашивают где разместить табличные простарнаства InnoDB. Я их расположил на том же диске, где у меня находится папка Sites. Так как, в начале я уже говорил, что я предпочитаю держать все бинарники на одном диске, а файлы данных на другом. Клацаем Next.

Здесь выбираем нагрузку, которая будет на базу (количество одновременных подключений). В нашем случае первого варианта достаточно. Клацаем Next.

Здесь оставляем все как есть по умолчанию. Если у вас включен Windows FireWall и вам нужно чтобы к MySQL могли подключится по сети, то ставим галку Add firewall exeption for this port. Клацаем Next.

Выбираем русскую кодировочку для таблиц, как показано на рисунке и клацаем Next.

Здесь все и так понятно. Оставляем по умолчанию. Ну если сильно надо из коммандной строки работать, то ставим соответствующую галку. И клацаем Next.

Задаем пароль для пользователя root базы данных. Клацаем Next и затем Execute.

Мастер записал наши параметры в файл конфигурации MySQL и показал где он находится, а так же радостно сообщил что все было successfully. Жмакаем Finish.

46) Теперь будем править файлик my.ini, чтобы MySQL правильно работала с кодировкой windows-1251, а так же переместим расположение баз по умолчанию. Находим в файле R:\Server\MySQL\my.ini строку datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/". Это вот здесь вот! По умолчанию MySQL размещает свои базы. Форменное безобразие. Щас мы это исправим. Создаем папку X:\DataBases\MySQL и соответственно изменяем путь в параметре datadir на следующий datadir="X:/DataBases/MySQL/". Но этого не достаточно! Если щас перезапусить сервис MySQL, то он не запуститься, так как не найдет по новому пути системных баз данных. Поэтому копируем (или еще лучше перемещаем) все содержимое папки C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\Data в папку X:\DataBases\MySQL.

Далее в секции [client]
добавляем путь к папке кодировок

character-sets-dir="R:/Server/MySQL/share/charsets"

В секции [mysql] делаем тоже самое. В секции [mysqld] добавляем эту же строку и строку

init-connect="SET NAMES cp1251"

в которой будут передаваться данные MySQL.

Сохраняем файл и рестартуем сервис.

47) Проверяем работу MySQL (пока отдельно без привязки к Apache и PHP). Даем из командной строки команду

start R:\Server\MySQL\bin\mysql.exe -h localhost -P 3306 -u root -p

на запрос пароля вводим пароль и даем команду

show databases;

видим это:


И радуемся если видим. Если не видим, чешем репу и ищем ошибки.

48) По умолчанию сервис MySQL стартует под учетной записью SYSTEM. Это, как уже говорилось, очень не очень хорошо. Поступаем с ним, так же как и с Apache. Настраиваем запуск, под уже созданной учетной записью webserver. Кроме того, чтобы MySQL стартовал под этой учетной записью, все же придется прописать путь к папке R:\Server\MySQL\bin в системную переменную PATH (это так же можно было сделать при установке MySQL), а также дать учетной записи webserver разрешения на запись в папку X:\DataBases. Релогинимся в системе, чтобы подхватились новые параметры переменной PATH, рестартуем сервис MySQL уже под учеткой webserver и проверяем работу MySQL, как в предыдущем шаге.

49) Прикручиваем MySQL к Apache, хотя вернее сказать к PHP, ну а он уже прикручен к Apache. Вот такой паровозик получается. Итак редактируем файлик R:\Server\PHP\php.ini. Находим в нем строчки

extension=php_mysql.dll
extension=php_mysqli.dll

и раскомментируем их. Затем находим строку mysql.default_port = и приводим ее к виду mysql.default_port = 3306. Далее находим строку mysql.default_host = и приводим ее к виду mysql.default_host = localhost.

Находим строку extension_dir = "ext" и приводим ее к виду extension_dir = "R:/Server/PHP/ext". Указывая этим самым где находятся файлы расширений PHP.

Перезапускаем Apache.

В каталоге X:\Sites\localhost\www\ создаем файлик mysqltest.php и вводим туда следующий код:

<?php
$db = mysql_connect("localhost", "root", "ВАШ ROOT ПАРОЛЬ К MySQL")
or
die("Could not connect : " . mysql_error());
mysql_select_db("test",$db) or die ("Could not select database");

$date = mysql_query("SELECT CURDATE()") or die ("Query failed: " . mysql_error());
echo mysql_result($date, 0);
mysql_close($db);
?>

В броузере вводим адрес http://localhost/mysqltest.php и если все сделали правильно, то видим текущую дату.

50) Включи функции PHP для работы с графикой. Редактируем файлик R:\Server\PHP\php.ini. Находим строку extension=php_gd2.dll (953 строка по идее) и расскоментируем ее. Перезапускаем Apache.

51) В каталоге X:\Sites\localhost\www созадем файлик gdtest.php и вводим следующий код:
<?
$pic=imagecreate(350,100);
$piccolor=imagecolorallocate($pic, 255,255,255);
$textcolor=imagecolorallocate($pic, 0,0,0);
$linecolor=imagecolorallocate($pic, 0,0,255);
$text="GD test successful - gdtest.php!";
imagerectangle($pic, 1,99, 349,0, $linecolor);
imagestring($pic,5,30,40, $text, $textcolor);
header("content-type: image/png");
imagepng($pic);
imagedestroy($pic);
?>
Вводим в браузере адрес http://localhost/gdtest.php и видим:



Радуемся жизни... Если видим.

52) Ставим Perl. На момент написания последней версией был ActivePerl 5.10.1.1006. Берем вот от сюда https://www.activestate.com/activeperl/downloads. Это обычный .msi пакет. Запускаем на установку...



Жмем Next



Снова жмем Next

Выбираем путь нужный нам путь установки и жмем Next

Оставляем эти две галки как есть (то есть отмеченными :) ) И жмем Next и затем Install. И понеслася установка на диск...

53) Редактируем файлик R:\Server\Apache\conf\httpd.conf находим строку AddHandler cgi-script .cgi .bat .exe и приводим ее к виду AddHandler cgi-script .cgi .bat .exe .pl

54) При установке ActivePerl запихнет файл (printenv.pl) для тестирования своей работы совместно с Apache в каталог R:\Server\Apache\cgi-bin, наивно полагая что у нас на него настроен сайт. Поэтому нам надо переместить этот файлик в каталог X:\Sites\localhost\cgi.

55) Редактируем файл X:\Sites\localhost\cgi\printenv.pl. Исправляем первую строку с

#!c:/perl/bin/perl.exe

на

#!R:/Server/Perl/bin/perl.exe (в моем случае)

Или же можно просто написать #!perl, но перед тем как проводить тестирование надо будет сделать выйти и войти снова в систему.

56) Рестарутем Apache и вводим в браузере адрес http://localhost/cgi-bin/printenv.pl и видим...

И радуемся, радуемся жизни... если видим...

57) Теперь самое вкусное - настройка SSL для Virtual Hosts. Много было копий сломано по этому поводу в сети. И так выполняем пункты с 10 по 13 из этой статьи http://adminsnotes.blogspot.com/2008/01/apache-openssl-windows.html

58)Выполняем 14 из той же статьи для каждого нашего виртуального хоста (localhost и test.ru). Естественно что должно получиться два набора файлов для каждого виртуального хоста.

59) Создаем подпапку ssl в корне каждого виртуального хоста и помещаем туда соответствующие наборы фалов сертификатов.

60) Выполняем пункт 16 из той же статьи. ЗА ИСКЛЮЧЕНИЕМ строк добавляющих виртуальный хост. Это мы сделаем в файле httpd-vhosts.conf.

61)Приводим файл httpd-vhosts.conf к следующему виду: