Установка и настройка Web-сервера Nginx на Raspberry Pi

29 июля 2019, 12:08

ОБНОВЛЕНО 09.09.2020

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

Прочитав разного рода информации по этой тематике, в итоге, я остановился на веб-сервере Nginx. Основная особенность его в том, что ему большой производительности не нужно. Он хорошо ведет себя на железах с малой мощностью, а это значит, что он идеально подходит для нашей платы Raspberry Pi.

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

Итак, переходим к первому пункту и делаем первые шаги для установки нашего веб-сервера.

Предварительная подготовка Raspberry

Обновим индексы репозиторий:

#Обновление индексов репозиторий
sudo rm -Rf /var/lib/apt/lists
sudo apt-get update && sudo apt-get upgrade -y
#Готово 

Установка Nginx

Примите во внимание! Если в вашей системе предустановлен Apache2, то необходимо его удалить, иначе может произойти сбой установки, поскольку Nginx запускается после установки и использует порт 80. Удаление Apache2 производиться следующей командой:

#Удаление Apache2
sudo apt-get remove -y apache2
#Готово 

Устанавливаем следующей командой:

#Установка Nginx
sudo apt-get install -y nginx
sudo systemctl start nginx.service
#Готово 

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

#Проверка работы службы nginx
sudo systemctl status nginx.service
#Готово 
На экране должно появиться примерное следующее....
Теперь открываем браузер и вводим IP-адрес вашей малины. Чтобы его узнать, можно воспользоваться следующей командой:
#Вывод IP адреса вашего устройства
hostname -I
#Готово 

Если все было сделано правильно, то мы увидим следующее...

Установка остальных необходимых компонентов

Для моих задач нужен был PHP, но грузить малину этим сильно не хотелось. Поэтому было решено использовать FPM SAPI (Fast Process Manager Server API). Для незнающих FPM SAPI - это очень легкий, максимально простой и быстрый менеджер процессов для PHP. А нам разве не это нужно было?

Чтобы установить FPM SAPI, воспользуемся следующей командой:

#Установка FPM SAPI
sudo apt-get install -y php-fpm
#Готово 

Также давайте установим библиотеку CURL, а так же некоторые часто используемые пакеты.

#Установка дополнительных пакетов
sudo apt-get install -y php-curl libzip4 php-gd php-mbstring php-mysql php-xml php-zip
#Готово 

Настройка веб-сервера

Если вы дошли до этого раздела, значит все необходимое для поднятия веб-сервера уже установлено и нам осталось только все настроить. По умолчанию Nginx создает домашний каталог для нашего сервера по пути /var/www/html, но я его меняю на /home/www, что и вам советую...

Давайте, для начала, создадим новый каталог следующей командой:

#Создание каталога и применение необходимых прав
sudo mkdir /home/www
sudo chown -R www-data:pi /home/www
sudo chmod -R 777 /home/www
#Готово 

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

Давайте уже откроем этот файл для внесения изменений следующей командой:

#Редактирование файла настроек Nginx
sudo nano /etc/nginx/sites-available/default
#Готово 

  • Прописываем новый путь к основному каталогу сервера

Для этого находим строку: 
root /var/www/html;

и заменяем на: 
root /home/www;

Разрешаем nginx обрабатывать index.php

Находим строку:

index index.html index.htm index.nginx-debian.html;

и добавляем после index в ту же строку: index.php

Должно получиться как на фото

  • Настроим правильную обработку PHP файлов
находим следующие строки:
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
        #       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        #}
        

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

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        }
        

Хочу заметить что в строке fastcgi_pass unix:/var/run/php/php7.3-fpm.sock должна быть прописана ваша версия PHP, если это чистая установка то там должно быть уже все верно прописано. Если у вас сомнения, то можете проверить версию php этой командой: php -v

Должно получиться так же, как на рисунке, но с учетом того что у вас прописана правильная версия PHP

На этом мы закончили настройку Nginx. Жмем на комбинацию клавиш CTRL O, потом Enter, а после CTRL X, чтобы сохранить изменения и выйти из редактора. 

Но это еще не все! Чтобы изменения вступили в силу, надо будет перезапустить сам Nginx, для этого просто примените следующую команду:

#Перезапуск Nginx
sudo systemctl reload nginx
#Готово 

Давайте теперь для тестирования создадим файл домашней страницы и проверим систему на работоспособность!

Итак, создаем файл index.php с нужным кодом для вывода полезной информации об сервере в папке /home/www одной командой:

#Создание файла index.php
sudo tee -a /home/www/index.php > /dev/null <<_EOF_
<?php phpinfo(); ?>
_EOF_
#Готово 

После чего опять же открываем браузер, вводим IP адрес вашей малины и жмем на клавишу Enter.  Если все было сделано правильно, то в этот раз мы увидим страницу, где отображена вся подробная информация о текущей версии PHP, с отображением все активных модулей.

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


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Геннадий Куракин (Onag)

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

  2. (niko0d)
    (niko0d) 2 года назад

    или NextCloud. более активно развивается. На мой взгляд

  3. Алексей Алексеев (Assada)

    Зачем все это если можно поднять 2 докер контейнера и ничего не настраивать (если использовать docker-compose)? 

  4. (domtut)
    (domtut) 6 месяцев назад

    хорошая статья про не про что

  5. (voldemar888)
    (voldemar888) отредактировано 5 месяцев назад
    Комментарий удален
  6. (voldemar888)
    (voldemar888) 5 месяцев назад

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

  7. (1819ToTo)
    (1819ToTo) 10 дней назад

    В первый раз в своей жизни встречаю статью про линукс, где всё написанное соответствует результату!

К списку статей

Устройства в материале

Raspberry Pi 3 Model B+

Производитель: Raspberry Pi
Заказать на:

Похожие статьи

25 сентября 2020, 11:49
Сенсорный монитор для управления умным домом. Настройка и использование.
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
09 ноября 2020, 19:03
В статье я расскажу о том, как сделать ваши рулонные, в том числе и кассетные шторы, чуточку умнее. Дам ссылки на дешевые аккумуляторные моторы. Расскажу про способы трансляции сигналов 433Мгц в MQTT. И продемонстрирую много фотографий решения и немного видео.
30 июня 2018, 12:17
Добавляем устройства управляемые по ИК через Broadlink RM3 Mini на примере кондиционера.
20 января 2019, 15:09
Использование ESPHomeLib в связке с Home Assistant
26 ноября 2018, 12:35
Выключение и включение компьютера через HomeBridge, а так-же через HomeAssistant
09 января 2019, 17:34
Небольшая статья о том, зачем нужна малина, почему автоматизации в HomeKit это не очень хорошо и чем USB стик лучше отдельного шлюза.