Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

Нескольких сайтов, то Apache для этих целей предоставляет возможность настройки виртуальных хостов (virtual hosts). Виртуальные хосты бывают двух видов: name-based virtual hosts , то есть привязанные к доменному имени, и IP-based virtual hosts , то есть привязанные к IP-адресу. Виртуальные хосты первого типа используют разные имена для одного IP-адреса, а второго типа – используют для каждого сайта отдельный IP-адрес. Создание виртуальных хостов в Apache необходимы, если на вашем сервере есть несколько сайтов, а их настройка необходима для корректного отображения всех сайтов.

Наиболее распространенным является использование виртуальных хостов на базе имен (name-based virtual hosts), привязанных к одному IP-адресу. Таким образом, можно хранить множество сайтов на одном IP.

Самым простым способом добавления и последующей настройки виртуальных хостов Apache является редактирование конфигурационного файла веб-сервера, который имеет разные названия и места расположения в зависимости от операционной системы:

В Red-Hat /CentOS /Fedora :

/etc/httpd/conf/httpd.conf

Debian /Ubuntu :

/etc/apache2/apache2.conf

Вторым способом настройки является использование собственных .conf файлов, которые должны размещаться по пути:

В Red-Hat /CentOS /Fedora :

/etc/httpd/conf.d/filename.conf,

Debian /Ubuntu :

/etc/apache2/conf.d/filename.conf.

Как правило, в конфигурационном файле httpd.conf или apache2.conf раздел управления виртуальными хостами располагается в самом конце. Для добавления виртуального хоста нужно будет открыть этот файл и раскомментировать в нём (убрать # ) директиву NameVirtualHost *:80 (Аргумент * обозначает «все имена хостов»). Если будет использоваться способ размещения конфигурации в conf.d , то указанную директиву не нужно раскомментировать, а следует определить её в самом создаваемом файле.

После NameVirtualHost следует блок VirtualHost *:80 . Подобные блоки и являются конфигурацией ваших виртуальных хостов. Выглядит это все примерно следующим образом:

NameVirtualHost *:80 AllowOverride All Options All ServerAdmin [email protected] DocumentRoot /var/www/site1.ru ServerName site1.ru ServerAlias www.site1.ru ErrorLog logs/site1.ru-error_log CustomLog logs/site1.ru-access_log common ServerAdmin [email protected] DocumentRoot /var/www/site2.ru ServerName site2.ru ServerAlias www.site2.ru ErrorLog logs/site2.ru-error_log CustomLog logs/site2.ru-access_log common

Именно здесь и производятся все настройки виртуальных хостов, а также, подключение или отключение определенных опций.

Рассмотрим более детально, за что отвечает каждая указанная выше директива.

1. Директива ServerAdmin указывает электронный адрес администратора сервера, на который приходят все уведомления с хоста, касающиеся его администрирования.

2. Директива DocumentRoot указывает корневую директорию с файлами сайта, которые должны будут выдаваться веб-сервером клиенту (браузеру).

3. Директива Server Name определяет имя хоста, по запросу которого должны будут выдаваться файлы, расположенные в DocumentRoot.

4. Директива ServerAlias служит для задания альтернативных имен хоста (алиасов, псевдонимов), на которые он откликается.

5. Директива ErrorLog задает файлы протоколов ошибок для каждого хоста, а CustomLog – файлы протоколов для всего остального, кроме ошибок.

До блоков с виртуалхостами, как вы заметили, есть еще запись:

AllowOverride All

В тегах заключается перечень директив (параметров), которые будут применяться к конкретной директории, которая указывается в открывающем теге. В примере выше – это var/www/ . Указанная директива AllowOverride указывает, использовать ли файлы .htaccess и если да, то какие глобальные директивы веб-сервера в можно переопределять в таких файлах. В представленном выше примере значение AllowOverride установленно в All , что разрешает обрабатывать файлы.htaccess и все указанные в нём директивы. Существуют и другие возможные значения:

AuthConfig – разрешает использовать директивы авторизации (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require, и т.д..).

FileInfo – разрешает использовать директивы, управляющие типами документов (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority, и т.д..).

Indexes — разрешает использовать директивы для управления индексацией каталогов (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, и т.д..).

Limit — разрешает использовать директивы управления доступом (allow, deny и order).

Options — разрешает использовать директивы, с помощью которых можно управлять специфическими особенностями каталога (Options и XBitHack).

Это одна из многих возможных директив, с которыми вы можете ознакомиться на сайте разработчиков.

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

Apachectl configtest apachectl -S apachectl -d

Если получено сообщение “Syntax OK ”, значит ошибок нет и можно перезагружать веб-сервер, чтобы применились изменения. Сделать это можно с помощью следующих команд:

Red-Hat/CentOS/Fedora:

Service httpd restart

/etc/init.d/ httpd restart

Debian/Ubuntu:

Service apache2 restart

/etc/init.d/apache2 restart

Далее вы можете столкнуться со следующей проблемой. При поступлении запроса Apache проходит по всему списку виртуальных хостов в поисках соответствующего, и, если не находит соответствия, выдает первый по порядку хост. Чтобы устранить данную неприятность, специалисты придумали так называемую секцию-заглушку, которую следует вставить перед первой секцией VirtualHost реального сайта. Выглядит она приблизительно следующим образом:

ServerName default DocumentRoot /var/www/default

Таким образом, все неправильные запросы будут отсылаться по пути var/www/default , где можно создать индексную страницу, которая будет сообщать о неправильном запросе.

Также, Apache по умолчанию не имеет доступа к вашим домашним директориям, а только к директории /var/www . Если вы используете на своем сервере SElinux, то для предоставления Apache доступа к домашним директориям используйте следующие команды:

Setsebool -P httpd_enable_homedirs 1

Setsebool -P apache2_enable_homedirs 1

Для того чтобы Apache имел доступ к определенной директории, например, к /home/mydir следует использовать команду:

Chcon -R -t httpd_sys_content_t /home/mydir

Chcon -R -t apache2_sys_content_t /home/mydir

При отключенном SELinux для предоставления Apache доступа к той или иной домашней директории сайта, вам нужно будет вручную отредактировать его конфигурационный файл (/etc/httpd/conf/httpd.conf в CentOS/Fedora или /etc/apache2/apache2.conf в Debian/Ubuntu ).

Открыв конфигурационный файл веб-сервера для редактирования, найдите строку DocumentRoot (при использовании редактора nano ее можно отыскать с помощью комбинации клавиш Ctrl+W ). Замените значение в кавычках /var/www/html на абсолютный путь к домашней директории сайта (например, /home/username/site.com ). Сохраните изменения и выйдите из меню редактора (Ctrl+O и Ctrl+X ). Перезапустите Apache.

Если у вас на VPS установлена ОС Debian/Ubuntu , то править строку DocumentRoot необходимо в файле /etc/apache2/sites-available/default . Откройте его для редактирования и замените стандартное значение /var/www на абсолютный путь к домашней директории сайта. Выполните перезапуск веб-сервера.

На этом базовая настройка виртуальных хостов окончена.

Это заметка по настройке веб-сервера в Windows, её можно считать продолжением статьи « ». Материал в процессе подготовки, но поскольку поступил вопрос, на который она содержит ответ, было решено опубликовать его в таком виде.

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

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

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

You reached host1.

Для второго:

You reached host2.

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

You reached host3.

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

В файле

В файле закомментируйте (или удалите) те строки, которые приведены по умолчанию.

Виртуальные хосты на основе 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 следующие строки:

ServerAdmin [email protected] DocumentRoot "C:/Server/data/htdocs/virthosts/host2/"

Перезапустите веб-сервер (делайте перезапуск после каждого изменения файла настройки):

C:\Server\bin\Apache24\bin\httpd.exe -k restart

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

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

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

Listen 81 ServerAdmin [email protected] DocumentRoot "C:/Server/data/htdocs/virthosts/host3/"

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

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

Следующий способ требует редактирование файла 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 добавьте строки:

ServerName localhost DocumentRoot "C:/Server/data/htdocs/" ServerName study.loc DocumentRoot "C:/Server/data/htdocs/virthosts/host1/"

Перезапустите сервер и перейдите в браузере к :

Аналогично настраиваются и субдомены (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

Настройка SSL для Apache в Windows (переход с HTTP на HTTPS)

Если вы хотите использовать SSL в веб-сервере Apache под Windows, то вам необходимы три файла: *.key, *.csr и *.crt. Если вы купили валидный SSL сертификат для вашего сайта, то эти файлы вам должны прислать после покупки. Их может быть больше - среди них могут быть промежуточные сертификаты.

Если вы хотите настроить SSL на локальном веб-сервере, то все эти файлы можно сгенерировать самостоятельно, т.е. создать самоподписанный сертификат. Этот сертификат не является валидным (не может быть проверен с участием третьей стороны), но для упражнения в переходе с HTTP на HTTPS он вполне подойдёт.

Предполагается, что вы ставили веб-сервер по - иначе замените абсолютные пути на свои собственные.

Откройте командную строку Windows (WIN + x , далее выберите «Командная строка »). В командной строке введите команды:

Cd C:\Server\bin\Apache24\bin\ set OPENSSL_CONF=C:\Server\bin\Apache24\conf\openssl.cnf openssl.exe genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out localhost.key openssl.exe req -new -key localhost.key -out localhost.csr

При вводе последней команды появятся запросы на английском языке. Ниже следует их перевод.

You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ".", the field will be left blank. -----

Вас попросят ввести информацию, которая будет включена в запрос вашего сертификата. То, что вы будете вводить, называется Distinguished Name или DN. Там всего несколько полей, которые можно оставить пустыми. В некоторых полях будут значения по умолчанию. Если вы введёте ".", то поле будет оставлено пустым.

Country Name (2 letter code) :

Двухбуквенное имя страны (двухбуквенный код)

State or Province Name (full name) :

Название штата или провинции/области (полное имя)

Locality Name (eg, city) :

Название населённого пункта (например, города)

Organization Name (eg, company) :

Название организации (т.е. компании).

Organizational Unit Name (eg, section) :

Подразделение организации (т.е. отдел)

Common Name (e.g. server FQDN or YOUR name) :

Общее имя (например, FQDN сервера или ВАШЕ имя). Можете ввести localhost.

Email Address :

Почтовый адрес

Please enter the following "extra" attributes to be sent with your certificate request A challenge password : An optional company name :

Пожалуйста, введите следующие «дополнительные» атрибуты для отправки с вашим запросом сертификата

  • Пароль запроса:
  • Опциональное имя компании:

Теперь выполните команду:

Openssl.exe x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt

В результате в каталоге C:\Server\bin\Apache24\bin\ должны появиться три новых файла:

  • localhost.key
  • localhost.csr
  • localhost.crt

Из них нам понадобятся только два:

  • localhost.key
  • localhost.crt

При использовании сертификатов для настройки реального веб-сайта, удобнее создать виртуальный хост с примерно следующими настройками:

ServerName www.example.com SSLEngine on SSLCertificateFile "/путь/до/www.example.com.crt" SSLCertificateKeyFile "/путь/до/www.example.com.key"

Для настройки использования SSL на локальном веб-сервере Apache в Windows следуйте инструкции ниже.

В каталоге C:\Server\ создайте новую папку certs и переместите туда файлы localhost.key и localhost.crt .

В директории C:\Server\bin\Apache24\conf\ откройте текстовым редактором файл httpd.conf . В самый низ добавьте туда строки:

LoadModule ssl_module modules/mod_ssl.so Listen 443 DocumentRoot "c:/Server/data/htdocs/" ServerName localhost:443 ServerAdmin [email protected] ErrorLog "${SRVROOT}/logs/error-ssl.log" TransferLog "${SRVROOT}/logs/access-ssl.log" SSLEngine on SSLCertificateFile "C:\Server\certs\localhost.crt" SSLCertificateKeyFile "C:\Server\certs\localhost.key"

Обратите внимание, что вам может понадобиться отредактировать следующие директивы

  • DocumentRoot — укажите путь до сайтов на сервере
  • ServerName — укажите имя вашего хоста, если то не локалхост

Обратите внимание, что мы не просто поместили эти строки в конфигурационный файл, а заключили их в контейнер VirtualHost . Дело в том, что если этого не сделать, то директива SSLEngine on включит SSL для всего веб-сервера, и даже при попытке открыть сайты на 80 порту, эти подключения будут обрабатываться как HTTPS, что вызовет ошибку «Bad Request. Your browser sent a request that this server could not understand». По этой причине эти настройки помещены в контейнер виртуального хоста. Обратите внимание, что используется ключевое слово _default_ - то есть сюда будут собираться все запросы на 443 порт если они не предназначены для другого хоста, который также настроен. То есть при желании вы можете создать больше виртуальных хостов для работы с HTTPS, при этом вместо _default_ указывайте IP хоста или символ * (звёздочка).

После этого сохраните изменения, закройте файл и перезапустите веб-сервер.

Для проверки сделанных изменений, перейдите по адресу (протокол HTTPS). Поскольку сертификат является самоподписанным, то появится такое сообщение:

К самоподписанным сертификатам нет доверия и эту ошибку нельзя убрать без добавления таких сертификатов в доверенные. Для перехода нажмите «Всё равно продолжить».

Настоящие валидные сертификаты для своих сайтов (в том числе бесплатно на любое количество времени), вы сможете получить .

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

Создайте файл RUN.bat и скопируйте в него:

Развернуть

:start @ECHO OFF TITLE Управление локальным сервером Apache %TIME:~0,8% %DATE% echo Автор: Алексей Милосердов (miloserdov.?p=21 echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ВЫБЕРИТЕ ЖЕЛАЕМОЕ ДЕЙСТВИЕ С СЕРВЕРОМ: ECHO =============================================================================== ECHO = 11 - Запуск сервера один раз, без установки = ECHO = 12 - Запуск сервера, если службы уже установлены = ECHO = 13 - Перезапуск сервера (только Apache) = ECHO = 14 - Перезапуск сервера (Apache + MySQL) = ECHO =============================================================================== ECHO = 21 - Установка служб с запуском сервера = ECHO = 22 - Только установка сервера (без запуска) = ECHO =============================================================================== ECHO = 31 - Остановка сервера = ECHO =============================================================================== ECHO = 41 - Остановка и удаление служб сервера = ECHO =============================================================================== ECHO = 51 - Запуск ApacheMonitor.exe = ECHO =============================================================================== ECHO = 61 - Проверка, какая программа прослушивает порт 80 = ECHO =============================================================================== ECHO = 71 - Открытие http://localhost = ECHO = 72 - Открыть папку с сайтами = ECHO =============================================================================== ECHO = 0 - Выход = ECHO =============================================================================== echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ set /p ACTIONLEVEL=Введите номер варианта запуска и нажмите клавишу ENTER: ECHO Выполняется операция № %ACTIONLEVEL%! Ожидайте... IF "%ACTIONLEVEL%"=="0" (exit) IF "%ACTIONLEVEL%"=="11" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON START /B c:\Server\bin\Apache24\bin\httpd.exe START /B c:\Server\bin\mysql-8.0\bin\mysqld.exe --defaults-file=C:\Server\bin\mysql-8.0\my.ini --standalone --console echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pause goto start) IF "%ACTIONLEVEL%"=="12" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON c:\Server\bin\Apache24\bin\httpd.exe -k start ECHO Если выше отсутствуют сообщения об ошибках, значит Apache запущен net start mysql echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pause goto start) IF "%ACTIONLEVEL%"=="13" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON c:\Server\bin\Apache24\bin\httpd.exe -k restart ECHO Если выше отсутствуют сообщения об ошибках, значит Apache перезапущен echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pause goto start) IF "%ACTIONLEVEL%"=="14" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON c:\Server\bin\Apache24\bin\httpd.exe -k restart ECHO Если выше отсутствуют сообщения об ошибках, значит Apache перезапущен net stop mysql net start mysql echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pause goto start) IF "%ACTIONLEVEL%"=="21" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON c:\Server\bin\Apache24\bin\httpd.exe -k install c:\Server\bin\Apache24\bin\httpd.exe -k start c:\Server\bin\mysql-8.0\bin\mysqld --install net start mysql echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pause goto start) IF "%ACTIONLEVEL%"=="22" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON c:\Server\bin\Apache24\bin\httpd.exe -k install c:\Server\bin\mysql-8.0\bin\mysqld --install echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pause goto start) IF "%ACTIONLEVEL%"=="31" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON c:\Server\bin\Apache24\bin\httpd.exe -k stop net stop mysql echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pause goto start) IF "%ACTIONLEVEL%"=="41" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON c:\Server\bin\Apache24\bin\httpd.exe -k stop c:\Server\bin\Apache24\bin\httpd.exe -k uninstall net stop mysql c:\Server\bin\mysql-8.0\bin\mysqld --remove echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pause goto start) IF "%ACTIONLEVEL%"=="51" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON start c:\Server\bin\Apache24\bin\ApacheMonitor.exe echo Файл ApacheMonitor.exe запущен! echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pause goto start) IF "%ACTIONLEVEL%"=="71" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON start http://localhost echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ goto start) IF "%ACTIONLEVEL%"=="72" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON start C:\Server\data\htdocs\ echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ goto start) IF "%ACTIONLEVEL%"=="61" (CLS echo РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ ОПЕРАЦИИ: echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ECHO ON for /f "tokens=1,2,3,4,5*" %%i in ("netstat -aon ^| findstr ":80" ^| findstr /i listening") do echo %%j %%l & @tasklist | findstr %%m echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pause goto start) PAUSE EXIT

Сохраните и закройте файл. Запускайте файл двойным кликом. При этом будет появляться текстовое меню для управления веб-сервером:

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

Если вы хотите удалённо мониторить состояние сервера (возможно, с помощью автоматизированных скриптов или программ), то вам может пригодиться включение модулей 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 измените приведённые строки (или просто их удалите и замените на предлагаемые), чтобы получилось:

SetHandler server-status Require host localhost Require ip::1 SetHandler server-info Require host localhost Require ip::1

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

ExtendedStatus On

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

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

Веб-сервер Apache является самым популярным способом обслуживания веб-контента в Интернете. На его долю приходится более половины активных веб-сайтов в Интернете, и он является чрезвычайном мощным и быстрым.

Apache разбивает свои функциональные возможности и компоненты на отдельные блоки, которые могут быть кастомизированы и настроены независимо друг от друга. Базовой единицей, описывающей индивидуальный сайт или домен, называется виртуальным хостом.

Такие распределения позволяют администратору с помощью соответствующего механизма использовать один сервер для размещения множества доменов или сайтов на одном интерфейсе или IP. Это важно для всех, кто хочет разместить несколько сайтов в одном VPS.

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

В этом руководстве мы расскажем, как настроить виртуальные хосты Apache на Ubuntu 16.10 или 17.04 VPS. Во время этого процесса вы узнаете, как обслуживать разный контент для разных посетителей, в зависимости от того, какие домены они запрашивают.

Предполагается, что вы работаете под обычным пользователем. Если нет, то предварительно создайте обычного пользователя и залогинтесь под ним.

Для целей этой инструкции, мы будем настраивать виртуальный хост для домена example.com, а другой виртуальный хост для test.com. На них будут делаться ссылки в этом руководстве, но вы должны подставить ваши собственные домены или значения.

Для реальных доменов должны быть прописаны DNS записи, указывающие на IP вашего сервера. Если у вас нет доменов, с которыми можно было бы поиграться, вы можете использовать ненастоящие значения.

Если вы используете не настоящие значения, мы покажем вам, как отредактировать ваш локальный файл hosts чтобы протестировать конфигурацию. Это позволит вам протестировать вашу конфигурацию прямо на вашем домашнем компьютере, пусть даже ваш контент не будет доступен через доменное имя для других посетителей.

Шаг 1 — Создание структуры директорий

Первым шагом, который будет предпринят, мы собираемся создать структуру директорий, которые будут содержать данные сайтов, которые будет обслуживать сервер для посетителей.

Наша корневая директория документов (директория самого верхнего уровня, в которой Apache ищет содержимое для обслуживания) будет установлена на индивидуальные директории в папке /var/www . В ней мы создадим подпапки для обоих виртуальных хостов, которые мы планируем сделать.

Внутри каждой из этих директорий, мы создадим папку public_html , которая и будет содержать файлы. Это даст больше гибкости в развёртывании сложных веб-приложений; в папке public_html будет расположен веб-контент, а родительская папка может содердажть скрипты или код приложения для поддержки веб-контента.

Например, для наших сайтов мы собираемся сделать наши директории следующим образом:

Sudo mkdir -p /var/www/example.com/public_html sudo mkdir -p /var/www/test.com/public_html

Поскольку мы создали директории с sudo, то они принадлежат пользователю root. Если мы хотим, чтобы наш обычный пользователь был способен изменять файлы в наших веб-директориях, мы можем изменить права собственности сделав так:

Sudo chown -R $USER:$USER /var/www/example.com/public_html sudo chown -R $USER:$USER /var/www/test.com/public_html

При нажатии на Enter переменная $USER примет значение вашего пользователя, под которым вы вошли. Сделав это, наш обычный пользователь станет владельцем поддиректорий public_html где мы будем размещать наш контент.

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

Sudo chmod -R 755 /var/www

Теперь ваш веб-сервер должен иметь необходимые разрешения для обслуживания контента, и вы должны быть способны создавать контент внутри необходимых папок.

Шаг 2 — Создание демо страниц для каждого виртуального хоста

Структура директорий размещена в нужном месте. Давайте создадим контент, чтобы его мог обрабатывать веб-сервер.

Мы только собираем показать принцип работы, поэтому наши страницы будут очень простыми. Мы просто собираемся сделать страницу index.html для каждого сайта.

Давайте начнём с example.com. Мы можем открыть файл index.html в нашем редакторе напечатав:

Vim /var/www/example.com/public_html/index.html

В этом файле создайте HTML документ, который говорит о том, что к сайту есть соединение. Мой файл выглядит примерно так:

Welcome to Example.com!

Success! The example.com virtual host is working!

Когда закончите, сохраните и закройте файл.

Мы можем скопировать этот файл для использования его в качестве основы для нашего второго сайта:

Cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Затем мы можем открыть новый файл и изменить его в нужных местах:

Vim /var/www/test.com/public_html/index.html Welcome to Test.com!

Success! The test.com virtual host is working!

Также сохраните и закройте этот файл. Теперь у вас есть необходимые страницы для тестирования конфигурации виртуального хоста.

Шаг 3 — Создание файлов настроек новых виртуальных хостов

Файлы виртуальны хостов - это файлы, которые задают конфигурация наших виртуальны хостов и говорят веб-серверу Apache как отвечать на запросы различных доменов.

Apache поставляется со стандартным файлом виртуального хоста, называемым 000-default.conf. Его мы можем использовать как отправную точку. Мы скопируем его для создания файла виртуального хоста для каждого нашего домена.

Мы начнём с одного домена, настроем его, скопируем его для нашего второго домена и затем сделаем небольшие необходимые исправления. Стандартная конфигурация Ubuntu требует, чтобы каждый файл виртуального хоста заканчивался на.conf.

Создайте первый файл виртуального хоста

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

Sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Откройте новый файл в текстовом редакторе с привилегиями рута:

Sudo vim /etc/apache2/sites-available/example.com.conf

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

ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Как вы можете убедиться, здесь не слишком много. Мы настрое пункты для нашего первого домена и добавим некоторые директивы. Секция VirtualHost соответствует любым запросам, сделанным на порт 80, это стандартный HTTP.

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

ServerAdmin [email protected]

После этого нам нужно добавить две директивы. Первая называется ServerName, она устанавливает базовый домен, который должен соответствовать определению виртуального хоста. Скорее всего, это будет ваш домен. Вторая, называемая ServerAlias, определяет дополнительные имена (псевдонимы), по которым также можно обратиться к этому виртуальному хосту. Т.е. здесь указываются различные имена хостов, указывающие на один виртуальный хост, например, чтобы сайты с и без www сервер считал за один сайт нужно сделать так:

ServerName example.com ServerAlias www.example.com

Ещё нам осталось изменить путь, указывающий где размещена корневая директория сайта для этого домена - DocumentRoot . Мы уже создали нужную нам директорию, поэтому нам нужно просто изменить директиву DocumentRoot в соответствии с нашими условиями:

DocumentRoot /var/www/example.com/public_html

В конечном счёте файл нашего виртуального хоста выглядит так:

ServerAdmin [email protected] ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Сохраните и закройте этот файл.

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

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

Начнём с копирования:

Sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Откройте новый файл с привилегиями рута в вашем редакторе:

Sudo vim /etc/apache2/sites-available/test.com.conf

Теперь нужно изменить информацию, специфичную для второго домена. Когда закончите, может получиться примерно так:

ServerAdmin [email protected] ServerName test.com ServerAlias www.test.com DocumentRoot /var/www/test.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Когда всё готово, сохраните и закройте файл.

Шаг 4 — Включение новых файлов виртуальны хостов

Теперь, создав файлы наших виртуальных хостов, мы должны включить их. Apache имеет несколько инструментов, позволяющих нам это сделать.

Мы можем использовать инструмент a2ensite для включения каждого нашего сайта примерно следующим образом:

Sudo a2ensite example.com.conf sudo a2ensite test.com.conf

Sudo a2dissite 000-default.conf

Когда вы закончите, вам нужно перезапустить Apache чтобы эти изменения вступили в силу:

Sudo systemctl restart apache2

В другой документации вы можете увидеть пример использующий другую сервисную команду:

Sudo service apache2 restart

Эта команда ещё работает, но вы можете не увидеть вывод, обычно видимый на других системах, поскольку сейчас это обёртка для systemctl из systemd.

Шаг 5 — Настройка файла Hosts (опционально)

Если для этого процесса вы используете не реальные принадлежащие вам доменные имена, а используете те примеры, которые указаны в этой статье, вы всё равно можете протестировать успешность настройки сервера. Этого можно добиться временным изменением файла hosts на вашем локальном компьютере.

Эта настройка будет перехватывать любые запросы для настроенных вами доменов и указывать на ваш локальный компьютер или VPS сервер, как бы это делала DNS система если бы использовались зарегистрированные домены. Хотя это будет работать только с вашего компьютера, это полезно для целей тестирования.

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

Если вы на компьютере Mac или Linux, отредактируйте ваш локальный файл с привилегиями администратора:

Sudo gedit /etc/hosts

Допустим, мой VPS имеет IP адрес 111.111.111.111, тогда в самый низ файла hosts мне нужно добавить две строки:

127.0.0.1 localhost ... 111.111.111.111 example.com 111.111.111.111 test.com

Если вы настроили виртуальные домена на локалхосте, то строки могут выглядеть так:

127.0.0.1 example.com 127.0.0.1 test.com

Если вы на машине Windows, откройте командную строку с привилегиями администратора и наберите там:

Notepad %windir%\system32\drivers\etc\hosts

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

Вам нужно добавить IP адрес вашего VPS сервера за которым следует домен, который вы хотите достичь на VPS.

Это будет перенаправлять любые запросы на example.com и test.com с вашего компьютера и отправлять их на ваш сервер 111.111.111.111.

Сохраните и закройте файл. Теперь вы можете протестировать ваши настройки. Когда убедитесь, что всё работает, удалите эти две строки из файла.

Шаг 6 — Тестирование ваших результатов

Теперь, после настройки ваших виртуальных хостов, вы можете легко протестировать вашу установку перейдя на домен, который вы настраивали в вашем веб-браузере. Посетите первый сайт http://example.com и вы увидите примерно следующую страницу:

Точно также посетите второй сайт http://test.com, вы увидите файл, созданный для второго сайта:

Если оба этих сайта работают хорошо, значит вы успешно настроили два виртуальных хоста на одном сервере.

Заключение

Теперь у вас есть единый сервер, работающий с двумя отдельными доменами. Вы можете распространить этот процесс, следуя этим шагам для добавления виртуальных хостов.

Нет программных ограничений на количество доменных имён, которые может обслуживать Apache, поэтому добавляйте столько, сколько ваш сервер способ обработать.

По умолчанию после установки Apache создается виртуальный хост с именем localhost . Я расскажу как добавлять новые виртуальные хосты в Apache.

Я создам виртуальный хост с именем myhost (вместо myhost вы можете выбрать любое имя, которое вам захочется).

Сначала нужно создать каталог, в котором будут находиться файлы будущего сайта. Создайте в своем домашнем каталоге директорию myhost . Чтобы это сделать можно выполнить команду:

Mkdir ~/myhost

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

Создаем конфигурационный файл хоста

В каталоге /etc/apache2/sites-available хранятся конфигурационные файлы виртуальных хостов Apache. По умолчанию там хранится файл default , который соответствует хосту localhost . Мы возьмем за основу файл default и скопируем его в файл с именем myhost . Для этого выполните следующие команды:

Cd /etc/apache2/sites-available sudo cp default myhost

Теперь отредактируем файл myhost . Откройте его в редакторе (например, в редакторе Gedit), выполнив команду:

Sudo gedit myhost

Внесите в файл соответствующие изменения. В частности пропишите путь до директории, в которой будут храниться файлы хоста. В нашем случае это путь /home/yuriy/myhost , где yuriy вы должны заменить на название вашей домашней директории. Путь нужно прописать в двух местах: у параметра DocumentRoot и в заголовке секции . В самом начале файла (на второй строке) обязательно пропишите строку « ServerName myhost ». Вот пример того, как должен выглядеть ваш файл myhost:

ServerName myhost ServerAdmin webmaster@localhost DocumentRoot /home/yuriy/myhost Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all ErrorLog /var/log/apache2/error.log LogLevel debug CustomLog /var/log/apache2/access.log combined

Теперь нам нужно сделать наш хост активным. Apache использует каталог /etc/apache2/sites-enabled для определения хостов, которые нужно включить. Создадим символьную ссылку в каталоге sites-enabled , указывающую на наш файл myhost. Для этого выполните команды:

Cd ../sites-enabled sudo ln -s ../sites-available/myhost myhost

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

Перезапустите Apache, выполнив команду:

Sudo /etc/init.d/apache2 restart

Редактируем /etc/hosts

Осталось отредактировать файл /etc/hosts . В нем прописывается соответствие IP адреса имени хоста. То есть это своего рода локальный DNS. Чтобы открыть файл, выполните следующую команду:

Sudo gedit /etc/hosts

В файле после адреса 127.0.0.1 допишите название своего виртуального хоста. В моем случае это myhost .

127.0.0.1 localhost myhost

Заключение

На этом настройка виртуального хоста Apache с именем myhost закончена. Теперь к нему можно обратиться в браузере, набрав адрес http://myhost .

В предидущей статье мы разобрались как установить apache . Теперь давайте разберём зачем создают на apache виртуальный хост и как проводится настройка виртуальных хостов apache windows.

И так давайте разберёмся зачем нам нужен виртуальный хост. После установки apache мы можем к нему обращаться набрав в браузере localhost. А хотелось бы что бы мы могли держать на сервере несколько сайтов и обращаться к ним по отдельному url. Для этого должна быть сделана на apache настройка виртуальных хостов. Для начала создадим на пример на диске С папку "www.Zametki". В папке С:\Zametki создадим три папки conf, htdocs, logs, Errors . В папке conf создадим файл zametki.conf. Откроем файл С:\www.Zametki\conf\zametki.conf и опишем наш виртуальный хост:

#Виртуальный хост zametki <VirtualHost *:80> #Настройки сервера ServerName www.zametki ServerAlias zametki ServerAdmin webmaster@zametki #Журналы сервера ErrorLog "c:/www.Zametki/logs/error.log" CustomLog "c:/www.Zametki/logs/access.log" common #корневая папка DocumentRoot "c:/www.Zametki/htdocs" <Directory "c:/www.Zametki/htdocs"> Options Indexes FollowSymLinks AllowOverride All Order deny,allow Allow from all </Directory> </VirtualHost>

Сохраняем файл zametki.conf. Теперь нам осталось подключить его к основному файлу конфигурации сервера httpd.conf. Он находится по адресу C:\Program Files\Apache Software Foundation\Apache2.2\conf. Открываем его и для начала дописываем в самый низ файла:

NameVirtualHost *:80 <VirtualHost *:80> ServerName localhost ServerAdmin admin@localhost </VirtualHost>

Мы создали виртуальный хост по умолчанию. Теперь подключим созданный нами хост. Пишем в тот же файл в самый низ документа:

# www.zametki Include "c:/www.Zametki/conf/zametki.conf"

Теперь нам осталось создать запись о нашем хосте в файле hosts по адресу C:\WINDOWS\system32\drivers\etc. Это будет замена DNS серверу.

//запись по умолчанию виндовс 127.0.0.1 localhost //наша запись 127.0.0.1 zametki www.zametki

Создание виртуальных папок Apache

За создание виртуальных папок у нас отвечает директива Alias. Создадим папку для хранения файлов с ошибками Apache. Добавим в файл zametki.conf в директиву <VirtualHost> … </VirtualHost> нашего виртуального хоста следующее:

# Папка с сообщениями об ошибках //назначаем алиас(псевдоним) для папки Alias /err/ "c:/www.Zametki/Errors/" <Directory "c:/www.Zametki/Errors/"> Options Indexes FollowSymLinks AllowOverride All Order deny,allow Allow from all </Directory>

Создание своих страниц с ошибками Apache

За сообщение об ошибках у нас отвечает директива ErrorDocument. Создадим в папке c:/www.Zametki/Errors/ файл например 404.html. Это будет наша html страничка, выводящаяся при ошибке сервера 404. В файл zametki.conf добавим следующие строки:

# Сообщения об ошибках ErrorDocument 404 /err/404.html

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: