Ну что, к счастью для многих, мы закончили относительно нудную процедуру установки операционного окружения WordPress и сейчас уже перейдём к более интересной практической части — его настройке.
В статье под номером 6 данной темы мы установили www-сервер Apache версии 2.4.54 (увидеть, какая версия установлена можно всегда при помощи команды: apache2 -v), проверили, что он отзывается на запрос от www-клиента (браузера) по ip-адресу, но остался открытым вопрос, а как собственно говоря, создавать, запускать, останавливать, удалять, одним словом — оперировать, сайтами, которые мы планируем размещать на этом сервере. Именно этому вопросу и будет посвящена данная статья.
Прежде чем перейти к собственно данному вопросу, отметим, что Linux (как и любая Unix-подобная ОС), не имеет некоего единого файла (или базы данных), в котором задаются все или почти все настройки системы, как это делается в реестре (registry) Windows. Единственное, что объединяет разные настройки Linux, так это то, что они все находятся в разных файлах внутри одной директории /etc системного раздела. Это и преимущество Linux (если полетит какой-то файл настроек, то максимум, что произойдёт, так это отказ сервиса, настройки которого полетели, а сама система и все остальные сервисы будут работоспособны), и его недостаток, так как нужно копаться в огромном количестве файлов и знать их структуру. Что тут, скажешь, c’est la vie — такова жизнь!
Кстати, здесь будет уместным отметить, что начало бурного развития Интернет-технологий, приходящееся на конец 80-х, начало 90-х годов прошлого века и происходящего благодаря усилиям компаний, продвигающих различные варианты OC UNIX и её стек интернет-протоколов TCP/IP, компания Microsoft как бы прозевала, продолжая развивать свой сетевой протокол IPX. Когда же она поняла, что недооценила TCP/IP (а произошло это только в версии Windows 95), то настолько быстро его внедрила, что использовала для локальной настройки доменных имён не какой-нибудь параметр реестра, а точно такой же файл, как и в Unix-подобных системах /etc/hosts, который в Windows располагается по следующему пути: «%SYSTEMDRIVE%:\Windows\system32\drivers\etc\hosts».
Этот файл в обычной работе применяется крайне редко или даже вообще не применяется и является пустым. Однако он имеет очень важное значение и позволяет заменять для вашей конкретной машины основную работу dns-сервера, заключающуюся в подмене исмволического имени соответствующим ip-адресом. Скажем больше, даже если dns-сервер доступен и работает, но у вас для данного доменного имени есть запись в файле hosts, то она будет иметь приоритет и разрешение доменного имени будет происходить не на основе ответа dns-сервера, а на основе этой записи.
Нужно понимать, что к ресурсам в интернете обращаются не только и не столько по ip-адресам, сколько по символическим названиям и не только потому, что человеку сложнее запомнить последовательность из 12 цифр (если мы ведём речь о протоколе IP версии 4), чем некое алфавитно-цифровое название, которое, кстати может состоять всего из трёх букв (например адрес поисковой системы Google в Китае таков: g.cn), но и потому, что цифровых адресов не хватает, и на одном цифровом адресе могут в реальности находится тысячи символических. Это на первый взгляд не очень понятно, так как исторически первая и самая главная задача символических имён заключалась в необходимости избавить человечество от требования запоминать цифровые ip-адреса (интересно, что сегодняшнее поколение молодых людей уже настолько обленилось, что благодаря многочисленных мощным поисковым сервисам уже даже и символические имена сайтов не запоминает). Дело в том, что с некоторых пор на первый план вышло второе практическое значение символических имён, позволяющее как бы использовать разные названия одного и того же физического или псевдо-физического ресурса (ip-адреса), что в свою очередь позволило на одном web-сервере с одним ip-адресом держать тысячи разных сайтов. Делается это благодаря тому, что web-сервер тесно взаимодействует с dns-сервером, используя так называемые привязки ( bindings) доменных имён, а не только ip-адрес.
Таким образом, исходя из вышеизложенного материала, мы можем уже попробовать создать на некотором тестовом домене простенький одностраничный статический сайт, выдающий сакральную фразу «Привет, Мир», впервые использованную в книге-учебнике Брайана Кернигана «Введение в язык B» («A Tutorial Introduction to the Language B, Brian Kernighan, 1972«). Займёмся этим. В принципе, создать такой сайт мы могли бы сразу после установки Apache, а установка MySQL и PHP нам была нужна для создания сложных динамических сайтов, использующих базу данных и (или) серверное программирование.
Выберем произвольное доменное имя, скажем site-1.sysadmin.bz и пропишем его в файле C:\Windows\System32\drivers\etc\hosts на машине, с которой будет осуществляться запуск браузера (в нашем случае — машине с ОС Windows) для чего запустим простейший редактор файлов, например Notepad (Блокнот) от имени администратора, выберем файл и добавим в его конец строку:
По умолчанию сайты в Debian Linux размещаются в каталоге (папке, директории) /var/www. Сразу после установки web-сервера Apache там появился подкаталог html, в котором, в свою очередь один файл index.hml. Именно он открывался когда мы обращались из web-браузера по адресу: http://192.168.1.11 и выдавал приветствие от web-сервера Apache (смотрите в статье под номером 5 этой же рубрики).
Теперь создадим в каталоге /var/www (например, при помощи клавиши F7 в Midnigt Commander) подкаталог site-1.sysadmin.bz, а в нём файл index.html со следующим содержимым:
Казалось бы всё, теперь при обращении из браузера на хост-машине по адресу http://site-1.sysadmin.bz мы увидим приветствие в стиле, общепринятом с легкой руки Кернигана для первой программы, написанной на любым язвке программирования. Однако это не так, и мы снова видим ту же страницу «Apache2 Debian Default Page», что и при обращении по ip-адресу. Дело в том, что для получения нашего приветствия ещё нужно создавать виртуальный хост Apache, который будет привязан к нужному нам доменному имени. Вот создание виртуального хоста и будет равносильно созданию сайта. Приступим к этому.
Когда речь идёт о Debian Linux или любом другом варианте, основанном на Debian (например Ubuntu), то нужно будет проделать некоторые манипуляции в каталоге /etc/apache2:
Сначала нужно создать в подкаталоге sites-available новый файл с именем, которое позволит вам в дальнейшем не запутаться, а потому лучше один в один как имя домена, но обязательно с расширением .conf, содержимое которого базируется на шаблоне 000-default.conf:
а потом символическую ссылку на только что созданный файл из каталога sites-enabled:
Можно воспользоваться для этого Midnight Commander, а можно и командой ln. Главное, чтобы на вышеприведённом экране справа в окне рядом со ссылкой @000-default.conf появилась новая @site-1.sysadmin.bz.conf, при попытке просмотра которой открывался соответствующий файл с левого окна.
Вот теперь, как бы всё, осуществляем перезапуск сервера Apache одной из предназначенных для этого команд, например /etc/init.d/apache2 restart, пробуем снова зайти на сайт по адресу http:///site-1.sysadmin.bz и вуаля, видим необходимое сакральное приветствие.
Отметим ещё, что Apache содержит несколько полезных команд, которые иногда удобнее использовать, чем заниматься файлами. Например, создать или удалить символическую ссылку (фактически как бы создать условия для запуска или остановки сайта после перезагрузки Apache) можно при помощи команд:
a2ensite site-1.sysadmin.bz
a2dissite site-1.syadmin.bz
Соответственно команды a2enmod и a2dismod позволяют подключать или отключать внешние модули Apache2. Например, для WordPress будет нужен внешний модуль rewrite, который позволяет использовать семантические URL и подключается он командой a2enmod rewrite.
Вопросом, связанным с сопоставлением ip-адресу некоего символического имени, занимаются специальные серверы (сервисы) доменных имён DNS, которые осуществляют анализ имени справа налево и обращаются к ответственным за зону 1-ого уровня корневым DNS-серверам, которые, в свою очередь потом переправляют запрос к ответственным за зону 2-ого уровня и т.д. до тех пор, пока один из серверов в цепочке чётко и ясно не укажет, какой именно ip-адрес соответствует данному символическому имени благодаря тому, что именно на нём будет указана соответствующая запись.
Если вы хотя бы вкратце знаете теорию ip-сетей версии 4, то понимаете, что ip-адреса могут быть так называемыми белыми. то есть такими, которые могут проходить через маршрутизаторы по всему миру, и серыми, которым дорога в белую зону закрыта. Используемая обычно большинством домашних компьютеров сеть класса С 192.168.1/24 относится к классу серых ip-сетей и доступ из неё в Интернет и к ней из Интернета не возможен без специальных ухищрений, широко применяемых сегодня.
Что касается, того, как же тогда работает у вас на компьютере Интернет, ответим, что с большой вероятностью при помощью маскарада благодаря протоколу NAT, либо при помощи прокси-сервера, суть которых с точки зрения маршрутизации заключается в том, что вместо вашего реального ip-адреса (у нас 192.168.1.11 на виртуальной машине) в интернет подсовывается адрес вашего маршрутизатора, который уже имеет белый ip-адрес (динамический или статический) .
А что до доступа извне к вашему компьютеру, то тут нужен будет, во-первых только статический ip-адрес на вашем маршрутизаторе (отдельная услуга у провайдера), и во-вторых настройка проброса портов (организация обратного прокси-сервера) на нём.
Если вы не собираетесь предоставлять интернет-сервисы наружу (в интернет), а вам достаточно того, чтобы скажем ваш WordPress-сайт был доступен вашим домочадцам из домашней локальной сети или сослуживцам из корпоративной локальной сети, то вам вообще говоря нет необходимости покупать домен и вы можете использовать любой, какой вам заблагорассудится.
apt install gnupg2
Далее нам нужно скачать файл ключа https://packages.sury.org/php/apt.gpg:
apt install -y lsb-release ca-certificates apt-transport-https software-properties-common
sh -c 'echo "deb [signed-by=/etc/apt/trusted.gpg.d/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'