У меня на работе, руководитель IT отдела от главного начальства получил задачу организовать информационный киоск для клиентов, т. е. Чтобы как в банке, подходишь к терминалу, выбираешь услугу и тебе распечатывается квиток, на котором номер твоей очереди и окно, к которому тебе нужно подойти. На avito.ru был приобретен терминал, т. к. пока толком не знаем, что и как решили пойти двумя путями. Мне нужно поднять виртуалку и на ней развернуть Ubuntu 18.04 Server + сервис phpmyadmin. Второй же путь, это на терминал поставить Windows 7 и клиент 1С v7.7 — но это лишь отчасти ко мне. Моя же задача — это Linux задача.

Задача: Нужно поднять на Ubuntu 18.04 Web-сервис + phpmyadmin

Хочу сделать заготовку вида

http://host:port/pma

где pma — это phpmyadmin

Web-сервис: nginx

Шаг №1: Произвожу предварительную настройку развернутой из образа Ubuntu 18.04 Server amd64 системы:

ekzorchik@srv-bionic:~$ sudo nano /etc/hosts

172.33.33.102   srv-tablo.polygon.lan   srv-tablo

ekzorchik@srv-bionic:~$ sudo nano /etc/hostname

srv-tablo

ekzorchik@srv-tablo:~$

Шаг №2: Клонирую со своего сервиса Mercurial + Web скрипт базовой настройки системы на последующее использования, не в ручную же все каждый раз делать:

ekzorchik@srv-tablo:~$  hg clone http://srv-wiki/hg/dproject

ekzorchik@srv-tablo:~$  sudo ./dproject/default

Шаг №3: Устанавливаю в систему репозитарий через который буду устанавливать php пакеты:

ekzorchik@srv-tablo:~$ sudo add-apt-repository ppa:ondrej/php

Шаг №4: Устанавливаю в систему пакеты nginx + mariadb + пакеты php:

ekzorchik@srv-tablo:~$ sudo apt-get install -y nginx mariadb-server php7.3-cli php7.3-fpm php7.3-common php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-intl php7.3-mysql php7.3-cli php7.3-zip php7.3-curl php7.3-mysql

Шаг №5: Устанавливаю пароль на учетную запись root сервиса mysql:

ekzorchik@srv-tablo:~$  sudo mysqladmin -u root password 712mbddr@

Шаг №6: Устанавливаю пакет phpmyadmin через который при обращении на URL http://IP&DNS/phpmyadmin можно будет взаимодейстовать с базой посредством браузера:

ekzorchik@srv-tablo:~$  sudo apt-get install -y phpmyadmin

На заметку: Web server to reconfigure automatically: OK (не выбираем ни apache2 ни lighttpd)

Ничего не отмечаем в плане какой у нас Web-сервис

Configure database for phpmyadmin with dbconfig-common?  Yes

  • MySQL application password for phpmyadmin: 712mbddr@ и нажимаю OK
  • Password confirmation: 712mbddr@ и нажимаю OK
ekzorchik@srv-tablo:~$  sudo nano /etc/php/7.3/fpm/php.ini

date.timezone = Europe/Moscow

cgi.fix_pathinfo=0

ekzorchik@srv-tablo:~$  sudo nano /etc/php/7.3/cli/php.ini

date.timezone = Europe/Moscow

cgi.fix_pathinfo=0

ekzorchik@srv-tablo:~$ sudo systemctl enable nginx php7.3-fpm

Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.

Executing: /lib/systemd/systemd-sysv-install enable nginx

Synchronizing state of php7.3-fpm.service with SysV service script with /lib/systemd/systemd-sysv-install.

Executing: /lib/systemd/systemd-sysv-install enable php7.3-fpm

ekzorchik@srv-tablo:~$

Шаг №7: Отключаю Apache2, т. к. nginx & phpmyadmin висят на одном порту:

ekzorchik@srv-tablo:~$  sudo systemctl disable apache2.service

Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.

Executing: /lib/systemd/systemd-sysv-install disable apache2

ekzorchik@srv-tablo:~$  sudo systemctl stop apache2.service

ekzorchik@srv-tablo:~$  sudo systemctl is-active apache

inactive

ekzorchik@srv-tablo:~$  sudo rm /var/www/html/index.html

Шаг №8: Поправляю ошибку при обращении через phpmyadmin к базе и таблицам внутри нее:

ekzorchik@srv-tablo:~$  sudo nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php

на ((count($analyzed_sql_results['select_expr']) == 1)

ekzorchik@srv-tablo:~$  sudo systemctl restart nginx php7.3-fpm mysql

Шаг №9: Создаю каталог проекта и настраиваю что проект доступен по адресу http://IP&DNS, а Web-панель phpmyadmin по адресу http://IP&DNS/pma — я хочу без использования поддоменов сделать.

ekzorchik@srv-tablo:~$  sudo mkdir /var/www/html/project

ekzorchik@srv-tablo:~$  sudo mv /var/www/html/index.nginx-debian.html /var/www/html/project/

ekzorchik@srv-tablo:~$  sudo chmod -R 775 /usr/share/phpmyadmin/

ekzorchik@srv-tablo:~$  sudo chown -R root:www-data /usr/share/phpmyadmin/

ekzorchik@srv-tablo:~$  sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/project.conf

ekzorchik@srv-tablo:~$  sudo unlink /etc/nginx/sites-enabled/default

ekzorchik@srv-tablo:~$ sudo nano /etc/nginx/sites-available/project.conf

server {

listen 80 default_server;

root /var/www/html/project;

index index.html index.htm index.nginx-debian.html;

server_name 172.33.33.102;

location / {

try_files $uri $uri/ =404;

}

location ~ \.php$ {

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;

#fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $request_filename;

include fastcgi_params;

}

location ^~ /pma/ {

alias /usr/share/phpmyadmin/;

index index.php index.html;

location ~ /pma(/.*\.php) {

include fastcgi_params;

fastcgi_param SERVER_NAME localhost;

fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$1;

fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;

fastcgi_index index.php;

}

}

}

ekzorchik@srv-tablo:~$ sudo ln -s /etc/nginx/sites-available/project.conf /etc/nginx/sites-enabled/project.conf

ekzorchik@srv-tablo:~$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

ekzorchik@srv-tablo:~$

ekzorchik@srv-tablo:~$  sudo systemctl restart nginx php7.3-fpm && sudo systemctl status nginx | head -n5

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

● nginx.service - A high performance web server and a reverse proxy server

Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

Active: active (running) since Wed 2020-11-25 11:36:12 MSK; 33ms ago

Docs: man:nginx(8)

Process: 15061 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)

ekzorchik@srv-tablo:~$

ekzorchik@srv-tablo:~$ sudo apt-get install -y curl

ekzorchik@srv-tablo:~$ curl http://srv-tablo/pma/index.php -v

получаю содержимое страницы на авторизацию в phpMyAdmin

После чего также проверяю при обращении через Web: http://srv-tablo.polygon.lan/pma/

И вот доступ к PhpMyAdmin без использования поддомена

Чтобы авторизоваться нужно сперва:

ekzorchik@srv-tablo:~$ sudo mysql -u root -p712mbddr@ -e "create user 'adm'@'%' identified by '612mbddr@'"

ekzorchik@srv-tablo:~$ sudo mysql -u root -p712mbddr@ -e "grant all privileges on *.* to 'adm'@'%'"

ekzorchik@srv-tablo:~$ sudo nano /etc/dbconfig-common/phpmyadmin.conf

bc_install='true'

dbc_upgrade='true'

dbc_remove='true'

dbc_dbtype='mysql'

dbc_dbuser='adm'

dbc_dbpass='612mbddr@'

dbc_dballow='localhost'

dbc_dbserver='localhost'

dbc_dbport='3306'

dbc_dbname='phpmyadmin'

dbc_dbadmin='root'

dbc_basepath=''

dbc_ssl=''

dbc_authmethod_admin=''

dbc_authmethod_user=''

ekzorchik@srv-tablo:~$ sudo systemctl restart mysql mariadb

Вот теперь могу зайти

Доступ в phpmyadmin с полными правами

Ура!!! Данной заметкой я подготовил себе наработку, на этом у меня пока всё, с уважением автор блога Олло Александр aka ekzorchik.