Рубрики
Проекты на Raspberry Pi

Веб-сервер на Raspberry Pi с хостингом сайта на WordPress

Одним из замечательных свойств платформ, подобных Raspberry Pi, является их способность выступать в роли веб-сервера, на которых можно размещать/запускать (хостить) веб-сайты и другие онлайн приложения. В данной статье мы рассмотрим создание веб-сервера на основе платы Raspberry Pi и установку на нем сайта на WordPress, который будет доступен из любого устройства, находящегося в той же самой сети, что и наша плата. Также вы можете настроить перенаправление порта (port forwarding) – в этом случае сайт будет доступен из любой точки в сети интернет.

В настоящее время WordPress является самой популярной системой управления сайтами – более половины сайтов мира сейчас работают на основе данной системы (в том числе и этот, на котором вы сейчас находитесь).

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

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress).
  2. SD карта (минимум 8 Гб).
  3. LAN/Ethernet кабель.
  4. Источник питания.

Установка веб-сервера на Raspberry Pi

Существует несколько сборок (установок) сервера для платы Raspberry Pi, но в данном проекте мы будем использовать сборку под названием LAMP (LAMP stack), которая содержит в себе Linux, Apache, MySQL и PHP.

Шаг 1. Установите последние обновления на плату Raspberry Pi.

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

Шаг 2. Установите Apache

Поскольку мы работаем в операционной системе, основанной на Linux, то первую вещь, которую мы должны сделать – это установить Apache, с помощью которого можно формировать как статические HTML страницы или с помощью дополнительных модулей и пакетов формировать динамические веб-страницы, например, сайты на WordPress, которые основаны на использовании языков подобных PHP.

Чтобы установить Apache выполните следующую команду:

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

Показанная страница отображает содержимое файла index.html, размещенного в каталоге /var/www/html. Данный каталог был создан во время установки Apache.

Чтобы создать уникальную веб-страницу или несколько страниц вы можете отредактировать содержимое файла index.html.

Чтобы отредактировать этот файл, вы должны изменить права на него для своего имени пользователя (username). Если у вас имя пользователя по умолчанию, то есть “pi”, то перейдите в каталог www и измените права на этот файл:

Когда права изменены, вы можете запустить редактор nano для внесения изменений в файл:

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

Шаг 3. Установите PHP

Чтобы веб-сервер мог обслуживать сложные и динамические веб-страницы, у него должна быть возможность обрабатывать html, CSS JavaScript и PHP. Для этого мы должны установить другие компоненты сборки LAMP. Поскольку мы работаем в Linux-подобной операционной системе, то следующим компонентом мы установим PHP. Для этого выполните следующую команду:

Когда процесс установки будет завершен вы можете проверить ее корректность создав файл index.php и поместив его в каталог www. Это необходимо делать после того как файл index.html удален из данного каталога поскольку .html имеет приоритет перед .php.

Если вы находитесь в каталоге www, то для удаления файла .html выполните команду:

Создайте файл index.php с помощью команды:

Вставьте небольшой кусок PHP кода в этот файл.

Сохраните файл и выйдите из редактора. Обновите страницу в браузере чтобы увидеть изменения.

Если на веб-странице вы видите кусок написанного кода скрипта вместо текста “server up and running”, перезапустите сервер apache. Это можно сделать с помощью следующей команды:

После этого веб-страница должна отображаться правильно.

Также вместо удаления файла index.html вы можете создать страницу с другим именем, например, page.php.

Эту страницу вы можете посмотреть в веб-браузере по адресу http://<youripaddress>/page.php, где youripaddress – ваш IP адрес.

Шаг 4. Установите сервер MySQL

На этом шаге мы должны установить движок базы данных чтобы хранить данные на сервере. Для сборки Lamp в качестве движка базы данных мы будем использовать MySQL. Нам необходимо установить сервер MySQL и пакеты поддержки PHP для MySQL. Альтернативой этому может служить PHPmyAdmin.

Для установки сервера MySQL выполните команду:

После этого перезагрузите Apache:

После этого вы будете иметь полностью законченный веб-сервер и сможете расположить на этом сервере свой сайт (сервер будет служить хостингом для сайта) разместив в каталоге www необходимые для сайта html и PHP страницы, при этом ваш сайт будет доступен для всех устройств, расположенных в той же самой сети что и ваша плата Raspberry Pi.

Установка и настройка WordPress на Raspberry Pi

Теперь, когда наш веб-сервер полностью настроен и функционирует, отличный способ проверить его работу – это установить на него самую популярную сейчас систему управления контентом (Content management system, CMS) WordPress. С помощью системы WordPress мы сможем создать свой сайт всего за несколько минут.

Шаг 1. Скачайте и установите WordPress

Чтобы освободить дисковое пространство на Raspberry Pi удалим содержимое каталога www. Для этого выполните следующую последовательность команд:

После удаления всех файлов из данного каталога скачаем последнюю версию WordPress с его официального сайта.

После этого извлеките файлы из скачанного архива.

Переместите содержимое каталога WordPress в текущий каталог с помощью команды:

Примечание: при написании этой команды не забудьте пробел перед “.”.

Затем удалите архив с WordPress чтобы освободить свободное пространство на плате – он нам больше не понадобится.

Но перед тем как идти дальше, нам необходимо изменить права доступа на все wordpress файлы для пользователя apache.

Примечание: не забудьте добавить “.” в конце команды.

Шаг 2. Установите базу данных

Всем современным сайтам необходимо база данных – мы для этой цели используем MySQL. Чтобы установить базу данных для WordPress выполните следующую команду:

После этого система попросит вас ввести текущий/по умолчанию пароль (default/current password). Просто нажмите enter. Далее следуйте подсказкам во время установки: создайте новый пароль (только убедитесь в том, что вы его не забудете), удалите анонимных пользователей, отключите удаленный вход в панель управления (disallow remote root login), удалите тестовую базу данных и перезагрузите таблицу привилегий/полномочий (privileges table). На этом установка движка базы данных будет закончена.

После этого создадим базу данных для WordPress, выполните команду:

Введите пароль доступа к базе данных (root password), который мы сформировали ранее. После этого на экране вы увидите приглашение от монитора mariaDB. Когда оно появится, создайте новую базу данных (DB) с помощью команды:

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

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

Далее предоставим полномочия управления базой данных привилегированному пользователю (root user) с помощью команды:

Чтобы сделанные изменения в базе данных вступили в силу необходимо обновить полномочия для базы данных с помощью команды:

Когда это будет сделано выйдите из монитора mariaDB используя CTRL+D.

Шаг 3. Настройка WordPress

Откройте браузер платы Raspberry Pi по адресу http://localhost/ — вы должны увидеть стартовую страницу WordPress, на которой вас попросят выбрать предпочитаемый язык (preferred language), выберите язык и нажмите продолжить.

Далее продолжите установку WordPress. Во время установки вам необходимо будет заполнить некоторую информацию, заполните ее следующим образом:

Database name: wordpress
Username: root
Password: <insert your password>
Database host: localhost
Table prefix: wp_

Нажмите кнопку “submit”, после этого кнопку “Run the Install”. После этого система запросит у вас email, username (имя пользователя) и password (пароль) для вашего сайта. Заполните эту информацию и нажмите кнопку “install wordpress”. После этого вы сможете залогиниться на своем сайте и настроить его внешний вид по своему усмотрению, для этого откройте в браузере страницу по адресу http://localhost/wp-admin.

Чтобы сделать URL адрес вашего сайта более дружественным для пользователей, которые будут просматривать ваш сайт из той же самой сети, в которой вы находитесь, необходимо изменить настройки ссылок для сайта (permalinks). Для этого в панели настроек сайта выберите permalinks, затем “post name” и затем нажмите кнопку “save changes“ (сохранить изменения).

Чтобы эти изменения на нашем сервере вступили в силу необходимо для apache включить режим rewrite:

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

Добавьте следующие строчки кода после первой строки:

Убедитесь, что внутри фрейма <VirtualHost *: 80> записаны следующие строки:

Сохраните файл и выйдите из редактора, для этого нажмите CTRL+X, затем Y и затем enter.

Перезагрузите Apache чтобы изменения вступили в силу.

На этом все – мы получили WordPress сайт, который работает на нашем веб-сервере Raspberry Pi. Вы можете настроить сайт по своему вкусу: изменить тему сайта, добавить новые страницы и записи, изменить меню и т.д.

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

Если вы подключите плату Raspberry Pi к роутеру WiFi и настроите в роутере перенаправление порта (port forwarding), то страницы (сайты) на вашем веб-сервере будут видны во всей сети интернет.

Но необходимо отметить, что вычислительные ресурсы платы Raspberry Pi ограничены и если она будет обслуживать сайты с большим трафиком, то она вряд ли сможет выполнять свои «обычные» функции с заданным качеством – то есть в это же самое время вы не сможете задействовать ее для решения каких то других более-менее производительных задач.

4 ответа к “Веб-сервер на Raspberry Pi с хостингом сайта на WordPress”

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

Я впервые это делаю, но вот:
pi@raspberrypi:~ $ php -v
PHP 8.2.14 (cli) (built: Dec 21 2023 20:21:17) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.14, Copyright (c) Zend Technologies
with Zend OPcache v8.2.14, Copyright (c), by Zend Technologies

pi@raspberrypi:~ $ apache2 -v
Server version: Apache/2.4.38 (Raspbian)
Server built: 2023-04-21T22:01:00

pi@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME=»Raspbian GNU/Linux 10 (buster)»
NAME=»Raspbian GNU/Linux»
VERSION_ID=»10″
VERSION=»10 (buster)»

MariaDB [(none)]> select version();
| 10.3.39-MariaDB-0+deb10u1 |

И php установил какой-то другой командой.
И вместо mysql устанавливается mariadb.

А вообще спасибо, по статье запустил сервер для тренировки создания сайта, учитывая что в Линуксе вообще не разбираюсь и не особо понимаю, что делаю. Лучше вам заново пройти путь установки и обновить статью, потому что качественного материала в Интернете всё меньше…

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *