Днес ще прегледаме как да конфигурираме виртуални хостове на Apache на CentOS 7 VPS сървър или специален сървър. Ако хоствате уебсайтове, има вероятност да хоствате повече от един. Ако е така, знанието как и защо работят тези виртуални хостове трябва да ви позволи да разберете по-добре защо са необходими. По подразбиране Apache може да хоства само един корен на документ за всички заявки, което вероятно не е това, което искате да се случи.
Можем да използваме блокове VirtualHost, за да преведем именувани домейни в техните подходящи корени на документи, с нови настройки за всеки блок, ако е необходимо. Но какво влиза в валиден VirtualHost? Къде трябва да се съхранява?
За тази статия ще използваме управляван от ядро CentOS 7 VPS, който идва с чиста инсталация на Apache 2.4. Инструкциите ще бъдат подобни за CentOS 6, а също и за Unmanaged CentOS 7 сървъри, със същата версия на Apache. Имаме SSH връзка към нашия сървър като root потребител.
Apache ще бъде конфигуриран да хоства множество сайтове незабавно, така че няма какво да правите тук. Исторически погледнато (т.е. в Apache 2.2), NameVirtualHost беше необходим, за да кажем на Apache, че искаме да използваме блокове за виртуален хост за хостване на множество сайтове. Тъй като това е преобладаваща опция, тя вече е включена по подразбиране в Apache 2.4, така че нямаме нужда от допълнителна конфигурация. Но искаме да сме сигурни, че Apache е активиран и ще стартира при зареждане.
systemctl enable httpdsystemctl start httpdТези две команди не трябва да имат резултат. Ако имат резултат, има предупреждение или грешка, за които можете да видите подробности, като изпълните:
Apache вече работи и е готов да хоства сайтове!
Сега имаме нужда от няколко домейна, които да добавим към Apache. Нека настроим две нови основни папки на документи, една в /var/www/domain.com/ и една в /var/www/domain.net.
mkdir -p /var/www/domain.netmkdir -p /var/www/domain.comСега можете да започнете да добавяте уникално съдържание към всяка папка. Добавянето на основен файл index.html, който казва какъв домейн зареждате, тъй като това ще ни помогне да проверим работата си по-късно.
mkdir -p /var/www/domain.netmkdir -p /var/www/domain.comАко сте осигурили Apache да работи под друг потребител, трябва да актуализирате собствеността и разрешенията. В противен случай Apache ще работи като root със собственост на root файла.
Сега, когато имаме сайтове за хостване, трябва да кажем на Apache за тях. Ще направим нов файл за всеки домейн, така че да можем да активираме или деактивираме (или да добавяме и премахваме) надолу. Напишете следното във файл на /etc/httpd/conf.d/domain.com.conf:
Нека разделим тези редове.
Първият ред отваря нашия блок VirtualHost и определя какъв IP адрес и порт ще слушаме за тази директива. Звездичката идентифицира всички IP адреси на сървъра и порт 80 като не-SSL порт, тъй като все още нямаме SSL.
Единствените два реда, които трябва да имате в блок VirtualHost, са ServerName и DocumentRoot. Те казват на Apache какви входящи заявки за домейн да слуша и коя папка да обслужва тези заявки.
Псевдонимът на сървъра може да опише други домейни, които трябва да обслужват същия корен на документа, което може да бъде полезно, да речем, при инсталация на WordPress с множество сайтове.
Редът ErrorLog казва на Apache къде да съхранява грешки, свързани със зареждането на този домейн. Един единствен уникален файл може да разделя регистрационни файлове за домейн, като например domain.com.error.log.
CustomLog с опцията „комбиниран“ ще регистрира всички заявки за достъп за този домейн. Този дневник също е особено полезен при отстраняване на проблеми, които възникват, когато се направи заявка. Също така, това може да бъде много полезно за проследяване на това какви IP адреси имат достъп до вашия сайт.
Има други полезни редове, които можете да добавите към вашия блок VirtualHost:
ServerAdmin декларира имейл адреса на уеб администратора и се предоставя на посетителите, ако възникне грешка. Тук могат да се задават и други опции; Подобно на .htaccess файл, можем да изключим индексни страници или символни връзки. RewriteEngine може да бъде активиран във VirtualHost Също така, други условия и правила за презаписиПочти всичко, което можете да поставите в .htaccess файл, може също да отиде в конфигурация на VirtualHost файл. След като вече имаме VirtualHost за domain.com, направете друг за domain.net по същия начин.
След като файловете са записани, можем да изпълним тест на конфигурацията:
Ако няма забелязани проблеми, тази команда ще върне следния резултат.
Ако има проблеми, командата httpd трябва да ни каже кой ред, както и кой файл е причинил безпокойството. Сега можем да презаредим конфигурацията в Apache.
Отново, ако презареждането е успешно, тази команда няма да има резултат. Можем да потвърдим, че заредихме VirtualHosts, като изпълним:
root@host [~]# httpd -S VirtualHost конфигурация: 127.0.0.1:80host.server.com (/etc/apache2/conf/httpd.conf:305) 127.0.0.1:443 host.server.com (/etc/ apache2/conf/httpd.conf:3726) 67.227.197.126:80 е сървър по подразбиране NameVirtualHost host.server.com (/etc/apache2/conf/httpd.conf:327)порт 80 namevhost host.server.com (/etc/ apache2/conf/httpd.conf:327)порт 80 namevhost domain.com (/etc/apache2/conf/httpd.conf:390)псевдоним mail.domain.comalias www.domain.comРезултатът от тази команда ще показва текущата работеща конфигурация на Apache, включително блоковете VirtualHost, които са заредени.
Трябва да видите два записа, които казват „*:80“ в началото на реда, което ще бъде domain.com и domain.net. Ще видите и конфигурационния файл, от който е зареден VirtualHost, в скоби.
Ако сте настроили DNS записите за домейните, сега можете да посетите домейните във вашия браузър и ще видите двата файла index.html, които написахме по-рано. Ако все още не сте настроили DNS, можете да тествате с помощта на модификация на хост файла на вашата работна станция.
Готово! Сега, когато нашите VirtualHosts са готови и работят, можем да продължим да конфигурираме нашите уебсайтове, да защитим нашия сървър или да настройваме SSL за новоинсталираните домейни.
Имате ли други мисли или притеснения? Ако е така, екипът за поддръжка на Liquidweb може да помогне. Просто отворете билет при нас днес на support@liquidweb.com, обадете ни се на 1-800-580-4985 или ни пишете чрез чат, за да говорите с един от нашите администратори за поддръжка от ниво 3 днес!
PREV: Проблеми със сървъра, които ви развалят (и решения!) | Блог на Udemy
NEXT: Как да коригирам грешката „Недостъпен хост на местоназначението“?