Установка Nginx в Debian 10
Nginx – это один из самых популярных веб-серверов в мире, позволяющий размещать очень большие сайты с высоким трафиком. Он, как правило, расходует меньше ресурсов, чем Apache. Также его можно использовать в качестве обратного прокси-сервера.
Данный мануал поможет установить Nginx на сервер Debian 10.
Требования
Для работы нужен сервер Debian 10, настроенный по этому мануалу.
1: Установка Nginx
Пакет Nginx можно найти в стандартном репозитории Debian.
Поскольку это ваше первое взаимодействие с системой пакетирования apt в текущей сессии, нужно обновить индекс пакетов. После этого можно установить Nginx.
sudo apt update
sudo apt install nginx
Чтобы подтвердить установку, нажмите Enter. После этого пакетный менеджер установит Nginx и все его зависимости.
2: Настройка брандмауэра
Прежде чем запустить Nginx, нужно настроить брандмауэр для поддержки его трафика. Во время установки Nginx регистрирует профиль сервиса в ufw, потому разрешить его трафик очень просто.
Откройте список профилей ufw:
sudo ufw app list
Available applications:
.
Nginx Full
Nginx HTTP
Nginx HTTPS
.
Как видите, в списке зарегистрировано три профиля Nginx:
Рекомендуется выбрать наиболее строгий профиль сервиса. Однако, поскольку на сервере ещё не настроен SSL, мы можем настроить только порт 80.
Чтобы включить профиль, введите:
sudo ufw allow ‘Nginx HTTP’
Убедитесь в том, что профиль включился:
Команда должна показать, что трафик HTTP разрешен:
3: Тестирование веб-сервера
После установки Debian 10 запустит Nginx автоматически. На данный момент веб-сервер должен работать.
Чтобы убедиться в том, что Nginx запустился, запросите его состояние в системе инициализации systemd.
Как видите, сервис запущен успешно.
Также можно посетить стандартную посадочную страницу Nginx. Она доступна в браузере по домену или IP-адресу.
Если вы не знаете своего IP-адреса, вы можете узнать его с помощью командной строки. Введите:
Команда вернёт несколько строк. Проверьте каждый полученный адрес в браузере.
Узнав свой IP-адрес, введите его в браузер, чтобы убедиться, что веб-сервер работает должным образом.
На экране должна появиться стандартная страница Nginx:
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
4: Управление процессами Nginx
Теперь рассмотрим несколько базовых команд для управления веб-сервером.
Чтобы остановить Nginx, введите:
sudo systemctl stop nginx
Чтобы запустить его, введите:
sudo systemctl start nginx
Для перезапуска веб-сервера используйте команду:
sudo systemctl restart nginx
Чтобы обновить настройки Nginx, не сбрасывая соединения, введите команду:
sudo systemctl reload nginx
По умолчанию Nginx автоматически запускается во время загрузки сервера. Это поведение можно выключить:
sudo systemctl disable nginx
Чтобы возобновить автозапуск сервиса, введите:
sudo systemctl enable nginx
5: Настройка виртуального хоста
На веб-сервере Nginx можно использовать виртуальные хосты (также они называются блоками server) для изоляции настроек и размещения нескольких доменов на одном сервере. Здесь используется условный домен example.com, но вы должны заменить его собственным доменом.
В Debian 10 Nginx по умолчанию предоставляет один включенный виртуальный хост, который обслуживает каталог /var/www/html. Этого хватит для обслуживания одного сайта, но если вы хотите разместить несколько сайтов, вам нужно создать новые виртуальные хосты. Создайте структуру каталогов в /var/www для сайта example.com, а /var/www/html оставьте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует другим сайтам.
Права должны быть установлены правильно, если вы не поменяли unmask, но на всякий случай вы можете их проверить:
Затем создайте образец страницы index.html с помощью nano или другого редактора:
Success! The example.com server block is working!
Установка и базовая настройка Nginx на Debian 10
Данная статья является почти полной копией статьи двухгодичной давности про установку и базовую настройку Nginx на Debian 9. С тех пор не мало воды утекло, Debian 9 уже не так актуальна, уже давно вышла Debian 10 и мы поговорим про быструю установку и настройку Nginx именно на Debian 10.
Исходные данные: Debian 10 (buster)
Задача: Установить и настроить Nginx (ветка Mainline)
1. Выполняем установку wget (Опционально):
2. Скачиваем и добавляем ключ Nginx Inc. на нашу систему:
Если нужно установить Nginx из ветки Stable, то выполняем:
Если нужно установить Nginx из ветки Mainline, то выполняем:
3. Обновляем список пакетов:
4. Устанавливаем Nginx и OpenSSL (опционально):
5. После установки запускаем Nginx:
6. Проверим факта запуска Nginx:
Строка «Active: active (running)» говорит о работе Nginx.
7. Проверим открытые порты:
Видим, что Nginx ожидает соединения на 80 порту на всех сетевых интерфейсах.
Теперь займемся базовой настройкой.
1. Создадим директорию для хранения SSL сертификатов и DH-ключей, а также создаем файл с параметрами для DHE-шифров:
2. Создадим директории для хранения настроек Web-сайтов:
3. Отредактируем основной файл настроек Nginx.
Я приведу базовый эталонный файл настроек который использую я на 99% серверов, рекомендую использовать его с дополнительными Вашими правками под конкретные нужды. В предыдущей статье мы уже рассматривали его, с тех пор ничего не изменилось.
Скачать уже готовый файл для Nginx версии 1.21.x :
После этого проверяем конфигурацию Nginx:
Если ошибок нет, то перезагружаем конфигурацию Nginx:
4. Меняем системные лимиты на количество открытых файлов.
Т.к. мы указали в nginx.conf параметр worker_rlimit_nofile = 10000, то будем исходить из него.
Традиционно во всех статьях в Интернет все меняют лимиты через редактирование файла /etc/security/limits.conf, но это неправильно, т.к. для Debian 8 и Debian 9 этот файл не работает.
В Debian 8 и Debian 9 используется система инициализации systemd и поэтому лимиты на максимальное количество открытых файлов нужно настроить для systemd, для этого выплняем:
Теперь проверим лимиты, для этого смотрим строку «Max open files» в выводе:
Теперь по адресу http://IP-адрес-вашего-сервер Вы сможете увидеть приветственную страницу «Welcome to nginx!».
За вывод данной страницы отвечает пока один единственный виртуальный сервер, его конфигурация находится в файле /etc/nginx/conf.d/default.conf
Выведем его содержимое без комментариев:
На данном этапе Вы должны прочитать документацию о том как Nginx обрабатывает входящие запросы, определение виртуальных серверов по имени и IP адресу и там же описана конфигурация простого сайта на PHP, но настройка PHP-FPM — это уже тема следующей статьи.
На этом базовая настройка Nginx завершена, до скорых встреч.
Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
How To Install Linux, Nginx, MariaDB, PHP (LEMP stack) on Debian 10
Last Validated on March 30, 2020 Originally Published on July 10, 2019
Not using Debian 10?
Choose a different version or distribution.
Introduction
The LEMP software stack is a group of software that can be used to serve dynamic web pages and web applications. The name “LEMP” is an acronym that describes a Linux operating system, with an (E)Nginx web server. The backend data is stored in a MariaDB database and the dynamic processing is handled by PHP.
Although this software stack typically includes MySQL as the database management system, some Linux distributions — including Debian — use MariaDB as a drop-in replacement for MySQL.
In this guide, you’ll install a LEMP stack on a Debian 10 server using MariaDB as the database management system.
Prerequisites
Step 1 — Installing the Nginx Web Server
In order to serve web pages to your site visitors, we are going to employ Nginx, a popular web server which is well known for its overall performance and stability.
All of the software you will be using for this procedure will come directly from Debian’s default package repositories. This means you can use the apt package management suite to complete the installation.
Since this is the first time you’ll be using apt for this session, you should start off by updating your local package index. You can then install the server:
On Debian 10, Nginx is configured to start running upon installation.
You can enable this by typing:
You can verify the change by typing:
You should see HTTP traffic allowed in the displayed output:
Now, test if the server is up and running by accessing your server’s domain name or public IP address in your web browser. If you do not have a domain name pointed at your server and you do not know your server’s public IP address, you can find it by typing one of the following into your terminal:
This will print out a few IP addresses. You can try each of them in turn in your web browser.
Type one of the addresses that you receive in your web browser. It should take you to Nginx’s default landing page:
If you see the above page, you have successfully installed Nginx.
Step 2 — Installing MariaDB
Now that you have a web server up and running, you need to install the database system to be able to store and manage data for your site.
To install this software, run:
When the installation is finished, it’s recommended that you run a security script that comes pre-installed with MariaDB. This script will remove some insecure default settings and lock down access to your database system. Start the interactive script by running:
This script will take you through a series of prompts where you can make some changes to your MariaDB setup. The first prompt will ask you to enter the current database root password. This is not to be confused with the system root. The database root user is an administrative user with full privileges over the database system. Because you just installed MariaDB and haven’t made any configuration changes yet, this password will be blank, so just press ENTER at the prompt.
From there, you can press Y and then ENTER to accept the defaults for all the subsequent questions. This will remove anonymous users and the test database, disable remote root login, and load these new rules so that MariaDB immediately respects the changes you have made.
When you’re finished, log in to the MariaDB console by typing:
This will connect to the MariaDB server as the administrative database user root, which is inferred by the use of sudo when running this command. You should see output like this:
For increased security, it’s best to have dedicated user accounts with less expansive privileges set up for every database, especially if you plan on having multiple databases hosted on your server. To demonstrate such a setup, we’ll create a database named example_database and a user named example_user, but you can replace these names with different values.
To create a new database, run the following command from your MariaDB console:
This will give the example_user user full privileges over the example_database database, while preventing this user from creating or modifying other databases on your server.
Flush the privileges to ensure that they are saved and available in the current session:
Following this, exit the MariaDB shell:
You can test if the new user has the proper permissions by logging in to the MariaDB console again, this time using the custom user credentials:
This will give you the following output:
To exit the MariaDB shell, type:
At this point, your database system is set up and you can move on to installing PHP, the final component of the LEMP stack.
Step 3 — Installing PHP for Processing
You have Nginx installed to serve your content and MySQL installed to store and manage your data. Now you can install PHP to process code and generate dynamic content for the web server.
To install the php-fpm and php-mysql packages, run:
You now have your PHP components installed. Next, you’ll configure Nginx to use them.
Step 4 — Configuring Nginx to Use the PHP Processor
When using the Nginx web server, server blocks (similar to virtual hosts in Apache) can be used to encapsulate configuration details and host more than one domain on a single server. In this guide, we’ll use your_domain as example domain name. To learn more about setting up a domain name with DigitalOcean, see our introduction to DigitalOcean DNS.
Create the root web directory for your_domain as follows:
Then, open a new configuration file in Nginx’s sites-available directory using your preferred command-line editor. Here, we’ll use nano :
This will create a new blank file. Paste in the following bare-bones configuration:
Note: If you are running a PHP version different from PHP 7.3, you would need to adjust the fastcgi_pass to match the PHP version that you are using.
When you’re done editing, save and close the file. If you used nano to create the file, do so by typing CTRL + X and then y and ENTER to confirm.
Activate your configuration by linking to the config file from Nginx’s sites-enabled directory:
This will tell Nginx to use the configuration next time it is reloaded. You can test your configuration for syntax errors by typing:
If any errors are reported, go back to your configuration file to review its contents before continuing.
When you are ready, reload Nginx to make the changes:
Next, you’ll create a file in your new web root directory to test out PHP processing.
Step 5 — Creating a PHP File to Test Configuration
You can do this by creating a test PHP file in your document root. Open a new file called info.php within your document root in your text editor:
Type or paste the following lines into the new file. This is valid PHP code that will return information about your server:
When you are finished, save and close the file by typing CTRL + X and then y and ENTER to confirm.
You can now access this page in your web browser by visiting the domain name or public IP address you’ve set up in your Nginx configuration file, followed by /info.php :
You will see a web page containing detailed information about your server:
After checking the relevant information about your PHP server through that page, it’s best to remove the file you created as it contains sensitive information about your PHP environment and your Debian server. You can use rm to remove that file:
You can always regenerate this file if you need it later. Next, we’ll test the database connection from the PHP side.
Step 6 — Testing Database Connection from PHP (Optional)
If you want to test if PHP is able to connect to MariaDB and execute database queries, you can create a test table with dummy data and query for its contents from a PHP script.
First, connect to the MariaDB console with the database user you created in Step 2 of this guide:
Create a table named todo_list. From the MariaDB console, run the following statement:
Now, insert a few rows of content in the test table. You might want to repeat the next command a few times, using different values:
To confirm that the data was successfully saved to your table, run:
You will see the following output:
After confirming that you have valid data in your test table, you can exit the MariaDB console:
Now you can create the PHP script that will connect to MariaDB and query for your content. Create a new PHP file in your custom web root directory using your preferred editor. We’ll use nano for that:
Add the following content to your PHP script:
Save and close the file when you’re done editing.
You can now access this page in your web browser by visiting the domain name or public IP address you’ve set up in your Nginx configuration file, followed by /todo_list.php :
You should see a page like this, showing the content you’ve inserted in your test table:
That means your PHP environment is ready to connect and interact with your MariaDB server.
Conclusion
To further improve your current setup, you can install Composer for dependency and package management in PHP, and you can also install an OpenSSL certificate for your website using Let’s Encrypt.
Установка и защита phpMyAdmin на Nginx сервере в Debian
Содержание:
PhpMyAdmin – это инструмент управления базами данных для MySQL, который поставляется с веб-интерфейсом. В данном руководстве будет рассмотрена установка phpMyAdmin на сервер с популярной ОС Debian 10, а также некоторые способы защиты приложения.
Подготовка к установке
Перед развертыванием самой программы следует соблюсти ряд условий. Главное из них — уже должен быть установлен программный пакет, включающий в себя стек LEMP (Linux, Nginx, MySQL и PHP).
Если эти компоненты установлены не полностью, в терминале следует выполнить команду:
По завершении установки будет отображен следующий результат:
Примечание. Установка веб-сервера и phpMyAdmin для Debian 9 производится теми же командами.
Так как phpMyAdmin использует учетные данные MySQL для защиты аутентификации, настоятельно рекомендуется установить сертификат SSL/TLS. Он даст возможность наладить передачу зашифрованного трафика между клиентом и сервером.
Добавление репозиториев для Debian 10
В официальных репозиториях Debian 10 отсутствует большинство программ, в число которых входит PhpMyAdmin.
Чтобы добавить источники для загрузки PhpMyAdmin, нужно открыть файл, содержащий списки репозиториев – «sources.list», и внести строки, отвечающие за добавление адреса (URL) до сервера.
Открыть «sources.list» в редакторе можно командой:
Нужно внести следующие строки в конец файла:
Остаётся сохранить изменения нажатием «Ctrl+X» + «Y» + «Enter».
Процесс установки phpMyAdmin
Веб-интерфейс
Первое, что следует сделать – установить веб-интерфейс phpMyAdmin на Nginx-сервер. Установка выполняется с использованием репозиториев. Следовательно, сначала нужно обновить базу пакетов командой в терминале:
Теперь можно установить phpMyAdmin на Debian, выполнив команду в терминале:
В процессе установки инсталлятор предложит указать, какой веб-сервер потребуется настраивать автоматически — Apache или Lighthttp. В данном случае, планируется установка на сервер Nginx, поэтому выбор делать не нужно. Чтобы пропустить этот вопрос, следует нажать клавишу «Tab», а затем подтвердить выбор кнопкой «ОК».
Настройка базы данных
Создание пароля пользователя
Программа предложит создать пароль для пользователя MySQL. Всегда нужно вводить сложный и надежный пароль, способный, в случае попытки проникновения, выдержать атаку методом брутфорса (перебора паролей). Также можно предоставить программе возможность сгенерировать случайный код доступа, оставив поле пустым.
Остается подождать, пока установятся необходимые пакеты ПО.
Настройка Nginx
Чтобы PhpMyAdmin стал доступен по назначенному пользователем адресу и получил доступ к Unix-сокету PHP-FPM, нужно отредактировать конфигурационные файлы сервера Nginx.
Для начала нужно узнать информацию об установленной версии PHP. Она понадобится в следующих действиях при составлении команд. Узнать информацию о установленной версии можно, выполнив команду:
В последующий действиях потребуется использовать две цифры из установленной версии PHP.
Примечание. В примерах будет использоваться версия 7.0 .
Теперь нужно открыть конфигурационный файл Nginx в редакторе (по умолчанию — «/etc/nginx/sites-available/default»). Для этого в терминал требуется ввести следующую команду:
Если файл редактируется в первый раз, нужно найти и удалить следующие строки:
Теперь нужно найти в начале файла директиву «server <» и перенести следующий код:
В итоге файл конфигурации должен выглядеть следующим образом:
Остаётся сохранить изменения и закрыть файл. Для этого нужно нажать «Ctrl+X» + «Y» и подтвердить сохранение нажатием «Enter».
Проверить правильность внесенных данных можно командой:
Получение следующего вывода сигнализирует о правильности внесенных корректив в конфигурационный файл.
Если вывод сервера Nginx отличается от полученного, то придётся проверить конфигурационный файл на наличие ошибок. Вполне возможно, что были допущены ошибки при расставлении скобок «>» или же Nginx заметил ошибки в секциях (повторяющиеся директивы и недопустимые значения).
Редактирование конфигурационных файлов PHP
Чтобы защита PhpMyAdmin оставалась на должном уровне, нужно добавить параметр «open_basedir», ограничивающий доступ к каталогам «/usr/share/phpmyadmin» и «/usr/share/php/php-gettext». Для этого требуется открыть конфигурационный файл пула PHP-FPM в текстовом редакторе Nano:
При составлении команды « 7.0 » нужно изменить на установленную версию PHP.
Чтобы задать параметры для PHP, нужно внести следующую строку в конец файла:
После внесения правок, нужно сохранить изменения и выйти из файла.
Остается перезапустить Nginx и PHP-FPM для применения параметров. Для этого в терминале вводится команда:
Проверка работы PhpMyAdmin
Установка phpMyAdmin завершается проверкой доступа к интерфейсу. Для этого нужно перейти по IP-адресу веб-сервера, добавив в адресной строке имя, указанное в директиве « location». По умолчанию используется «/pma»:
В случае успеха откроется окно входа PhpMyAdmin. При появлении ошибок 404, 403, 502 придётся повторно проверить файлы конфигурации и наличие всех компонентов комплекса LEMP.
Выполнение входа в PhpMyAdmin
PhpMyAdmin для защиты аутентификации использует данные пользователей MySQL. Для входа придется указать логин и пароль, используемые для подключения к консоли БД (MySQL, MariaDB).
Если учетная запись MySQL отсутствует, то выполнить создание нового пользователя можно несколькими командами. Для начала нужно подключится к оболочке MySQL и ввести в терминал:
Программа попросит пройти аутентификацию, указав пароль. Если авторизация для учетной записи root не настроена, то можно оставить поле «Enter Password» пустыми и, для подтверждения, нажать «Enter».
После входа в оболочку нужно создать учетную запись и предоставить необходимые привилегия новому пользователю. Для этого последовательно выполняются команды:
Вместо « phpadmin » нужно подставить собственный логин, а в поле « mypassword » ввести пароль для создаваемой учетной записи.
Теперь можно выполнить вход в интерфейс PhpMyAdmin, воспользовавшись данными авторизации только что созданного пользователя.
Важно! Никогда не стоит открывать phpMyAdmin как root-пользователь MySQL . Это значительно снижает безопасность. Ниже будет рассмотрен способ отключения возможности входа как root.
Ограничение доступа для входа пользователю root
Суперпользователь в MySQL, как и в Linux – это пользователь, обладающий правами администратора и неограниченным доступом ко всей базе данных. Вдобавок к этому, root является достаточно популярным логином и боты используют его чуть ли не чаще всего в процессе применения bruteforce.
Чтобы исключить подобный риск, phpMyAdmin необходимо сконфигурировать так, чтобы даже с правильными данными для входа под root пользователем панель управления выдавала ошибку «Доступ запрещен» и закрыла доступ к своему интерфейсу.
В создаваемом файле следует вставить предложенный ниже код, который позволит отключить вход без пароля (напротив AllowNoPassword указано false) и под суперпользователем (напротив AllowRoot стоит такое же значение):
После этого можно сохранить файл. Если для его создания использовался редактор Nano, это делается поочередным нажатием «CTRL + X», затем «Y» для подтверждения изменений и «ENTER». Можно перезагрузить страницу авторизации и попробовать залогиниться как пользователь root. Отобразится сообщение об ошибке с запретом доступа:
Войти в панель phpMyAdmin как root теперь невозможно. Возможность подбора пароля для этого пользователя исключена. Вдобавок, код дает возможность пользоваться учетными записями MySQL с меньшими привилегиями для входа в phpMyAdmin. Что само по себе сильная мера защиты.
Установка второго шлюза аутентификации
Описанные выше меры безопасности позволяют обеспечить сильную защиту от автоматических программ для сканирования сети и ботов. Однако такая защита малоэффективна от целевого нападения.
Для повышения безопасности веб-интерфейса с ограниченным доступом, лучше всего останавливать злоумышленников до того, как они смогут найти панель. Это исключит для них возможность воспользоваться универсальными эксплойтами и атаковать при помощи bruteforce.
Поэтому стоит защитить PhpMyAdmin, добавив еще один уровень авторизации, открывающий доступ к окну входа в веб-интерфейс. Если это не сделать, у злоумышленников остается возможность применить bruteforce для попытки авторизоваться.
В большей части веб-серверов повышение безопасности таким способом доступно из коробки.
Настройка нового уровня аутентификации
После ввода появится предложение создать пароль и подтвердить его. Важно учесть, что максимальная длина пароля – 10 символов. Далее программа покажет этот пароль, уже в зашифрованном виде:
Это значение необходимо скопировать в надежное место или лучше записать на бумаге. Оно понадобится для вставки в файл аутентификации.
Приступим к созданию самого файла. Для примера, его можно назвать «pma_pass» и расположить в папке с конфигурационным файлом Nginx:
Можно сохранять изменения и переходить к следующему шагу – изменить файл с конфигурациями Nginx. Чтобы внести правки, его нужно открыть в текстовом редакторе:
Здесь понадобится найти блок «server» и секцию «location». В данном примере указанное местоположение phpMyAdmin относительно корня сети – « /pma» :
Для запуска второго шлюза аутентификации нужно внести под секцию «location» следующие строки:
Измененная секция в итоге должна выглядеть таким образом:
После сохранения изменений и выхода из редактора не лишним будет проверить, правильно ли выполнена настройка. В терминале это можно сделать командой:
Если все правильно, вывод будет следующего вида:
Остается перезапустить Nginx для применения параметров:
Можно попытаться снова открыть веб-адрес phpMyAdmin. Однако, в этом случае браузер сделает запрос на ввод логина и пароля, сохраненных в « pma_pass » :
Если пользователь выполнит успешный вход, он получит возможность авторизоваться непосредственно в phpMyAdmin.
Важно! Если при проверке второй шлюз отсутствует, в браузере следует выполнить очистку кэша или перейти в новый сеанс браузера (если в текущий момент выполнен вход в phpMyAdmin).
Дополнительным преимуществом такой защиты является возможность сохранить чистыми журналы MySQL от попыток аутентификации ботами.
Следующим действием настоятельно рекомендуется установить сертификат SSL/TLS. Он даст возможность наладить передачу зашифрованного трафика между клиентом и сервером.
Начни экономить на хостинге сейчас — 14 дней бесплатно!





















