ставим по классике: Apache, MySQL и PHP
Как всегда перед установкой нового софта необходимо обновить список пакетов нашего сервера, но для начала ремарка: если доступ по ssh недоступен из-за прошлых ключей (тот же ip адрес например был раньше) то обновим и удалим прежние ключи:
ssh-keygen -R 192.168.1.*
ну и дальше все ставим по классике:
sudo apt update
затем установим все доступное, если есть желание:
sudo apt apgrade
Ставим сам сервер Apache:
sudo apt install apache2
все установили, заходим в браузер по ip и смотрим страницу-заглушку:

Установка MySQL
Следующий этап — это установка системы управления базами данных, а именно, MySQL.
MySQL является довольно популярной СУБД. MySQL используется для хранения данных сайта и довольно часто используется в приложениях, написанных с помощью PHP.
Команда для инсталляции выглядит следующим образом:
sudo apt install mysql-server
После завершения процесса можно проверить версию установленного пакета:
mysql -V

все установили и теперь произведем настройку безопасности MySQL:
sudo mysql_secure_installation
- Remove anonymous users (Удалить анонимных пользователей)? — Yes
- Disallow root login remotely (Запретить авторизацию root вне localhost)? — Yes
- Remove test database and access to it (Удалить тестовую БД и доступы к ней)? — Yes
- Reload privilege tables now (Перезагрузить таблицу привилегий после настройки)? — Yes
- All done!
Далее коннектимся к MySQL:
sudo mysql
сменим пароль root и сразу изменить способ иднетификации:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'новыйпароль';
выходим, и пробуем зайти под root:
exit mysql -u root -p
смотрим всех пользователей что у нас есть и их хосты
SELECT host, user FROM mysql.user;
добавим нового пользователя с доступом по локальному ip (пишем тут ip своего компа, с которого хотим зайти через специальный софт). Привилегии у пользователя обычные. Команда FLUSH PRIVILEGES дает серверу команду перечитать привилегии.
Подробнее в документации.
CREATE USER 'test'@'192.168.1.%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
примеры записи хоста пользователя:
somehost.example.com
localhost
127.0.0.1
::1
192.168.123.%
192.168.123.0/255.255.255.0
%
поправим конфиг mysql для доступа извне
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
правим строки со следующими параметрами:
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0
Далее обязательно сохраним документ Ctrl+S и закроем Ctrl+X
к стати посмотреть статус MySQLможно командой
systemctl status mysql
а теперь перезагрузим его что бы все наши изменения заработали
systemctl restart mysql
проверяем, все работает — profit!
как добавить пользователя, назначит ему привилегии общие и к конкретным базам или таблицам — смотрим тут и тут еще подробно про весь MySQL
но вот основное, пожалуй что нам нужно. Это добавить пользователя, и дать ему все права на базу данных:
можем сделать второго root, не локального а внешнего (строго НЕ рекомендуется):
CREATE USER 'rootin'@'192.168.1.%' IDENTIFIED BY 'super_password';
GRANT ALL PRIVILEGES ON *.* TO 'rootin'@'192.168.1.%' WITH GRANT OPTION;
теперь я могу в локальной сети зайти под root(in) и создавать базы данных, экспортировать и импортировать их. Это просто привычка работы с GUI интерфейсом.
создадим еще пользователя и дадим ему все привилегии только к одной базе даных::
CREATE USER 'user01'@'192.168.1.%' IDENTIFIED BY 'super_password';
GRANT ALL PRIVILEGES ON your_data_base.* TO 'user01'@'192.168.1.%';
скорее всего мы на этом этапе мы столкнемся с ошибкой авторизации нашего нового пользователя — «Authentication plugin ‘caching_sha2_password«. У меня так получается каждый раз после создания пользователя. Лечится просто — нужно сменить режим авторизации и снова прописать наш пароль (или новый пароль):
ALTER USER 'user01'@'%' IDENTIFIED WITH mysql_native_password BY 'super_password';
Теперь все работает как надо. Пользователи проходят авторизацию и имеют доступ ALL PRIVILEGES только к своей базе данных.
Установим PHP
PHP — скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений. Поддерживается большинством провайдеров и позволяет выполнять приложения написанные на PHP.
Для дальнейшей работы вам также понадобится библиотека libapache2-mod-php
для обработки PHP в Apache и библиотека php-mysql
для PHP, используемая для подключения к MySQL из PHP.
Чтобы установить PHP, а также необходимые библиотеки, используем следующую команду:
sudo apt install php libapache2-mod-php php-mysql
По завершению установки есть возможность посмотреть версию установленного пакета:
php -v

в общем все установили. MySQL даже настроили.
Дальше настройка Apache, а именно — Виртуальные хосты. Нужно прописать несколько сайтов.