Сегодня я проработаю, как на систему Ubuntu 22.04
установить Web
-сервис phpmyadmin
с целью визуального взаимодействия с сервисом базы данных: Создание таблиц, столбцов, баз, учетных записей, изменение паролей, копирование контента в новую базу, назначение прав, бекап и восстановление. Где я работаю этим инструментом преимущественно пользуется руководитель 1C
при работе с сайтом компании и программой 1Cv7.7
Зачем я все разбираю, как показывает практика самые популярные инструменты и используются на работе и в хобби проектах, а, чтобы все было сделано на самом лучшем уровне и сократить количество ошибок, я это и делаю, задействую настройки по своим отработанным заметкам.
Шаг №1:
Обновляю информацию о репозитариях и обновляю систему в рамках дефолтных репозитариев по части установленных пакетов:
ekzorchik@srv-us2204a:~$ sudo rm -Rf /var/lib/apt/lists ekzorchik@srv-us2204a:~$ cat /etc/update-manager/release-upgrades | grep Prompt Prompt=lts ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo sed -i '/Prompt/s/lts/never/' /etc/update-manager/release-upgrades ekzorchik@srv-us2204a:~$ cat /etc/update-manager/release-upgrades | grep Prompt Prompt=never ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo apt-get update && sudo apt upgrade -y && sudo apt dist-upgrade -y ekzorchik@srv-us2204a:~$ sudo reboot
Шаг №2:
Настраиваю локаль:
ekzorchik@srv-us2204a:~$ sudo rm -f /etc/localtime ekzorchik@srv-us2204a:~$ sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime ekzorchik@srv-us2204a:~$ sudo locale-gen en_US.UTF-8 Generating locales (this might take a while)... en_US.UTF-8... done Generation complete. ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ echo "LC_ALL="en_US.UTF-8"" | sudo -s tee /etc/default/locale LC_ALL=en_US.UTF-8 ekzorchik@srv-us2204a:~$ echo "LANG="en_US.UTF-8"" | sudo tee -a /etc/default/locale LANG=en_US.UTF-8 ekzorchik@srv-us2204a:~$ echo "LANGUAGE="en.US.UTF-8"" | sudo tee -a /etc/default/locale LANGUAGE=en.US.UTF-8 ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ locale LANG=en_US.UTF-8 LANGUAGE=en.US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8 ekzorchik@srv-us2204a:~$
Шаг №3:
Устанавливаю приложения которые считаю нужными в дальнейшем работе (по желанию):
ekzorchik@srv-us2204a:~$ sudo apt install -y htop net-tools unzip wget nano
Шаг №4:
Устанавливаю Web
—сервис Apache2:
ekzorchik@srv-us2204a:~$ sudo apt install -y apache2 ekzorchik@srv-us2204a:~$ echo "ServerName localhost" | sudo tee -a /etc/apache2/apache2.conf ServerName localhost ekzorchik@srv-us2204a:~$ sudo rm -f /var/www/html/index.html ekzorchik@srv-us2204a:~$ sudo unlink /etc/apache2/sites-enabled/000-default.conf ekzorchik@srv-us2204a:~$ sudo rm -f /etc/apache2/sites-available/000-default.conf ekzorchik@srv-us2204a:~$ sudo rm -f /etc/apache2/sites-available/default-ssl.conf ekzorchik@srv-us2204a:~$ sudo systemctl enable apache2 Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable apache2 ekzorchik@srv-us2204a:~$ sudo systemctl restart apache2
Шаг №5:
Включаю модули Apache2:
ekzorchik@srv-us2204a:~$ sudo a2enmod rewrite
Шаг №6:
Отключаем листинг файлов в директориях работы для Apache2:
ekzorchik@srv-us2204a:~$ sudo nano /etc/apache2/apache2.conf <Directory /var/www/> # Options Indexes FollowSymLinks Options FollowSymLinks AllowOverride None Require all granted </Directory> ekzorchik@srv-us2204a:~$ sudo apache2ctl configtest Syntax OK ekzorchik@srv-us2204a:~$ sudo systemctl restart apache2
т.е. теперь при обращении к http://IP&DNS:80
если не обозначен конфигурационный файл доступа к корню обращающийся получит ошибку, что доступ запрещен:
Шаг №7:
Устанавливаю сервис базы данных MySQL:
ekzorchik@srv-us2204a:~$ sudo apt-get install -y mysql-server mysql-client
Шаг №8:
Изменяю схему авторизации и назначаю пароль на системную учетной запись root
сервиса MySQL:
ekzorchik@srv-us2204a:~$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] default-authentication-plugin=mysql_native_password ekzorchik@srv-us2204a:~$ sudo mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '712mbddr@';"
Шаг №9:
Устанавливаю PHP
и PHP
—расширения:
ekzorchik@srv-us2204a:~$ sudo apt install -y php php-{fpm,mbstring,bcmath,xml,mysql,common,gd,cli,curl,zip} ekzorchik@srv-us2204a:~$ sudo systemctl enable php8.1-fpm --now Synchronizing state of php8.1-fpm.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable php8.1-fpm ekzorchik@srv-us2204a:~$
Шаг №10:
Устанавливаю phpMyAdmin
, можно либо из дефолтных репозитариев, а можно с официального сайта:
ekzorchik@srv-us2204a:~$ apt-cache show phpmyadmin | grep Version Version: 4:5.1.1+dfsg1-5ubuntu1 ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz ekzorchik@srv-us2204a:~$ tar xf phpMyAdmin-latest-all-languages.tar.gz ekzorchik@srv-us2204a:~$ sudo mv phpMyAdmin-и нажимаю клавишу TAB phpMyAdmin-5.2.0-all-languages/ phpMyAdmin-latest-all-languages.tar.gz ekzorchik@srv-us2204a:~$ sudo mv phpMyAdmin-5.2.0-all-languages/ /var/www/html/phpmyadmin ekzorchik@srv-us2204a:~$
создаю временную директорию для phpmyadmin:
ekzorchik@srv-us2204a:~$ sudo mkdir -p /var/www/html/phpmyadmin/tmp
Шаг №11:
Добавляю Blowfish
для авторизации через Cookie:
ekzorchik@srv-us2204a:~$ sudo cp /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php
создаю/генерирую 32-битную случайную строку:
На заметку: Если строка больше 32 символов, то после авторизации в phpMyAdmin
в самом низу страницы будет ошибка вида "The secret passphrase in configuration (blowfish_secret) is not the correct length. It should be 32 bytes long."
ekzorchik@srv-us2204a:~$ openssl rand -base64 32 pw3aUWRZMoEYUJNIAedEDIQMsZnO9ZEtxcL+8yY2dP0= ekzorchik@srv-us2204a:~$
либо так (с этим способом ошибки выше нет если использовать утилиту openssl
):
ekzorchik@srv-us2204a:~$ export SECRET=`php -r 'echo base64_encode(random_bytes(24));'` ekzorchik@srv-us2204a:~$ echo $SECRET upB1k/e8HauhGth4K0ls/6e9rYen69IQ ekzorchik@srv-us2204a:~$ sudo nano /var/www/html/phpmyadmin/config.inc.php /** $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ $cfg['blowfish_secret'] = 'pw3aUWRZMoEYUJNIAedEDIQMsZnO9ZEtxcL+8yY2dP0='; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ /** в самом конце добавляю строку указания на временную директорию $cfg['TempDir'] = '/var/www/html/phpmyadmin/tmp'; ekzorchik@srv-us2204a:~$ sudo chown -R www-data:www-data /var/www/html/ ekzorchik@srv-us2204a:~$ sudo find /var/www/html/phpmyadmin/ -type d -exec chmod 755 {} \; ekzorchik@srv-us2204a:~$ sudo find /var/www/html/phpmyadmin/ -type f -exec chmod 644 {} \;
Шаг №12:
Создаю конфигурацию для сайта, обслуживающего сервер phpmyadmin:
ekzorchik@srv-us2204a:~$ sudo nano /etc/apache2/sites-available/phpmyadmin.conf <VirtualHost *:80> ServerAdmin support@ekzorchik.ru ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /pma /var/www/html/phpmyadmin <Directory /var/www/html/phpmyadmin> DirectoryIndex index.php </Directory> </VirtualHost> ekzorchik@srv-us2204a:~$ sudo a2ensite phpmyadmin.conf Enabling site phpmyadmin. To activate the new configuration, you need to run: systemctl reload apache2 ekzorchik@srv-us2204a:~$ sudo systemctl restart apache2 ekzorchik@srv-us2204a:~$
Шаг №13:
Создаю Basic Auth
связку на доступ к странице Администрирования phpMyAdmin:
ekzorchik@srv-us2204a:~$ sudo htpasswd -c /etc/apache2/.htpasswd.setup ekzorchik New password: 712mbddr@ Re-type new password: 712mbddr@ Adding password for user ekzorchik ekzorchik@srv-us2204a:~$ sudo apache2ctl configtest Syntax OK ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo chown www-data:www-data /etc/apache2/.htpasswd.setup ekzorchik@srv-us2204a:~$ sudo systemctl restart apache2
Шаг №14:
Теперь, когда Web
-сервис phpMyAdmin
поднят Вы можете посмотреть и начать использовать (предварительно включив модуль если не включили: sudo a2enmod rewrite
) его, для этого со своего рабочего места открываем либо по IP
, либо по DNS
обращение к системе Ubuntu 22.04 Server
обращение через браузер, к примеру, Google Chrome:
ekzorchik@srv-us2204a:~$ ip r | awk '{print $9}' | head -n 1 172.35.35.7 ekzorchik@srv-us2204a:~$
и авторизуюсь
Пользователь: root
Пароль: 712mbddr@
и нажимаю "Авторизация"
Шаг №15:
Нельзя оставляю форму авторизации в phpMyAdmin
наедине с интернет пользователями, лучше ее закрыть Basic Auth
аутентификацией:
ekzorchik@srv-us2204a:~$ sudo nano /etc/apache2/apache2.conf <Directory /var/www/> # возвращаю, как было по умолчанию Options Indexes FollowSymLinks # Options FollowSymLinks AllowOverride None Require all granted </Directory> ekzorchik@srv-us2204a:~$ sudo a2enmod authz_host access_compat Considering dependency authz_core for authz_host: Module authz_core already enabled Module authz_host already enabled Considering dependency authn_core for access_compat: Module authn_core already enabled Module access_compat already enabled ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo nano /etc/apache2/sites-available/phpmyadmin.conf <VirtualHost *:80> ServerAdmin support@ekzorchik.ru ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /pma /var/www/html/phpmyadmin <Directory /var/www/html/phpmyadmin> DirectoryIndex index.php AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory> </VirtualHost> ekzorchik@srv-us2204a:~$ sudo htpasswd -c /etc/apache2/.htpasswd ekzorchik New password: 712mbddr@ Re-type new password: 712mbddr@ Adding password for user ekzorchik ekzorchik@srv-us2204a:~$ sudo chown www-data:www-data /etc/apache2/.htpasswd ekzorchik@srv-us2204a:~$ sudo bash -c "cat /etc/apache2/.htpasswd" ekzorchik:$apr1$6RtSatxY$rKl4xRjPsjvaVdbk58FFz0 ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo apache2ctl configtest Syntax OK ekzorchik@srv-us2204a:~$ ekzorchik@srv-us2204a:~$ sudo systemctl restart apache2
ну а после авторизуемся уже в phpMyAdmin
, как
Пользователь: root
Пароль: 712mbddr@
и нажимаем "Авторизация"
Итого. Я практически разобрал, как развернуть Web
-сервис phpMyAdmin
на Ubuntu 22.04 Server
c теми нюансами которые у меня в процессе возникали, это так сказать заметка на будущее использование, а пока собственно все, с уважением автор блога Олло Александр aka ekzorchik.