Настройка Apache в Windows [черновик]

Это заметка по настройке веб-сервера в Windows, её можно считать продолжением статьи «Установка веб-сервера (Apache 2.4, MySQL 5.7, PHP 7, phpMyAdmin) на Windows 10». Материал в процессе подготовки, но поскольку поступил вопрос, на который она содержит ответ, было решено опубликовать его в таком виде.

Подключение виртуальных хостов Apache в Windows

Виртуальные хосты могут быть привязаны к имени хоста (например, study.loc), к IP (например, 127.0.0.3) и к порту (*:81). Второй и третий способ хороши тем, что нам не придётся решать вопрос о DNS преобразованиях имени нашего виртуального хоста (это, обычно, достигается изменением системного файла C:\Windows\System32\drivers\etc\hosts либо использованием личного DNS сервера с соответствующими записями).

Рассмотрим все три способа. Но начнём с небольшой подготовки. Создадим каталог, в котором будем размещать наши виртуальные хосты. Например, C:\Server\data\htdocs\virthosts\. А в этом каталоге создадим три новых папки: host1, host2, host3. В каждой из них создайте по индексному файлу (index.html) с любым содержанием, который позволил бы идентифицировать, что вы попали в нужный хост. Я сделаю следующие записи в соответствующих индексных файлах хостов, для первого хоста:

You reached host1.

Для второго:

You reached host2.

Для третьего:

You reached host3.

Теперь приступим к настройки виртуальных хостов.

В файле C:\Server\bin\Apache24\conf\httpd.conf найдите и раскоментируйте следующую строку:

Include conf/extra/httpd-vhosts.conf

В файле C:\Server\bin\Apache24\conf\extra\httpd-vhosts.conf закомментируйте (или удалите) те строки, которые приведены по умолчанию.

Виртуальные хосты на основе IP

Для виртуальных хостов, которые привязаны к IP, требуются несколько IP. Тем не менее, на своём локальном сервере вы можете проделать этот фокус, поскольку в IPv4, в 127.0.0.1 также отражается любой адрес в пределах от 127.0.0.0 до 127.255.255.255.

Попробуйте набрать в браузере 127.0.0.1, а затем попробуйте 127.0.0.2, 127.0.0.3, 127.0.0.4, 127.0.0.5 и т.д. Как видите, IP у нас много, и к каждому из них можно привязать виртуальных хост.

Добавьте в файл C:\Server\bin\Apache24\conf\extra\httpd-vhosts.conf следующие строки:

<VirtualHost 127.0.0.2:80>
    ServerAdmin webmaster@www1.example.com
    DocumentRoot "C:/Server/data/htdocs/virthosts/host2/"
</VirtualHost>

А теперь откройте 127.0.0.2:

01

При этом на другие IP 127.0.0.*, а также на localhost наши настройки влияние не оказывают.

Виртуальные хосты на основе портов (разные сайты на разных портах)

Теперь добавьте в файл C:\Server\bin\Apache24\conf\extra\httpd-vhosts.conf строки:

Listen 81
<VirtualHost *:81>
    ServerAdmin webmaster@www1.example.com
    DocumentRoot "C:/Server/data/htdocs/virthosts/host3/"
</VirtualHost>

Порт можете заменить на любой другой, не занятый в вашей системе. Также вместо звёздочки можете указать конкретный IP. Перезапустите и откройте в браузере http://localhost:81:

02

Виртуальные хосты на основе имени хоста

Следующий способ требует редактирование файла C:\Windows\System32\drivers\etc\hosts (либо внесение записи в ваш собственный DNS сервер). Придумайте любое имя хоста, желательно, не совпадающее с реальным. Примеры supersite, study.loc, video.ofme. Я возьму в качестве примера study.loc. Откройте файл C:\Windows\System32\drivers\etc\hosts и добавьте туда:

127.0.0.1 study.loc

А в файл C:\Server\bin\Apache24\conf\extra\httpd-vhosts.conf добавьте строки:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "C:/Server/data/htdocs/"
</VirtualHost>

<VirtualHost *:80>
    ServerName study.loc
    DocumentRoot "C:/Server/data/htdocs/virthosts/host1/"
</VirtualHost>

Перезапустите сервер и перейдите в браузере к http://study.loc:

03

Аналогично настраиваются и субдомены (dir1.study.loc, dir2.study.loc, dir3.localhost и т.п.).

Автоматическое создание виртуальных хостов / субдоменов

В файле C:\Server\bin\Apache24\conf\httpd.conf найдите и раскоментируйте следующую строку:

LoadModule vhost_alias_module modules/mod_vhost_alias.so

А также, если вы не сделали этого ранее, строку:

Include conf/extra/httpd-vhosts.conf

В директории C:\Server\data\htdocs\virthosts\ создайте папку localhost (теперь именно её содержимое будет отображаться, когда вы в браузере набираете http://localhost).

В файл C:\Server\bin\Apache24\conf\extra\httpd-vhosts.conf добавьте следующую строку

VirtualDocumentRoot "C:/Server/data/htdocs/virthosts/%1/"

Перезапустите сервер.

Теперь любая папка, созданная в C:\Server\data\htdocs\virthosts\ будет доступна по адресу вида

http://имя_папки.localhost

При открытии http://host1.localhost мы увидим содержимое C:\Server\data\htdocs\virthosts\host1\, при открытии http://super.localhost увидим сайт в C:\Server\data\htdocs\virthosts\super\ и т.д.

Как сделать резервную копию БД MySQL в Windows?

Резервную копию можно создать в графическом веб-интерфейсе в phpMyAdmin. Если вы хотите сделать бэкап сразу всех баз данных, то перейдите на главную страницу phpMyAdmin, оттуда перейдите во вкладку Экспорт. Далее всё достаточно просто, в том числе и дополнительными опциями.

Аналогично при бэкапе отдельных баз данных: перейдите на страницу интересующей БД, а далее в Экспорт.

Если вы по каким-то причинам хотите сделать бэкап базы данных MySQL из командной строки в Windows, то для этого понадобиться утилита mysqldump.exe, она поставляется вместе с MySQL и расположена в каталоге C:\Server\bin\mysql-5.7\bin\.

Для её использования откройте командную строку и перетащите туда программу. Программу можно использовать с разнообразными опциями:

Если вы хотите сделать резервную копию всех баз данных в один файл, то выполните:

mysqldump.exe -u root -p --all-databases > all-databases.sql

Кстати, файл нужно искать в той папке, которую вы видите в приглашении командной строки.

Для того, чтобы сделать резервную копию только одной базы данных (например, rsyslog):

mysqldump.exe -u root -p rsyslog > rsyslog.sql

Чтобы сделать резервную копию нескольких баз данных используйте опцию --databases, а после него через пробел перечислите желаемые для бэкапа базы данных:

mysqldump.exe -u root -p --databases rsyslog syslog > rsyslog_syslog.sql

Чтобы сделать резервную копию только одной таблицы (wp_posts) из базы данных (wordpress):

mysqldump.exe -u root -p wordpress wp_posts > wordpress_posts.sql

Для того, чтобы сделать резервную копию нескольких таблиц, перечислите их через пробел после названия БД:

mysqldump.exe -u root -p wordpress wp_posts wp_comments > wordpress_posts_comments.sql

Краткая характеристика основных директив конфигурационных файлов Apache

 

 

 

Настройка ограничения доступа к папкам сервера

 

 

 

 

 

Открытие доступа к веб-серверу Apache в Windows для локальной и глобальной сети

 

 

 

 

Настройка SSL для Apache в Windows

 

 

 

Файл .bat для управления сервером (запуск, перезапуск, проверка обновлений и др.)

 

 

Включение модулей по отображению информации и статуса сервера

Если вы хотите удалённо мониторить состояние сервера (возможно, с помощью автоматизированных скриптов или программ), то вам может пригодиться включение модулей mod_status и mod_info.

В файле C:\Server\bin\Apache24\conf\httpd.conf найдите и раскоментируйте следующие строки:

LoadModule status_module modules/mod_status.so
LoadModule info_module modules/mod_info.so
Include conf/extra/httpd-info.conf

В файле C:\Server\bin\Apache24\conf\extra\httpd-info.conf измените приведённые строки (или просто их удалите и замените на предлагаемые), чтобы получилось:

<Location /server-status>
    SetHandler server-status
    Require host localhost
    Require ip ::1
</Location>

<Location /server-info>
    SetHandler server-info
    Require host localhost
    Require ip ::1
</Location>

Раскоментируйте строку:

ExtendedStatus On

Перезапустите сервер.

Теперь при обращении по адресам http://localhost/server-info и http://localhost/server-status вы сможете наблюдать в режиме реального времени информацию и статус сервера.

Рекомендуемые статьи:

One Comment to Настройка Apache в Windows [черновик]

  1. Дмитрий:

    Спасибо Вам за подробную инструкцию.

    Сделал Автоматическое создание виртуальных хостов / субдоменов

    В опере всё работает а в IE, SAFARI, Firefox

    нет, работает только http://localhost/

    а созданные папки например - http://site.localhost/ не работает

    как исправить?

Добавить комментарий

Ваш e-mail не будет опубликован.