Как установить Linux, Nginx, MySQL, PHP (LEMP) в Ubuntu 16.04/18.04

LEMP — стек технологий, используемый для развертывания веб-приложений. В отличии от LAMP, в LEMP вместо Apache устанавливается Nginx.В REG.RU вы можете заказать облачный сервер с установленным шаблоном LEMP на базе операционной системы Ubuntu 16.04. В дан

Шаг 5: важные файлы и директории Apache

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

Контент

/var/www/html: здесь находится тот веб-контент, который изначально стоит только из стандартной приветственной страницы Apache, которую вы видели выше.

Конфигурация сервера

  • /etc/apache2: конфигурационная директория Apache. Здесь находятся все конфигурационные файлы.
  • /etc/apache2/apache2.conf: основной конфигурационный файл Apache. Его можно использовать для общих конфигурационных изменений Apache. Этот же файл отвечает за загрузку остальных конфигурационных файлов в этой директории.
  • /etc/apache2/ports.conf: этот файл отвечает за порты, которые используются для подключения к серверу. По умолчанию это порт 80 и иногда 443 порт (если включен модуль для обработки SSL).
  • /etc/apache2/sites-available/: в этой директории для каждого сайта хранятся виртуальные хосты (Virtual Hosts). Apache не будет использовать файлы из этой директории до тех пор, пока они не привязаны к директории sites-enables. То есть sites-available – это все доступные хосты, а sites-enabled – это включаемые сервером. Поэтому для создания нового виртуального хоста вам нужно сначала создать его файл в этой директории, а затем дать ссылку на этот виртуальный хост в директории sites-enabled для того, чтобы включить его.
  • /etc/apache2/sites-enabled/: директория для включения виртуальных хостов, которая была упомянута выше.
  • /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: директории для тех конфигурационных фрагментов, которые не связаны с виртуальными хостами. Связь между этими диреториями схожа со связью между двумя директориями выше. Файлы в conf-available вы можете включать при помощи команды a2enconf и выключать командой a2disconf.
  • /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: эти директории содержат доступные и включенные модули соответственно. Файлы, которые заканчиваются на .load, содержат фрагменты для загрузки определенных модулей, а файлы, заканчивающиеся на .conf , содержат настройки для этих модулей. Для включения модулей используйте команду a2enmod, для выключения – a2dismod.

Логи сервера

  • /var/log/apache2/access.log: по умолчанию каждый запрос к вашему серверу записывается в этот лог (до тех пор, пока вы не измените эту настройку).
  • /var/log/apache2/error.log: по умолчанию в этот лог записываются все ошибки. Директива LogLevel определяет, какое количество информации об ошибках будет записываться.

Шаг 4: базовые команды Apache

Для работы с веб-сервером Apache вам необходимо знать базовые команды.

Команда для остановки веб-сервера:

$ sudo systemctl stop apache2

Команда для запуска веб-сервера (после остановки):

$ sudo systemctl start apache2

Команда для перезапуска (остановки и запуска):

$ sudo systemctl restart apache2

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

$ sudo systemctl reload apache2

По умолчанию Apache настроен на автоматический запуск после начала работы сервера. Но эту настройку можно изменить при помощи команды:

$ sudo systemctl disable apache2

Если же вы все-таки хотите, чтобы Apache запускался вместе с сервером, введите:

$ sudo systemctl enable apache2

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

Скринкаст: Базовая установка LAMP WEB сервера на Ubuntu server 14.04 в русском интерфейсе ВИДЕО 3.1

В скринкасте выполнена полная базовая установка LAMP WEB сервера на основе операционной системы Ubuntu server 14.04, включая необходимые компоненты apache, mysql, php, OpenSSH, Postfix из репозиториев Ubuntu в их текущих версиях. Такая базовая установка подойдет для большинства целей и задач, как для организации среды разработки и разработческого LAMP WEB сервера, так и продуктивного. Скринкаст демонстрирует шаги и этапы установки Ubuntu server 14.04 и компонентов LAMP в русском интерфейсе. Для примеров использована виртуальная машина Oracle VM VirtualBox.

Смотреть скринкаст Базовая установка LAMP WEB сервера на Ubuntu server 14.04 в русском интерфейсе ВИДЕО 3.1

Содержание скринкаста:

  • Что такое «Базовая установка LAMP WEB сервера»……………………00:15
  • Компоненты LAMP WEB сервера…………………………………….01:09
  • Репозитории Ubuntu…………………………………………….02:00
  • PPA репозитории на Launchpad……………………………………05:27
  • Цели Базовой установки LAMP WEB сервера………………………….05:50
  • Создание виртуальной машины…………………………………….07:57
  • Выбор языка начального экрана-меню программы установки Ubuntu server..09:43
  • Выбор опции «Установить Ubuntu server»…………………………..10:24
  • Выбор языка устанавливаемой системы……………………………..10:56
  • Выбор географического местоположения…………………………….13:56
  • Настройка клавиатуры: язык, переключение…………………………14:17
  • Настройка сетевого имени сервера………………………………..16:03
  • Настройка учетных записей пользователей и паролей…………………16:22
  • Настройка временной зоны……………………………………….19:20
  • Разметка дисков……………………………………………….20:14
  • Настройка менеджера пакетов apt…………………………………29:10
  • Выбор способа обновления системы………………………………..31:20
  • Выбор дополнительных пакетов программ: LAMP, OpenSSH, Postfix………33:00
  • Настройка MySQL……………………………………………….36:22
  • Первичная настройка Postfix…………………………………….36:43
  • Установка системного загрузчика GRUB…………………………….40:44
  • Завершение установки Ubuntu server………………………………41:15
  • Меню загрузки Ubuntu server…………………………………….41:41
  • Вход в установленную систему «Ubuntu server 14.04″………………..42:33
  • Экран терминала «Ubuntu server 14.04″……………………………42:50
  • Обновление пакетов программ после установки системы……………….43:14
  • Выход и завершение работы «Ubuntu server 14.04″…………………..46:48

Смотреть на YouTube скринкаст: Базовая установка LAMP WEB сервера на Ubuntu server 14.04 в русском интерфейсе ВИДЕО 3.1 

Шаг 3: проверка веб-сервера

В конце процесса установки Ubuntu 16.04 запускает Apache. Веб-сервер уже должен работать.

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

$ sudo systemctl status apache2

Вывод будет примерно вот таким:

Output
● apache2.service - LSB: Apache2 web server
 Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
 Drop-In: /lib/systemd/system/apache2.service.d
 └─apache2-systemd.conf
 Active: active (running) since Fri 2017-05-27 18:30:10 UTC; 1h 5min ago
 Docs: man:systemd-sysv-generator(8)
 Process: 4336 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
 Process: 4359 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
 Tasks: 55
 Memory: 2.3M
 CPU: 4.094s
 CGroup: /system.slice/apache2.service
 ├─4374 /usr/sbin/apache2 -k start
 ├─4377 /usr/sbin/apache2 -k start
 └─4378 /usr/sbin/apache2 -k start

May 27 18:30:09 ubuntu-512mb-nyc3-01 systemd: Stopped LSB: Apache2 web server.
May 27 18:30:09 ubuntu-512mb-nyc3-01 systemd: Starting LSB: Apache2 web server...
May 27 18:30:09 ubuntu-512mb-nyc3-01 apache2: * Starting Apache httpd web server apache2
May 27 18:30:09 ubuntu-512mb-nyc3-01 apache2: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
May 27 18:30:10 ubuntu-512mb-nyc3-01 apache2: *
May 27 18:30:10 ubuntu-512mb-nyc3-01 systemd: Started LSB: Apache2 web server.

Как вы видите, сервис успешно запущен. Однако лучший способ протестировать – это запросить у Apache страницу.

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

1 вариант. Ввести в командной строке сервера:

$ hostname –I

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

2 вариант. Следующие команды также помогут вам получить IP-адрес вашего сервера (как будто вы обращаетесь к нему из другого места сети):

$ sudo apt-get install curl
$ curl -4 icanhazip.com

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

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

11. Синхронизируйте ваши облачные аккаунты

Помните, что иметь бэкап с важными файлами, папками и документами — это очень круто.

Вне зависимости от того, в Dropbox, OneDrive или Google Drive вы храните свои личные файлы, постарайтесь настроить синхронизацию сразу после установки системы.

Большинство крупных облачных провайдеров, кроме Apple iCloud, можно использовать в Ubuntu. Некоторые настраивать легче, чем другие:

  • Dropbox — предоставляет нативный Linux клиент, который регулярно обновляется
  • OwnCloud — позволяет вам организовать свое собственное облако с безграничным контролем
  • OneDrive доступен через сторонние скрипты
  • InSync — неофициально поддерживает Google Drive на Linux (бесплатно)

Также нужно помнить, что не все перечисленные приложения интегрируются с Nautilus, файловым менеджером в Ubuntu.

Related

  • Tutorial

    In this tutorial, we will go over the installation of the Elastic Stack on an Ubuntu 20.04 server. You will learn how to install all of the components of the Elastic Stack (including Filebeat, a Beat used for forwarding and centralizing logs and files) and configure them to gather and visualize system logs. We will install all components on a single server, which we will refer to as our Elastic Stack Server.

  • Tutorial
    How To Create a New Sudo-enabled User on Ubuntu 20.04

    The `sudo` command provides system administrations with a way to grant administrator privileges — ordinarily only available to the **root** user — to normal users.

    In this tutorial, you’ll learn how to create a new user with `sudo` access on Ubuntu 20.04 without having to modify your server’s `/etc/sudoers` file.

  • Tutorial
    How to Set Up an IKEv2 VPN Server with StrongSwan on Ubuntu 20.04

    A virtual private network, or VPN, allows you to securely encrypt traffic as it travels through untrusted networks, such as those at the coffee shop, a conference, or an airport.

    In this tutorial, you’ll set up an IKEv2 VPN server using (https://www.strongswan.org/) on an Ubuntu 20.04 server and learn how to connect to it with Windows, macOS, Ubuntu, iOS, and Android clients.

  • Tutorial
    How To Create a Redundant Storage Pool Using GlusterFS on Ubuntu 20.04

    GlusterFS is a network-attached storage filesystem that allows you to pool computing or storage resources of multiple machines. In turn, this lets you treat various computers as a single, more powerful unit. In this guide, you will create a redundant clustered storage array. This will provide functionality similar to a mirrored RAID configuration over the network.

3. Установите графические драйверы Linux

Ubuntu поддерживает большинство видеокарт Nvidia и Intel прямо из коробки, предлагая вам на выбор, драйвера как с открытым исходным кодом, так и с закрытым.

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

В Ubuntu это легко, в итоге все будет летать. Кстати FPS в играх тоже будет выше. ;)

Если вы планируете играть в последние игровые новинки из Steam на Ubuntu или используете требовательные приложения, как Blender — вам обязательно нужно установить самые свежие Linux драйвера.

Чтобы это сделать:

  1. Откройте ‘ПО & Обновления’ из панели Unity
  2. Перейдите во вкладку ‘Дополнительные драйверы’
  3. Делайте все по инструкции на экране, устанавливайте и принимайте все изменения

Confirm partitions

With the target drive selected, the installer will calculate what partitions to create and present this information…

If this isn’t what you expected to see (e.g., you have selected the wrong drive), you should use the arrow keys and enter to select from the options at the bottom of the screen. This will take you back to the previous menu where you can select a different drive.

It is also possible to manually change the partitions here, by selecting . Obviously you should only select this if you are familiar with how partitions work.

When you are happy with the disk layout displayed, select to continue.

Установка ubuntu server 14.04.1 LTS

Для установки ubuntu server я подготовил виртуальную машину со следующими параметрами:

  • ОЗУ: 256 Mb
  • Процессор: 1 ядро 64 bit
  • Винчестер: sata 10 Gb
  • Память видео: 12 Mb
  • Сетевые адаптеры: 1 – смотрит в мир. 2 – смотрит в сеть

Выбор таких характеристик обусловлен низкими требованиями ресурсов операционной системы.

После подключения образа диска к виртуальной машине, запускаем её и если все нормально, вы должны увидеть окно выбора языка установкиВыбираем Русский язык и жмем “Enter”. В открывшемся списке выбираем “Установить Ubuntu Server”В следующем окне выбираем свое местонахождение. Я выбираю “Российская Федерация”После, установщик предложит настроить клавиатуру или выбрать из списка. Жмем “Нет” для выбора из спискаВыбираем страну для которой предназначена клавиатураВыбираем расскладку. Я выбрал просто “Русская”В следующем окне вам будет предложено настроить переключение раскладок. Выбирайте на свое усмотрение, я выбрал Alt+Shift так как уже привык именно к этой комбинацииТеперь ждем минуту пока загрузятся дополнительные компоненты. После загрузки компонентов у вас появиться окно выбора основного сетевого интерфейса. Я выберу eth0 основным, именно эта сетевая карта будет смотреть в мир и через неё будет подключение к интернету сервераВ следующем окне будет предложено выбрать имя компьютера. Я свой сервер назвал “srv-01”дальше вам нужно ввести имя пользователя. Не путайте с логином, именно имя. Я ввел Ivan Malyshevа вот в следующем окне, укажите имя пользователя (логин) с помощью которого будет осуществляться вход в систему. Я указал srvadminпосле ввода логина, придумайте и укажите пароль (желательно использовать пароль содержащий строчные и прописные буквы, а также цифры и символы). После ввода пароля, в следующем окне его нужно будет повторить, для избежания ошибокДальше будет предложено зашифровать домашний каталог. Я не буду хранить в нем ничего криминального или секретного, так что шифровать не будуДалее нужно выбрать “часовую зону”. Так как виртуальная машина получает интернет через eth0, установщик сам определил где я нахожусь, я нажму “Да”, так как он правильно выбрал. Если у вас этого не произошло или была неправильно выбрана часовая зона, выбирайте вручнуюДальше нужно выбрать куда будет установлена система. Многих этот этап вводит в ступор, но не нужно бояться, все просто!Так как я устанавливаю ubuntu server  в целях обучения, я выберу второй пункт “Авто использовать весь диск”, но если вы устанавливаете систему на реальный жесткий диск, советую устанавливать каталоги /usr, /var, /home на разные логические диски Выбираем диск (так он у меня один, выбор небольшой), у вас может быть несколько, в том случае если к компьютеру подключено несколько жестких дисков. В следующем окне нужно согласиться на предупреждение о записи информации о разделах, жмем “Да”далее подтверждаем использование всего дискаВ следующем окне установщик покажет как он разобьет диск, соглашаемся выбрав “Закончить разметку и записать изменения на диск”В следующем окне еще раз подтверждаем свои действия (чем то windows напоминает, не правда?)И теперь ждем пока будет закончена установка Ubuntu Server 14.04.1 LTS.

Если во время установки к сети виртуальной машины был подключен интернет, система попытается установить обновления, но перед этим спросит есть ли у вас прокси, если у вас нет прокси, а интернет идет напрямую, жмите “Продолжить”На вопрос об установке регулярных обновлений, я выбрал “Без автоматического обновления”. Не люблю когда ставиться что то без моего ведома. Все что нужно будет, можно будет обновить вручнуюВ окне “выбора програмного обеспечения” я установил галку только на “OpenSSH Server” именно через него мы и будет получать удаленный доступ к серверу. Все остальное будем ставить позже, вручнуюВ самом конце установки сервера, вам нужно согласиться с установкой загрузчика в главную загрузочную записьПосле установки загрузчика вы увидите сообщение об успешной установке системыЖмем “Продолжить” и ждем пока перезагрузится машина. После первой загрузки, вы должны увидеть предложение ввода логина, вводим логин указанный при установке, после вводим парольЕсли вы ввели правильные логин и пароль вы попадете в систему и увидите такой экранНа этом установку ubuntu server 14.04.1 LTS можно считать завершенной.

Настройка сети через терминал в Ubuntu

Тут мы рассмотрим автоматическую настройку сети для Ubuntu 16.04 без Network Manager с помощью стандартных скриптов системы, которые остались от Upstart и пока всё ещё используются. Давайте сначала определим, какие шаги нам нужно предпринять, чтобы всё заработало:

  • Включаем сетевой интерфейс и подключаемся к сети;
  • Устанавливаем IP-адрес;
  • Получаем адреса DNS-серверов.

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

Но если хотите, можете использовать ifconfig:

В нашей системе только один интерфейс — это enp0s3, есть еще lo, но он виртуальный и указывает на эту машину.

Настройки сети находятся в файле /etc/network/interfaces.

Нас будут интересовать в этом файле строчки auto и iface. Первая указывает, что нужно активировать интерфейс при загрузке, вторая же определяет настройки самого интерфейса.

Настройка динамического получения IP-адреса

Добавьте в этот файл такие строки, чтобы запускать интерфейс при загрузке и получать IP-адрес автоматически по DHCP:

Синтаксис строки auto прост. Он состоит из самой команды и имени сетевого интерфейса. Рассмотрим подробнее:

$ iface интерфейс inet тип

Тип получения IP-адреса может иметь несколько значений, но нас в этой статье будут интересовать только два: dhcp и static.

После завершения настройки сохраните файл и перезапустите сетевой сервис:

Всё, если сетевой кабель подключён, и вы всё сделали правильно, Сеть будет работать.

Настройка статического адреса Ubuntu

При настройке статического IP-адреса компьютер не будет связываться с DHCP-сервером, поэтому здесь придётся указать намного больше параметров.

Содержимое нашего конфигурационного файла будет выглядеть вот так:

С первыми двумя строчками все понятно, а следующие задают параметры настройки интерфейса:

  • address — наш IP-адрес;
  • gateway — шлюз, через который будем получать доступ в интернет;
  • netmask — маска сети;
  • network — адрес сети, имеет тот же адрес, что и шлюз, только с нулем вместо единицы;
  • broadcast — широковещательный адрес сети, отправленный на него пакет придет всем компьютерам локальной сети.

Как видите, network и broadcast — это первый и последний IP-адреса сети. Теперь сохраните файл и перезапустите сеть:

Если все параметры были указаны правильно, всё будет работать. Но если допущена хоть одна ошибка, доступ к сети вы не получите.

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

Overview

Ubuntu Server is a variant of the standard Ubuntu you already know, tailored for networks and services. It’s just as capable of running a simple file server as it is operating within a 50,000 node cloud.

Unlike the installation of Ubuntu Desktop, Ubuntu Server does not include a graphical installation program. Instead, it uses a text menu-based process. If you’d rather install the desktop version, take a look at our Install Ubuntu desktop tutorial.

This guide will provide an overview of the installation from either a DVD or a USB flash drive.

For a more detailed guide on Ubuntu Server’s capabilities and its configuration, take a look at our the Community Ubuntu Server documentation.

Установка LAMP в Ubuntu

1. Установка пакетов с помощью tasksel

Tasksel — это утилита, которая позволяет устанавливать пакеты различных программ буквально в одну команду. Она разработана для Debian, но может использоваться и в Ubuntu. Для её установки выполните в терминале:

Затем, чтобы установить Lamp на Ubuntu, достаточно выполнить такую команду:

Установка займёт кое-какое время, потому что утилите придётся скачать и настроить все пакеты, но потом вы получите полностью работающий стек LAMP.

2. Как установить Lamp в Ubuntu вручную

Если вы не хотите использовать tasksel, вы можете установить все пакеты по отдельности и настроить их для совместной работы. Сначала установим все необходимые пакеты. Установка последней версии Apache2 из репозиториев:

Установка базы данных MariaDB из репозиториев:

Или вы можете установить MySQL:

Установка интерпретатора языка программирования PHP 7.2 и расширений, необходимых для его работы с Apache и MySQL:

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

3. Настройка брандмауэра

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

4. Проверка работы LAMP

Для проверки наберите в адресной строке браузера IP-адрес сервера, куда вы устанавливали LAMP, у меня это localhost:

Работает, теперь давайте проверим, правильно ли работает PHP. Создайте файл в директории /var/www/html со следующим содержимым:

Затем откройте адрес localhost/phpinfo.php. Если всё работает, вы должны увидеть такую страничку:

Также можно проверить, работает ли MySQL: если расширение PHP для MySQL загрузилось, то на странице phpinfo будет размещена такая информация:

Готово, дальше идёт в основном настройка LAMP в Ubuntu 18.04.

5. Настройка Apache

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

Включаем mod_rewrite, который сейчас используется практически везде:

Если вы хотите использовать файлы httaccess для настроек, то необходимо в файле /etc/apache2/apache2.conf изменить значение AllowOverride с None на All для нужных местоположений, например, для /var/www:

Далее необходимо перезапустить Apache:

Подробнее про настройку веб-сервера читайте в отдельной статье установка и настройка Apache.

6. Настройка PHP

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

Найдите short_open_tag = Off и замените на:

Вывод ошибок в PHP по умолчанию тоже отключён. Если вы хотите разрабатывать программы на этом сервере, то вам необходимо включить ошибки, иначе вместо ошибок вы будете видеть пустой экран. Для этого найдите эти строки и приведите их к такому виду:

Или для записи ошибок в файл вы можете добавить такую строку:

После внесения всех изменений необходимо перезапустить Apache:

Подробнее про настройку файла php.ini смотрите здесь.

7. Настройка MySQL

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

На первом этапе утилита попросит вас ввести пароль суперпользователя, так как он ещё не задан, просто нажмите Enter:

Далее введите новый пароль:

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

  • Запретить удалённый вход для root;
  • Запретить гостевой вход;
  • Удалить временные таблицы;
  • Обновить таблицы привилегий.

Готово, теперь ваша база данных защищена и готова к работе.

8. Удаление LAMP в Ubuntu

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

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

Если установка LAMP на Ubuntu выполнялась с помощью tasksel, то для удаления необходимо выполнить:

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

Как вы знаете, на сервере может размещаться несколько сайтов. Все запросы приходят на ip сервера, а nginx уже определяет на основе домена какой контент нужно выдать. Для того чтобы nginx знал что к какому домену относится нужно настроить виртуальные хосты. Каждый хост принято размещать в отдельном файле. Настройка хоста находится в секции server, но поскольку все файлы из sites-enabled импортируются в секцию http, то логика структуры конфигурационного файла не нарушается.

Рассмотрим пример настройки:

  • listen 80 — указывает, что нужно ожидать подключения на порту 80, может также содержать опцию default-server, которая означает, что этот домен будет открывается если домен не был задан в запросе.
  • root /var/www/html — директория, в которой находятся файлы сайта.
  • index index.html — страница, которая будет открываться по умолчанию.
  • server_name — доменное имя сайта.
  • access_log — файл для записи лога запросов к серверу, может использоваться как глобально в секции http, так и для определенного типа файлов в location.
  • error_log — лог ошибок веб-сервера, может принимать дополнительный параметр, указывающий подробность лога. warn — максимум, crit — только критические ошибки.

Это все основные настройки виртуального хоста, после них он уже будет работать. Но тут есть еще секция location, которая позволяет настроить поведение сервера для определенных директорий и файлов. Синтаксис location такой:

location адрес {}

В качестве адреса может использоваться как прямой запрос относительно корня сервера, так и регулярные выражения. Для использования регулярных выражений перед ним ставится символ «~». Примеры рассмотрим ниже, а пока рассмотрим возможные директивы:

  • allow — разрешить доступ к местоположению для пользователей, all — всех, также можно указать ip или подсеть.
  • deny — запретить доступ к местоположению, all — для всех.
  • try-files — пытается открыть файлы в определенном порядке, открывает первый обнаруженный файл. Например, такая конструкция: $uri $uri/index.html $uri.html =404; сначала пытается открыть $uri, затем index.html, если не найден $uri.html, и аж потом, если ни одного из предложных файлов не существует, выдает ошибку 404.
  • expires — задает время кэширования браузером отданного элемента, например, 1d — один день, 2h — два часа, 30s — 30 секунд.

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

Не выполнять логирование для favicon:

Запретить доступ к файлам, начинающимся с точки:

Кэшировать обычные файлы на 90 дней:

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

Затем перезагружаем сервер:

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

Шаг 4 — Настройка авторизации по открытому ключу (Рекомендуется)

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

Создание пары ключей

Если у вас ещё нет пары SSH-ключей, которая состоит из открытого и закрытого ключей, вам необходимо её создать. Если у вас уже есть ключ, который вы хотите использовать, перейдите к подразделу “Копирование открытого ключа”.

Чтобы создать новую пару ключей, выполните следующую команду в терминале на вашей локальной машине (т.е. на вашем компьютере):

Если ваш локальный пользователь называется “localuser”, вы увидите вывод следующего вида:

Нажмите “ENTER”, чтобы согласиться с адресом и именем файла (или введите другой адрес/имя файла).

Далее вам будет предложено ввести кодовую фразу для защиты ключа. Вы можете ввести кодовую фразу или оставить ее пустой.

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

Добавление кодовой фразы к ключам является более безопасным, но оба метода имеют свои области применения и являются более безопасными, чем базовая авторизация паролем.

В результате этого, в поддиректории домашней директории пользователя localuser будет создан закрытый ключ и открытый ключ . Не передавайте закрытый ключ никому, кто не должен иметь доступ к вашим серверам!

Копирование открытого ключа

После создания пары SSH-ключей, вам необходимо скопировать открытый ключ на ваш новый сервер. Мы опишем два простых способа сделать это.

Вариант 1. Использование ssh-copy-id

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

Запустите скрипт , указав имя пользователя и IP-адрес сервера, на который вы хотите установить ключ:

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

Вариант 2. Ручной перенос ключа

Если вы создали пару SSH-ключей, как описано в предыдущем пункте, выполните следующую команду в терминале на вашей локальной машине для печати открытого ключа ():

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

Содержимое id_rsa.pub

Выделите открытый ключ и скопируйте его в буфер обмена.

Чтобы сделать возможным использование SSH-ключа для авторизации с учетной записью нового удалённого пользователя (remote user), вам необходимо добавить открытый ключ в специальный файл в домашней директории этого пользователя.

На сервере, осуществив вход с учетной записью -пользователя, выполните следующие команды для переключения на нового пользователя (замените на ваше имя пользователя):

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

Создайте новую директорию под названием и ограничьте права на доступ к ней при помощи следующих команд:

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

Далее добавьте ваш открытый ключ (который должен быть в буфере обмена) путем вставки в текстовый редактор.

Нажмите для закрытия файла, затем для сохранения внесенных изменений, затем для подтверждения имени файла.

Теперь ограничьте права на доступ к файлу authorized_keys при помощи следующей команды:

Введите следующую команду один раз для возврата к пользователю .

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

Чтобы узнать больше о том, как работает авторизация по ключам, ознакомьтесь с этим руководством: Как настроить авторизацию по SSH-ключам на сервере Linux.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделитесь с друзьями:
Технарь
Добавить комментарий

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