Статьи про домашний медиа-сервер мы установили Ubuntu 14.04 Server и выполнили первоначальную настройку системы. В данной статье я расскажу: как создать удаленное подключение к серверу, установить и настроить торрент-клиент и видео-сервер, подключить сетевые диски и возможно кое-что еще. Как говорилось ранее, возможности операционной системы Ubuntu ограничены только вышей фантазией. Наверное, основным преимуществом Linux подобных операционных систем является доступность, данные ОС и весь основной софт распространяются бесплатно.
Ну перейдем от слов к делу.
Управление сервером осуществляется удаленно, для этого необходимо установить дополнительный софт. При инсталляции ОС Ubuntu Server вы должны были отметить для установки Open SSH. Если вы по каким-то причинам этого не сделали, то установим сейчас. Для проверки наличия и версии SSH сервера набираем:
Версия должна быть не ниже 5.6. Если SSH сервер не установлен или его версия ниже, чем нам нужно, то вводим следующую команду:
Нужно будет ввести пароль суперпользователя и подтвердить установку пакетов. Теперь необходимо перезапустить SSH сервер:
На данном этапе все манипуляции на сервере закончены, теперь все будем делать удаленно. Для дистанционного управления я использую программу PuTTY . Скачиваем и открываем данную программу. Указываем IP-адрес и порт нашего сервера. Порт по-умолчанию 22. Вы можете сохранить текущую конфигурацию, для последующего входа. Для этого введите название сессии и нажмите на кнопку Save.
После того, как ввели IP-адрес и порт нажимаем на кнопку Open. Откроется окно текущей сессии. В новом окне вводим имя пользователя и пароль.
Для удобной работы с файлами установим консольный файловый менеджер Midnight Commander . Для этого в терминале PuTTY вводим:
И запускаем командой:
В принципе для управления сервером терминала PuTTY достаточно, но я дополнительно устанавливаю . Webmin - это программный комплекс, позволяющий администрировать операционную систему через веб-интерфейс, в большинстве случаев, позволяя обойтись без использования командной строки и запоминания системных команд и их параметров. Используя любой браузер, администратор сервера может создавать новые учётные записи пользователей, почтовые ящики, изменять настройки служб и сервисов, например: веб-сервера Apache, DNS. Однако, в некоторых случаях необходимо знание операционной системы и редактирование конфигурационных файлов вручную.
Скачиваем пакет:
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.760_all.deb
И инициализируем установку пакета:
sudo dpkg --install webmin_1.760_all.deb
Возможно с первого раза установить не получится, система будет ругаться на отсутствие необходимых пакетов. Успокоим систему:
sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
Теперь открываем браузер и в адресной строке вводим: https://192.168.1.100:10000/. В открывшемся окне пишем свое имя пользователя и пароль. Изначально открывается страница с информацией о системе.
Webmin штука весьма мощная, отдельные ее аспекты я буду рассматривать при решении той или иной конкретной задачи. Есть русский язык, правда перевод немного корявый. Удаленное управление настроено, идем дальше.
Samba - пакет программ, которые позволяют обращаться к сетевым дискам и принтерам на различных операционных системах по протоколу SMB/CIFS. По-простому говоря, при помощи samba мы сможем подключать диски, установленные на сервере, в качестве сетевых дисков к локальному компьютеру или какому-нибудь другому устройству, которые поддерживают протокол SMB/CIFS. Это могут быть смартфоны или планшеты. Если при инсталляции ОС вы не выбрали Samba file server для установки, то сделаем это сейчас:
sudo apt - get install samba
Теперь необходимо перезапустить службу samba:
sudo restart smbd && sudo restart nmbd
Проверяем статус выполнения запуска:
Должно быть:
* nmbd is running * smbd is running
Настраивать Samba будет при помощи Webmin. В разделе Servers выбираем Samba Windows File Sharing. Если после установки у вам не появился данный пункт, то обновите модули Webmin.
Конвертируем пользователей ОС в пользователи Samba. Для этого в разделе Samba Users нажимаем на кнопку Convert Users. В открывшемся окне выбираем
Теперь на локальном компьютере подключаем сетевой диск, где нужно указать адрес сервера и общую папку. Для нашего примера это будет выглядеть вот так:
В качестве торрент-клиента будем использовать классический transmission-daemon. Для начала устанавливаем его:
sudo apt-get install transmission-daemon
Теперь переходим к настройкам. Чтобы внести какие либо изменения в файлы конфигурации, сначала останавливаем сервис:
sudo service transmission-daemon stop
Открываем файл конфигурации:
sudo nano /etc/transmission-daemon/settings.json
Теперь вносим необходимые изменения. Ищем нужный параметр и приводим к нужному нам значению. Отключаем аутентификацию, чтобы не вводить пароль:
"rpc-authentication-required": false,
Разрешаем удаленное управление торрент-клиентом:
Добавляем нашу подсеть в белый список и включаем его:
"rpc-whitelist": "127.0.0.1, 192.168.1.*", "rpc-whitelist-enabled": true
Редактируем папки для скаченных и незавершенных файлов:
"download-dir": "/home/storage/Downloads", "incomplete-dir": "/home/storage/Downloads/Incomplete", "incomplete-dir-enabled": true
Включаем автоматический форвардинг портов с использованием UPnP или NAT-PMP:
"port-forwarding-enabled": true,
Сохраняем Ctrl-O и закрываем Ctrl-X файл. Запускаем сервис:
sudo service transmission-daemon start
Все, торрент-клиент настроен. Теперь открываем браузер и проверяем соединение. Для этого нужно ввести адрес нашего сервера с портом 9091.
Для удобства можно поставить утилиту управления transmission-remote-gui .
Для удаления trasmission-daemon лучше использовать команду aptitude purge, которая удаляет пакеты программ с принадлежащими ей настройками:
sudo aptitude purge trasmission-daemon
В качестве медиа-сервера я использую довольно мощный инструмент под названием Plex Media Server . Plex умеет все: раздавать медиа-контент посредством DLNA, множество клиентов под различные платформы, поддержка смарт-телевизоров и многое другое. Вы можете настроить медиа-сервер на локальном сервере и смотреть фильмы по интернету в другой части света. Для начала устанавливаем зависимое программное обеспечение:
sudo apt-get install avahi-utils
wget https://downloads.plex.tv/plex-media-server/0.9.12.4.1192-9a47d21/plexmediaserver_0.9.12.4.1192-9a47d21_amd64.deb sudo dpkg -i plexmediaserver_*_amd64.deb
После установки служба автоматически запустится. Теперь необходимо настроить библиотеки. В адресной строке браузера вводим:
Соглашаемся с лицензионным соглашением и переходим к настройкам, нажимаем в правом верхнем углу на иконку настроек. Если вы планируете смотреть фильмы или слушать музыку извне, но необходимо зарегистрироваться или войти под своим именем в разделе Сервер. После необходимо убедиться, что открыт внешний доступ. Во вкладке Remote Access должна быть зеленая галочка. Если ее нет, необходимо настроить роутер на открытие портов. Сразу выставим галочки для автоматического обновления медиа контента во вкладке Библиотека. Можно задать интервал времени автоматического обновления. Во вкладке Языки выбираем предпочтительный язык для звуковых дорожек и субтитров. После внесения изменений не забываем их сохранить.
Добавляем сетевые библиотеки. Для этого нажимаем на плюс рядом с вашим именем пользователя.
Для начала добавим библиотеку с сериалами. Нажимаем на иконку Сериалы, выбираем русский язык и указываем папку, где хранятся сериалы. Нажимаем Добавить библиотеку. Начнется сканирование указанной папки и через некоторое время в нашей библиотеке отобразятся постеры, имеющихся в вашей базе сериалов.
Для создания библиотеки фильмов необходимо скачать и установить агента Plex для Кинопоиска. Скачиваем:
wget http://sourceforge.net/projects/russianplex/files/KinoPoiskRu/KinoPoiskRu.bundle-1.6.tar.gz/download --output-document=Kinopoisk.tar.gz
Распаковываем:
И переносим в нужный нам каталог:
sudo mv KinoPoiskRu.bundle /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/
Изменим пользователя и группу для каталога плагина:
sudo chown -R plex:plex /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Plug-ins/KinoPoiskRu.bundle
Все. Теперь нам нужно перегрузить сервис:
sudo service plexmediaserver restart
Теперь в Настройках — Сервер — Агенты должен появиться наш плагин Кинопоиска.
Возвращаемся в главное окно и подключаем библиотеку фильмов. Не забываем указать русский язык, путь к папке с фильмами и во вкладке Дополнительно выбрать Агента KinoPoiskRu. Библиотека фильмов создана. После сканирования все ваши фильмы с русским описанием будут доступны в медиа-сервере. Теперь необходимо установить клиенты Plex на ваши устройства или смотреть онлайн через браузер. По желанию можно создать библиотеки музыки и фотографий. Добавление библиотек стандартное.
Вот как-то так. Возможно что-то было упущено или не досказано. По мере освоения Ubuntu Server буду добавлять в данную статью новые возможности. Успехов в освоении Ubuntu Server.
Привет, Хабр! В ходе обсуждения одной статьи про «идеальную» домашнюю сеть, возник спор, что лучше, аппаратный NAS или мини-компьютер с Linux дистрибутивом. Автор предлагал использовать аппаратный NAS, т. к. якобы он проще в администрировании, не требует знаний Linux, да и вообще NAS тихий. Но при этом, для просмотра на DLNA-телевизоре видео, который он не поддерживает, предлагал включать ноутбук с транскодирующим DLNA. Меня это, мягко говоря, удивило, т. к. в идеальной сети такого быть не должно. Поэтому хочу представить своё видение одного из ключевых компонентов домашней сети - централизованного хранилища данных, и основано оно будет на мини-ПК с ОС Ubuntu Server.
Я взял бюджетную материнскую плату без поддержки аппаратного RAID, да и на моей практике аппаратный RAID встроенный в материнскую плату часто показывает себя не с лучшей стороны, поэтому организовывать мы будем так называемый «программный» RAID. Для хранения данных будут использоваться два новеньких жёстких диска. Лишних носителей информации у меня не оказалось, поэтому диск буду разбивать на два раздела, один из которых будет системным, а второй - для данных. Оба раздела на двух жёстких дисках будут объединены в RAID 1 (все операции для удобства я выполняю на виртуальной машине, так что не обращайте внимание на маленький размер разделов).
Сначала создаём таблицу разделов на первом диске и разбиваем его на две части. Помечаем их как «раздел для RAID», хотя это и не обязательно.
Аналогично разбивается и второй диск. После чего выбираем пункт «Настройка программного RAID». Говорим «Создать MD-устройство», выбираем первые разделы на двух дисках. Аналогично с разделами для данных. К слову, RAID можно динамично менять и расширять, поэтому если у вас пока только один жёсткий, но планируете покупку второго - смело настраивайте, после покупки запросто сможете его подцепить.
После создания RAID, помечаем их для использования. Выбираем файловую систему ext4, и назначаем точки монтирования: системный раздел как корень (/), а раздел данных в произвольное место (я предпочитаю монтировать в папку /mnt).
Дальше система известит, хотим ли мы загружать систему если RAID-массив отказал. Советую ответить «нет», т. к. если откажет жёсткий диск, вы это даже не заметите - система продолжит работать с одним диском, но если откажет и второй диск, то тут придётся нести их в фирму по восстановлению данных.
Раздел подкачки создавать не буду, т. к. во-первых его можно сделать файлом, а во-вторых лично мне он не нужен - на моём мини-ПК установлено 4 Гб, при этом использование памяти никогда не превышало более 10% (400 Мбайт), а в обычном состоянии и того меньше (прямо сейчас используется всего 130 Мбайт). Хотя если вы планируете поднимать виртуальные машины, возможно, она вам и понадобится, поэтому после установки я опишу как создать файл подкачки, сейчас же на предложение создать swap-раздел отвечаем отрицательно.
После непродолжительного процесса копирования файлов система начнёт обновлять данные с репозитариев, а после спросит, каким образом будут устанавливаться обновления. Так как у нас администрирование системы сводится к минимуму, выбираем автоматическое обновление. Затем система спросит, какие пакеты необходимо установить сразу же. Я выбрал OpenSSH (нам нужна удалённая командная строка), LAMP (понадобится для веб-интерфейса), Print server (в этой статье я не буду описывать подключение принтера), и конечно Samba file server для доступа с windows-машин.
Ну и в финальной стадии система запросит пароль для MySQL и запрос на установку GRUB. Перезагружаемся - система установлена! Залогинемся, чтобы посмотреть какой ip-адрес нам присвоил DHCP (также это можно сделать с помощью команды ifconfig), в моём случае был выдан адрес 192.168.1.180.
Всё, можно отключать монитор и убирать системник в удобное место, дальше будем работать с ним через SSH. Я использую для этого PUTTY.
Время бежит, и и не что не стоит на месте. 21 апреля 2016 года, вышел в свет релиз новой версии Ubuntu Server 16.04 LTS Xenial Xerus. Как вы уже знаете LTS – это версия с расширенной поддержкой, сроком на 5 лет. Что нового в версии 16.04?
На самом деле процесс установки не отличается от предыдущей версии, но все же рассмотрим подробно базовую установку и настройку Ubuntu Server 16.04 LTS. Для Вашего удобства статья разделена на тематические блоки. В данной статье я использую имя хоста Ubuntu, IP-адрес 192.168.1.25 и шлюз 192.168.1.1 эти параметры могут отличаться от Ваших, поэтому их придется заменить на свои.
ПодготовкаПереходим на официальный сайт Ubuntu http://ubuntu.com , выберите раздел "Download", затем "Server".
1. Быстрый интернет - нажмите кнопку "Download", загрузка начнется непосредственно через Ваш браузер.
2. Медленный интернет - "Alternative downloads and torrents" альтернативные источники загрузки в том числе и через торрент трекер.
Выберите необходимую версию дистрибутива для загрузки через торрент трекер.
По окончанию загрузки мы имеем ISO образ установочного диска Ubuntu Server 16.04 LTS . Этот образ необходимо записать на диск (в случае установки на железный сервер) или использовать его как есть (в случае установки на виртуальную машину). Если вы планируете установку системы на виртуальную машину, Вам также могут быть полезны следующие статьи:
УстановкаЗагружаем наш компьютер (виртуальную машину) с диска (флешки или монтируем обаз в случае использования виртуальной машины). Укажите необходимый язык и нажмите "Enter".
Отмечаем первый пункт "Установить Ubuntu Server " и нажимаем "Enter",
Выберите страну и нажмите "Enter".
Отвечаем "Нет" на предложение определить раскладку клавиатуры.
Выберите страну, для которой предназначена клавиатура.
Укажите необходиму раскладку клавиатуры в ручную, и нажмите "Enter".
Выберите привычный для Вас способ переключения раскладок клавиатуры.
Если у Вас нет DHCP сервера, Вам будет предложено выполнить настройку сети в ручную. На данном этапе можно пропустить эти шаги.
Укажите IP адрес
Укажите маску подсети
Укажите шлюз
Укажите адреса DNS - серверов
Теперь необходимо задать имя компьютера
Укажем имя пользователя
Укажем имя учетной записи (логин)
Придумайте пароль для учетной записи. Чек бокс "Show Password in Clear" отобразит введенные символы. Всегда используйте сложные пароли!
Введите подтверждение и нажмите "Продложить".
Вы можете повысить безопасность данных хранящихся в домашнем каталоге пользователя зашифровав его, в таком случае при запуске системы Вам необходимо будет указать пароль к контейнеру.
Укажите корректный часовой пояс
Если Вы опытный пользователь, можете разметить диски вручную (тип файловой системы, разделы и LVM). В противном случае, рекомендую Вам использовать весь диск. Подробная разметка дисков в данной статье рассмотрена не будет (нет технической необходимости).
Теперь Вам нужно выбрать системный диск. Будьте внимательны, если в Вашей системе используется несколько дисков, Вы рискуете потерять данные в случае ошибки при выборе.
Подтверждаем изменения для записи на диски.
Если Вы не используете прокси сервер, то просто нажмите "Продолжить"
Выполняется программа установки
Мне всегда нравилось иметь полный контроль над моими системами поэтому я не использую автоматическое обновление
Процесс установки программного обеспечения, подождите.
Установка загрузчика системы.
Извлеките установочные носители и нажмите "Продолжить". Будет выполнена перезагрузка системы.
На этом базовая установка Ubuntu Server 16.04 LTS успешно завершена. Можете авторизоваться в системе указав логин и пароль (пароль не отображается при вводе).
НастройкаПолучение привилегий ROOT
Так как дальнейшая настройка потребует привилегий суперпользователя root, рассмотрим несколько вариантов:
Просто добавьте sudo перед Вашей командой она будет выполнена от имени пользователя root. Например обновим систему:
Sudo apt-get update sudo apt-get dist-upgrade
Можно воспользоваться командой sudo su, она позволит Вам приключиться на пользователя root внутри терминала (не активируя его).
Sudo su
Вы также можете полностью активировать пользователя root (по умолчанию отключен в Ubuntu):
Sudo passwd root
и указать пароль. После этого можно войти в систему как root, но это не одобряется разработчиками Ubuntu и сообществом по различным причинам.
Созданный по умолчанию пользователь в Ubuntu (при установке системы) может решать все административные задачи через sudo. Активировать пользователя root для доступа к системе мне кажется не обоснованным решением.
Настройка сети
Sudo nano /etc/network/interfaces
Приводим файл конфигурации сети к следующему виду (где enp0s3 имя Вашего сетевого интерфейса, например eth0):
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto enp0s3 iface enp0s3 inet static address 192.168.1.25 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns-nameservers 192.168.1.1
Перезагрузим сетевые настройки:
Sudo /etc/init.d/networking reload
Теперь перезапустите сеть:
Sudo /etc/init.d/networking restart или sudo systemctl restart networking
На этом настройка сети в Ubuntu server 16.04 LTS завершена
Обновление
Выполним полное обновление системы
Sudo apt-get update && sudo apt-get dist-upgrade -y
Перезагрузите сервер
Sudo reboot
Установка SSH
Если Вы не выбрали установку OpenSSH сервера во время установки системы, Вы можете сделать это сейчас, также Рекомендую Вам ознакомиться со статьей « » в ней Вы найдете несколько полезных примеров для повышения безопасности подключения по SSH.
Выполните установку пакета SSH (сервер + клиент)
Sudo apt-get install ssh
Запустите SSH сервер
Sudo service ssh start
Включите автоматический запуск SSH сервера при старте системы
Sudo systemctl enable ssh
Теперь Вы можете подключаться к Вашему новому серверу через SSH, например с помощью PuTTY
Полезные приложенияЯ привык работать с использованием Midnight Commander, меня вполне устраивает как удобство навигации по фаловой системе, так и встроенный редактор mcedit. Для установки выполните:
Sudo apt-get install mc
На этом установка и базовая настройка Ubuntu Server 16.04 LTS завершена.
Привет! Сегодня мы поговорим о таком нужном понятии, как виртуальные хосты (Virtual Hosts) в web-сервере nginx. В качестве примера мы будем использовать операционную систему Ubuntu. Для других Linux-систем настройка будет выглядеть очень похоже. Эта статья-инструкция будет интересна, в основном, начинающим web-мастерам и администраторам, т.к. у них чаще всего возникает данный вопрос.
Для начала давайте дадим определение виртуальному хосту. Итак, виртуальный хост — это разделение адресного пространства web-сервера, например, по имени сайта, позволяющее запускать несколько web-сайтов/приложений на одном физическом сервере. Если говорить в терминологии документации nginx, виртуальный хост также называется «Server Block» , но для большего сходства с Apache я буду называть его единообразно, т.к. назначение у них одно и то же. И ещё одно соглашение — давайте то, что мы будем настраивать, для простоты называть сайтом.
Многие команды в этой инструкции требуют наличия у вашего пользователя прав sudoer’а на VPS. Поэтому, если у вас их нет, настроить виртуальные хосты у вас, к сожалению, вряд ли получится.
Сейчас я скажу вещь, которую необходимо знать каждому! Для того, чтоб настроить виртуальный хост в nginx, вам нужен установленный на вашей машине wеb-сервер nginx. Капитан Очевидность с нами! Если nginx у вас уже установлен, можете смело пропускать этот шаг и двигаться дальше по инструкции. Если же его у вас по каким-то причинам на машине всё ещё нет, введите в консоли команду:
Sudo apt-get install -y nginx
Опцию «-y» команде apt-get мы добавляем для того, чтоб не отвечать да-да-да на назойливые вопросы установщика, ведь мы уверены, что хотим поставить этот пакет и согласны с использованием занимаемого им места на диске. Если вы всё-таки не уверены, что со всем согласны, то не добавляйте эту опцию.
Итак, прежде чем создавать виртуальный хост, давайте сделаем папку сайта, где разместим все файлики, с которыми будет работать наш web-сервер.
Путь к этой папке в конфигурации создаваемого хоста будет Document Root , своего рода контекстом, точкой изоляции, выше которой снаружи без предварительной настройки конфигурации подняться нельзя и относительно которой строятся пути до запрашиваемых файлов. С опцией «-p» у команды mkdir мы можем не заботиться о создании родительских директорий, они будут созданы автоматически:
Sudo mkdir -p /var/www/mysite.ru/public_html
Здесь мы используем реальный подтверждённый DNS домен с корректными записями, указывающими на нашу машину. Для создания виртуального хоста с незарегистрированным доменом, например, для локальной разработки, вам необходимо внести соответствующую запись в файле /etc/hosts. Подробнее об этом будет в конце статьи.
Сейчас права у нашей созданной папки есть только у root-пользователя. Мы должны дать права на директорию для нужного пользователя, чтоб не работать с ней постоянно в режиме супер-пользователя. Вы можете заменить пользователя «www-data», используемого ниже, на другого, но по умолчанию nginx работает от имени именно этого пользователя.
Sudo chown -R www-data:www-data /var/www/mysite.ru/public_html
Теперь сделаем так, чтобы все пользователи могли читать наши новые файлы:
Sudo chmod 755 /var/www
Мы подразумеваем, что работаем с VPS, на котором все пользователи ничего плохого не затевают или на котором есть только вы. Поэтому мы можем дать права 755 на папку /var/www. Если в вашем случае нельзя выдавать всем пользователям системы права на чтение этой директории, изучите вопрос с разграничением прав и настройте самостоятельно.
Теперь у вас всё с правами готово!
Теперь нам необходимо разместить в нашей папке какие-нибудь статические файлы (HTML-страницы, картинки, скрипты, стили и т.д.), которые наш сервер будет раздавать. Давайте создадим HTML-страницу index.htm, которая будет на нашем сайте главной:
Sudo nano /var/www/mysite.ru/public_html/index.htm
И добавим в него немного разметки, которая будет показываться пользователю:
Сохраняем и выходим.
Мы подошли к созданию файла конфигурации нашего нового виртуального хоста, который будет содержать всю необходимую для веб-сервера информацию о сайте.
В nginx в директории /etc/nginx/sites-available есть шаблон для создаваемых конфигураций. Давайте скопируем его для нашего сайта:
Sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mysite.ru
Откройте новый файл конфигурации и вы увидите всю необходимую информацию, которую вам следует заполнить.
Sudo nano /etc/nginx/sites-available/mysite.ru
Нам нужно внести изменения в текущую конфигурацию. В результате для нашего простого случая должно получиться примерно следующее:
Server { listen 80; root /var/www/mysite.ru/public_html; index index.html index.htm; server_name mysite.ru www.mysite.ru; }
От вас здесь требуется правильно указать путь к папке со статикой сайта и имя сервера, по которому вы будете обращаться к своему сайту. Если путь вы укажете неверно или не укажете вовсе, то вы не сможете настроить виртуальный хост. В качестве server_name вы также можете задать IP-адрес или несколько имён через пробел, по которым будет доступен хост, как мы и сделали.
Всё, с этим файлом мы закончили. Сохраняйте его и закрывайте.
В nginx есть папки sites-available и sites-enabled. В первой хранятся конфигурации ВСЕХ виртуальных хостов, которые могут быть на данном сервере, а в директории sites-enabled символические ссылки на активные. Никто не запрещает в sites-enabled размещать оригинал файла конфигурации, а не ссылку, но это будет менее удобно, т.к. в случае необходимости отключения придётся либо удалять файл (тогда будет проблематично включить обратно), либо перемещать его в другую директорию (тогда мы должны помнить, куда мы перенесли). Гораздо проще грохнуть символическую ссылку!
Поэтому, теперь, чтоб активировать наш виртуальный хост, нам нужно создать символическую ссылку между директорией sites-available, где лежит наш файл конфигурации, и sites-enabled. В Apache для этого есть специальная команда a2ensite. В nginx такой команды нет, поэтому выполним следующее:
Sudo ln -s /etc/nginx/sites-available/mysite.ru /etc/nginx/sites-enabled/mysite.ru
Чтобы избежать «conflicting server name error» и быть уверенным, что ваш сайт отдаёт нужную информацию, можно из числа активных хостов удалить дефолтный:
Sudo rm /etc/nginx/sites-enabled/default
Мы уже прошли немало шагов и практически всё настроили. Давайте теперь перезагрузим наш веб-сервер, чтоб он применил новую конфигурацию, но перед этим хорошей практикой является проверка того, что всё с конфигурацией корректно и nginx её верно понимает. Для этого нужно запустить диагностику nginx следующей командой:
Sudo nginx -t
Такая проверка крайне необходима при конфигурации на production-серверах, чтоб не получилось так, что мы вызвали команду перезапуска nginx, а он из-за неверной конфигурации не смог запуститься, и все наши виртуальные хосты не отвечают.
Если в ответ вы получили примерно следующее:
Nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
То всё у вас хорошо и вы можете смело перезапускать сервер командой:
Sudo service nginx restart
В противном случае вам надо посмотреть файл конфигурации хоста. Что-то вы там не так указали.
Если вы указали в качестве server name IP-адрес, вы можете пропустить этот шаг, т.к. настройка локального хоста вам не нужен, ваш виртуальный хост будет работать и без него. Но, если вы хотите работать с вашим виртуальным хостом без реального доменного имени, вы можете настроить локальные хосты на вашей машине. Как я уже говорил выше, это очень удобно, например, при разработке. Я могу создать mysite.dev, и на нём будет крутиться локальная нестабильная версия сайта. Для MacOS и Linux-систем надо выполнить следующую команду:
Sudo nano /etc/hosts
Если вы работаете под Windows, то файл с локальных хостов должен лежать примерно по этому пути C:\Windows\System32\drivers\etc\hosts.
Добавляем запись о новом локальном хосте в файл. В нашем случае нужно добавить две записи, т.к. в server_name мы указали два домена.
12.34.56.789 mysite.ru 12.34.56.789 www.mysite.ru
Теперь до тех пор, пока эта запись не будет удалена, обращения по адресу mysite.ru будут получать информацию о данном хосте из этого файлика и перенаправлять вас к вашему удаленному серверу. Если сервер развернут локально, нужно написать вместо «12.34.56.789» «127.0.0.1».
Хорошая практика — во избежание будущих проблем удалять записи хостов после того, как они выполнили свою задачу.
Теперь мы можем посмотреть результаты наших трудов! Вводим в браузере адрес http://mysite.ru или http://www.mysite.ru и любуемся созданной нами главной страницей из index.htm. Оба адреса должны показывать нашу главную страницу. Вот и всё! Наш виртуальный хост прекрасно работает.
Nginx? Назначение, особенности, варианты настроек - это вещи, с которыми должен быть ознакомлен каждый веб-разработчик, чтобы тестировать свои наработки.
Данный инструмент обладает одним главным и несколькими рабочими процессами. Первый занимается чтением и проверкой конфигурации. Также под его контролем находится управление рабочими процессами. Задача последних - обрабатывать поступающие запросы. В nginx применяется модель, что базируется на событиях. Также используются механизмы, зависимые от операционной системы, чтобы добиться эффективного распределения запросов непосредственно между рабочими процессами. Их количество всегда обозначено в конфигурационном файле. Значение может быть как фиксированным, так и устанавливаться автоматически, ориентируясь по числу процессорных ядер, с которыми можно работать. В nginx настройка системы и модулей проводится с помощью конфигурационного файла. Поэтому, если надо что-то изменить, то искать необходимо именно его. Обычно он находится в директиве /etc/nginx (но путь может меняться при использовании других систем) и имеет расширение.conf.
Для этого необходимо заставить работать исполняемый файл. Настройка nginx-сервера возможна, только когда он запущен. Управление осуществляется благодаря вызову исполняемого файла с параметром -s. Для этого используйте такую запись:
nginx -s сигнал
В данном случае подставлять можно такие команды (должны поступать от пользователя, что запустил инструмент):
Настройка процессов может осуществляться также с помощью средств Unix (в качестве примера будет рассмотрена утилита kill). Обычно они используют механизм отправки процессу сигнала напрямую с данными. Увязываются они с помощью ID. Эти данные хранятся в файле nginx.pid. Допустим, что нас интересует процесс №134. Тогда для плавного завершения нам необходимо отправить следующую информацию:
kill -s QUIT 1628
Допустим, что мы хотим просмотреть список всех запущенных файлов. Используем для этого утилиту ps. Команда же будет выглядеть следующим образом:
ps -ax | grep nginx
То есть, как видите, при использовании дополнительного инструментария указывается, что идёт именно его применение. А теперь давайте сконцентрируемся на том, как совершается nginx-настройка.
Установка и настройка nginx предусматривает работу с модулями. Они настраиваются с помощью директив, которые указываются в конфигурационном файле. Они бывают простыми и блочными. Первый тип директив состоит из имени и параметров, которые разделяются с помощью пробелов, а их конец указывается точкой с запятой - (;). Блочная имеет похожее строение. Но в данной директиве вместо окончания размещается набор дополнительных инструкций, которые размещают в фигурных скобах ({ указания }). Если в них можно разместить имена и параметры других процессов, то называются такие конструкции уже контекстом. В качестве примера можно привести http, location и server.
Это одна их самых важных задач, которая стоит перед конфигурацией nginx. Под раздачей статистического содержимого подразумевают изображения и HTML-страницы (не динамические). Допустим, что нам нужна разовая работа по настройке nix nginx кластера. Сложно ли это сделать? Нет, и давайте рассмотрим пример. Прежде чем приступать к нему, необходимо детализировать условия задачи. Так, зависимо от запросов, файлы будут идти из разных локальных каталогов. Так, в /data/www мы имеем HTML-документы. А в каталоге /data/images содержатся изображения. Оптимальная настройка nginx в данном случае требует редактирования конфигурационного файла, в котором необходимо настроить блок server внутри http. Для поддержки будет использоваться также два location.
Итак, для начала нам необходимо создать сами каталоги и разместить в них файлы с необходимыми расширениями (в html необходимо добавить содержимое). Затем открываем конфигурационный файл. В нём по умолчанию уже есть несколько блоков server, которые в массе своей закомментированы. Чтобы добиться оптимального результата, этот процесс необходимо проделать по отношению ко всем составляющим по умолчанию. Затем добавляем новый блок server с помощью такого кода:
Конфигурационный файл может работать с несколькими такими блоками. Но они должны отличаться своими именами и портами, с помощью которых происходит получение данных.
Определяется внутри server:
Наличие знака «/» необходимо, чтобы сравнивать получаемые данные и смотреть, есть ли такой адрес из обработанного запроса здесь. Если никаких проблем нет, то указываем путь /data/www к необходимому файлу, что находится в данной локальной системе. Если совпадение есть с несколькими блоками, то выбирается тот, у которого самый длинный префикс. В приведённом примере его длина равняется единице, то есть использование будет исключительно в том случае, если нет «конкурентов». Теперь давайте его усовершенствуем:
location /images/ {
Как можете определить, ищем мы изображения. А теперь давайте совместим все наработки, которые были ранее, и конфигурация на данный момент выглядит следующим образом:
location /images/ {
Это рабочий вариант, который случает стандартный Этот сервер без проблем может быть доступный на локальном компьютере, если пройти по адресу: http://localhost/. Как же это всё будет работать?
Итак, когда придут запросы, что начинаются с с /images, то сервером файлы из соответствующего каталога будут отправляться пользователю. При его отсутствии будет передана информация, указывающая на ошибку 404. Если проводится настройка nginx на локальном компьютере, то при запросе http://localhost/images/example.png нами будет получен файл, месторасположение которого /data/images/example.png. При указании одного символа «/» поиск будет проводиться в директории /data/www. Но мы только изменили конфигурацию. Чтобы она начала работать, её необходимо перезагрузить. Для этого используйте команду nginx -s reload. В случае когда нормальная работа не является возможной, то в файлах error.log и access.log, расположенных в директиве /usr/local/nginx/logs, вы сможете поискать причину неисправностей.
Можно сказать относительно nginx - настройка данного объекта является одним из частых применений (и довольно легким, между прочим). Здесь используется принцип сервера, который принимает запрос, а потом осуществляет перенаправление их к необходимым сайтам. После этого ожидается ответ от них, который направляет их к тому, кто поставил задачу. Поэтому давайте рассмотрим пример создания базовой точки. Она будет заниматься обслуживанием запросов пользователей и предоставлять им изображения из локального каталога. Итак, к блоку http добавляем ещё один server с таким содержимым:
А теперь давайте для вас расшифрую: создаётся простой сервер. Он будет прослушивать Не указать listen, то сервер будет работать на 80-м. Отображаться будут все запросы в рамках локальной файловой системы, которые направлены на каталог /data/up1 (конечно, его перед этим необходимо будет создать). Для возможности проверки там необходимо поместить файл index.html. Благодаря размещению директивы root в контексте server мы сможем воспользоваться location при любых условиях (поскольку, таким образом, снимаются ограничения доступа). Теперь работаем над созданием прокси-сервера. Для его работы нам понадобится директива proxy_pass, для которой будут указаны протокол, имя, а также порт объекта как параметры (при локальном подключении это будет выглядеть как http://localhost:8080). Получится такой результат:
proxy_pass http://localhost:8080;
location /images/ {
Если вы рассматриваете код и анализируете его, то можете заметить, что второй блок location был изменён. Так, в данном случае он может работать с типичными расширениями изображений. Немного по-другому его можно было бы отобразить таким образом:
location ~ \.(gif|jpg|png)$ {
root /data/images;
Итоговая конфигурация прокси-сервера выглядит следующим образом:
proxy_pass http://localhost:8080/;
location ~ \.(gif|jpg|png)$ {
root /data/images;
Он будет отфильтровывать запросы, в конце которых имеются указанные расширения, и отправлять их тому, кто попросил файлы. Не забывайте, что при желании проверить файл конфигурации его необходимо будет перезагрузить. И поверьте, это простейшая nginx-настройка. Если открыть конфигурационный файл сервера «Вконтакте» или другой крупной компании, у них будет кода больше, чем слов в этой статье.