Файл nginx conf. Веб сервер Nginx и apache – что это и как работает данная связка

25.03.2019

Статьи про домашний медиа-сервер мы установили 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

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.

  • Tutorial

Привет, Хабр! В ходе обсуждения одной статьи про «идеальную» домашнюю сеть, возник спор, что лучше, аппаратный NAS или мини-компьютер с Linux дистрибутивом. Автор предлагал использовать аппаратный NAS, т. к. якобы он проще в администрировании, не требует знаний Linux, да и вообще NAS тихий. Но при этом, для просмотра на DLNA-телевизоре видео, который он не поддерживает, предлагал включать ноутбук с транскодирующим DLNA. Меня это, мягко говоря, удивило, т. к. в идеальной сети такого быть не должно. Поэтому хочу представить своё видение одного из ключевых компонентов домашней сети - централизованного хранилища данных, и основано оно будет на мини-ПК с ОС Ubuntu Server.

Что нам нужно?

В первую очередь от NAS требуется, конечно, надёжное хранение данных и удобный доступ ним. В первую очередь для надёжности необходим RAID, потому как потерять весь домашний медиа-архив из-за отказавшего жёсткого диска как минимум глупо. Для доступа к данным необходимо настроить FTP и Samba-доступ. Конечно потребности у каждого свои, поэтому если вы используете MacOS или Linux, то вам наверняка больше потребуются другие протоколы (NFS, AFP), я же опишу настройку так, как я её делал для себя.
Для доступа к медиа-данным со smart-телевизоров, нам потребуется DLNA-сервер. А для для удобства скачивания, нам нужен torrent-клиент. Ну и желательно всё это администрировать через веб-интерфейс.

Почему не аппаратный NAS?

Казалось бы, производители давно позаботились о пользователях, и давно выпускают готовые коробочки специально для домашнего применения. Но у них есть недостатки:
1) Они дорогие. Вы вряд ли найдёте дешевле 20000 руб. NAS c возможностью подключения 4-х жёстких дисков, с процессором Atom. Те, что стоят недорого, в них обычно применяется слабенький процессор, которого уже не хватет на тот же torrent при одновременном скачивании двух потоков данных (просмотр фильма по DLNA и копирование, например, фоток). Собрать же полноценный мини-ПК на основе mini-ITX материнской плате с Atom и 4 Гбайтами памяти у меня получилось всего за 6000 рублей!
2) Они ограничены. То есть в нём предусмотрены только те функции, которые заложил производитель. Чтобы расширить его возможности, обычно требуются «танцы с бубном», т. к. ядро в прошивке бывает сильно урезанным. Применяя же Ubuntu, вы практически ничем не ограничены - огромный репозитарий всевозможного софта позволит вам сделать из вашего сервера всё что угодно, вплоть до поднятия виртуальных машин.

Почему не FreeNAS или OpenFiler?

Спросите вы. Во-первых, смотри пункт №2 недостатков аппаратных NAS, то есть наращивание функционала данных дистрибутивов очень проблематично, тогда как у Ubuntu есть огромный репозитарий уже настроенного софта. Во-вторых, это огромные системные требования, в частности FreeNAS 8 требует минимум 2 Гб оперативной памяти, а новые версии OpenFiler вообще уже не выпускают под x86-архитектуру. Кроме того у FreeNAS как-то не гладко идёт развитие - версия 0.7 который имеет торрент клиент и DLNA-сервер давно устарела, в восьмой, коммерческой версии мне так и не удалось настроить DLNA, да и с предлагающейся файловой системой ZFS как то сложно, в случае отказа системы, как прикажете восстанавливать данные? Сложно.

Почему выбран дистрибутив Server 12.04 LTS?

LTS (Long Term Support) - это дистрибутив с длительным периодом поддержки и выпуском обновлений. Так как нам нужен сервер, который, по возможности, единожды настроив, мог бы спокойно работать в дальнейшем годами, то выбирать лучше именно эту версию дистрибутива.
Server версия выбрана очевидно, т. к. в идеале нам совершенно не нужно растрачивать ресурсы на графическую оболочку. Хотя если вы, пока только знакомитесь с linux, или уже работали с desktop-версией ubuntu, то в принципе можете выбрать и обычную версию дистрибутива, это не принципиально.

Начнём

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


Я взял бюджетную материнскую плату без поддержки аппаратного 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.

Конфигурация

1) файл подкачки
В первую очередь опишу как настроить файл подкачки, если он вам действительно нужен, всё делается буквально в несколько строчек команд.
Создаём файл заполненый нулями: > sudo dd if=/dev/zero of=/swap bs=1M count=2048
Подготавливаем его для использования как swap: > sudo mkswap /swap
Добавляем в файл fstab наш созданный файл для использования как файл подкачки:
> sudo nano /etc/fstab /swap none swap sw 0 0
Перезагружаемся: > sudo shutdown -r now
2) обновление ПО
Сразу же обновляем все пакеты, делается это двумя командами: > sudo apt-get update > sudo apt-get upgrade
3) Веб-интерфейс
Для управления системой через веб-интерфейс есть есть пакет webim, но его к сожалению в репозитарии нет, поэтому скачаем подготовленный пакет вручную: > wget http://prdownloads.sourceforge.net/webadmin/webmin_1.580_all.deb
Для установки webim потребуются некоторые зависимые пакеты, в моём случае это такой список, возможно, вам потребуется включить ещё что-нибудь. > sudo apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl apt-show-versions
Ну и собственно установка: > sudo dpkg --install webmin_1.580_all.deb
Всё, можно заходить в веб-интерфейс: https://192.168.1.180:10000
4) Настраиваем ftp-доступ
Для ftp я использую pure-ftpd (хотя вы можете выбрать на свой вкус - proftpd и vsftpd)
Создадим публичную папку: > sudo mkdir /mnt/data/public
Устанавливаем pure-ftpd из репозитария: > sudo apt-get install pure-ftpd
В принципе можно уже заходить под системным аккаунтом, но это не совсем хорошо для повседневного использования. Сделаем виртуальный аккаунт с доступом только к публичной папке: > sudo pure-pw useradd public -u local -g nogroup -d /mnt/data/public
Обновим базу данных: > sudo pure-pw mkdb
Включим использование виртуальных пользователей: > sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
Перезапускаем сервис: > sudo service pure-ftpd restart
5) Samba
Настроим доступ к серверу с windows-машин, более того у меня лично дома семья большая и требуется разделение прав между несколькими пользователями. А для удобного редактирования прав на папки прямо из Windows (через вкладку «безопасность» в свойствах), будем использовать ACL.
Домена у нас нет, поэтому придётся создать пользователей таких же, как и на windows-машинах: > sudo useradd -d /home/PaulZi -s /bin/true -g users PaulZi
Задаём пароль, такой же, как на windows: > sudo passwd PaulZi
Добавляем созданного пользователя к Samba: > sudo smbpasswd -a PaulZi
Для управления расширенными правами, можете установить утилиты (необязательно): > sudo apt-get install acl > sudo apt-get install attr
Для того, чтобы samba работала с ACL, необходима файловая система с поддержкой POSIX ACL, ext4 вполне подходит, но по умолчанию она примонтирована без этой поддержки. Для включения этой возможности добавим опцию «acl» в файл /etc/fstab. Но более того, в Windows реализована поддержка наследования прав, чтобы и это реализовать в linux, нужно чтобы samba где-то хранила дополнительные данные. Для этого необходимо включить расширенные атрибуты файлов, опция «user_xattr». Заодно запретим выполнение файлов на всём разделе с данными, с помощью опции «noexec» (для безопасности): > sudo nano /etc/fstab /dev/md0 /mnt/data ext4 defaults,noexec,acl,user_xattr 0 2
Перезагружаемся: > sudo shutdown -r now
Редактируем настройки samba (для краткости привожу только изменения и добавления): > sudo nano /etc/samba/smb.conf workgroup = Home netbios name = Server security = user # add settings admin users = PaulZi # действие этих пользователей будут производиться от root map acl inherit = yes # включаем наследование acl store dos attributes = yes # включаем хранение dos атрибутов # отключаем хранения windows атрибутов: map archive = no map system = no map hidden = no map readonly = no # public share comment = Public path = /mnt/data/public browseable = yes # шара видна read only = no # включаем возможность записи guest ok = yes # разрешаем гостевой доступ inherit permissions = yes # включаем наследование прав inherit acls = yes # включаем наследование windows-прав inherit owner = yes # включаем наследование владельца hide unreadable = yes # прятать файлы недоступные для чтения
Перезапускаем сервис: > sudo service smbd restart
6) DLNA/UPnP - сервер
В качестве DLNA-сервера я выбрал minidlna. Выбрал его по одной просто причине, что он не тянет за собой кучу ненужных зависимостей, как MediaTomb и Serviio (они тянут Java либо графические библиотеки). Однако если вам необходим транскодинг, советую установить один из них, вместо minidlna.
Установка из репозитария: > sudo apt-get install minidlna
Настраиваем: > sudo nano /etc/minidlna.conf media_dir=/mnt/data/public friendly_name=Ubuntu
Перезапускаем: > sudo service minidlna restart
7) torrent
Ну и последний освещённый в данной статье сервис - torrent-клиент. Я использую Transmission, как успешно зарекомендовавший себя клиент с веб-интерфейсом.
Устанавливаем: > sudo apt-get install transmission-daemon
Останавливаем сервис, иначе все изменения затрутся после завершения процесса: > sudo service transmission-daemon stop
Настраиваем: > sudo nano /etc/transmission-daemon/settings.json "download-dir": "/mnt/data/public/torrents" "rpc-password": "local" "rpc-username": "local" "rpc-whitelist-enabled": false
Тут меняем четыре настройки - задаём путь для загрузки, имя пользователя и пароль для веб-интерфейса, а также отключаем «белый» список доступа к интерфейсу - разрешаем для всех. Пароль указываем в открытом виде, после последующего запуска он будет зашифрован.
Запускаем сервис: > sudo service transmission-daemon start
Заходим в веб-интерфейс, убеждаемся, что всё хорошо: http://192.168.1.180:9091/

Послесловие

В итоге мы получили вполне себе полноценный домашний сервер. Конечно в статье указано лишь базовые настройки сервисов, и скорее всего вам нужно будет что-то настроить под себя. Да и возможно вам потребуется какие-то дополнительные сервисы, но как видно из статьи, всё это делается довольно просто, без особых «плясок с бубном», достаточно всего лишь обратиться к гуглу - по настройке сервисов в Ubuntu информации очень много.

Время бежит, и и не что не стоит на месте. 21 апреля 2016 года, вышел в свет релиз новой версии Ubuntu Server 16.04 LTS Xenial Xerus. Как вы уже знаете LTS – это версия с расширенной поддержкой, сроком на 5 лет. Что нового в версии 16.04?

  • Ядро Linux версии 4.4
  • Новая версия контейнерной виртуализации LXD 2.0 с поддержкой OpenStack
  • Поддержка ZFS и CephFS для больших облачных установок.
  • Поддержка snap-пакетов.
  • Docker обновлен до версии 1.10.
  • Поддержка HTTP/2
  • Open SSH 7.2p2
  • Python 3.5
  • PHP 7.0.5
  • Go 1.6

На самом деле процесс установки не отличается от предыдущей версии, но все же рассмотрим подробно базовую установку и настройку 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

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

mysite.ru

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

Сохраняем и выходим.

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

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

В 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 применяется модель, что базируется на событиях. Также используются механизмы, зависимые от операционной системы, чтобы добиться эффективного распределения запросов непосредственно между рабочими процессами. Их количество всегда обозначено в конфигурационном файле. Значение может быть как фиксированным, так и устанавливаться автоматически, ориентируясь по числу процессорных ядер, с которыми можно работать. В nginx настройка системы и модулей проводится с помощью конфигурационного файла. Поэтому, если надо что-то изменить, то искать необходимо именно его. Обычно он находится в директиве /etc/nginx (но путь может меняться при использовании других систем) и имеет расширение.conf.

Запуск, перезагрузка и логи

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

nginx -s сигнал

В данном случае подставлять можно такие команды (должны поступать от пользователя, что запустил инструмент):

  1. Stop. Используется для быстрого завершения работы.
  2. Reload. Команда необходима, чтобы перезагрузить конфигурационный файл. Дело в том, что любые изменения не будут применены, пока файл работает. И чтобы они вступили в силу, необходима перезагрузка. Как только будет получен этот сигнал, главный процесс начнёт проверять правильность синтаксической составляющей конфигурационного файла и попробует применить имеющиеся там указания. В случае неудачи он откатит изменения и будет работать со старыми параметрами. Если всё произошло успешно, то будут запущены новые рабочие процессы, а старым будет отправлено требование завершиться.
  3. Quit. Применяется для плавного завершения работы. Применяется, если необходимо подождать, пока закончат обслуживаться текущие запросы.
  4. Reopen. Закрыть и открыть лог-файлы.

Использование утилит

Настройка процессов может осуществляться также с помощью средств 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.

Реализация: server

Итак, для начала нам необходимо создать сами каталоги и разместить в них файлы с необходимыми расширениями (в html необходимо добавить содержимое). Затем открываем конфигурационный файл. В нём по умолчанию уже есть несколько блоков server, которые в массе своей закомментированы. Чтобы добиться оптимального результата, этот процесс необходимо проделать по отношению ко всем составляющим по умолчанию. Затем добавляем новый блок server с помощью такого кода:

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

Реализация: location

Определяется внутри 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-настройка. Если открыть конфигурационный файл сервера «Вконтакте» или другой крупной компании, у них будет кода больше, чем слов в этой статье.