Статья

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

ОБНОВЛЕНО 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 #Готово

  • Прописываем новый путь к основному каталогу сервера
  • Настроим правильную обработку 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

На этом мы закончили настройку 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, с отображением все активных модулей.

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


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

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

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

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

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

Не получается запустить сервер после настройки "правильной обработки PHP файлов", как только раскомментирую появляются ошибки о невозможности перезапустить сервер. Без ошибок добавить удалось обработку PHP. Ну по факту, без раскомментирования остальных пунктов не даёт отобразить index.php, при обновлении страницы браузера, просто скачивается страница. NGINX v1.14.2-2+deb10u3, PHP7.3-fpm , Linux raspberrypi 5.10.17-v7+ 

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

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


Вернуться назад

Устройства


Raspberry Pi

Raspberry Pi 3 Model B+

(22 отзыва)

Вернуться назад