Apache создание сайта: Создание сайта. Часть 5: Apache

Содержание

Создание сайта. Часть 5: Apache

Создание сайта. Часть 5: Apache
версия для печати

Продолжаем тему сайтостроя. Чем дальше, тем сложнее 🙂 Полное содержание серии — в конце статьи.

Напоминаю, Apache – это веб-сервер. Он слушает определенные порты, и получив корректный запрос посылает контент просящему. Это очень общее описание работы мощной программы. За всеми подробностями – в инет. Могу добавить по минимуму следующее: http-протокол работает по 80-ому порту, так принято по умолчанию. Вот его веб-сервер и слушает. Могут использоваться другие порты для передачи http-трафика, их обычно настраивают для работы с прокси-серверами.

Прежде чем грузить вас техническими дебрями веб-сервера, стоит упомянуть о таких переходных решениях, как Денвер и XAMPP. К сказанному в Википедии добавить почти нечего. Скачали, поставили — пользуемся. Ничего сложного. Готовые пакеты — это неплохо, но я считаю эти решения переходными, потому как нормальный веб-мастер должен уметь сам разворачивать окружение и управлять им. Это мое мнение.

Обратно к теме. Apache изначально написан под Linux и на Windows мы имеем портированное приложение. Поэтому все его настройки описаны в текстовых conf-файлах, а не в реестре. И тут мы как бы плавно переходим к вопросу, какой дистрибутив Apache качать. По логике, нужна та же версия, что и вашего хостера, чтобы не было потом вопросов, почему не так работает сервер. Но «порты» делаются с задержкой после выхода новой версии, поэтому найдите на странице знакомое слово «Windows» и скачайте что-нибудь 🙂

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

Настройки сервера

Если вы поднимаете свой веб-сервер (заботы хостера), вам следует изучить тему, как настроить Apache для этой работы. В статье возьмем простой вариант разработки сайта на локальной машине (localhost), т.е. веб-сервер и сайт у вас на одном компе, работать с сайтом вы будете тоже на нем. Тогда настройка для сайта в Apache будет выглядеть так:


Конфиг [..\Apache2.2\conf\extra\httpd-vhosts.conf]

<VirtualHost 127.0.0.1:80>
    ServerName localhost
    DocumentRoot d:/web/site
       
    <Directory d:/web/site>
         #  Выдавать содержимое каталога, если нет главной страницы
         Options Indexes
         #  Разрешено переписывать все настройки родительских каталогов
         AllowOverride all
         #  Разрешить всем доступ к каталогу 
         Allow from all
    </Directory>
</VirtualHost>

В строках начинающихся с # записаны комментарии (согласно синтаксиса конфигов Linux). Обратите внимание на регистр букв и куда слешы в путях направлены. Это тоже правила Линухи. Внимательно изучите этот пример. Он простой, но много объясняет по части работы веб-сервера.

После внесения изменений нужно перезапустить сервер. Под Видной это делается либо через консоль управления Службами либо через маленькую программулину ApacheMonitor, которая идет в пакете с сервером. Если сервак не запустится, значит скорее всего ошибка в конфиге, посмотрите логи в [..\Apache2.2\logs\].

Если все правильно, то через браузер обращаемся на http://localhost и получаем главную страницу сайта из каталога [d:\web\site] или содержимое этого каталога, если страницы нет.

Если вы хотите указать отличное от localhost имя сайта, например «site.ru», тогда в Виндовском hosts пропишите соответствие «127.0.0.1 site.ru«. Таким образом все обращения браузера к «site.ru» пойдут на «местный» адрес (127.0.0.1 – это служебный адрес сетевой карты на любом компе). Поднятый на компе веб-сервер получит запрос и ответит браузеру. Если вы здесь ничего не поняли, то либо в инет за ликбезом либо просто сделайте так, как указано во вставке, и ходите на localhost.

Видите разницу: DNS-имя сайта — «localhost», хотя каталог сайта «site»? Разберитесь самостоятельно, что к чему, или почитайте в статье «О доменах и сайтах. Виртуальный хостинг». Это все, что я могу сказать вам о настройке веб-сервера за пределами сайта. Более подробно о настройках ядра Apache читайте здесь и на просторах интернета.

Настройки сайта

Настройки каталогов сайта описываются в .htaccess. Родительский .htaccess распространяется на вложенные каталоги. Т.о. чтобы отменить какую-то настройку родителя, нужно создать свой .htaccess в каталоге и описать в нем новое значение. Главным файлом настроек считается .htaccess в корне сайта. При обращении к какому-либо каталогу, Apache ищет в нем файл настроек или читает родительский. Внесенные изменения применяются сразу, сервер/браузер перезапускать не надо.

Некоторые настройки сайта:

DirectoryIndex index.php index.htm index.shtml handler.php?page=main

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

AddHandler application/x-httpd-php .htm .html

Так вы указываете веб-серверу, что html-файлы нужно прогонять через PHP-препроцессор. Сейчас это вам мало что говорит, просто запомните настройку, возможно она пригодится. Учтите, что такая директива в главном .htaccess замедлит ответ сервера, т.к. все html-файлы сайта будут проходить через PHP.

Другой пример:

AddType text/html .shtm .shtml
AddHandler server-parsed .shtm .shtml

Первая директива связывает расширение файла с MIME-типом, вторая назначает обработчик для таких файлов. Помните, раньше была описана сборка страницы чере SSI? Вот эти директивы указывают веб-серверу, что с таким файлами делать.

Options +/-Indexes

Можно/нельзя выдать содержимое каталога, если нет главной страницы. Пишется либо «+» либо «-«. Эту опцию можно задать в настойках ядра Apache. И если разрешена ее перезапись (директива AllowOverride, см. выше), то значение опции можно так же задавать в настройках сайта. Чтобы не гадать, что задано в настройках ядра, лучше явно ее описывать в настройках сайта.

Options Includes

C этой опцией вы уже знакомы, разрешаем включения на стороне сервера (SSI) посредством mod_include. Допускается запись опций в одной строке, типа: «Options -Indexes Includes«

ErrorDocument NN URL
Примеры: ErrorDocument 401 /errors/handler.php?er=401 ErrorDocument 403 /errors/handler.php?er=403 ErrorDocument 404 /errors/handler.php?er=404 ErrorDocument 500 /errors/handler.php?er=500

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

Пароль на каталог. Защита админки

Админский каталог должен быть защищен обязательной аутентификацией. Запрос пароля можно намутить через скрипт с выдачей в браузер или просто использовать HTTP-аутентификацию средствами веб-сервера. Для этого в защищаемом каталоге создаем свой .htaccess:


AuthType Basic
AuthUserFile D:\web\Site\.password
AuthName "Доступ ограничен. Введите пароль"
# разрешен доступ всем прошедшим проверку
require valid-user
# Доступ конкретным пользователям
# require user0 user1 AdMinKo

Собственно пояснять тут нечего, последняя строка закоментирована, это пример. Другой вопрос, как создать сам файл пароля, .password. Кстати, имя файла может быть любым. Через консоль Windows запустите файл [..\Apache2.2\bin\ htpasswd.exe]. Запуск без параметров выдаст инструкцию по применению 🙂

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

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


<Files admin.php>
 Order Deny,Allow
    Deny from all
   # доступ разрешен для двух ip-адресов
   Allow from 192.168.1.104 192.168.1.205
  # доступ разрешен из подсети
    Allow from 10.1.2
</Files>

Всем, кого нет в списке, сервер ответит «403 Forbidden«. Практический плюс: такой подход позволит снизить нагрузку на сервер во время брутфорсной атаки на пароль админа. Минус защиты в том, что у вас должен быть белый (постоянный) ip-ник, иначе при каждой смене адреса придется лазить в файл конфига. Еще следует учесть, что ваш реальный ip-адрес может быть скрыт за NAT, следовательно разрешение будет дано любой машине за тем же NAT. Но это все равно лучше, чем ничего.

Бонус

Есть некоторые тонкости в настройках сайта. Вы знаете, что главный .htaccess распространяется на вложенные каталоги. Допустим в нем описано:

DirectoryIndex index.php
Options -Indexes

Что дает следующее: попытка зайти через браузер во вложенный каталог, например [../images], закончится ошибкой «403: Доступ запрещен«. Во вложенном каталоге нет ни своего .htaccess, ни index.php, а чтение каталога запрещено «-Indexes».

Если переписать директиву на «DirectoryIndex /index.php», тогда обращение к любому каталогу будет перенаправляться на главный index.php. Это решает проблему с подкаталогами и ошибкой 403, но тогда игнорируются индексные страницы во всех подкаталогах. К примеру, админка может иметь свой index.php но вы его не увидите. Выход, в главном .htaccess описать:

DirectoryIndex index.php /

Слеш в конце – это указание искать индексную страницу на уровень выше. Тогда если каталог не имеет своей главной страницы, в браузер будет выдана страница родителя.. или родителя родителя %) Короче, ближайший index.php. Конечно, можно так не заморачиваться, пусть юзер видит «

403: Forbidden«, если залез не туда, и пусть логи забиваются ненужной информацией. Дело ваше 🙂

Еще бонус

Записью типа:

<Files .password>
   deny from all
</Files> (конфиг в том же каталоге, где и файл)

можно запретить обращение через бродилку к указанному файлу. Где это использовать, решайте сами. Скажу лишь, что в настройках веб-сервера скорее всего запрещен доступ к любым . htaccess, но вдруг ваш хостер – раздолбай? Делайте выводы 🙂

Бонус 3

Где-то в 10.x версиях Оперы был глюк – браузер по ссылке открывал rar-файл, выдавая крякозяблы, вместо того, чтобы загрузить его на диск. Это лечилось настройкой браузера со стороны пользователя, но есть и другой вариант, «админский»:

# настройка принудительного сохранения файлов, которые не должны открываться в браузере
AddType application/octet-stream .rar .avi .pdf

Можно дописать свои расширения. Я экспериментировал в Opera 11.0 с расширением jpg — не сработало, а FF18 принял указание корректно. Вывод: использовать на свой страх и риск 😉

[1oo%, EoF]
Остальные статьи серии:
1. Идея
2. Работаем над дизайном
3. HTML, CSS
4. Как работает интернет
5. Apache
6. JavaScript
7. PHP
8. MySQL
9. cookie и сессии
10. mod_rewrite
Понравилась статья? Расскажите о ней друзьям:

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

Информация взята из https://www.8host.com/blog/nastrojka-virtualnyx-xostov-apache-v-ubuntu-16-04/

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


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

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

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

Количество виртуальных хостов на одном сервере ограничивается исключительно ресурсами этого сервера.

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

Что нужно?

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

sudo apt-get update
sudo apt-get install apache2

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

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

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

Каталог 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

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

Настройка прав Apache

Структура каталогов готова, но все они принадлежат пользователю 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

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

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

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

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

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

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

<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h2>Success! The example.com virtual host is working!</h2>
</body>
</html>

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

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

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

и внесите соответствующие коррективы:

<html>
<head>
<title>Welcome to Test.com!</title>
</head>
<body> <h2>Success! The test.com virtual host is working!</h2>
</body>
</html>

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

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

Файлы виртуальных хостов задают настройки отдельных сайтов и помогают 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

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

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Как видите, файл не такой уж объёмный. Теперь нужно внести данные о первом домене и добавить несколько директив. Этот виртуальный хост будет отвечать на запросы, отправляемые на стандартный 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

В результате файл хоста выглядит так:

<VirtualHost *:80>
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
</VirtualHost>

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

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

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

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

<VirtualHost *:80>
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
</VirtualHost>

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

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

Создав файлы виртуальных хостов, нужно включить их. 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 использует systemctl.

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

sudo service apache2 restart

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

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

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

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

Результаты работы

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

http://example.com

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

Success! The example.com virtual host is working!

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

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

http://test.com

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

Success! The test.com virtual host is working!

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

Заключение

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

Поделись записью

Добавление виртуальных хостов в Apache. Linux статьи

По умолчанию после установки 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 и в заголовке секции <Directory /home/yuriy/myhost>. В самом начале файла (на второй строке) обязательно пропишите строку «ServerName myhost». Вот пример того, как должен выглядеть ваш файл myhost:

<VirtualHost *:80>
    ServerName myhost
    ServerAdmin [email protected]

    DocumentRoot /home/yuriy/myhost
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/yuriy/myhost>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    LogLevel debug

    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Теперь нам нужно сделать наш хост активным. 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.

Как разместить нескольких сайтов на одном сервере под Ubuntu 18.04

Достоинством использования Ubuntu 18.04 и Apache является возможность размещения нескольких сайтов на одном сервере. Это очень выгодно, потому что можно использовать один сервер для всех своих доменов.

Эта особенность называется виртуальным хостингом. Например, она нужна для того, чтобы разместить домены example.com и test.com на одном публичном IP-адресе.

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

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

В этом руководстве мы опишем процесс настройки для размещения 2-х различных сайтов на одном сервере под Ubuntu 18.04 VPS.

Что потребуется:

  • Ubuntu 18.04 VPS
  • Стандартный пользователь с возможностью выполнения sudo-команд
  • Веб-сервер Apache

Установка Apache2

Для установки Apache необходимо выполнить следующую команду:

$ sudo apt-get install apache2

Для примера будем использовать вымышленные доменные имена example.com и test.com. Также в руководстве опишем, как изменить файл hosts на компьютере, чтобы проверить виртуальные хосты.

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

Для начала необходимо создать структуру каталогов для новых сайтов. Apache имеет свой корневой каталог /var/www, в котором размещаются все сайты. Создадим две папки для двух новых доменов.

Для этого выполним команды в терминальном окне:

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

Изменение владельца каталогов

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

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

Изменение прав доступа к файлам

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

Для этого необходимо выполнить команду:

$ sudo chmod -R 755 /var/www

Создание контента для каждого виртуального узла

Теперь структура каталогов и доступ к файлам настроены. Создадим index.html для каждого веб-сайта, используя nano редактор:

Для домена test.com:

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

Скопируйте текст в редактор

<html>
  <body>
    This is our test.com website
  </body>
</html>

Для домена example.com:

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

Скопируйте в редактор в текст

<html>
  <body>
    This is our example.com website
  </body>
</html>

Не забывайте закрывать и сохранять каждый файл, нажимая CTR+X и Y.

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

При установке Apache на Ubuntu 18.04 по умолчанию создается файл конфигурации. Найти его можно здесь:

/etc/apache2/sites-available/000-default.conf

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

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

Файлы конфигурации Apache должны иметь расширение «.config».

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

$ sudo nano /etc/apache2/sites-available/test.com.conf

Отредактируем файл следующим образом:

<VirtualHost *:80>

    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

</VirtualHost>

Выше мы указали каталог /var/www/test.com/public_html, потому что все файлы сайта test.com будут размещены в нем.

Повторим операцию для второго сайта example.com

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

В конфигурационном файле укажем следующее:

<VirtualHost *:80>

    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

</VirtualHost>

Добавление виртуальных хостов

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

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

Перезапуск Apache

После добавления виртуального сервера на Ubuntu 18.04 необходимо перезапустить Apache:

$ sudo service apache2 restart

Изменение локального файла hosts

Наши виртуальные хосты настроены. Для проверки вымышленных адресов нам необходимо отредактировать файл hosts на локальном компьютере (НЕ на сервере!).

Это позволит компьютеру обратиться к правильному публичному IP-адресу сервера. Предположим, что публичный IP-адрес сервера xxx.xxx.xxx.xxx, поэтому на нашем компьютере нужно будет отредактировать файл hosts следующим образом:

xxx.xxx.xxx.xxx example.com
xxx.xxx.xxx.xxx test.com

Если Вы используете ПК под Linux, необходимо отредактировать файл /etc/hosts с помощью команды:

$ sudo nano /etc/hosts

Внесите в него изменения и сохраните.

Если на компьютере установлена ОС Windows, отредактируйте файл c:\windows\system32\drivers\etc\hosts, используя текстовый редактор (блокнот).

Не забудьте заменить xxx.xxx.xxx.xxx на публичный IP-адрес Вашего сервера.

Проверка новых сайтов в браузере

Теперь нужно проверить сайты example.com и test.com в браузере. Если все выполнено по инструкции, то в браузере Вы должны увидеть следующее:

test.com

This is our test.com website

example.com

This is our example.com website

Заключение

Хостинг нескольких сайтов на одном сервере под Ubuntu 18.04 прост и  удобен: можно не переплачивать за отдельные виртуальные сервера.

Настройка веб-сервера Apache, для локального сервера Windows

Вступительная часть

Продолжаем собирать локальный сервер на своем компьютере, с осью Windows. После установки трех компонентов локального сервера AMP (Apache+MySQL+PHP) на свой компьютер, работающий под Windows, переходим к их настройке. В этой статье настроим веб-сервер, Apache.

Подготовка к настройке веб-сервера Apache

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

Общая задача настроек Apache; MySQL; PHP это связать их воедино, указав в каждом из них, расположение других серверов. А также, нужно выставить наиболее приемлемые настройки параметров этих компонентов.

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

Настройка веб-сервера Apache по шагам

Идем в директорию установки Apache. В прошлых статьях я ставил Apache в папки c:/www (установка Apache MSI) и c:/Apache24;

В папке c:/www/conf нам нужен файл конфигурации веб-сервера, httpd.php;

Настройка веб-сервера Apache (редактирование файла) делаем в удобном редакторе Notepad++.

Примечание: Термин раскомментировать (uncomment), означает открыть доступ к функционально строке файла для системы. По факту. Раскомментировать в файлах Apache, значит убрать в начале строке знак решетка (#).

1. uncomment: #LoadModule rewrite_module modules/mod_rewrite.so

(включаем загрузку для модуля  mod_rewrite)

включаем загрузку для модуля mod_rewrite2. В конце группы директорий LoadModule, прописываем расположение вашего уже установленного сервера PHP и этим, подключаем PHP к Apache (расположение пишите свои).
LoadModule php5_module "C:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "c:/php/"
3. uncomment [#ServerName localhost:80]

4. Проверьте правильность директивы (проверяем путь): DocumentRoot «C:/www/htdocs»

5 Для управление Apache на сайтах создаются файлы .htaccess. Чтобы включить в работу этот файл в блоке директив:
<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

Меняем [None] на команду [All]

6. В строку [DirectoryIndex:] вписываем максимальное количество разрешенных расширений [index.html index.shtml  index.htm index.php index.phtml]

7. uncomment:
(816)#AddType text/html .shtml
(817)#AddOutputFilter INCLUDES .shtml

Дополняем их двумя строками:

AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php

(тем самым, включаем SSL на Apache)

8. По всему файлу проверяем правильность адреса расположения Apache 9. В всем файле httpd.php должен использоваться только слеш (/), а не бекслеш (\). 10. Сохраняем отредакnированный файл httpd.php.

Проверка работы файла httpd.php

Для проверки правильности настройки идем через меню «Пуск» во все программы, далее Apache HTTP  файл «TestConfiguration». Если есть ошибки они отразятся на экране.

Вывод

Настройка веб-сервера Apache завершена. В завершении замечу, что в файле httpd.php сервера Apache, все директории и блоки директорий снабжены подробными комментариями на английском языке. Для глубоко понимания настроек их нужно почитать.

Скачать файл httpd.php сервера Apache можно тут configs (на сайте). Обратите внимание, что в нем другое место расположения Apache.

©www.wordpress-abc.ru

Еще статьи

Похожие посты:

Похожее

Виртуальный хост apache: как настроить виртуальные хосты в файле hosts в Apache на Ubuntu 16.04/18.04 версии

Каждый владелец VPS сталкивается с вопросом, как разместить несколько сайтов на одном сервере с одним IP-адресом. Если вы используете в качестве веб-сервера Apache, виртуальные хосты (virtual hosts) — верное решение для разделения ресурсов и отдельной конфигурации для каждого сайта.

Предварительная настройка

Все действия осуществляются на сервере через подключение по SSH. Перед тем как приступить к настройке виртуальных хостов, необходимо произвести настройку сервера.

Создание пользователя

По умолчанию после создания сервера для доступа к нему создаётся root пользователь. В целях безопасности не рекомендуем работать под суперюзером.

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

Где UserName — имя нового пользователя.

Система попросит ввести пароль для нового пользователя и дополнительную информацию:

Теперь установите права доступа, чтобы новый пользователь мог использовать команду sudo. Для этого выполните команду:


        usermod -aG sudo UserName
    

Где UserName — имя созданного ранее пользователя.

Готово, новый пользователь создан. Завершите SSH-сеанс под root и подключитесь к серверу под новым пользователем.

Установка Ubuntu Apache

Чтобы выполнить действия ниже, у вас должен быть установлен Apache. Для полноценной работы сайта рекомендуем установить LAMP (Linux Apache MySQL PHP). Это минимальный набор ПО, который чаще всего используется для размещения и запуска сайта. Как установить LAMP, вы можете узнать в инструкции.

Подготовка доменов

Ваши домены должны быть привязаны к облачному серверу. Сделать это вы можете по инструкции.

Обратите внимание

В данной инструкции будут приведены примеры с доменами faq-reg.ru и support-faq.ru. В тех местах, где они будут встречаться, измените домены на свои.

Подготовка каталогов

Подготовим структуру каталогов. Рабочая директория Apache — /var/www. В данной директории мы будем создавать отдельные каталоги для каждого домена (виртуального хоста).

Чтобы создать каталоги, выполните команды:


        sudo mkdir -p /var/www/faq-reg.ru/
    

        sudo mkdir -p /var/www/support-faq.ru/
    

В этих каталогах будут храниться файлы вашего сайта. Далее необходимо установить права доступа к ним:


        sudo chmod -R 755 /var/www
    

        sudo chown -R $USER:$USER /var/www/faq-reg.ru/
    

        sudo chown -R $USER:$USER /var/www/support-faq.ru/
    

Готово, структура каталогов и права доступа настроены. Далее подготовим демостраницы.

Создание демостраниц

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

Для faq-reg.ru:


        echo "<h2>faq-reg.ru</h2>" > /var/www/faq-reg.ru/index.html
    

Для support-faq.ru:


        echo "<h2>support-faq.ru</h2>" > /var/www/support-faq.ru/index.html
    

Не забудьте заменить доменные имена на ваши.

Готово, теперь после настройки виртуальных хостов мы сможем проверить корректность их работы.

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

Файл конфигурации Ubuntu Apache virtual hosts отвечает за обработку запросов к разным доменам. У Apache существует дефолтный файл 000-default.conf, который можно использовать в качестве шаблона. Для каждого виртуального хоста необходимо будет скопировать его, задать произвольное имя (рекомендуем использовать имя домена) и произвести определённые настройки. Обязательное условие — соблюдение расширения файла: .conf

Создание конфига для faq-reg.ru

  1. 1.

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

    
            sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/faq-reg.ru.conf
        
  2. 2.

    Откройте созданный файл командой:

    
            sudo nano /etc/apache2/sites-available/faq-reg.ru.conf
        

Apache. Несколько сайтов на одном сервере

Эта инструкция основана на статье «Многоликий Apache» из журнала «Системный администратор» №12, 2005г. (http://samag.ru)

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

Веб-сервер Apache, популярный благодаря своей прозрачности для программистов и администраторов и не в последнюю очередь благодаря бесплатности, реализован под все более-менее популярные операционные системы. Его настройки для всех ОС одинаковы, различаются только пути, где хранятся конфигурационные файлы. На одном сервере может быть запущено несколько экземпляров Apache, прослушивающих разные адреса и/или порты. Один экземпляр может обслуживать несколько сайтов (подробнее об этом ниже). Проект настолько популярен, что постоянно обрастает новой функциональностью. О степени популярности можно судить либо по статистике, что, на мой взгляд, довольно опрометчиво, либо по конкретным фактам. Фактов популярности Apache мы приведём два. Во-первых, его наличие в качестве веб-сервера по умолчанию в большинстве UNIX-подобных операционных систем. Во-вторых, такой гигант в области ИТ как компания Oracle приняла его в состав своего продукта Oracle Application Server 10g, где он играет одну из ключевых ролей.

  1. Компьютер с установленным пакетом Apache 1.3 или 2.0
  2. Адрес сервера в интернете: 10.0.10.15 и имя: teo.mynetwork.ru
  3. Адрес сервера в локальной сети: 192.168.100.18
  4. Несколько сайтов.
  5. Несколько имён для одного сайта
  1. Разместить все сайты на одном сервере
  2. Сделать доступ к каждому сайту по отдельному URL
  3. Ограничить доступ к некоторым сайтам
  4. Сделать перенаправление нескольких имён на один сайт

Создаём два сайта (виртуальные хосты)

Предположим, что у нас два различных сайта teo.mynetwork.ru и logos.mynetwork.ru. Эти имена должны быть доступны, т.е. держатель зоны mynetwork.ru должен прописать в ней узлы teo и logos

— Для каждого сайта создаём каталог в корневом каталоге документов Apache (teo и logos, соответственно). Для некоторых Linux по умолчанию /var/www/html, но чтобы убедиться, где он расположен на нашем сервере, смотрим значение директивы DocumentRoot в /etc/httpd/conf/httpd.conf. Итак, создаём:

# mkdir /var/www/html/teo /var/www/html/logos

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

# mkdir /var/log/httpd/teo /var/log/httpd/logos

— Если у нас уже был создан сайт, то всё его содержимое переносим в созданный для него каталог, т.е. из /var/www/html в /var/www/html/teo. Новый сайт logos.mynetwork.ru размещаем в /var/www/html/logos. Теперь настраиваем Apache. Добавляем в конец файла /etc/httpd/conf/httpd.conf (некоторые ОС создают для каждого виртуального хоста отдельный конфигурационный файл, тог):

NameVirtualHost 10.0.10.15
<VirtualHost teo.mynetwork.ru>
DocumentRoot /var/www/html/teo
ServerName teo.mynetwork.ru
ErrorLog /var/log/httpd/teo/error_log
CustomLog /var/log/httpd/teo/access_log combined
</VirtualHost>

<VirtualHost logos.mynetwork.ru>
DocumentRoot /var/www/html/logos
ServerName logos.mynetwork.ru
ErrorLog /var/log/httpd/logos/error_log
CustomLog /var/log/httpd/logos/access_log combined
</VirtualHost>

Все настройки не заданные для сайта явным образом в директиве VirtualHost, наследуются от глобальных настроек Apache, указанных выше в этом же файле.

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

# /etc/init.d/httpd restart

— Теперь, обращаясь по DNS именам, мы будем получать разные сайты. Если обратиться по IP адресу, то получим сайт teo.mynetwork.ru, т.к. он подключен первым.

Создаём ссылки с нескольких DNS адресов на один сайт

Это можно осуществить двумя способами: созданием синонимов, или перенаправлением всех обращений с другого сайта.

1) Синонимы задаются директивой ServerAlias, могут содержать маску, и разделяются пробелом. Вот несколько примеров создания синонимов:

ServerAlias www.teo.mynetwork.ru
ServerAlias *.teo.mynetwork.ru
ServerAlias www.teo.mynetwork.ru god.mynetwork.ru pantheon.ru

Синоним — это DNS-имя. Имена могут быть абсолютно любыми, в том числе и из разных доменов, но все они должны разрешаться в IP-адреса, то есть их предварительно нужно зарегистрировать в DNS.

2) Перенаправление задаётся директивой Redirect. Создаём новый пустой сайт pantheon.ru. Как и для предыдущих сайтов, это делается в три шага: создание каталога для документов, для журналов и добавление конфигурации в httpd.conf:

<VirtualHost pantheon.ru>
    DocumentRoot /var/www/html/pantheon
    ServerName pantheon.ru
    ErrorLog /var/log/httpd/pantheon/error_log
    CustomLog /var/log/httpd/pantheon/access_log combined
    Redirect / http://teo.mynetwork.ru
</VirtualHost>

Можно перенаправлять не со всего сайта, а только с определённого каталога или даже документа:

Redirect /samag http://samag.ru
Redirect /ftp/ ftp://citkit.ru/pub/
Redirect /find/ya.htm http://yandex.ru

При этом Apache воспринимает первый параметр директивы Redirect не как URL, а как набор символов, при совпадении с которым происходит перенаправление. Отсюда следует, что он НЕ проверяет наличие указанных каталогов и файлов, а ссылки /samag и /samag/ НЕ считает одинаковыми.

Перенаправление с помощью файла .htaccess выглядит так:

RewriteEngine On
RewriteRule ^wiki/(.*)$ http://new.site.ru/wiki/$1 [R=permanent,L]
RewriteRule ^(.*)$ http://new.site.ru/ [R=permanent,L]
  • 1-я строка: включаем возможность менять URL
  • 2-я строка: перенаправляем запрос к странице http://old.site.ru/wiki/Что-то на другой сайт, передавая параметры ($1)
  • 3-я строка: любые другие запросы к старому сайту перенаправляем на новый.

Полезная ссылка:

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

Теперь, если пользователь обратится к нам по IP-адресу, либо по имени, на которые наш сервер откликается (см. Приложение), то Apache сначала определяет, не удовлетворяет ли запрос описанным директивами VirtualHost сайтам и если не находит ни один из них, то выдаёт сайт по умолчанию, который находится в каталоге, заданном глобальной директивой DocumentRoot, т.е. уровнем выше остальных. Таким образом, получается, что пользователь может попасть на любой из виртуальных сайтов не тем путём, какой мы для него приготовили, т.е. http://logos.mynetwork.ru/. Например, набрав в адресной строке браузера «http://192.168.100.18/logos/», он получит сайт logos.mynetwork.ru. Правда в этом случае документы, использующие ссылки на ресурсы этого же сайта, будут некорректно отображаться, потому что ссылки делаются относительно корня сайта и, если это была ссылка /img/picture.jpg, то во втором случае этот же файл уже нужно искать по ссылке /logos/img/picture.jpg, этого же браузер не знает. Таким образом, здесь все зависит от того, догадывается ли пользователь, в каких каталогах мы храним наши сайты. В принципе, в этом нет ничего плохого, ведь мы в любом случае выложили сайты, чтобы их посещали (правила по ограничению доступа к ресурсу всё равно будут действовать, о них мы поговорим чуть позже), но как-то это выглядит не красиво (для того и двери, чтоб в окна не лазить). Чтобы устранить эту некрасивость можно поместить сайт по умолчанию на тот же уровень, что и остальные сайты, т.е. создать каталог /var/www/html/default и указать его в двух директивах глобальных настроек (т.е. до описания виртуальных сайтов)

DocumentRoot "/var/www/html/default"
...
# This should be changed to whatever you set DocumentRoot to.
<Directory "/var/www/html/default">

Теперь перейдём непосредственно к раздаче прав доступа. Существует два способа указания прав доступа к каталогу веб-сайта средствами Apache:

1) поместить в каталог файл .htaccess,

2) использовать директиву <Directory> в файле конфигурации.

В обоих случаях правила распространяются и на вложенные каталоги. Мы рассмотрим оба способа и изменим права доступа к двум каталогам сайта logos.

файл .htaccess

Какие параметры можно переписать в файлах .htaccess определяется директивой AllowOverride. Для разрешения переопределения всех деректив нужно добавить в конфигурацию сайта строку:

AllowOverride All

Перечислим преимущества использования файла .htaccess:

  1. при его изменении не нужно перезапускать Apache;
  2. при одинаковом уровне доступа к разным ресурсам можно пользоваться ссылками на один файл .htaccess;
  3. можно предоставить пользователю право редактирования этого файла, что удобно, если у нас сервер с множеством клиентских сайтов.

Есть и недостатки:

  1. для того, чтобы ответить на вопрос: «какие ограничения доступа существуют на сайте?» — администратору необходимо помнить, в каких каталогах лежат эти файлы и ссылки;
  2. если сайт будет переноситься на другой сервер, и, что очень вероятно, будет размещён в другом каталоге, то для корректировки ссылок уйдёт много времени;
  3. повышается нагрузка сервера, т.к. при каждом запросе на ресурс он обращается к .htaccess в этом каталоге и всех верхних по иерархии, наследуя их настройки т.е. запрос на ресурс http://teo.mynetwork.ru/olimp/staff/zeus.htm инициирует проверку .htaccess файлов в каталогах
  • ./
  • ./olimp/
  • ./olimp/staff/
Пример

Предоставим права с помощью файлов .htaccess, нужно создать соответственно файл /var/www/html/logos/info1/.htaccess:

Options +Indexes
Order deny,allow
Deny from all
Allow from 192.168.100.11
Allow from 192.168.100.17

и файл /var/www/html/logos/info2/.htaccess:

AuthType Basic
AuthName "Boss"
AuthUserFile "/var/www/main_users"
Require valid-user

директива <Directory>

Определяя настройки доступа к каталогам сайта с помощью директивы <Directory> в одном конфигурационном файле всего сайта, мы получим следующие преимущества:

  1. можно быть уверенным, что ничего не пропустим, если вдруг нужно изменить уровень доступа к какому-нибудь ресурсу;
  2. повышаем скорость реакции сервера на запросы, т.к. все настройки загружаются при старте Apache.

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

<Directory ~ "^/www/.*/[0-9]{3}">

будет соответствовать именам каталогов в /www/ состоящим из трёх цифр, но это не всегда может облегчить ситуацию.

Пример

Описываем те же права в главном конфигурационном файле Apache httpd.conf или в файле настройки виртуального хоста:

<VirtualHost logos.mynetwork.ru>
  DocumentRoot /var/www/html/logos
  ServerName logos.mynetwork.ru
  ErrorLog /var/log/httpd/logos/error_log
  CustomLog /var/log/httpd/logos/access_log combined
  <Directory /var/www/html/logos/info1>
    Options +Indexes
    Order deny,allow
    Deny from all
    Allow from 192.168.100.11
    Allow from 192.168.100.17
  </Directory>
  <Directory /var/www/html/logos/info2>
    AuthType Basic
    AuthName "Boss"
    AuthUserFile "/var/www/main_users"
    Require valid-user
  </Directory>
</VirtualHost>

Итог

Оба варианта настройки равноправны и создают следующие ограничения:

Доступ к ресурсу http://logos.mynetwork.ru/info1/ смогут получить только два пользователя из локальной сети с указанными IP адресами (хотя такие ресурсы лучше хранить на внутренних веб-серверах), ещё мы дали разрешение Apache, в случае отсутствия в каталоге начальной страницы, генерировать html документ с содержимым каталога.

Для доступа к ресурсу http://logos.mynetwork.ru/info2/ будут запрошены имя пользователя и пароль, которые будут сверены с данными в файле /var/www/main_users. Создадим этот файл:

# touch /var/www/main_users
# chown root.webmaster /var/www/main_users

Добавим в него пользователя chef:

# /usr/bin/htpasswd2 /var/www/main_users chef

В некоторых дистрибутивах команда может называться без цифры, т.е. htpasswd, находится она в пакете с утилитами Apache, в Debian это apache2-utils

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

Для удаления пользователя chef из списка, используем комманду:

# /usr/bin/htpasswd2 -D /var/www/main_users chef

— Если возникли проблемы, то смотрим в логах /var/log/apache2/error_log. Можно их сделать более детальными указав в /etc/httpd/conf/httpd.conf или в конфигурации определённого виртуального хоста:

LogLevel debug

Последние штрихи

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

Include /etc/httpd/conf/vhosts/teo.conf
Include /etc/httpd/conf/vhosts/logos.conf
Include /etc/httpd/conf/vhosts/pantheon.conf

Кроме изящности мы получаем удобство в быстром подключении и отключении сайта, путём добавления/снятия символа комментария “#” в начале строки. Это особенно актуально, когда настройка каждого сайта раздувается на несколько десятков строк.

Также нелишне будет настроить ротацию журналов с помощью logrotate.

Особенности директив Listen и NameVirtualHost

Директива Listen имеет больший приоритет чем, NameVirtualHost. Она говорит, откуда принимать запросы. В то время как последняя определяет, как обрабатывать полученный запрос. Это значит, что если указано значение

Listen 80

то Apache будет прослушивать порт 80 на всех IP адресах и директива

NameVirtualHost 10.0.10.15

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

Listen 10.0.10.15:80

то

NameVirtualHost 192.168.100.18

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

См. также

  • Apache — общие вопросы, небольшие заметки, работа над ошибками.

Как добавить новый сайт в свой сервер Ubuntu на базе Apache

Из этого руководства вы узнаете, как добавить новый сайт и домен на ваш сервер Ubuntu с помощью Apache и PHP5. В том числе, как добавить файл виртуальных хостов Apache для нового веб-сайта. Прежде чем мы начнем, вам лучше сначала понять, что добавление и редактирование файла виртуальных хостов на сервере полезно, если вы хотите использовать этот сервер для нескольких веб-сайтов с разными именами домена и / или поддоменов.Без этого вы все равно можете использовать этот сервер для размещения своего веб-сайта, но только для одного веб-сайта. В любом случае, если вы предпочитаете использовать Nginx в качестве веб-сервера, вы можете просто прочитать мою предыдущую статью о том, как настроить файл виртуальных хостов на сервере на основе Nginx, чтобы вы могли добавить в него новый веб-сайт.

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

p.s: Когда я говорю «сервер», это относится как к VPS, так и к выделенному.

p.p.s: Это руководство также ответит на ваш вопрос о том, как настроить файл виртуальных хостов Apache для добавления нового сайта на сервер Ubuntu.

Необходимое условие

  1. Сервер под управлением Ubuntu или Debian. В этом примере я использую Ubuntu 12.04.
  2. Для доступа к серверу через SSH-соединение вам понадобится Putty в Windows или Terminal в Mac и Linux.
  3. В этом примере я буду использовать Putty. Если вы это сделаете, убедитесь, что вы знаете, где его скачать и как использовать. Прочтите: Использование Putty для подключения к серверу SSH из Windows.
  4. Вы также должны знать все основные команды, полезные для SSH-подключения вашего сервера.Читайте: Наиболее распространенная команда Unix для управления неуправляемым сервером.
  5. Убедитесь, что у вас есть рабочий сервер с установленным стеком LAMP: Apache, PHP5, MySQL и Postfix.
  6. Вы также можете установить программное обеспечение Bind9 DNS сначала или, возможно, позже, после добавления своего веб-сайта на свой сервер.

Как сделать шаги

Шаг 1 — Войдите на свой сервер через SSH-соединение. Если вы еще не меняли его, он должен быть в порту 22, в противном случае используйте указанный вами порт. Если вы следовали моему предыдущему руководству по всей необходимой базовой конфигурации для сервера Ubuntu, вам следует войти в систему, используя свое имя пользователя вместо root.После входа в систему введите su , нажмите Enter на клавиатуре и введите пароль root.

Шаг 2 — Затем вам нужно будет создать каталог, в котором вы хотите разместить все файлы вашего веб-сайта. Наиболее распространенное имя каталога, используемое во всем мире, — «htdocs» или «public_html». Вы можете указать собственное имя по своему усмотрению, но это может сбивать с толку при использовании в будущем.

Используйте одну из этих команд:

 mkdir -p / var / www / domain.com / htdocs / 

или, ..

 mkdir -p /var/www/domain.com/public_html/ 

Не забудьте заменить «domain.com» на свое собственное доменное имя. Кроме того, в этой статье я использую «htdocs» в качестве основного корневого документа. Поэтому, если вы хотите использовать «public_html», вам следует заменять «htdocs» каждый раз, когда вы видите его здесь.

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

 chown -R $ USER: $ USER / var / www / domain.com / htdocs / 

или, ..

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

Шаг 4 — Вам также может потребоваться изменить права доступа к каталогу / var / www /, чтобы пользователи вашего сервера могли читать и записывать в него файлы. Используйте эту команду:

 chmod -R 755 / var / www 

Шаг 5 — Добавьте тестовый файл index.html в свой веб-каталог, чтобы убедиться, что все сделано правильно. Вы можете поместить туда что угодно или использовать мой, но сначала запустите редактор Nano:

 нано / var / www / domain.ru / public_html / index.html 

Что в моем случае я использую:

 нано /var/www/servermom.com/htdocs/index.html 
 
  
     Успех - Поздравляем 
  
  
    

Успех: вы настроили виртуальный хост

Apache работает, и настройка выполняется нормально

Когда закончите, нажмите Control + O для сохранения, затем Control + X для выхода.

Шаг 6 — Пришло время для сложной части: редактирования файла Apache viartual hosts. Во-первых, вы можете просто скопировать конфигурацию Apache по умолчанию, используя следующую команду:

 cp / etc / apache2 / sites-available / default /etc/apache2/sites-available/domain.com 

затем используйте редактор Nano для редактирования этой конфигурации:

 нано /etc/apache2/sites-available/servermom.com 

Шаг 7 — Редактирование файла виртуальных хостов.Как только вы перейдете на экран редактора Nano для редактирования только что созданного «domain.com», вставьте строку с именем «ServerName» под строкой ServerAdmin и введите свое доменное имя:

 ServerName domain.com 

Необязательно: если вы хотите получить доступ к своему веб-сайту с префиксом «www», вы также можете добавить строку «ServerAlias» под ServerName:

 ServerAlias ​​www.domain.com 

Шаг 8 — Продолжая редактировать тот же файл, также определите корневой каталог документа, будь то «htdocs» или «public_html».В этом случае вам необходимо отредактировать строку «DocumentRoot» и изменить ее на:

 DocumentRoot /var/www/domain.com/public_html 

или, ..

 DocumentRoot /var/www/domain.com/htdocs 

После этого просто сохраните и выйдите (в Putty это должно быть Control + O, затем Control + X). Другие строки редактировать не нужно.

Шаг 9 — Если в Nginx нам нужно скопировать этот файл виртуальных хостов из папки «sites-available» в папку «sites-neabled», у Apache есть собственный способ включить эту конфигурацию.Просто запустите эту встроенную команду Apache:

 a2ensite domain.com 

Шаг 10 — Последний шаг, в соответствии с инструкциями, необходимо перезапустить или перезагрузить службу Apache2. Используйте эту команду:

 перезапуск службы apache2 

или просто перезагрузите:

 сервис apache2 перезагрузить 

Поздравляю, вы закончили. Теперь вы можете запустить свой любимый веб-браузер, чтобы проверить его. Очевидно, это можно сделать после настройки сервера BIND9 и обновления NS домена у регистратора (GoDaddy, NameCheap и т. Д.).Кроме того, вы можете просто отредактировать файл локальных хостов на своем компьютере только для проверки, чтобы вам не нужно было сначала обновлять NS домена. Как и я.

Как только вы почувствуете, что все настроено правильно, вы можете приступить к созданию полноценного веб-сайта (например, к установке WordPress, Joomla, Drupal, скрипта форума и т. Д.). В отличие от Nginx, Apache полностью поддерживает конфигурацию .htaccess, поэтому все должно быть проще и понятнее.

Об авторе
савияти

Привет! Я Савияти, основатель этого блога.Я мама со страстью к ведению блога и всему техническому. У меня не было работы офлайн, поэтому я решил начать вести блог, одновременно изучая то, что я люблю. Вы можете найти меня в Google+ или Twitter.

.

Как настроить несколько веб-сайтов с помощью веб-сервера Apache

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

Примечание. Я написал эту статью на виртуальной машине, использующей Fedora 27 с Apache 2.4.29. Если у вас другой дистрибутив или выпуск Fedora, команды, которые вы будете использовать, а также расположение и содержимое файлов конфигурации могут отличаться.

Как упоминалось в моей предыдущей статье, все файлы конфигурации для Apache расположены в / etc / httpd / conf и /etc/httpd/conf.d . Данные для сайтов по умолчанию расположены в / var / www . При наличии нескольких веб-сайтов вам необходимо указать несколько местоположений, по одному для каждого сайта, который вы размещаете.

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

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

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

Подготовка исходного сайта

Прежде чем настраивать второй веб-сайт, вам необходимо настроить виртуальный хостинг на основе имени, работающий для существующего сайта.Если у вас нет существующего веб-сайта, вернитесь и создайте его сейчас.

Когда у вас есть сайт, добавьте следующий раздел в конец его файла конфигурации /etc/httpd/conf/httpd.conf (добавление этого раздела — единственное изменение, которое вам нужно внести в файл httpd.conf ):

 


DocumentRoot / var / www / html
ServerName www.site1.org

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

Вам также необходимо настроить свои веб-сайты с записями в / etc / hosts , чтобы обеспечить разрешение имен. В прошлый раз мы просто использовали IP-адрес для localhost . Обычно это делается с использованием той службы имен, которую вы используете; например, Google или Godaddy.Для вашего тестового веб-сайта сделайте это, добавив новое имя в строку localhost в / etc / hosts . Добавьте записи для обоих веб-сайтов, чтобы вам больше не нужно было редактировать этот файл позже. Результат выглядит так:

 

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 www.site1.org www.site2.org

Давайте также изменим файл /var/www/html/index.html , чтобы он был более явным. Он должен выглядеть так (с некоторым дополнительным текстом, чтобы идентифицировать его как веб-сайт номер 1):

 

Перезапустите сервер HTTPD, чтобы внести изменения в конфигурацию httpd .Затем вы можете просматривать веб-сайт с помощью браузера текстового режима Lynx из командной строки.

[root @ testvm1 ~] # systemctl перезапуск httpd 
[root @ testvm1 ~] # lynx www.site1.org

Hello World
Веб-сайт 1.

Команды: используйте клавиши со стрелками для перемещения, '?' для помощи, «q», чтобы выйти, «<-», чтобы вернуться.
Клавиши со стрелками: вверх и вниз для перемещения. Право перехода по ссылке; Осталось вернуться.
H) elp O) ptions P) rint G) o M) на экране Q) uit / = поиск [удалить] = список истории

Вы можете видеть, что отображается измененное содержимое исходного веб-сайта и что явных ошибок нет.Нажмите клавишу «Q», а затем «Y», чтобы закрыть веб-браузер Lynx.

Настройка второго сайта

Теперь вы готовы создать второй веб-сайт. Создайте новую структуру каталогов веб-сайта с помощью следующей команды:

  [корень @ testvm1 html] # mkdir -p / var / www / html2  

Обратите внимание, что второй веб-сайт — это просто второй каталог html в том же каталоге / var / www , что и первый сайт.

Теперь создайте новый индексный файл, / var / www / html2 / index.html , со следующим содержанием (этот индексный файл немного отличается, чтобы отличать его от исходного веб-сайта):

Привет, мир - снова 

Веб-сайт 2.

Создайте новый раздел конфигурации в httpd.conf для второго веб-сайта и поместите его под предыдущим разделом виртуального хоста (оба должны выглядеть очень похожими). Эта строфа сообщает веб-серверу, где найти HTML-файлы для второго сайта.

 


DocumentRoot / var / www / html2
ServerName www.site2.org

Перезапустите HTTPD еще раз и используйте Lynx для просмотра результатов.

[root @ testvm1 httpd] # systemctl перезапуск httpd 
[root @ testvm1 httpd] # lynx www.site2.org

Hello World - Again

Веб-сайт 2.


Команды: используйте стрелки для перемещения, '?' для помощи, «q», чтобы выйти, «<-», чтобы вернуться.
Клавиши со стрелками: вверх и вниз для перемещения. Право перехода по ссылке; Осталось вернуться.
H) elp O) ptions P) rint G) o M) на экране Q) uit / = поиск [удалить] = список истории

Здесь я сжал полученный результат, чтобы уместить это пространство. Разница на странице говорит о том, что это второй сайт. Чтобы показать оба веб-сайта одновременно, откройте другой сеанс терминала и используйте веб-браузер Lynx для просмотра другого сайта.

Прочие соображения

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

Например, вы можете захотеть использовать некоторые сценарии CGI для одного или обоих этих веб-сайтов. Для этого вы должны создать каталоги для программ CGI в / var / www : / var / www / cgi-bin и / var / www / cgi-bin2 , чтобы соответствовать именованию каталогов HTML. . Затем вам нужно будет добавить директивы конфигурации в разделы виртуального хоста, чтобы указать расположение каталога для сценариев CGI.На каждом веб-сайте также могут быть каталоги, из которых можно загружать файлы; для этого также потребуются записи в соответствующей секции виртуального хоста.

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

Apache — это мощный веб-сервер, который можно использовать для управления веб-сайтами от простых до очень сложных. Хотя его общая доля сокращается, Apache остается единственным наиболее часто используемым HTTPD-сервером в Интернете.

.

Apache Lucene | руководство и объяснение полнофункционального текстового поиска

Lucene — это программная библиотека , опубликованная Apache Software Foundation. Это открытый исходный код, который может свободно использовать и изменять каждый. Первоначально Lucene была полностью написана на Java , но теперь есть порты и на другие языки программирования. Apache Solr и Elasticsearch — мощные расширения, которые дают функции поиска еще больше возможностей.

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

Индекс — сердце Lucene — имеет решающее значение для поиска, поскольку здесь хранятся все термины всех документов.В принципе, инвертированный индекс — это просто таблица — соответствующая позиция сохраняется для каждого члена. Чтобы построить индекс, вам сначала нужно его извлечь. Все термины должны быть взяты из всех документов и сохранены в указателе. Lucene дает пользователям возможность индивидуально настроить это извлечение. Разработчики решают, какие поля они хотят включить в индекс во время настройки. Чтобы понять это, нужно вернуться на один шаг назад.

Объекты, с которыми работает Lucene, — это документы во всех формах.Однако, с точки зрения Lucene, сами документы содержат полей . Эти поля содержат, например, имя автора, заголовок документа или имя файла. Каждое поле имеет уникальное имя и значение. Например, поле с названием title может иметь значение «Инструкции по использованию Apache Lucene». Поэтому при создании индекса вы можете решить, какие метаданные вы хотите включить.

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

Сегменты создаются из этого объема данных с помощью токенизации. Эти сегменты позволяют искать термины (в основном отдельные слова). Самый простой способ работы токенизации — это стратегия с пробелами : термин заканчивается, когда появляется пробел.Однако это не применяется, если фиксированные термины состоят из нескольких слов, например «Сочельник». Для этого используются дополнительные словари, которые также могут быть реализованы в коде Lucene.

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

Чтобы пользователи могли что-либо найти, они должны ввести поисковый запрос в текстовой строке. Термин или термины называются запросом в контексте Lucene. Слово «запрос» указывает, что входные данные должны не только состоять из одного или нескольких слов, но также могут содержать модификаторы, такие как И , ИЛИ или + и , а также заполнители.QueryParser — класс в программной библиотеке — переводил ввод в конкретный поисковый запрос для поисковой системы. Разработчики также могут настраивать QueryParser. Анализатор можно настроить таким образом, чтобы он точно соответствовал потребностям пользователей.

Совершенно новое в Lucene — это инкрементальной индексации . До Lucene было возможно только пакетное индексирование. Хотя с этим можно было реализовать только полные индексы, добавочное индексирование позволяет обновлять индекс.Отдельные записи могут быть добавлены или удалены.

.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *