Centos 7 создать поддомен

Обновлено: 05.07.2024

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

Также PHP-FPM предлагает разные варианты конфигурации для регистрации данных stderr и stdout , аварийной перезагрузки и адаптивного создания процессов, что полезно для сайтов с высокой нагрузкой. Использование Apache с PHP-FPM — один из лучших вариантов хостинга приложений PHP, особенно с точки зрения производительности.

В этом обучающем руководстве мы настроим два сайта PHP для работы на одном экземпляре сервера. Каждый сайт будет использовать собственный домен, и на каждом домене будет использоваться собственная версия PHP. Первый с айт site1.your_domai n развернет PHP 7.0. Второй сайт site2.your_domain развернет PHP 7.2.

Предварительные требования

  • Один сервер CentOS 7 с не менее чем 1 ГБ оперативной памяти, настроенный согласно руководству Начальная настройка сервера CentOS 7, с пользователем non-root user с привилегиями sudo и брандмауэром.
  • Веб-сервер Apache, установленный и настроенный в соответствии с указаниями руководства Установка веб-сервера Apache в CentOS 7​​​.
  • Доменное имя, настроенное так, чтобы указывать на ваш сервер CentOS 7. Информацию о том, как сделать так, чтобы домены указывали на дроплеты DigitalOcean, можно найти в руководстве Создание указаний на серверы имен DigitalOcean из общих реестров доменов. Для целей настоящего обучающего модуля мы используем два субдомена, каждый из которых указан с записью A в наших настройках DNS: site1.your_domain и site2.your_domain .

Шаг 1 — Установка PHP версий 7.0 и 7.2 с помощью PHP-FPM

После выполнения предварительных требований мы установим версии PHP 7.0 и 7.2. Репозиторий SCL (Software Collections) содержит множество версий стеков PHP для систем CentOS 7. Если вам нужна абсолютно новая версия PHP, которой нет на SCL, проверьте remi PPA (персональные архивы пакетов).

Начнем с установки репозитория SCL в вашу систему:

Сначала узнаем, какие версии PHP 7 доступны в SCL:

Вывод будет выглядеть следующим образом:

Вы заметите, что доступна также новейшая версия, PHP 7.3. Но в наших примерах мы установим версии 7.0 и 7.2.

Начнем с более ранней версии. Установите rh-php70 и rh-php70-php-fpm ​​​:

  • rh-php70 — это метапакет, который запускает приложения PHP.
  • rh-php70-php-fpm ​​​ предоставляет интерпретатор Fast Process Manager, который работает как демон и принимает запросы Fast/CGI.

Повторите процедуру для PHP версии 7.2. Установите rh-php72 и rh-php72-php-fpm ​​​.

Далее запустите следующие команды для начала использования обеих коллекций Software Collections:

По умолчанию обе версии PHP прослушивают порт 9000 . Но в этом обучающем руководстве мы хотим запустить две версии одновременно. Поэтому назначим два новых порта:

Сейчас вы назначили выделенный порт для каждой из ваших служб PHP. Перед выполнением этих изменений необходимо, тем не менее, добавить порты в вашу конфигурацию SELinux.

Теперь вы готовы запустить и активировать ваши службы PHP. Начнем со службы rh-php70-php-fpm и активируем ее запуск во время загрузки:

Затем проверьте статус службы rh-php70-php-fpm :

Вывод будет выглядеть следующим образом:

Повторите эту процедуру, запустите службу rh-php72-php-fpm и активируйте ее запуск во время загрузки:

Затем проверьте статус службы rh-php72-php-fpm :

Другой вывод будет выглядеть следующим образом:

Мы установили на сервере две версии PHP. Теперь создадим структуру каталогов для каждого сайта, который будем развертывать.

Шаг 2 — Создание структур каталогов для обоих сайтов

В этом разделе мы создадим корневой каталог документов и страницу индекса для каждого из двух сайтов.

Вначале создайте корневые каталоги документов для site1.your_domain и site2.your_domain :

По умолчанию веб-сервер Apache работает как пользователь apache и группа apache . Поэтому /var/www/ и все его файлы и подкаталоги также должны принадлежать им. Запустите следующие команды для проверки правильности владения и разрешений корневых каталогов вашего веб-сайта:

Команда chown меняет владельца двух каталогов веб-сайта на пользователя apache и группу apache . Команда chmod меняет разрешения, связанные с этим и другими пользователями и группами.

Далее вы создадите файл info.php в корневом каталоге каждого сайта. В нем будет отображаться информация о версии PHP для каждого сайта. Начнем с site1 :

Добавьте следующую строку:

Сохраните и закройте файл. Скопируйте созданный файл info.php в site2 :

Теперь на вашем веб-сервере имеются корневые каталоги документов, которые требуются каждому сайту для предоставления данных посетителям. Далее мы настроим веб-сервер Apache для работы с двумя разными версиями PHP.

Шаг 3 — Настройка Apache для обоих сайтов

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

Вначале создайте новый файл конфигурации виртуального хоста для сайта site1.your_domain . Здесь вы предписываете Apache использовать для рендеринга содержимого PHP 7.0:

Добавьте в файл следующее: Убедитесь, что путь к каталогу сайта, имя сервера, порт и версия PHP соответствуют вашей настройке:

Для DocumentRoot вы указываете путь корневого каталога вашего веб-сайта. Для ServerAdmin вы добавляете адрес электронной почты, к которому имеет доступ администратор сайта your_domain . Для ServerName вы добавляете url для вашего первого субдомена. Для SetHandler вы указываете порт 9002 . Остальные директивы также настраивают вашу службу для развертывания PHP 7.0.

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

Теперь создайте новый файл конфигурации виртуального хоста для сайта site2.your_domain . Для этого субдомена мы будем развертывать PHP 7.2:

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

Сохраните файл и закройте его после завершения. Проверьте файл конфигурации Apache на наличие синтаксических ошибок:

Вы увидите вывод с текстом Syntax OK :

Перезапустите службу Apache, чтобы применить изменения:

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

Шаг 4 — Тестирование сайтов

Мы настроили два сайта для работы с двумя разными версиями PHP. Теперь проверим результаты.

Информационная страница
PHP 7.0 Информационная страница PHP 7.2

Обратите внимание на заголовки. На первой странице указано, что на сайте site1.your_domain развернута версия PHP 7.0. На второй странице указано, что на сайте site2.your_domain развернута версия PHP 7.2.

Мы протестировали сайты и теперь можем удалить файлы info.php . Эти файлы представляют собой угрозу безопасности, поскольку они содержат важную информацию о вашем сервере и при этом доступны неуполномоченным пользователям. Удалите файлы:

Теперь у вас имеется один сервер CentOS 7, обслуживающий два сайта с двумя разными версиями PHP. Однако PHP-FPM можно применять и для других целей.

Заключение

Мы объединили виртуальные хосты и PHP-FPM для обслуживания нескольких сайтов и нескольких версий PHP на одном сервере. Количество сайтов PHP и версий PHP, которые может обслуживать ваш сервер Apache, зависит исключительно от вычислительной мощности сервера.

Теперь вы можете рассмотреть возможность изучения более расширенных функций PHP-FPM, например порождение процесса или правил регистрации sdtout и stderr ​​​​​. Или же теперь вы можете защитить свои веб-сайты. Для этого используйте наш обучающий модуль по защите сайтов с помощью бесплатных сертификатов TLS/SSL от Let’s Encrypt.

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

Убедитесь, что вы выполнили следующие предварительные условия, прежде чем продолжить этот урок:

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

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

Мы создаем отдельный каталог для каждого домена, который мы хотим разместить на нашем сервере внутри /var/www каталога. В каждом из этих каталогов мы создадим public_html каталог, в котором будут храниться файлы веб-сайта домена.

В целях тестирования мы создадим index.html файл в корневом каталоге документа домена. Откройте редактор и создайте файл HTML со следующим содержимым:

Все команды выполняются от имени пользователя sudo, поэтому вновь созданные файлы и каталоги принадлежат пользователю root. Чтобы убедиться в отсутствии проблем с разрешениями, измените владельца корневого каталога документов домена на apache пользователя:

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

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

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

  • ServerName : Домен, который должен соответствовать этой конфигурации виртуального хоста. Это должно быть ваше доменное имя.
  • ServerAlias : Все остальные домены, которые также должны соответствовать этому виртуальному хосту, например, www субдомен.
  • DocumentRoot : Каталог, из которого Apache будет обслуживать файлы домена.
  • Options : Эта директива контролирует, какие функции сервера доступны в определенном каталоге.
    • -Indexes : Предотвращает списки каталогов.
    • FollowSymLinks : Эта опция говорит вашему веб-серверу переходить по символическим ссылкам.

    Отредактируйте файл в соответствии с вашими потребностями и сохраните его.

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

    Проверьте синтаксис файла конфигурации с помощью:

    Если ошибок нет, вы увидите следующий вывод:

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


    Вывод

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

    Favorite

    Добавить в избранное

    Главное меню » Операционная система Linux » Как разместить несколько веб-сайтов на одном VPS

    (1 оценок, среднее: 5,00 из 5)

    Как разместить несколько веб-сайтов на одном VPS

    Виртуальные хосты Apache

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

    Ubuntu или Debian:

    CentOS или Fedora:

    Создание резервную копию конфигураций Apache, а затем установите директивы виртуального хоста для ваших сайтов:

    Ubuntu или Debian:

    CentOS или Fedora:

    Ubuntu или Debian:

    Перезапустите Apache для того, чтобы изменения вступили в силу:

    Перезапустите Apache для того, чтобы изменения вступили в силу:

    Создайте каталоги /var/www/html/domain1 и /var/www/html/domain2, и загрузите свои веб-сайты в них.

    Все файлы сайта должны быть доступны для чтения веб-сервером, поэтому установить правильную собственность:

    Ubuntu или Debian:

    CentOS или Fedora:

    Серверный блок Nginx

    Для того чтобы настроить серверные блоки в Nginx для размещения нескольких доменов/поддоменов с помощью одного IP-адреса, войдите на свой сервер через SSH и установите Nginx:

    Ubuntu или Debian:

    CentOS или Fedora:

    Создайте резервную копию конфигурации Nginx, а затем создайте блок сервера для первого веб-сайта:

    Ubuntu или Debian:

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

    Добавьте следующие строки:

    CentOS или Fedora:

    Выполните следующие команды:

    Создайте новый файл конфигурации Nginx для первого веб-сайта:

    Перезапустите Nginx для того, чтобы изменения вступили в силу:

    Загрузить каждый веб-сайт в корневой каталог, указанный в блоке Nginx сервера, например:

    Установите соответствующую владельца файлов веб-сайта, так что они могут быть доступны с помощью веб-сервера Nginx (например, www-data):

    Все. Повторите ту же процедуру для каждого дополнительного веб-сайта.

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

    Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

    Функции Apache распределены между его отдельными компонентами, которые можно настраивать индивидуально. Основным таким компонентом, который содержит настройки для отдельного сайта, является виртуальный хост. Виртуальные хосты (англ. virtual host) позволяет размещать несколько доменов или интерфейсов на одном виртуальном выделенном сервере.

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

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

    Требования

    Прежде чем приступить к выполнению руководства, нужно создать учётную запись пользователя с правами sudo. Чтобы узнать, как создать такого пользователя, читайте данное руководство.

    Также нужно предварительно установить Apache. Для этого используйте менеджер пакетов yum, который установит сервер из стандартных репозиториев CentOS.

    Затем запустите Apache как сервис, чтобы он автоматически запускался после перезагрузки.

    После этого подключитесь к серверу по SSH как не-рутовый пользователь с привилегиями sudo.

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

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

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

    Каталог document root (каталог, в котором Apache ищет контент) по умолчанию находится в /var/www; в нём нужно создать отдельный каталог для каждого виртуального хоста. В каждом таком каталоге будет размещен каталог public_html, в котором и будут находиться нужные файлы. Такой подход делает хостинг более гибким.

    Необходимые каталоги можно создать при помощи команды mkdir (флаг -p позволяет создавать каталог с вложенным в него каталогом):

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

    2: Права

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

    Переменная $USER примет имя текущего пользователя. После этого каталоги public_html, содержащие контент сайтов, будут принадлежать текущему пользователю.

    Также нужно немного изменить привилегии, чтобы открыть веб-каталог и всё его содержимое для чтения, в противном случае страницы не будут отображаться корректно.

    sudo chmod -R 755 /var/www

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

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

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

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

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

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

    Откройте скопированный файл и отредактируйте соответствующие данные:

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

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

    Файлы виртуальных хостов задают настройки отдельных сайтов и помогают Apache корректно отвечать на запросы.

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

    Веб-сервер Apache должен искать виртуальные хосты в каталоге sites-enabled. Для этого нужно отредактировать главный конфигурационный файл Apache и объявить дополнительный каталог конфигурационных файлов.

    В конец каталога добавьте строку:

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

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

    Примечание: Согласно заданным конфигурациям, все конфигурационные файлы должны оканчиваться на .conf.

    Примечание: Чтобы версия доменного имени с www работала должным образом, настройки DNS должны содержать запись А или CNAME, перенаправляющую запросы к www на IP-адрес сервера. Символ звёздочки (*) также подойдёт.

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

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

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

    Откройте новый файл с привилегиями sudo в текстовом редакторе:

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

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

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

    Создав файлы виртуальных хостов, нужно включить их. Для этого создайте символическую ссылку для каждого хоста в каталоге sites-enabled:

    После этого перезапустите Apache, чтобы эти изменения вступили в силу.

    sudo apachectl restart

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

    Если у вас нет доменного имени, и вместо настоящего вы использовали условный домен, вы можете протестировать настройки, временно отредактировав файл hosts на локальном компьютере. он будет перехватывать запросы на настроенные ранее домены и направлять их на VPS (то есть, выполнять работу DNS). Но этот метод работает только на локальной машине и подходит только для тестирования.

    Примечание: Убедитесь, что вы перешли на локальную машину. Для выполнения данного раздела нужны учётные данные администратора.

    В системах Mac или Linux отредактируйте файл hosts с привилегиями администратора.

    sudo nano /etc/hosts

    Примечание: Пользователи Windows могут найти необходимые инструкции по этой ссылке.

    В этом файле нужно указать IP-адрес сервера, а затем доменное имя, которое будет использоваться для доступа к серверу.

    7: Тестирование виртуальных хостов

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

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

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

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

    Заключение

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

    2. Добавляем репозиторий EPEL следующей командой:
    sudo yum install epel-release
    Подтверждаем добавление вводом «y» и нажатием «Enter».

     Добавление репозитория EPEL

    Установка Nginx на Centos 7

    3. Запускаем установку командой:
    yum install nginx

    Знакомимся со списком устанавливаемых пакетов и подтверждаем вводом «y» и нажатием «Enter».

    Список устанавливаемых пакетов

    Соглашаемся на импорт ключа

    Импорт ключа

    Nginx установлен

    Успешная установка Nginx на Centos 7

    Запуск Nginx на Centos 7

    6. Запускаем Nginx и добавляем его в автозагрузку.
    systemctl start nginx
    systemctl enable nginx
    Проверяем статус командой
    systemctl status nginx , он должен быть active.

    7. Переходим в браузере по имени прикрепленного к VPS домена или IP-адресу. Если установка выполнена корректно, то должна открыться стартовая страница Nginx.

    Стартовая страница Nginx

    8 .Готово, Nginx установлен.

    Устанавливаем репозиторий REMI

    Установка Nginx на Centos 7

    11. Ставим пакеты php и php-fpm командой:
    yum install php php-fpm ,
    подтверждаем установку.

    Установка пакетов php и php-fpm

    12. Запускаем службу PHP-FPM и добавляем его в автозагрузку.
    systemctl start php-fpm
    systemctl enable php-fpm
    Проверяем статус командой
    systemctl status php-fpm ,
    он должен быть active.

    Читайте также: