Linux — Aipache — MySQL — PHP. Liinux — Engine-X (Nginx) — MySQL — PHP. В этом стеке нередко MySQL меняют на MariaDB (я тоже планирую так поступить) или же на PostgreSQL. Итак, Linux у нас уже установлен, следующее с чем необходимо определиться — веб-сервер, несмотря на то, что Apache кажется более «простым» (только потому что настройки по умолчанию для локального сервера не требуются, но когда встаёт необходимость настроить несколько сайтов то разницы в «простоте» с nginx уже не чувствуется), я остановил свой выбор на Nginx.
Итак, подключаемся к апельсину и вводим команду:
sudo apt install nginx
После того, как файлы благополучно скачаны и установлены, сервер, как правило, ещё и автоматически запускается. Будет полезным знать следующие команды:
sudo service nginx status — вывод информации о сервере, среди прочего «зелёное» active, значит что сервер работает, и, соответственно неподсвеченное inactive значит что не включен. Выйти из статус-режима, клавиша «Q».
sudo service nginx stop — остановить (выключить) службу веб-сервера.
sudo service nginx start — запустить (включить) службу веб-сервера.
sudo service nginx restart — перезапустить службу веб-сервера (лично у меня больше доверия вызывает связка stop+start).
Веб-сервер необходимо перезагружать всякий раз, когда Вы вносили какие-либо изменения в его настройки.
Собственно, если кроме nginx никакой веб-сервер больше не был установлен (например, apache), он активен и его настройки Вы не успели изменить, то его работоспособность можно проверить уже сейчас, введя в строку Интернет-браузера IP-адрес, который Вы вводили подключаясь к апельсину по SSH. Если Вы с OrangePi работаете «напрямую», то введите команду:
ip addr
В выданной информации (если апельсин подключен к Wi-Fi, то нас будет интересовать интерфейс wlan0) найдите «inet», скорее всего будет что-то начинающееся на «192.168.*.*» и ещё две цифры вместо *. Браузер сам перенаправит на протокол http://192.168.*.* .
Веб-сервер установили, далее установим систему управления баз данных, здесь каждый выбирает для себя. Я установлю mariadb:
sudo apt install mariadb-server
Дальше, как с nginx:
sudo service mariadb status
Остальные команды службы аналогичны, выйти из статус-режима тоже клавиша «Q». Как и с веб-сервером, как только Вы изменяете настройки сервера Mariadb, службу необходимо перезапускать.
Далее очередь за php (кому-то может оказаться ближе perl или python, но это уже не в этом обзоре):
sudo apt install php
и
sudo apt install php-fpm
PHP-FPM (FastCGI Process Manager), запускает процессы позволяющие выполнять скрипты php (т.е. без него скрипты работать не будут). Его часто используют в связке с Nignx, поскольку он значительно меньше памяти и ресурсов CPU (если сравнивать с другими методами запуска php).
Команда работы с fpm может отличаться, и зависит от того, какая версия php у Вас установлена, если отталкиваться от того, что Вы по какой-то причине можете не знать, какую версию php установили на сервер:
php -v
Далее, в зависимости от того, какая версия у Вас установлена (в моём случае 8.1):
sudo service php8.1-fpm status
Я однажды столкнулся с случаем, когда при обновлении пакетов (sudo apt update && sudo apt upgrade), обновилась версия php (например с 8.0 до 8.1), несложно догадаться, что вводя команду с предыдущей версией у меня на выходе получалось: service could not be found.
Поэтому я сейчас так много внимания уделяю этому моменту.
На этом моменте можно было бы остановиться с установками, однако не все умеют через консоль работать с БД, многим подавай GUI, неплохое решение в таких случаях phpmyadmin:
sudo apt install phpmyadmin
При установке будет задан вопрос под какой веб-сервер устанавливается, nginx в списке нет, поэтому ничего не выбирая просто нажимаем на Tab, далее «Yes», ввод и повторение пароля для администрирования базы данных.
Чтобы был доступен веб-интерфейс phpMyAdmin, создадим символическую ссылку:
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
Кроме того, по умолчанию в настройках сервера nginx необходимо «включить» выполнение скриптов php, для этого нам необходимо отредактировать это в настройках:
sudo nano /etc/nginx/sites-available/default
Добавить index.php рядом с index.htm. А кроме того включить в настройках исполнение php скриптов на сервере (после чего, нажимаем Ctrl+S и Ctrl+X):
Обратите внимание, что кроме того, что я убрал в необходимых местах комментарии, я так же изменил версию fpm на свою. Это к слову, также будет необходимо повторно сделать, если версия php изменится, например, на 8.2.
Далее перезагружаем наш сервер:
sudo service nginx restart
И проверяем открыв в браузере:
http://192.168.*.*/phpmyadmin
Для входа, как можно догадаться, необходима учётная запись. Использовать root считается дурным тоном, но в любом случае его ещё надо настроить.
sudo mysql_secure_installation
Здесь нас спросят за пароль от root’а или же если мы просто установили Mariadb, то можно нажать Enter, чтобы продолжить.
Switch to unix_socket authentication?
Ставим Y если хотим оставить возможность подключения к базе «локальных пользователей», через unix_socket и соответственно N, если такое положение Вас не устраивает. На самом деле довольно странный вопрос, полностью отключить подключение с локальной машины в теории возможно, но создаст массу трудностей, а «оставлять возможность подключиться root’ом» вызывает вопрос того, какой вообще был смысл в этой опции.
Change the root password?
То, ради чего мы здесь (меняем пароль на свой) и подтверждаем.
Remove anonymous users?
Удаляем пользователей анонимов.
Disallow root login remotely?
Ставим да (Y), чтобы запретить удалённое подключение под root’ом.
Remove test database and access to it?
Удалить базу данных «test», я выбрал N, потому что удалить всегда успею.
Reload privilege tables now?
Перезагрузить таблицу привилегий сейчас (для вступления их в силу), тоже ставим Y.
Теперь мы можем зайти в базу:
mariadb -u root -p
Вводим пароль, который только что установили. Далее:
CREATE USER USERNAME@localhost IDENTIFIED BY 'PASSWORD';
\q
Перезапустим сервер:
sudo service mariadb status
И теперь можем зайти в phpmyadmin под созданной учётной записью.