Одним из замечательных свойств платформ, подобных Raspberry Pi, является их способность выступать в роли веб-сервера, на которых можно размещать/запускать (хостить) веб-сайты и другие онлайн приложения. В данной статье мы рассмотрим создание веб-сервера на основе платы Raspberry Pi и установку на нем сайта на WordPress, который будет доступен из любого устройства, находящегося в той же самой сети, что и наша плата. Также вы можете настроить перенаправление порта (port forwarding) – в этом случае сайт будет доступен из любой точки в сети интернет.
В настоящее время WordPress является самой популярной системой управления сайтами – более половины сайтов мира сейчас работают на основе данной системы (в том числе и этот, на котором вы сейчас находитесь).
Учитывая то, что плата за хостинг сайтов в современном мире постоянно растет, владельцы сайтов все чаще размещают свои сайты на своих собственных компьютерах, но для небольших сайтов это не всегда является целесообразным решением поскольку затраты на электричество при непрерывной работе стационарного компьютера могут быть весьма значительные. В этом случае на помощь может прийти описанный в данной статье проект, позволяющий осуществить хостинг WordPress сайта на плате Raspberry Pi, отличающейся гораздо меньшим энергопотреблением по сравнению со стационарным компьютером.
Необходимые компоненты
- Плата Raspberry Pi (купить на AliExpress) (Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158).
- SD карта (минимум 8 Гб).
- LAN/Ethernet кабель.
- Источник питания.
Установка веб-сервера на Raspberry Pi
Существует несколько сборок (установок) сервера для платы Raspberry Pi, но в данном проекте мы будем использовать сборку под названием LAMP (LAMP stack), которая содержит в себе Linux, Apache, MySQL и PHP.
Шаг 1. Установите последние обновления на плату Raspberry Pi.
Перед любым новым проектом всегда желательно обновлять программное обеспечение платы Raspberry Pi чтобы не возникало проблем с совместимостью. Сделать это можно с помощью следующих команд:
1 2 |
Sudo apt-get update Sudo apt-get upgrade |
Шаг 2. Установите Apache
Поскольку мы работаем в операционной системе, основанной на Linux, то первую вещь, которую мы должны сделать – это установить Apache, с помощью которого можно формировать как статические HTML страницы или с помощью дополнительных модулей и пакетов формировать динамические веб-страницы, например, сайты на WordPress, которые основаны на использовании языков подобных PHP.
Чтобы установить Apache выполните следующую команду:
1 |
Sudo apt-get install apache2 |
Когда процесс установки будет закончен, вы можете протестировать успешность установки введя соответствующий IP в своем браузере. Вы должны увидеть картину, показанную на следующем рисунке.
Показанная страница отображает содержимое файла index.html, размещенного в каталоге /var/www/html. Данный каталог был создан во время установки Apache.
Чтобы создать уникальную веб-страницу или несколько страниц вы можете отредактировать содержимое файла index.html.
Чтобы отредактировать этот файл, вы должны изменить права на него для своего имени пользователя (username). Если у вас имя пользователя по умолчанию, то есть “pi”, то перейдите в каталог www и измените права на этот файл:
1 2 |
cd /var/www/html sudo chown pi: index.html |
Когда права изменены, вы можете запустить редактор nano для внесения изменений в файл:
1 |
Sudo nano index.html |
Измените код в файле по своему желанию, сохраните его и обновите страницу в браузере – и вы увидите внесенные изменения.
Шаг 3. Установите PHP
Чтобы веб-сервер мог обслуживать сложные и динамические веб-страницы, у него должна быть возможность обрабатывать html, CSS JavaScript и PHP. Для этого мы должны установить другие компоненты сборки LAMP. Поскольку мы работаем в Linux-подобной операционной системе, то следующим компонентом мы установим PHP. Для этого выполните следующую команду:
1 |
Sudo apt-get install php libapache2-mod-php |
Когда процесс установки будет завершен вы можете проверить ее корректность создав файл index.php и поместив его в каталог www. Это необходимо делать после того как файл index.html удален из данного каталога поскольку .html имеет приоритет перед .php.
Если вы находитесь в каталоге www, то для удаления файла .html выполните команду:
1 |
sudo rm index.html |
Создайте файл index.php с помощью команды:
1 |
sudo nano index.php |
Вставьте небольшой кусок PHP кода в этот файл.
1 |
<?php echo “ server up and running”;?> |
Сохраните файл и выйдите из редактора. Обновите страницу в браузере чтобы увидеть изменения.
Если на веб-странице вы видите кусок написанного кода скрипта вместо текста “server up and running”, перезапустите сервер apache. Это можно сделать с помощью следующей команды:
1 |
sudo service apache2 restart |
После этого веб-страница должна отображаться правильно.
Также вместо удаления файла index.html вы можете создать страницу с другим именем, например, page.php.
Эту страницу вы можете посмотреть в веб-браузере по адресу http://<youripaddress>/page.php, где youripaddress – ваш IP адрес.
Шаг 4. Установите сервер MySQL
На этом шаге мы должны установить движок базы данных чтобы хранить данные на сервере. Для сборки Lamp в качестве движка базы данных мы будем использовать MySQL. Нам необходимо установить сервер MySQL и пакеты поддержки PHP для MySQL. Альтернативой этому может служить PHPmyAdmin.
Для установки сервера MySQL выполните команду:
1 |
Sudo apt-get install mysql-server php-mysql |
После этого перезагрузите Apache:
1 |
sudo service apache2 restart |
После этого вы будете иметь полностью законченный веб-сервер и сможете расположить на этом сервере свой сайт (сервер будет служить хостингом для сайта) разместив в каталоге www необходимые для сайта html и PHP страницы, при этом ваш сайт будет доступен для всех устройств, расположенных в той же самой сети что и ваша плата Raspberry Pi.
Установка и настройка WordPress на Raspberry Pi
Теперь, когда наш веб-сервер полностью настроен и функционирует, отличный способ проверить его работу – это установить на него самую популярную сейчас систему управления контентом (Content management system, CMS) WordPress. С помощью системы WordPress мы сможем создать свой сайт всего за несколько минут.
Шаг 1. Скачайте и установите WordPress
Чтобы освободить дисковое пространство на Raspberry Pi удалим содержимое каталога www. Для этого выполните следующую последовательность команд:
1 2 3 |
Cd ~ Cd /var/www/html sudo rm * |
После удаления всех файлов из данного каталога скачаем последнюю версию WordPress с его официального сайта.
1 |
sudo wget http://wordpress.org/latest.tar.gz |
После этого извлеките файлы из скачанного архива.
1 |
sudo tar xzf latest.tar.gz |
Переместите содержимое каталога WordPress в текущий каталог с помощью команды:
1 |
Sudo mv wordpress/* . |
Примечание: при написании этой команды не забудьте пробел перед “.”.
Затем удалите архив с WordPress чтобы освободить свободное пространство на плате – он нам больше не понадобится.
1 |
Sudo rm –rf wordpress latest.tar.gz |
Но перед тем как идти дальше, нам необходимо изменить права доступа на все wordpress файлы для пользователя apache.
1 |
Sudo chown -R www-data: . |
Примечание: не забудьте добавить “.” в конце команды.
Шаг 2. Установите базу данных
Всем современным сайтам необходимо база данных – мы для этой цели используем MySQL. Чтобы установить базу данных для WordPress выполните следующую команду:
1 |
sudo mysql_secure_installation |
После этого система попросит вас ввести текущий/по умолчанию пароль (default/current password). Просто нажмите enter. Далее следуйте подсказкам во время установки: создайте новый пароль (только убедитесь в том, что вы его не забудете), удалите анонимных пользователей, отключите удаленный вход в панель управления (disallow remote root login), удалите тестовую базу данных и перезагрузите таблицу привилегий/полномочий (privileges table). На этом установка движка базы данных будет закончена.
После этого создадим базу данных для WordPress, выполните команду:
1 |
sudo mysql -uroot -p |
Введите пароль доступа к базе данных (root password), который мы сформировали ранее. После этого на экране вы увидите приглашение от монитора mariaDB. Когда оно появится, создайте новую базу данных (DB) с помощью команды:
1 |
create database wordpress; |
Примечание: слово “WordPress” в представленной команде является именем базы данных. Вы можете изменить это имя по своему усмотрению.
Если все прошло успешно, то на экране вы должны увидеть примерно следующую картину:
Далее предоставим полномочия управления базой данных привилегированному пользователю (root user) с помощью команды:
1 |
GRANT ALL PRIVILEGES ON wordpress.* TO 'root'@'localhost' IDENTIFIED BY 'YOURPASSWORD'; |
Чтобы сделанные изменения в базе данных вступили в силу необходимо обновить полномочия для базы данных с помощью команды:
1 |
FLUSH PRIVILEGES; |
Когда это будет сделано выйдите из монитора 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:
1 |
Sudo a2enmod rewrite |
Также мы должны изменить настройки виртуального хостинга чтобы он позволял перезаписывать запросы. Для этого отредактируем настройки по умолчанию для нашего сайта с помощью редактора nano:
1 2 |
Run; sudo nano /etc/apache2/sites-available/000-default.conf |
Добавьте следующие строчки кода после первой строки:
1 2 3 |
<Directory “/var/www/html”> AllowOverride All </Directory> |
Убедитесь, что внутри фрейма <VirtualHost *: 80> записаны следующие строки:
1 2 3 4 5 |
<VirtualHost*: 80> <Directory “/var/www/html”> AllowOverride All </Directory> … |
Сохраните файл и выйдите из редактора, для этого нажмите CTRL+X, затем Y и затем enter.
Перезагрузите Apache чтобы изменения вступили в силу.
1 |
Sudo service apache2 restart |
На этом все – мы получили WordPress сайт, который работает на нашем веб-сервере Raspberry Pi. Вы можете настроить сайт по своему вкусу: изменить тему сайта, добавить новые страницы и записи, изменить меню и т.д.
Созданный нами веб-сервер кроме непосредственно хостинга сайта на WordPress можно использовать и для других полезных вещей, например, для обмена файлами в нашей сети.
Если вы подключите плату Raspberry Pi к роутеру WiFi и настроите в роутере перенаправление порта (port forwarding), то страницы (сайты) на вашем веб-сервере будут видны во всей сети интернет.
Но необходимо отметить, что вычислительные ресурсы платы Raspberry Pi ограничены и если она будет обслуживать сайты с большим трафиком, то она вряд ли сможет выполнять свои "обычные" функции с заданным качеством – то есть в это же самое время вы не сможете задействовать ее для решения каких то других более-менее производительных задач.
1 581 просмотров
Устанавливаемая версия PHP уже не работает с 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.
А вообще спасибо, по статье запустил сервер для тренировки создания сайта, учитывая что в Линуксе вообще не разбираюсь и не особо понимаю, что делаю. Лучше вам заново пройти путь установки и обновить статью, потому что качественного материала в Интернете всё меньше...
Спасибо вам за конструктивный комментарий для нашего сайта, но пока, к сожалению, нет возможности обновить статью потому что нет доступа к необходимому железу