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

29 июля 2019, 12:08

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

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

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

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

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

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

sudo rm -Rf /var/lib/apt/lists
sudo apt-get update -y
sudo apt-get upgrade -y

Установка Nginx

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

sudo apt-get install nginx -y

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

sudo systemctl start nginx.service
sudo systemctl status nginx.service
На экране должно появиться примерное следующее....
Теперь открываем браузер, вводим IP адрес вашей малины. Например, у меня это:
http://192.168.1.33/

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

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

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

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

sudo apt-get install php-fpm -y

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

sudo apt-get install php-curl -y

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

Если вы дошли до этого раздела, значит все необходимое для поднятия веб-сервера уже установлено и нам осталось только все настроить. По умолчанию 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. Так как в этом конфигурационном файле находятся еще и другие настройки, которые нам надо изменить, то предлагаю сразу ввести необходимые изменения, чтобы по несколько раз не открывать...

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

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 index.html index.htm index.nginx-debian.html;

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

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

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

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

sudo systemctl reload nginx

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

Итак, создаем файл index.php в папке /home/www командой:

sudo nano /home/www/index.php

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

<?php phpinfo(); ?>

Сохраняем (Жмем CTRL+O, потом Enter и CTRL+X).

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

Дальше, думаю, у каждого своя дорога и каждый будет использовать это для своих целей. Но я постараюсь совсем в скором времени обновить эту статью и добавить еще больше информации, а также расписать некоторые особые моменты. Подержите ЛАЙКОМ, задавайте интересующие вас вопросы, а я постараюсь расписать все это в обновленной статье.


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

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

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

    • (Makareno)
      (Makareno) 26 дней назад

      Посмотрите в сторону owncloud

  2. (niko0d)
    (niko0d) 25 дней назад

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

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

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

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

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

15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
14 ноября 2018, 06:43
Плагин для интеграции в Athom Homey дочерних zigbee-устройств, подключенных на координаторы deCONZ - RaspBee или ConBee.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
30 июня 2018, 12:17
Добавляем устройства управляемые по ИК через Broadlink RM3 Mini на примере кондиционера.
25 сентября 2018, 07:06
Делаем умный замок с интеграцией в HomeKit
09 января 2019, 17:34
Небольшая статья о том, зачем нужна малина, почему автоматизации в HomeKit это не очень хорошо и чем USB стик лучше отдельного шлюза.