Фигура 1: VirtualHost, базиран на Apache IP.
VirtualHost, базиран на име: В VirtualHost, базиран на имена, сървърът на Apache има един IP адрес и множество имена на домейни, конфигурирани за всеки уебсайт. В DNS сървър на всяко от тези имена на домейни се присвоява IP адресът на сървъра Apache. В зависимост от това какво име на домейн е използвал клиентът, сървърът връща различни уебсайтове.
Фигура 2: VirtualHost, базиран на име на Apache.
В тази статия ще ви покажа как да конфигурирате базиран на името на Apache VirtualHost. Ще използвам Ubuntu 18.04 LTS за демонстрацията. Но трябва да работи върху всяка съвременна дистрибуция на Linux с малко или никаква промяна. И така, нека започнем.
Инсталиране на уеб сървър Apache 2:
Уеб сървърът на Apache 2 се предлага в официалното хранилище на пакети на Ubuntu 18.04 LTS. Така че можете лесно да го инсталирате с APT мениджъра на пакети.
Първо актуализирайте кеша на хранилището на APT пакета със следната команда:
$ sudo apt актуализация
Сега изпълнете следната команда, за да инсталирате уеб сървър Apache 2:
$ sudo apt инсталирайте apache2
Сега натиснете у и след това натиснете
Трябва да бъде инсталиран уеб сървър Apache 2.
Конфигуриране на DNS:
Сега трябва да конфигурирате DNS сървъра, за да прикачите имената на домейни, които искате да използвате за VirtualHost, към IP адреса на вашия сървър Apache.
Можете да намерите IP адреса на вашия сървър Apache със следната команда:
$ ip a | egrep "inet"Както можете да видите, IP адресът в моя случай е 192.168.21.166. За вас ще е различно. Така че, не забравяйте да го замените от сега нататък.
Ако искате да научите как да конфигурирате Apache VirtualHost локално, тогава можете да използвате / etc / hosts файл за локално разрешаване на DNS / имена.
За да конфигурирате локална DNS резолюция, отворете / etc / hosts файл с нано както следва:
$ sudo nano / etc / hosts
Сега добавете реда към файла, както е отбелязан на екранната снимка по-долу. След това натиснете
Сега местната резолюция на имената трябва да работи.
Структури на директорията:
Искам да съхранявам всички данни за уебсайта на моя Apache VirtualHost в определена директория / www. Тук искам да създам директория за всеки потребител. Всеки потребител ще има своя собствена public_html / и трупи / директория също.
Например за 3 потребители bob (пример1.com), алиса (пример2.com), linda (пример3.com), структурата на директориите е както следва:
/ www- пример1.com /
- www /
- public_html /
- индекс.html
- трупи /
- пример2.com /
- www /
- public_html /
- индекс.html
- трупи /
- пример3.com /
- www /
- public_html /
- индекс.html
- трупи /
Лесен начин да направите това е да създадете директория на шаблон или скелет и да поставите там структурата на директориите. След това създайте всеки потребител, използвайки тази скелетна директория.
Първо копирайте съдържанието на директорията на скелета по подразбиране / и т.н. / skel в друга директория / и т.н. / skel-www както следва:
$ sudo cp -rv / etc / skel / etc / skel-www
Сега отидете до новата директория на скелета, както следва:
$ cd / etc / skel-www
След това създайте желаната структура на директория вътре в скелетната директория, както следва:
$ sudo mkdir -p www / public_html, дневници
Можете също да създадете по подразбиране индекс.html файл в public_html / директория, ако искате.
$ ехо "Работи
"| sudo tee www / public_html / index.html
Сега създайте / www директория със следната команда:
$ sudo mkdir / www
Създаване на потребители:
Сега можете да създадете потребителя Боб за www.пример1.com, както следва:
$ sudo useradd --create-home --home-dir / www / example1.com - черупка/ bin / bash --gid www-data --skel / etc / skel-www bob
По същия начин създайте потребителя Алис за www.пример2.com, както следва:
$ sudo useradd --create-home --home-dir / www / example2.com --shell / bin / bash--gid www-data --skel / etc / skel-www alice
Отново създайте потребителската линда за www.пример3.com, както следва:
$ sudo useradd --create-home --home-dir / www / example3.com --shell / bin / bash--gid www-data --skel / etc / skel-www linda
Тук присвоих основната група на всеки потребител www-данни. По подразбиране сървърът Apache работи като тази група. Ако не бях направил това, сървърът на Apache няма да има достъп до файловете в public_html / директория и създайте регистрационни файлове в трупи / директория.
Конфигуриране на Apache VirtualHost:
Сега сте готови да конфигурирате Apache VirtualHost за 3 потребители Боб (www.пример1.com), Алис (www.пример2.com) и линда (www.пример3.com).
Директорията за конфигурация на сайта на Apache по подразбиране в Ubuntu е / etc / apache2 / sites-available.
Сега отидете в директорията / etc / apache2 / sites-available / както следва.
$ cd / etc / apache2 / sites-available /
Първо, създайте нов конфигурационен файл за bob www.пример1.com.конф както следва:
$ sudo nano www.пример1.com.конф
Трябва да се отвори текстов редактор.
Сега въведете следните редове.
Име на сървър пример1.comServerAlias www.пример1.com
DocumentRoot "/ www / example1.com / www / public_html "
Опции -FollowSymLinks + MultiViews + Indexes
AllowOverride all
Изискване на всички предоставени
ErrorLog "/ www / example1.com / www / logs / error.регистрация "
CustomLog "/ www / example1.com / www / logs / access.дневник "комбиниран
ЗАБЕЛЕЖКА: Променете получер текст според вашите изисквания.
И накрая, конфигурационният файл www.пример.com.конф трябва да изглежда както следва. Натиснете
просто да копирате конфигурационния файл за Боб (www.пример1.com.конф) и направете необходимите малки промени.
Копирайте конфигурационния файл на Боб за Алис и линда със следните команди:
$ sudo cp -v www.пример1.com.conf www.пример2.com.конф$ sudo cp -v www.пример1.com.conf www.пример3.com.конф
Сега редактирайте конфигурационния файл на Алис както следва:
$ sudo nano www.пример2.com.конф
Сега променете всички случаи на пример1 да се пример2. След това запазете файла.
Направете същото за линда.
$ sudo nano www.пример3.com.конф
Променете всички случаи на пример1 да се пример3 и запазете файла.
Активиране на конфигурации на VirtualHost:
Сега деактивирайте конфигурацията на уебсайта по подразбиране на Apache, както следва:
$ sudo a2dissite 000-по подразбиране.конф
Сега активирайте конфигурациите на VirtualHost www.пример1.com.конф, www.пример2.com.конф, www.пример3.com.конф както следва:
$ sudo a2ensite www.пример1.com.conf www.пример2.com.conf www.пример3.com.конф
И накрая, рестартирайте услугата Apache, както следва:
$ sudo systemctl рестартирайте apache2
Тестване на VirtualHosts:
Сега опитайте да влезете в уебсайтовете www.пример1.com, www.пример2.com, www.пример3.com
Както можете да видите, всички тези уебсайтове работят според очакванията.
ЗАБЕЛЕЖКА: Промених страницата по подразбиране индекс.html за всеки сайт, така че да е малко по-различен за всеки уебсайт с цел тестване. В противен случай няма да можете да разберете дали конфигурацията на VirtualHost работи или не.
И така, вие конфигурирате базиран на име Apache VirtualHost на Ubuntu 18.04 LTS. Благодаря, че прочетохте тази статия.