Разместить сайт на сервере с LEMP

Структура каталогов для размещения сайтов

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

Базовая структура такова:

/var Системная директория
 /www Директория веб-сервера для размещения сайтов
/example1.com Сайты
/example2.com

Она будет использоваться в качестве примера ниже.

Тем не менее, если вы планируете разместить на сервере только один сайт, можно не тратить время на настройки и просто загрузить файлы сайта в папку /usr/share/nginx/html — сайт заработает и так. Но в будущем это может привести к необходимости в перенастройке — например, при добавлении нового сайта.

Создание директории сайта

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

Осталось настроить права доступа к ней. Чтобы все функции сайта работали корректно, его файлы должны быть доступны для обработки веб-серверу. Поэтому указываем в качестве владельца системного пользователя nginx:

Ubuntu и Debian:

CentOS:

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

Настройка веб-сервера

Важно учесть, что некоторые CMS имеют собственные, готовые конфигурационные файлы для nginx. Поэтому перед настройкой проверьте базу знаний официального сайта вашей системы управления контентом и документацию Nginx:

Инструкция, приведённая ниже, позволяет настроить базовый виртуальный хост без каких-либо специфических настроек.

Шаги по настройке веб-сервера, а точнее, настройке виртуальных хостов, отличаются в зависимости от вашей операционной системы.

Настройка nginx на Debian и Ubuntu

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

Создаём конфигурационный файл нашего нового сайта:

Заполняем его данными:

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

Проверяем отсутствие ошибок и перезапускаем nginx для применения изменений:

Настройка nginx на CentOS

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

Отключаем в конфигурационном файле nginx виртуальный хост по умолчанию и включаем нашу директорию с конфигурационными файлами. Для этого:

Делаем копию конфигурационного файла на случай ошибок и сбоев:

Открываем оригинальный конфигурационный файл в консольном редакторе:

В блоке http { ... } находим блок server { … }, и в начале каждой строки этого блока ставим символ # (комментируем строки).

В пределах блока http { … } добавляем запись:

Переименовываем файл с конфигурацией по умолчанию, чтобы он не мешал работе нашего нового сайта: 

Создаём конфигурационный файл нашего сайта example.com

Открываем в консольном редакторе и копируем в файл базовые настройки:

Сохраняем файл и проверяем наличие ошибок:

Если всё в порядке, перезагружаем веб-сервер для применения изменений:

Создание базы данных

База данных — обязательный компонент для работы любого современного сайта (за исключением совсем простых). Одним из этапов установки большинства CMS всегда является настройка базы данных.

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

После ввода пароля создадим новую базу данных exampleDB:

Далее добавим нового пользователя сервера баз данных (exampleDB-user) и предоставим ему доступы для работы с базой сайта:

Выходим из консоли сервера баз данных:

Загрузка файлов и проверка работы сайта

Если у вас уже есть готовый сайт, загрузить его файлы можно по sFTP. 

В итоге в папке сайта example.com должен оказаться архив вашего сайта (в примере example.com.tar.gz) и дамп базы данных (в примере dump.sql):

Распаковываем сайт: 

На CentOS tar по умолчанию не установлен. Для установки воспользуйтесь командой: 

Разворачиваем дамп базы данных:

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

Установка CMS

Рассмотрим установку на примере WordPress

Переходим в папку нужного сайта и скачиваем туда архив CMS:

Распаковываем скачанный архив и проверяем содержимое:

Архив содержал папку wordpress — она нам не нужна, поэтому переместим все файлы оттуда в корневую директорию сайта:

После этого нужно проверить, что в лишней папке ничего не осталось, и удалить её вместе с архивом.

По инструкции установки меняем название конфигурационного файла и добавляем туда данные нашей тестовой базы данных:

Ubuntu и Debian:

CentOS:

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

Ubuntu и Debian:

CentOS:

Теперь дело за малым: осталось донастроить Nginx.

Перед изменением сохраним копию исходного конфигурационного файла: 

Формально процесс сводится к проверке настроек в демонстрационных конфигурационных файлах и их адаптации под себя.

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

В итоге получится следующая структура:

  • /etc/nginx/nginx.conf — главный конфигурационный файл Nginx
  • /etc/nginx/global/restrictions.conf (для CentOS /etc/nginx/conf.d/global/restrictions.conf) — содержит ограничения на несанкционированный доступ к скрытым и системным файлам, настройки robots.txt
  • /etc/nginx/global/wordpress.conf (для CentOS /etc/nginx/conf.d/global/wordpress.conf) — содержит глобальные настройки для работы сайтов
  • /etc/nginx/sites-available/example.com.conf — конфигурационный файл для сайта example.com

Однако строго придерживаться такой структуры не обязательно — если вы планируете разместить на сервере только один сайт, некоторые параметры можно объединить. Например, чтобы развернуть один сайт на сервере, достаточно приведённых ниже настроек. Откройте в консольном редакторе соответствующий файл и скопируйте туда следующее содержимое:

Ubuntu и Debian:

/etc/nginx/nginx.conf

/etc/nginx/sites-available/example.com.conf

CentOS:

/etc/nginx/nginx.conf

/etc/nginx/sites-enabled/example.com.conf

Это пример базовых настроек конфигурационных файлов nginx для сайта на WordPress. Частные случаи могут требовать более тонких настроек.

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

Если всё в порядке, нужно перезапустить веб-сервер для применения изменений:

После этого нужно открыть ваш домен или IP-адрес сервера в браузере — должен открыться установщик WordPress. При наличии ошибок проверьте логи /var/log/nginx/error.log, запущена ли служба php-fpm:

Собственно на этом всё.