Данная задача есть практическая часть ухода от использования всего того что предыдущий системный администратор нагородил в последние дни декабря 2019 прежде чем уйти на новое место. Спрашивается зачем, делать что-то что никто в организации не знает, да не показать что и как и зачем. Взять перевести все сервисы Nod32, проект «customizer.ekzorchik.ru», «dealers.ekzorchik.ru» c FreeBSD 12 на Оборудования в дата-центре СДН: Supermicro 5017C-MTF, CPU Xeon E3-1240v2 3.4GHz, RAM 8Gb, SATA 1Tb x 2, RAID

Но при этом все сервисы засунуть в Docker да плюс еще под CentOS 7. Со словами я хотел чтобы было безопасно и все работало. Я же поклонник Ubuntu систем и разбираюсь в них довольно таки неплохо. Вот сейчас все на карантине и удаленке, а я все прорабатываю и документирую дабы ничто на работе не могло повергнуть меня в момент когда я что-то не знаю. Сказано и сделано. Сегодняшняя заметка — это перевод портала dealers.amigo.ru из Docker на нормальное использование.

Шаг №1: Операционная система (CPU = 1 cpu 2 cores, HDD = 50, RAM = 2Gb) Ubuntu 18.04 Server amd64, к ней применен скрипт моей базовой настройки на продуктивную работу

ekzorchik@srv-bionic:~$ hg clone --insecure https://ekzorchik@172.35.35.8/hg/dproject

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

Шаг №2: Устанавливаю репозитарий поддержки установки PHP 7.3

ekzorchik@srv-bionic:~$ sudo apt install -y software-properties-common

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

Шаг №3: Устанавливаю nginx & mariadb & php7.3:

ekzorchik@srv-bionic:~$ 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
ekzorchik@srv-bionic:~$ sudo nano /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
	worker_connections 768;
}
http {
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	server_tokens off;
	include /etc/nginx/mime.types;
	default_type application/octet-stream;
	ssl_prefer_server_ciphers on;
	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;
	gzip on;
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}
ekzorchik@srv-zabbix:~$ sudo nano /etc/php/7.3/fpm/php.ini
date.timezone = Europe/Moscow
cgi.fix_pathinfo=0
ekzorchik@srv-zabbix:~$ sudo nano /etc/php/7.3/cli/php.ini
date.timezone = Europe/Moscow
cgi.fix_pathinfo=0
ekzorchik@srv-bionic:~$ sudo systemctl enable nginx php7.3-fpm
ekzorchik@srv-bionic:~$ sudo php-fpm7.3 -t
[30-Mar-2020 14:24:33] NOTICE: configuration file /etc/php/7.3/fpm/php-fpm.conf test is successful
ekzorchik@srv-bionic:~$
ekzorchik@srv-bionic:~$ sudo mysql_secure_installation

Enter current password for root (enter for none): 712mbddr@
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

Шаг №4: Проверяю, что у меня выполняются php-скрипты

ekzorchik@srv-bionic:~$ sudo nano /var/www/html/info.php

<?php phpinfo(); ?>;

ekzorchik@srv-bionic:~$ sudo chown -R www-data:www-data /var/www/html/

ekzorchik@srv-bionic:~$ sudo chmod -R 755 /var/www/html/

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

http://172.33.33.6/info.php — скрипт не выполняется, а скачивается. Это значит что nginx не понимает/не настроен на работу с php скриптами. Исправляю это дело:

ekzorchik@srv-bionic:~$ sudo nano /etc/nginx/sites-available/default
server {
	listen 80 default_server;
	#listen [::]:80 default_server;
	root /var/www/html;
	index index.html index.htm index.nginx-debian.html;
	server_name _;
	location / {
		try_files $uri $uri/ =404;
	}
	location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $request_filename;
		include fastcgi_params;
	}
}
ekzorchik@srv-bionic:~$ 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-bionic:~$ 
ekzorchik@srv-bionic:~$ sudo systemctl restart nginx php7.3-fpm

Проверяю: http://172.33.33.6/info.php

Результат исполнения php-скриптов через Nginx

Шаг №5: Создаю базу, пользователя и пароль под сервис:

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

ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ -e "create database db_dealers character set utf8mb4 collate utf8mb4_unicode_ci"

ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ -e "create user 'us_dealers'@'localhost' identified by '612mbddr@'"

ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ -e "grant all on db_dealers.* to 'us_dealers'@'localhost';"

ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ -e "flush privileges"

Отобразить какие привилегии у пользователя us_dealers

ekzorchik@srv-bionic:~$ sudo mysql -u us_dealers -p612mbddr@ -e "show grants"
+-------------------------------------------------------------------------------------------------------------------+
| Grants for us_dealers@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'us_dealers'@'localhost' IDENTIFIED BY PASSWORD '*CECC15C42396D57A6401A98CB92227E2C21A1092' |
| GRANT ALL PRIVILEGES ON `db_dealers`.* TO 'us_dealers'@'localhost'                                                |
+-------------------------------------------------------------------------------------------------------------------+
ekzorchik@srv-bionic:~$

Шаг №6: Проверяю, что PHPсценарии взаимодействуют с созданной базой данных:

ekzorchik@srv-bionic:~$ sudo nano /var/www/html/db-connect-test.php

<?php

$servername = "localhost";

$database = "db_dealers";

$username = "us_dealers";

$password = "612mbddr@";

// Create connection

$conn = mysqli_connect($servername, $username, $password, $database);

// Check connection

if ($conn->connect_error) {

die("Connection failed: " . $conn->connect_error);

}

echo "Connected successfully \n";

mysqli_close($conn);

?>

ekzorchik@srv-bionic:~$ php -f /var/www/html/db-connect-test.php

Connected successfully

ekzorchik@srv-bionic:~$

ekzorchik@srv-bionic:~$ sudo chown -R www-data:www-data /var/www/html/

ekzorchik@srv-bionic:~$ sudo chmod -R 755 /var/www/html/

Отлично, работает соединение.

Шаг №7: Делаю бекап с CentOS 7 и передаю его на Ubuntu 18.04 Server

root@ekzorchik.ru [/root] #uname -a

Linux ekzorchik.ru 3.10.0-1062.18.1.el7.x86_64 #1 SMP Tue Mar 17 23:49:17 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

root@ekzorchik.ru [/root] #cat /etc/os-release

NAME="CentOS Linux"

VERSION="7 (Core)"

ID="centos"

ID_LIKE="rhel fedora"

VERSION_ID="7"

PRETTY_NAME="CentOS Linux 7 (Core)"

ANSI_COLOR="0;31"

CPE_NAME="cpe:/o:centos:centos:7"

HOME_URL="https://www.centos.org/"

BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"

CENTOS_MANTISBT_PROJECT_VERSION="7"

REDHAT_SUPPORT_PRODUCT="centos"

REDHAT_SUPPORT_PRODUCT_VERSION="7"

root@ekzorchik.ru [/root] #

root@ekzorchik.ru [/root] #/usr/bin/docker exec -i DeaSQL sh -c 'exec mysqldump -v --insert-ignore --skip-lock-tables --single-transaction=TRUE -uroot -p"PASSWORD" dealers.ekzorchik.ru '| /usr/bin/gzip > /home/ekzorchik/dealers.ekzorchik.ru_06_04_2020.sql.gz

root@ekzorchik.ru [/root] #scp -P 38555 /home/ekzorchik/dealers.ekzorchik.ru_06_04_2020.sql.gz ekzorchik@NEW_HOST:/home/ekzorchik/

root@ekzorchik.ru [/root] #/usr/bin/tar -zcf dealers.ekzorchik.ru.files.tar.gz /var/lib/docker/volumes/dealers_files/_data#

root@ekzorchik.ru [/home/backup] #scp -P 38555 /home/backup/dealers.ekzorchik.ru.files.tar.gz ekzorchik@NEW_HOST:/home/ekzorchik/

Шаг №8: Восстанавливаю бекап в созданную базу:

ekzorchik@srv-bionic:~$ gzip -d dealers.ekzorchik.ru_06_04_2020.sql.gz

ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ db_dealers < dealers.ekzorchik.ru_06_04_2020.sql

Шаг №9: Создаю каталог сайта и копирую в него все файлы из бекапа

ekzorchik@srv-bionic:~$ sudo mkdir /var/www/html/dealers

ekzorchik@srv-bionic:~$ gzip -d dealers.ekzorchik.ru.files.tar.gz

ekzorchik@srv-bionic:~$ tar xf dealers.ekzorchik.ru.files.tar

ekzorchik@srv-bionic:~$ sudo cp -Rf var/lib/docker/volumes/dealers_files/_data/* /var/www/html/dealers/

или так:

root@ekzorchik.ru [/root] #./dbackup

root@ekzorchik.ru [/root] #ls /home/ekzorchik/backup/130420/dealers

./ ../ dealers.ekzorchik.ru_130420_08_58_01.sql.gz dealers.tgz volumes.tgz

root@ekzorchik.ru [/root] #scp /home/ekzorchik/backup/130420/dealers/* ekzorchik@NEW_HOST:/home/ekzorchik

ekzorchik@NEW_HOST's password:

dealers.ekzorchik.ru_130420_08_58_01.sql.gz 100% 258MB 11.2MB/s 00:23

dealers.tgz 100% 880KB 9.5MB/s 00:00

volumes.tgz 100% 37MB 11.2MB/s 00:03

root@ekzorchik.ru [/root] #

Шаг №10: Правлю параметры работы сайта на созданную базу, пользователя и пароль:

ekzorchik@srv-bionic:~$ sudo nano /var/www/html/dealers/imu/pass.php

<?php

/*

$DBHOST=getenv("DB_HOST");

$DBUSER=getenv("DB_USERNAME");

$DBPASS=getenv("DB_PASSWORD");

$DBNAME=getenv("DB_DATABASE");

$DBSYSN=getenv("DB_SYSN");

$OpenDBlink;

$log_no=getenv("DEALERS_DISABLE_LOG");

$FIRST_PARAM_PAGE=getenv("DEALERS_FIRST_PAGE");

$ORDER_LIMIT=getenv("DEALERS_ORDER_LIMIT");

$ORDER_LIMIT_GI=getenv("DEALERS_ORDER_LIMIT_GI");

*/

$DBHOST='localhost';

$DBUSER='us_dealers';

$DBPASS='612mbddr@';

$DBNAME='db_dealers';

$DBSYSN='Amigo';

$OpenDBlink;

$log_no=1;

$FIRST_PARAM_PAGE='?NEWS=ALL';

$ORDER_LIMIT=300;

$ORDER_LIMIT_GI=300;

?>

Шаг №11: Создаю конфигурацию сайта для Webсервиса nginx:

ekzorchik@srv-bionic:~$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/dealers.conf
ekzorchik@srv-bionic:~$ sudo unlink /etc/nginx/sites-enabled/default
ekzorchik@srv-bionic:~$ sudo nano /etc/nginx/sites-available/dealers.conf
server {
	listen 80 default_server;
#	listen [::]:80 default_server;
	root /var/www/html/dealers;
	index index.php index.html;
#	client_max_body_size 5m;
	server_name 172.33.33.6;
	location / {
		try_files $uri $uri/ =404;
	}

	location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $request_filename;
		include fastcgi_params;
	}
	location ~ ^/ADMIN {
		auth_basic "Admin Area";
		auth_basic_user_file /var/www/html/dealers/ADMIN/.htpasswd;
	}
		location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|pss|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|html|htm)$ {
        expires 7d;
	}
	error_log /var/log/nginx/dealers-error.log;
	access_log /var/log/nginx/dealers-access.log;
}
ekzorchik@srv-bionic:~$ sudo ln -s /etc/nginx/sites-available/dealers.conf /etc/nginx/sites-enabled/dealers.conf
ekzorchik@srv-bionic:~$ 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-bionic:~$ 
ekzorchik@srv-bionic:~$ sudo chown -R www-data:www-data /var/www/html/dealers/
ekzorchik@srv-bionic:~$ sudo chmod -R 755 /var/www/html/dealers/
ekzorchik@srv-bionic:~$ sudo systemctl restart nginx php7.3-fpm

Шаг №12: Проверяю, как будет работать при обращении на URL: http://172.33.33.6

А то, что запросы к таблицам базы данных идут в верхнем регистре, а именование таблиц в самой базе в нижнем

Так вот она первая ошибка или недопонимание, как происходит процесс развертывания:

А то, что запросы к таблицам базы данных идут в верхнем регистре, а именование таблиц в самой базе в нижнем, поправляю:

ekzorchik@srv-bionic:~$ sudo nano /etc/mysql/my.cnf

[client-server]

!includedir /etc/mysql/conf.d/

!includedir /etc/mysql/mariadb.conf.d/

[mysqld]

lower_case_table_names=1

ekzorchik@srv-bionic:~$ sudo systemctl restart mysql

ekzorchik@srv-bionic:~$ sudo systemctl status mysql

После игнорирования регистра в запросах баз данных что-то отображается

Так осталось разобраться, как передать кодировку, вот к примеру если бы у меня был Web-сервис Apache2:

ekzorchik@srv-bionic:~$ cat /var/www/html/dealers/.htaccess

#AddHandler application/x-httpd-php .php .html .htm .xml .pss

#php_value max_input_vars 60000

php_value default_charset cp1251

но для Web-сервиса Nginx и будет все в шоколаде

Решение:

ekzorchik@srv-bionic:~$ sudo nano /etc/nginx/sites-available/dealers.conf
server {
	listen 80 default_server;
#	listen [::]:80 default_server;
	root /var/www/html/dealers;
	index index.php index.html;
#	client_max_body_size 5m;
	server_name 172.33.33.6;
	add_header Content-Type "text/html; charset=windows-1251";
	location / {
		try_files $uri $uri/ =404;
	}

	location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $request_filename;
		include fastcgi_params;
	}
	location ~ ^/ADMIN {
		auth_basic "Admin Area";
		auth_basic_user_file /var/www/html/dealers/ADMIN/.htpasswd;
	}
		location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|pss|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|html|htm)$ {
        expires 7d;
	}
	error_log /var/log/nginx/dealers-error.log;
	access_log /var/log/nginx/dealers-access.log;
}
ekzorchik@srv-bionic:~$ 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-bionic:~$ sudo systemctl restart nginx php7.3-fpm

Результат:

Портал развернут, кодировка и нижний регистр.

Работает, авторизуюсь и все на русском, ошибок пока нет.

Шаг №13: Для отправки уведомление устанавливаю пакет ssmtp:

ekzorchik@srv-bionic:~$ sudo apt-get install -y ssmtp

Шаг №14: Есть еще доступ в /ADMIN

ekzorchik@srv-bionic:~$ nano adminpasswd

#!/bin/bash

read -p "Enter username: " username

printf "${username}:`openssl passwd -apr1`\n" >> /var/www/html/dealers/ADMIN/.htpasswd

ekzorchik@srv-bionic:~$ sudo ./adminpasswd

Enter username: test

Password: test

Verifying - Password: test

ekzorchik@srv-bionic:~$ cat /var/www/html/dealers/ADMIN/.htpasswd

test:$apr1$P75y9yEX$XDFXE//5.aPeDP5pW7wfc.

А нет когда указываю в http://172.33.33.6/ADMIN логин и пароль (test:test) то получаю ошибку

Error 503

либо другую, решение пришло не сразу, т.к. никто толком не знает как работает данный сайт. Глубокий вдумчивый анализ вывел, что после авторизации (Basic Auth) тоже идет взаимодействие php скриптов с базой данных и нужно также указать как подключаться:

ekzorchik@srv-bionic:~$ sudo nano /var/www/html/dealers/ADMIN/pass.php
/*	$DBHOST=getenv("DB_HOST");
	$DBUSER=getenv("DB_USERNAME");
	$DBPASS=getenv("DB_PASSWORD");
	$DBNAME=getenv("DB_DATABASE");
	$DBSYSN=getenv("DB_SYSN");
*/

	$DBHOST='localhost'; 
	$DBUSER='us_dealers'; 
	$DBPASS='612mbddr@';
	$DBNAME='db_dealers';
	$DBSYSN='Amigo';
root@srv-bionic:~# cat /etc/php/7.3/fpm/pool.d/www.conf | grep -v ";\|^$"
[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
ekzorchik@srv-bionic:~$ sudo nano /etc/nginx/sites-available/dealers.conf
server {
	listen 80 default_server;
#	listen [::]:80 default_server;
	root /var/www/html/dealers;
	index index.php index.html;
#	client_max_body_size 5m;
	server_name 172.33.33.6;
	add_header Content-Type "text/html; charset=windows-1251";
	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 ~ ^/ADMIN {
		auth_basic "Admin Area";
		auth_basic_user_file /var/www/html/dealers/ADMIN/.htpasswd;
	}
		location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|pss|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|html|htm)$ {
        expires 7d;
	}
	error_log /var/log/nginx/dealers-error.log;
	access_log /var/log/nginx/dealers-access.log;
}
ekzorchik@srv-bionic:~$ sudo systemctl restart nginx php7.3-fpm

Шаг №15: Пожелание от Руководителя, Хочет еще phpmyadmin

ekzorchik@srv-bionic:~$ sudo apt-get install phpmyadmin
ekzorchik@srv-bionic:~$ sudo update-alternatives --set php /usr/bin/php7.3
Web server to reconfigure automatically: OK (не выбираем apache2 & lighttpd)
ekzorchik@srv-bionic:~$ sudo ln -s /usr/share/phpmyadmin/ /var/www/html/dealers/pma
ekzorchik@srv-bionic:~$ sudo chmod -R 775 /usr/share/phpmyadmin/
ekzorchik@srv-bionic:~$ sudo chown -R root:www-data /usr/share/phpmyadmin/
ekzorchik@srv-bionic:~$ cat /etc/nginx/sites-available/phpmyadmin.conf 
server {
	listen 8080;
#	listen [::]:80 default_server;
	root /var/www/html/dealers/pma;
	index index.php;
#	client_max_body_size 5m;
	server_name 172.33.33.6;
	#add_header Content-Type "text/html; charset=windows-1251";

	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;
		
	}

}
ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ -e "create user 'adm'@'%' identified by 'Aa1234567'"
(on work:
sudo mysql -u root -p712mbddr@ -e "create user 'adm'@'%' identified by '612mbddr@'"
)
ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ -e "grant all privileges on *.* to 'adm@'%'"
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '%'' at line 1
ekzorchik@srv-bionic:~$ sudo mysql -u root -p712mbddr@ -e "grant all privileges on *.* to 'adm'@'%'"
ekzorchik@srv-bionic:~$ sudo nano /etc/dbconfig-common/phpmyadmin.conf
ekzorchik@srv-bionic:~$ sudo bash -c "cat /etc/dbconfig-common/phpmyadmin.conf " | grep -v "#\|^$"
dbc_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-bionic:~$ 
ekzorchik@srv-bionic:~$ sudo systemctl restart mysql mariadb

Было замечено, что если авторизоваться в phpmyadmin то выводятся предупреждения вида:

Ошибки в phpmyadmin при обращении к таблицам базы

Проверка базы на ошибки таблиц и если они есть их исправление:

ekzorchik@srv-bionic:~$ sudo mysqlcheck --check-upgrade db_dealers --auto-repair -u root -p712mbddr@
db_dealers.agregator OK
db_dealers.atribut2item OK
db_dealers.balans OK
db_dealers.barrs OK
db_dealers.bh OK
db_dealers.chap2dilstop OK
db_dealers.chap_atributs OK
db_dealers.chapters OK
db_dealers.cloneinfo OK
db_dealers.contacts OK
db_dealers.dagents OK
db_dealers.dilers OK
db_dealers.dilers2opers OK
db_dealers.docs OK
db_dealers.ext_files OK
db_dealers.f2m_lengths OK
db_dealers.formuls OK
db_dealers.foto_files OK
db_dealers.fotos OK
db_dealers.globe_settings OK
db_dealers.iface_settings OK
db_dealers.item2param OK
db_dealers.items OK
db_dealers.items2matrix OK
db_dealers.m2aabout OK
db_dealers.m2cabout OK
db_dealers.m2pabout OK
db_dealers.maintexts OK
db_dealers.managers OK
db_dealers.market OK
db_dealers.matrix OK
db_dealers.matrix_row OK
db_dealers.news OK
db_dealers.order_positions OK
db_dealers.orderparams OK
db_dealers.orders OK
db_dealers.orders_arch OK
db_dealers.paramprices OK
db_dealers.paramrules OK
db_dealers.payments OK
db_dealers.picons OK
db_dealers.rdp OK
db_dealers.units OK
db_dealers.zona2chap OK
db_dealers.zonastop OK
db_dealers.zones OK
db_dealers.zones2dealers OK
ekzorchik@srv-bionic:~$ sudo mysql_upgrade --force -u root -p712mbddr@

А нет все равно если заходить в каждую таблицу

Проверка базы данных результата не дала

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

Нажимаем «Ctrl + W» и в строке поиска указываем:

"(count($analyzed_sql_results['select_expr'] == 1)"

изменяем на

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

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

Проблема в строке 613 устранилась если заходить в каждую таблицу через phpmyadmin.

Шаг №16: Обнаружен косяк, что идет конфликт между nginx & phpmyadmin т.к. оба висят на 80 порту.

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

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

ekzorchik@srv-bionic:~$ sudo systemctl is-active apache2

inactive

ekzorchik@srv-bionic:~$

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

ekzorchik@srv-bionic:~$ sudo reboot

После ресурс dealers работает как и должен быть.

Шаг №17: Также руководитель хочет доступ через FTP на данный портал дабы изменять какие-либо файлы сайта, добавлять и т.д.

По настройке FTP я предварительно все проработал и каждую часть оформил как заметка.

Шаг №18: С сайта происходит отправка сообщений, ниже настройка почты, для них своя заметка.

письмо пришло

Т.е. я отправку уведомление на сайте настроил.

Проверяю отправку почты через php скрипт:

ekzorchik@srv-bionic:~$:/var/www/html/dealers$ sudo nano mailer.php 
<?php
        if (mail("ekzorchik@EXCHANGE","subj","text")) {
                echo "OK\n";
        } else {
                echo "Failed\n";
        }
?>
ekzorchik@srv-bionic:~$:/var/www/html/dealers$ php -f mailer.php 
OK
ekzorchik@srv-bionic:~$:/var/www/html/dealers$

и вот сообщение которое упало ко мне в ящик:

Отправка почты с сайта работает

А теперь от имени пользователя www-data: при включенной опции Debug=YES в конфиге ssmtp сформирован лог отправки заказа на почту менеджеру.

Шаг №19: Сформировал скрипт бекапа:

ekzorchik@srv-bionic:~$ cat /etc/script/backupsite

#!/bin/bash

bfile=$(date +%d%m%y_%H_%M_%S)

efile=$(date +%d%m%y_%H_%M_%S)

BKPDIR=/home/ekzorchik/backupdilers

tar -cvPf $BKPDIR/dealers_$bfile.tgz /var/www/html/dealers

mysqldump -v --insert-ignore --skip-lock-tables --single-transaction=TRUE -u root -p712mbddr@ db_dealers | /bin/gzip > $BKPDIR/db_dealers_$efile.sql.gz

exit

ekzorchik@srv-bionic:~$ ls /home/ekzorchik/backupdilers/ -lh

итого 259M

-rw-r--r-- 1 ekzorchik ekzorchik 255M апр 13 22:27 db_dealers_130420_22_23_30.sql.gz

-rw-r--r-- 1 ekzorchik ekzorchik 3,8M апр 13 22:23 dealers_130420_22_23_30.tgz

ekzorchik@srv-bionic:~$

Итого, заметка полностью проработана и я могу уйти от этого Docker + я более не завишу от услуг Александр Кочеткова, переход был успешно проведен 13 апреля 2020 год. Теперь сайт полностью не зависим, работа через сертификаты Let's Encrypt полностью в автоматическом режиме, т.к. каждый 3 месяца они снова переполучаются и не нужно делать это вручную, как на FreeBSD 12. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.