mysite.ru

NGINX — создание виртуальных хостов

Всем привет! Сегодняшний урок посвящен теме,без которой практически невозможно начать разработку сайта — это настройка web-сервера и виртуальных хостов. В качестве операционной системе мы будем использовать Ubuntu, а web-сервера — nginx.

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

Для начала нужно разобраться, что из себя представляет виртуальный хост. Это адресное пространство веб-сервера. Оно нужно для того, чтобы пользователь мог создавать несколько сайтов на своем сервере. Выглядит это примерно так: предположим у вас есть блог, интернет-магазин, сайт-визитка, корпоративный портал. Вы можете создать разные виртуальные хосты под каждый сайт, например: local.blog, local.shop, local.vizitka, local.korp-portal.

Установка

Сначала давайте убедимся, установлен ли у вас nginx и какой он версии. Для этого нужно ввести команду:

Если у вас nginx установлен, то ответ будет примерно такой:

Если же ответа не последовало, то, в таком случае, его придется установить. Делается это с помощью следующей команды:

sudo apt-get install -y nginx

опцию «-y» мы используем, чтобы ответить на все вопросы «да», и установка сразу же началась.

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

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

sudo mkdir -p /var/www/mysite.ru/public_html

Обратите внимание на ключ «-p». Это означает следующее: если нет родительской папки, то он ее создает автоматически. Название «mysite.ru» выбрано не случайно. Здесь мы используем реальное доменное имя, и в дальнейшем сможем понимать, где какой сайт находится.

Читайте также:  Index php year 2012

Создание тестовой страницы

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

sudo nano /var/www/mysite.ru/public_html/index.php

Внутри редактора, чтобы сохранить файл, нажмите комбинацию «ctrl+o» (буква «о» Олег). Чтобы выйти «ctrl+x»

теперь наполним файл текстом, скопируйте html код:

    

Ура! Вы смогли настроить Virtual Host в nginx!

Настройка прав

Скорее всего, после создания папок у вашего сервера не будет доступа на запись в них данных. Очень часто различные CMS или фрэймворки используют системы кэширования и логирования, которые пишут данные в файлы. Если у сервера будут проблемы с правами, то он будет выдавать ошибки, что, согласитесь, не есть хорошо. Чтобы разрешить проблему с правами, нужно поменять пользователя папки, ведь ее мы создавали от пользователя root, а nginx работает от пользователя www-data, чтобы изменить пользователя папки выполним следующую команду:

sudo chown -R www-data:www-data /var/www/mysite.ru/public_html

Ключ «-R» означает, что мы выполняем команду рекурсивно на все вложенные папки, что в данном случае очень логично. Бывают еще ситуации, когда нужно дать права на чтение (при моем варианте это не пригодилось), но на всякий случай:

Вообще, тему с правами на папки я бы советовал почитать отдельно, так как от этого напрямую зависит безопасность сервера. Зачастую хватает просто смены пользователя на папку, а все права внутри приложения (если вы используете готовое коробочное решение) уже давно разрулены.

Установка php 5.6

Пройдя все этапы выше, переходим к установке php. Для начала убедимся, что данной версии у нас нет. Переходим в папку по адресу:

Посмотрите, если видите следующую картину:

И папка 5.6 не пустая, значит php5.6 версии у вас уже установлена. И устанавливать ее заново уже не нужно. Если же ее нет, то установить можно с помощью следующих команд:

sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install php5.6 php5.6-fpm php5.6-curl php5.6-common php5.6-mcrypt php5.6-xml php5.6-gd php5.6-mbstring php5.6-mysql php5.6-pdo php5.6-imagick -y

Подобная установка поставит все необходимые библиотеки для успешной работы php на вашем сервере и избавит вас от дальнейшей головной боли.

Настройка php-fpm

FastCGI Process Manager, «Менеджер процессов FastCGI». Это альтернативная реализация FastCGI режима в PHP с несколькими дополнительными возможностями, которые обычно используются для высоконагруженных сайтов. Настройка fpm делается в файле по следующему адресу:

sudo nano /etc/php/5.6/fpm/pool.d/www.conf

Чтобы воспользоваться поиском в nano, нужно нажать комбинацию горячих клавиш «ctrl+w»

[www] user = www-data group = www-data listen = /var/run/php/php5.6-fpm.sock listen.owner = www-data listen.group = www-data listen.allowed_clients = 127.0.0.1

Конфигурация виртуального хоста

И, самое главное — конфигурация виртуального хоста. Здесь важно не накосячить, а, иначе, ничего не заработает. Переходите в директорию, где они находятся:

cd /etc/nginx/sites-available/

Существует несколько вариантов создания виртуальных хостов:

  1. Можно под каждый конфиг создать отдельный файл. Важно только не забыть создать символьную ссылку в папке sites-enabled
  2. Занести все конфиги сайтов в один в файл default, и каждый виртуальных хост хранить в конструкции server <> server <> server <>

Мне нравится вариант 2. Все изменения делаем в файле default. Зайдя в этот файл, вы вероятнее всего уже увидите закомментированный кусок кода ниже, начинающийся со слова server . Вы можете либо создать новый хост ниже, либо заменить этот текст. Обязательно сделайте все по инструкции и обратите внимание на важные моменты, и я уверен, у вас все получится. Это оффициальная рекомендуемая конфигурация для настройки под фрэймворк yii2 (но я немного изменил под свои нужды), найти оригинал можно тут: https://github.com/nginx-configuration

server < charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name mysite.ru;
root /var/www/mysite.ru/public_html;
index index.php; access_log /var/log/nginx/mysite.ru.access.log; error_log /var/log/nginx/mysite.ru.error.log;
location / < # Redirect everything that isn't a real file to index.php try_files $uri $uri/ /index.php$is_args$args; ># uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ < # try_files $uri =404; #>#error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ < deny all; >location ~ \.php$ < include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php/php5.6-fpm.sock; try_files $uri =404; >location ~* /\. < deny all; >>

В данной настройке нужно обратить внимание на следующие поля:

  • server_name — это доменное имя, после ввода которого в адресную строку, пользователь сможет получить информацию из папки root, о ее настройке ниже
  • root — это директория, в которой хранится сайт
  • access_log и error_log — это логирование всех заходов и ошибок на сайте. Мы указываем путь до файлов
  • fastcgi_pass — Задаёт адрес FastCGI-сервера. Адрес может быть указан в виде доменного имени или IP-адреса, порта.

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

После того, как все заполнено, вам нужно перезагрузить сервер и fpm. Делается с помощью следующих команд:

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

В случае успеха должно быть выдано следующее сообщение:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Если же какие-то ошибки, то нужно внимательно почитать ее текст и разобраться. Вероятнее всего, с первого раза сервер запустить не удасться, но если же вам удалось, то вы везунчик 🙂

Настройка файла hosts

Теперь остался последний момент. Если вы сейчас введете в адресной строке mysite.ru, то, вероятно, получите ошибку. Но, если настроить файл hosts и указать, что по этому домену он должен отправляться на наш сервер, то сайт заработает. Для этого откроем файл:

В этом файле вы увидите примерно следующее:

Нам сюда нужно добавить еще одну строчку:

Обязательно обратите внимание, что между IP адресом и Доменным именем должна быть табуляция , а не пробел

Теперь можете попробовать зайти на ваш сайт по новому адресному имени http://mysite.ru и получите такую долгожданную фразу — «Ура! Вы смогли настроить Virtual Host в nginx!»

Секреты в настройке виртуальных хостов

Есть одна хитрость, которую я очень часто использую при создании сайтов. Чтобы все ваши сайты лежали в домашней директории пользователя, можно создать там папку, например: www. Получится что-то следующее: /home/mylocalComputer/www/mysite.ru

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

ln -s /var/www/ /home/mylocalComputer/

Теперь пользователь может управлять сайтами из своей домашней директории.
Опция «-s» — позволяет нам создать символическую ссылку.

В общем, что знал — рассказал. Если у вас остались вопросы — задавайте их в комментариях. Спасибо за прочтение. Надеюсь у вас все получилось 🙂

Облако тегов

Следующая статья

Отличие MyISAM от InnoDB

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

Источник

Оцените статью