Задайте виртуални хостове на linux apache и nginx, IT база знания
Уеб сървърът Apache е най-популярното средство за хостване на уеб съдържание в Интернет. Той има повече от половината от всички активни уебсайтове в своя акаунт. Това е много мощен и гъвкав инструмент.
Apache разделя своята функционалност и компоненти на отделни части, които могат да бъдат персонализирани и конфигурирани независимо. Основната част, която отговаря за отделен сайт или домейн, се нарича виртуален хост (virtual host).
Тази система позволява на администратора да използва един сървър за хостване на множество сайтове, използвайки един и същ интерфейс или IP. Това е удобно за тези, които искат да използват един VPS за хостване на множество уебсайтове.
Всеки подходящо конфигуриран домейн ще насочи потребителя към конкретна сървърна директория, съдържаща информация от този сайт, съответстващ на домейна. В този случай посетителят на сайта няма да знае, че този сървър съхранява и други сайтове. Тази схема е разширяема без никакви софтуерни ограничения, стига сървърът да може да се справи с натоварването.
В това ръководство ще ви покажем как да настроите виртуални хостове в Apache на VPS, работещ с Ubuntu 14.04. В процеса ще научите как да показвате различно съдържание на различни потребители в зависимост от това кой домейн поискат.
Необходимите условия
Преди да продължите, трябва да създадете не-root потребител, както е описано в стъпки 1-4.
Трябва също да имате инсталиран Apache, за да следвате стъпките по-долу. Ако все още не е инсталиран, можете да го направите с командата apt-get:
След като изпълним тези стъпки, можем да започнем да настройваме виртуални хостове.
В това ръководство ще създадемвиртуален хост за домейни example.com и test.com. Ще се позоваваме на тях в цялото ръководство, но трябва да ги замените със собствени домейни, когато настройвате своите виртуални хостове.
Ако нямате безплатни домейни, на които да тренирате, можете да използвате фалшиви имена на домейни.
Малко по-късно ще ви покажем как да редактирате файла localhosts, за да проверите конфигурацията в случай, че използвате фалшиви имена на домейни. Това ще ви позволи да тествате конфигурацията от домашния си компютър, въпреки че съдържанието на сайта няма да бъде достъпно на това име на домейн за други потребители.
Стъпка 1 - Създаване на структурата на директорията
Първата стъпка, която ще предприемем, е да създадем структура на директория, съдържаща данните за сайта, които ще се показват на посетителите.
Нашият корен на документа (основната директория - директорията от най-високо ниво, която Apache търси съдържание за показване) ще бъде настроен да използва директории в директорията /var/www. Тук ще създадем директории и за двата виртуални хоста, които планираме да направим в този урок.
Във всяка от тези директории ще създадем поддиректория public_html, която ще съдържа действителните файлове. Това ни дава известна гъвкавост по отношение на съхранението на съдържание.
Например за нашите сайтове ще създадем директории като тази:
Маркираният в червено текст е имената на домейни на сайтовете, които искаме да показваме с нашия VPS.
Стъпка 2 - Присвояване на права
Сега имаме структура на директории за нашите файлове, но тези директории са собственост на root потребителя. Ако искаме редовните ни потребители да могат да променят файлове в нашите уеб директории, можемсменете собственика си така:
Променливата $USER съдържа потребителското име, под което сте влезли в момента. Текущият потребител вече притежава public_html директориите, където ще съхраняваме съдържанието.
Трябва също така да редактираме малко разрешенията, за да сме сигурни, че достъпът за четене е разрешен до споделената уеб директория и всички файлове и папки, които съдържа. Това е необходимо, за да се показват коректно страниците на сайта:
Вашият уеб сървър вече трябва да има необходимите разрешения за показване на съдържанието. Освен това сега вашият потребител има възможност да създава съдържание в необходимите директории.
Стъпка 3 - Създайте демонстрационни страници за всеки виртуален хост
Нашата структура на директория е готова. Нека създадем малко съдържание, което да показваме на посетителите на нашите сайтове.
Правим това само за демонстрация, защото страниците ще бъдат много прости. Ще създадем страница index.html за всеки сайт.
В този файл създайте прост HTML документ, който показва към кой сайт принадлежи. Нашият файл изглежда така:
Когато сте готови, запазете и затворете файла.
Можете да копирате файла, за да го използвате като основа за втори сайт:
След това можете да отворите файла и да коригирате съдържанието му:
Запазете и затворете този файл. Вече имате страниците, от които се нуждаете, за да тествате конфигурацията на вашия виртуален хост.
Стъпка 4 — Създаване на нови виртуални хост файлове
Файловете на виртуалния хост дефинират своята конфигурация и определят как уеб сървърът на Apache ще отговаря на заявки към различни домейни.
По подразбиране Apache има виртуален хост файл 000-default.conf, който можемизползвайте като отправна точка. Ще го копираме, за да създадем виртуални хост файлове за всеки от нашите домейни.
Ще започнем с един домейн, ще го конфигурираме, ще го копираме в друг домейн и след това отново ще направим необходимите редакции. Конфигурацията на Ubuntu по подразбиране изисква всеки виртуален хост файл да завършва с разширение .conf.
Създаване на първия виртуален хост файл
Нека започнем с копиране на файла за първия домейн:
Както можете да видите, файлът е доста малък. Ще го поправим за първия ни домейн и ще добавим някои нови директиви. Този раздел за конфигурация на виртуален хост се прилага за всички заявки, които се правят на порт 80 (портът по подразбиране за HTTP).
След това трябва да добавим две нови директиви. Първият, ServerName, задава основния домейн, който трябва да съвпада с името на виртуалния хост. Това трябва да е името на вашия домейн. Вторият, ServerAlias , дефинира други имена, които трябва да се тълкуват така, сякаш са основният домейн. Това е удобно за използване на допълнителни имена на домейни, например използване на www:
Единственото нещо, което остава за промяна в основния виртуален хост файл, е местоположението на основната директория на този домейн. Вече създадохме желаната директория, така че всичко, което трябва да направим, е да променим директивата DocumentRoot, за да сочи към директорията, която създадохме:
Нашият виртуален хост файл сега трябва да изглежда така:
Запазете и затворете файла.
Копирайте първия виртуален хост и настройте за втория домейн
Сега, когато имаме готов първия виртуален хост, можем да създадем втория, като копираме файла и го коригираме, където е необходимо.
Започнете с копиране:
Сега трябва да коригирате цялата необходима информация за втория домейн. Когато сте готови, файлът трябва да изглежда така:
Запазете и затворете файла, след като направите редакции.
Стъпка 5.1 – Активиране на новите виртуални хостове на Apache
Сега, след като създадохме нашите виртуални хост файлове, трябва да ги активираме. Apache съдържа инструменти, които ни позволяват да правим това.
Можем да използваме помощната програма a2ensite, за да активираме всеки от нашите сайтове по следния начин:
След като приключите, трябва да рестартирате Apache, за да влязат в сила промените:
Най-вероятно ще получите съобщение, подобно на това:
Това съобщение е безобидно и не засяга нашия сайт.
Стъпка 5.2 – Активиране на нови виртуални хостове на Nginx
Ако сте инсталирали пакета nginx от хранилищата на Ubuntu, ще имате две директории.
/etc/nginx/sites-enabled и /etc/nginx/sites-available.
В основната конфигурация на nginx, /etc/nginx/nginx.conf, имате следния ред:
Така че основно, за да изброите всички налични виртуални хостове, можете да изпълните следната команда:
За да активирате един от тях, изпълнете следната команда:
Скриптовете, които се доставят с Apache, са просто прости обвивки на черупки, които правят нещо подобно на горното.
След като свържете файловете, не забравяйте да стартирате sudo service nginx reload / service nginx reload
Стъпка 6 — Настройване на файла с локални хостове (по избор)
Ако преди това не сте използвали реални имена на домейни, които притежавате, а тестови, можете да тествате функционалността на виртуалните хостове, като временно промените файла с хостове на вашия локален компютър.
Това ще прихване всяка заявка към домейните, които сте конфигурирали, и ще пренасочикъм вашия VPS сървър по същия начин, както би направила DNS системата, ако се използват истински регистрирани домейни. Това ще работи само от вашата локална машина и се използва само за тестови цели.
Уверете се, че ще правите следващите стъпки на вашия локален компютър, а не на VPS сървър. Трябва да знаете паролата на администратора или да сте член на групата администратори.
Ако използвате Mac или Linux компютър, можете да редактирате локалния файл с администраторски права, като въведете командата:
Запазете и затворете файла.
Стъпка 7 – Тестване на резултатите
Ако и двата сайта работят, вие успешно сте конфигуриралидва виртуални хоста на един и същи сървър.
Ако сте направили промени във файла hosts на вашия локален компютър, сега можете да премахнете добавените редове, като вече провери дали конфигурацията работи. Така няма да съхраняваме ненужни записи във файла „hosts“.
Заключение
Ако следвате нашите инструкции, сега трябва да имате един сървър, работещ с две различни имена на домейни. За да добавите други виртуални хостове, следвайте инструкциите в това ръководство.
Apache може да обработва произволен брой имена на домейни, така че можете да добавяте нови сайтове, стига вашият сървър да може да се справи с натоварването.