Apache2 виртуальные хосты ubuntu. Настройка виртуальных хостов Apache в macOS

Apache является одним из самых популярных веб-серверов в мире.

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

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

Данное руководство поможет настроить виртуальные хосты на выделенном сервере Ubuntu 16.04, что позволит обслуживать разный контент в зависимости от запрашиваемого домена.

Требования

  • Предварительно настроенный сервер Ubuntu 16.04.
  • Не-root пользователь с расширенными привилегиями.
  • Установленный веб-сервер Apache:

sudo apt-get update
sudo apt-get install apache2

Примечание : В руководстве используются условные домены example.com и test.com; не забудьте заменить их своим доменным именем.

Если у вас нет доменного имени, в конце руководства показано, как протестировать настройку с фиктивными значениями.

1: Создание структуры каталогов

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

Каталог document root (каталог, содержащий контент для Apache) по умолчанию находится в /var/www; в нём нужно создать отдельный каталог для каждого виртуального хоста. В каждом таком каталоге будет размещен каталог public_html, в котором будут находиться нужные файлы. Благодаря этому хостинг становится более гибким.

Необходимые каталоги можно создать при помощи следующих команд:

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

Примечание : Не забудьте указать свои доменные имена в командах.

2: Настройка прав

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

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

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

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

sudo chmod -R 755 /var/www

Теперь все права установлены верно; можно приступать к созданию контента в специальных каталогах.

3: Создание демо-страниц для виртуальных хостов

Создайте тестовый контент; для пробной настройки хостов простых страниц будет достаточно. Просто создайте страницы index.html для каждого сайта.

Начнём с example.com; откройте файл index.html в текстовом редакторе:

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

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



Welcome to Example.com!




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

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

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

Откройте скопированный файл и внесите соответствующие коррективы:

nano /var/www/test.com/public_html/index.html


Welcome to Test.com!



Сохраните и закройте файл. Теперь тестовые страницы готовы.

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

Файлы виртуальных хостов задают настройки отдельных сайтов и помогают Apache корректно отвечать на запросы.

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

Примечание : По умолчанию настройки Ubuntu требуют, чтобы файлы виртуальных хостов заканчивались на.conf.

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

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

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

sudo nano /etc/apache2/sites-available/example.com.conf

С опущенными комментариями файл будет выглядеть примерно так:


ServerAdmin [email protected]
DocumentRoot /var/www/html


Как видите, файл не такой уж объёмный. Теперь нужно внести данные о первом домене и добавить несколько директив. Этот виртуальный хост будет отвечать на запросы, отправляемые на стандартный HTTP-порт 80.

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

ServerAdmin [email protected]

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

ServerName example.com
ServerAlias www.example.com

Осталось внести в файл хоста последнее изменение – указать нахождение document root этого домена. Укажите в 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

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

sudo nano /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

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

5: Включение виртуальных хостов

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

К примеру, для этого можно использовать a2ensite:

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

Затем отключите стандартный виртуальный хост 000-default.conf:

sudo a2dissite 000-default.conf

Перезапустите Apache, чтобы активировать изменения:

sudo systemctl restart apache2

Обратите внимание: система Ubuntu 16.04 использует systemctl.

Также можно использовать команду:

sudo service apache2 restart

Эта команда ещё поддерживается, однако она может вернуть нестандартный результат.

6: Настройка локальных хостов (опционально)

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

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

В системах Mac или Linux отредактируйте файл hosts с привилегиями администратора.

sudo nano /etc/hosts

Примечание : Пользователи Windows могут найти необходимые инструкции по этой ссылке .

В этом файле нужно указать IP-адрес сервера, а затем доменное имя, которое будет использоваться для доступа к серверу.

К примеру, если IP-адрес сервера — 111.111.111.111, в конец файла хоста нужно внести следующие строки

127.0.0.1 localhost
127.0.1.1 guest-desktop
111.111.111.111 example.com
111.111.111.111 test.com

Теперь все запросы к example.com и test.com будут отправлены на локальный компьютер, а оттуда — на IP-адрес сервера.

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

7: Результаты

Чтобы протестировать настройку виртуальных хостов, просто откройте домены в веб-браузере:

http://example.com

В данном случае на экране появится сообщение:

Success! The example.com virtual host is working!

Примечание : Результат, появившийся на экране, зависит от содержания файла, созданного в разделе 3.

Точно так же нужно проверить и второй сайт:

На экране появится следующий результат:

Success! The test.com virtual host is working!

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

Заключение

Теперь сервер Ubuntu 16.04 поддерживает два сайта на отдельных доменах. В целом, количество хостов, которое может поддерживать Apache, зависит только от ресурсов виртуального выделенного сервера. Чтобы добавить на сервер новый виртуальный хост, просто повторите весь вышеописанный процесс.

Tags: ,

По умолчанию после установки 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 [email protected] 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 .

Это заметка по настройке веб-сервера в 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 под Windows. Я расскажу, что такое виртуальные хосты и для чего они используются. Подробные иллюстрации прилагаются.

Виртуальный хостинг. Основные понятия.

Итак, сначала нужно разобраться, что такое виртуальный хостинг:

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

Т.е. у вас на комьютере может быть несколько сайтов, которые доступны по разным именам.

Виртуальные хосты бывают 2-х видов:

  • виртуальные хосты, основанные на имени (name-based );
  • виртуальные хосты, основанные на IP адресе компьютера (ip-based ).

Мы будем использовать первый вариант – name-based виртуальные хосты.

Настройка виртуальных хостов Apache.

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

Открываем этот файл в блокноте. Ищем и удаляем комментарий вначале строки, как показано ниже:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Эта строка подключает настройки, которые описаны в файле conf/extra/httpd-vhosts.conf .

Синтаксис для создания name-based виртуального хоста :


DocumentRoot путь к сайту
ServerName название сайта

В файле vhosts находятся примеры. Они нам не нужны. Просто удаляем их и заменяем тест на следующий:

#
# Virtual Hosts
#
# Здесь можно подробней почитать о тонкой настройке виртуальных хостов
#
#

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

# Здесь прописываем путь к файлам сайта (DocumentRoot) и имя хоста (ServerName)

DocumentRoot с:/www/test
ServerName test

Теперь создайте на диске C: папку www и в ней папку test . Обратите внимание, что в Windows используются обратные слэши, а в конфигурационном файле прямые /.

Теперь необходимо перезагрузить Apache , чтобы настройки вступили в силу.

Следующим шагом мы должны должны известить Windows о созданных виртуальных хостах. Для этого найдите файлC:/Windows/system32/drivers/etc/hosts . Открываем его с помощью обычного блокнота и дописывает туда следующую строку:

127.0.0.1 – это IP адрес вашего комьютера. Этой строкой мы дали знать Windows, что на этом IP адресе находится сайт test .

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

127.0.0.1 имя вашего виртуального хоста

Теперь нужно проверить, правильность настройки. Для этого создадим в папке с:/www/test файл index.php и напишем там такой код:

Пишем в браузере URL http://test . Если вы все сделали правильно, то увидете что-то вроде:

Если этого вы не увидели, то не отчаиваемся – пишем в комментариях. Вместе можно разобраться с любой проблемой 😉

Привет всем читателям блога, в этой статье я опишу процесс того, как настроить виртуальные хосты в Apache на ОС Ubuntu 14. Думаю что описанные действия также можно применить и в более ранней/поздней версии Ubuntu.

Введение

Далее будет рассмотрено создание виртуального хоста для доменного имени example.com . Для кириллических доменов необходимо перевести доменное имя в punycode, например в помощью этого сервиса :

Шаг 1. Создаём структуру директорий

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

Наш корневой каталог (или document root) будет настроен на использование директорий внутри директории /var/www . Здесь мы создадим директорию для виртуального хоста example.com , который мы планируем настроить. Также создадим вложенную директорию public_html , которая будет содержать файлы сайта.

Создадим нужные директории следующей командой:

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

Шаг 2. Назначаем права доступа

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

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

Переменная $USER содержит имя пользователя, под которым вы залогинены в текущий момент. Теперь текущий пользователь владеет директорией public_html , в которых мы будем хранить файлы сайта.

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

Sudo chmod -R 755 /var/www

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

Шаг 3. Создаём демо-страницу для хоста

Теперь, когда структура директорий готова, то можно создать какой-нибудь контент для отображения посетителям сайта example.com .

Мы делаем это просто для проверки, поэтому тестовая страница будет очень простой.

В папке public_html домена example.com создадим файл index.php :

Nano /var/www/example.com /public_html/index.php

В этом файле создадим простой PHP-скрипт, чтобы убедится что всё работает:

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

Шаг 4. Создаём файл виртуального хоста

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

Конфигурация Ubuntu по-умолчанию требует, чтобы каждый файл виртуального хоста заканчивался расширением .conf . По умолчанию, Apache имеет файл виртуального хоста 000-default.conf , который мы можем использовать в качестве отправной точки. Скопируем этот файл, чтобы на его основе создать файл виртуального хоста для нашего домена example.com .

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

Откроем этот новый файл в редакторе с root-правами:

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

Файл будет иметь примерно такое содержание:

ServerAdmin [email protected] DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

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

ServerAdmin [email protected]example.com

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

ServerName example.com ServerAlias www.example.com

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

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

Шаг 5. Включаем новый виртуальный хост

Теперь, когда мы создали файл виртуального хоста example.com , нужно активировать сайт с помощью утилиты a2ensite :

Sudo a2ensite example.com .conf

После завершения необходимо перезапустить Apache, чтобы изменения вступили в силу:

Sudo service apache2 restart

Шаг 6. Тестируем результат

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

http://example.com

Вы должны увидеть похожую страницу:

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