Бывают случаи когда на новом сервере необходимо установить старую версию MySQL 5.7. Не всегда можно перевести работающий ресурс на работу с новой версией или перевод требует больших трудов в изменении кода ресурса.
Можно одновременно установить несколько версий и трудностей с этим не возникнет. Важно указывать правильно пути и названия команд управления. Например, в нашем случае используется mysql-5.7. Кроме того, на одном из серверов мне необходима была только одна версия и всю настройку я сделал с учетом что будет использоваться только mysql.
При выполнении резервной копии базы данных и востановлении не забываем указывать правильное имя сервиса.
Переходим в папку и создаем папку под данные с назначением необходимых прав:
cd /opt/mysql-5.7
mkdir ./data
chown mysql:mysql ./data
chmod 755 ./data
Произведем начальную настройку сервера MySQL:
/opt/mysql-5.7 # ./bin/mysqld --initialize --user=mysql --basedir=./ --character-set-server=utf8
= вывод команды =
2022-02-02T06:37:58.431193Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp
server option (see documentation for more details).
2022-02-02T06:38:00.706137Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-02-02T06:38:01.541332Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-02-02T06:38:01.967699Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: ab3a127b-83f2-11ec-a16b-0e4799458f07.
2022-02-02T06:38:02.022913Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-02-02T06:38:03.275737Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2022-02-02T06:38:03.275828Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2022-02-02T06:38:03.276874Z 0 [Warning] CA certificate ca.pem is self signed.
2022-02-02T06:38:03.592321Z 1 [Note] A temporary password is generated for root@localhost: zRD?OXe,5NsfvfgTI
В выводе присутствует пароль который потребуется нам позже.
Открываем и приводим к коду указанному ниже в спойлере:
vim /etc/init.d/mysql-5.7
Необходимый код файла /etc/init.d/mysql-5.7
#!/bin/sh# Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB# This file is public domain and comes with NO WARRANTY of any kind# MySQL daemon start/stop script.# Usually this is put in /etc/init.d (at least on machines SYSV R4 based# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql.# When this is done the mysql server will be started when the machine is# started and shut down when the systems goes down.# Comments to support chkconfig on RedHat Linux# chkconfig: 2345 64 36# description: A very fast and reliable SQL database engine.# Comments to support LSB init script conventions### BEGIN INIT INFO# Provides: mysql-5.7# Required-Start: $local_fs $network $remote_fs# Should-Start: ypbind nscd ldap ntpd xntpd# Required-Stop: $local_fs $network $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: start and stop MySQL# Description: MySQL is a very fast and reliable SQL database engine.### END INIT INFO# If you install MySQL on some other places than /usr/local/mysql, then you# have to do one of the following things for this script to work:## - Run this script from within the MySQL installation directory# - Create a /etc/my.cnf file with the following information:# [mysqld]# basedir=<path-to-mysql-installation-directory># - Add the above to any other configuration file (for example ~/.my.ini)# and copy my_print_defaults to /usr/bin# - Add the path to the mysql-installation-directory to the basedir variable# below.## If you want to affect other MySQL variables, you should make your changes# in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files.# If you change base dir, you must also change datadir. These may get# overwritten by settings in the MySQL configuration files.basedir=/opt/mysql-5.7datadir=
mycnf=/etc/mysql/5.7/my.cnf# Default value, in seconds, afterwhich the script should timeout waiting# for server start. # Value here is overriden by value in my.cnf. # 0 means don't wait at all# Negative numbers mean to wait indefinitelyservice_startup_timeout=900# Lock directory for RedHat / SuSE.lockdir='/var/lock/subsys'lock_file_path="$lockdir/mysql"# The following variables are only set for letting mysql.server find things.# Set some defaultsmysqld_pid_file_path=
iftest-z"$basedir"thenbasedir=/usr/local/mysql
bindir=/usr/local/mysql/bin
iftest-z"$datadir"thendatadir=/usr/local/mysql/data
fisbindir=/usr/local/mysql/bin
libexecdir=/usr/local/mysql/bin
elsebindir="$basedir/bin"iftest-z"$datadir"thendatadir="$basedir/data"fisbindir="$basedir/sbin"libexecdir="$basedir/libexec"fi# datadir_set is used to determine if datadir was set (and so should be# *not* set inside of the --basedir= handler.)datadir_set=
## Use LSB init script functions for printing messages, if possible#lsb_functions="/lib/lsb/init-functions"iftest-f$lsb_functions ; then
. $lsb_functionselse
log_success_msg(){echo" SUCCESS! $@"}
log_failure_msg(){echo" ERROR! $@"}fiPATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin"export PATH
mode=$1# start or stop[$#-ge1]&&shiftother_args="$*"# uncommon, but needed when called from an RPM upgrade action# Expected: "--skip-networking --skip-grant-tables"# They are not checked here, intentionally, as it is the resposibility# of the "spec" file author to give correct arguments only.case`echo"testing\c"`,`echo-n testing`in*c*,-n*)echo_n= echo_c= ;;*c*,*)echo_n=-n echo_c= ;;*)echo_n= echo_c='\c';;esac
parse_server_arguments(){for arg docase"$arg"in--basedir=*)basedir=`echo"$arg"|sed-e's/^[^=]*=//'`bindir="$basedir/bin"iftest-z"$datadir_set"; thendatadir="$basedir/data"fisbindir="$basedir/sbin"libexecdir="$basedir/libexec";;--datadir=*)datadir=`echo"$arg"|sed-e's/^[^=]*=//'`datadir_set=1;;--pid-file=*)mysqld_pid_file_path=`echo"$arg"|sed-e's/^[^=]*=//'`;;--service-startup-timeout=*)service_startup_timeout=`echo"$arg"|sed-e's/^[^=]*=//'`;;esacdone}
wait_for_pid (){verb="$1"# created | removedpid="$2"# process ID of the program operating on the pid-filepid_file_path="$3"# path to the PID file.i=0avoid_race_condition="by checking again"whiletest$i-ne$service_startup_timeout ; docase"$verb"in'created')# wait for a PID-file to pop into existence.test-s"$pid_file_path"&&i=''&&break;;'removed')# wait for this PID-file to disappeartest!-s"$pid_file_path"&&i=''&&break;;*)echo"wait_for_pid () usage: wait_for_pid created|removed pid pid_file_path"exit1;;esac# if server isn't running, then pid-file will never be updatediftest-n"$pid"; thenifkill-0"$pid"2>/dev/null; then
: # the server still runselse# The server may have exited between the last pid-file check and now. iftest-n"$avoid_race_condition"; thenavoid_race_condition=""continue# Check again.fi# there's nothing that will affect the file.
log_failure_msg "The server quit without updating PID file ($pid_file_path)."return1# not waiting any more.fifiecho$echo_n".$echo_c"i=`expr$i + 1`sleep1doneiftest-z"$i" ; then
log_success_msg
return0else
log_failure_msg
return1fi}# Get arguments from the my.cnf file,# the only group, which is read from now on is [mysqld]iftest-x"$bindir/my_print_defaults"; thenprint_defaults="$bindir/my_print_defaults"else# Try to find basedir in /etc/my.cnfconf=/etc/my.cnf
print_defaults=
iftest-r$confthensubpat='^[^=]*basedir[^=]*=\(.*\)$'dirs=`sed-e"/$subpat/!d"-e's//\1/'$conf`for d in$dirsdod=`echo$d|sed-e's/[ ]//g'`iftest-x"$d/bin/my_print_defaults"thenprint_defaults="$d/bin/my_print_defaults"breakfidonefi# Hope it's in the PATH ... but I doubt ittest-z"$print_defaults"&&print_defaults="my_print_defaults"fi## Read defaults file from 'basedir'. If there is no defaults file there# check if it's in the old (depricated) place (datadir) and read it from there#extra_args=""iftest-r"$basedir/my.cnf"thenextra_args="-e $basedir/my.cnf"fi
parse_server_arguments `$print_defaults$extra_args mysqld server mysql_server mysql.server`## Set pid file if not given#iftest-z"$mysqld_pid_file_path"thenmysqld_pid_file_path=$datadir/`hostname`.pid
elsecase"$mysqld_pid_file_path"in/*);;*)mysqld_pid_file_path="$datadir/$mysqld_pid_file_path";;esacficase"$mode"in'start')# Start daemon# Safeguard (relative paths, core dumps..)cd$basedirecho$echo_n"Starting MySQL"iftest-x$bindir/mysqld_safe
then# Give extra arguments to mysqld with the my.cnf file. This script# may be overwritten at next upgrade.$bindir/mysqld_safe --defaults-file="$mycnf"--datadir="$datadir"--pid-file="$mysqld_pid_file_path"$other_args>/dev/null &
wait_for_pid created "$!""$mysqld_pid_file_path"; return_value=$?# Make lock for RedHat / SuSEiftest-w"$lockdir"thentouch"$lock_file_path"fiexit$return_valueelse
log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"fi;;'stop')# Stop daemon. We use a signal here to avoid having to know the# root password.iftest-s"$mysqld_pid_file_path"then# signal mysqld_safe that it needs to stoptouch"$mysqld_pid_file_path.shutdown"mysqld_pid=`cat"$mysqld_pid_file_path"`if(kill-0$mysqld_pid2>/dev/null)thenecho$echo_n"Shutting down MySQL"kill$mysqld_pid# mysqld should remove the pid file when it exits, so wait for it.
wait_for_pid removed "$mysqld_pid""$mysqld_pid_file_path"; return_value=$?else
log_failure_msg "MySQL server process #$mysqld_pid is not running!"rm"$mysqld_pid_file_path"fi# Delete lock for RedHat / SuSEiftest-f"$lock_file_path"thenrm-f"$lock_file_path"fiexit$return_valueelse
log_failure_msg "MySQL server PID file could not be found!"fi;;'restart')# Stop the service and regardless of whether it was# running or not, start it again.if$0 stop $other_args; then$0 start $other_argselse
log_failure_msg "Failed to stop running server, so refusing to try to start."exit1fi;;'reload'|'force-reload')iftest-s"$mysqld_pid_file_path" ; thenread mysqld_pid <"$mysqld_pid_file_path"kill-HUP$mysqld_pid&& log_success_msg "Reloading service MySQL"touch"$mysqld_pid_file_path"else
log_failure_msg "MySQL PID file could not be found!"exit1fi;;'status')# First, check to see if pid file existsiftest-s"$mysqld_pid_file_path" ; thenread mysqld_pid <"$mysqld_pid_file_path"ifkill-0$mysqld_pid2>/dev/null ; then
log_success_msg "MySQL running ($mysqld_pid)"exit0else
log_failure_msg "MySQL is not running, but PID file exists"exit1fielse# Try to find appropriate mysqld processmysqld_pid=`pidof$libexecdir/mysqld`# test if multiple pids existpid_count=`echo$mysqld_pid|wc -w`iftest$pid_count-gt1 ; then
log_failure_msg "Multiple MySQL running but PID file could not be found ($mysqld_pid)"exit5eliftest-z$mysqld_pid ; theniftest-f"$lock_file_path" ; then
log_failure_msg "MySQL is not running, but lock file ($lock_file_path) exists"exit2fi
log_failure_msg "MySQL is not running"exit3else
log_failure_msg "MySQL is running but PID file could not be found"exit4fifi;;*)# usagebasename=`basename"$0"`echo"Usage: $basename {start|stop|restart|reload|force-reload|status} [ MySQL server options ]"exit1;;esacexit0
[свернуть]
Назначаем необходимые права:
chmod +x /etc/init.d/mysql-5.7
Создаем папку для конфигурации сервера и создаём файл конфигурации:
Обращаю внимание что указывается не стандартный порт для работы сервиса. Можете указать стандартный порт 3306 для работы MySQL.
Добавляем в автозагрузку и запускаем:
systemctl enable mysql-5.7
systemctl start mysql-5.7
= или одной командой =
systemctl enable --now mysql-5.7
Авторизуемся, меняем пароль и смотрим статус работы сервера MySQL:
/opt/mysql-5.7# mysql-5.7 --defaults-file=/etc/mysql/5.7/my.cnf -u root -p
Enter password: вводим пароль от root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.37
Copyright (c)2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h'for help. Type '\c' to clear the current input statement.
mysql>STATUS;
ERROR 1820(HY000): You must reset your password using ALTER USER statement before executing this statement.
= вывод нам говорит что необходимо сменить пароль и мы его меняем =
mysql>SET PASSWORD = PASSWORD('пароль');
Query OK, 0 rows affected, 1 warning (0,00 sec)= выходим =
mysql>\q
Bye
= авторизуемся с новым паролем =/opt/mysql-5.7# mysql-5.7 --defaults-file=/etc/mysql/5.7/my.cnf -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.37 MySQL Community Server (GPL)
Copyright (c)2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h'for help. Type '\c' to clear the current input statement.
mysql>STATUS;
= вывод команды =--------------
mysql-5.7 Ver 14.14 Distrib 5.7.37, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 3
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.37 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql-5.7.sock
Uptime: 2 min 15 sec
Threads: 1 Questions: 9 Slow queries: 0 Opens: 109 Flush tables: 1 Open tables: 102 Queries per second avg: 0.066--------------
mysql> \q
Bye
Заключение
Поддерживать систему в актуальном состоянии важно и нужно. Все необходимые старые версии программного обеспечения вы всегда сможете установить с небольшими усилиями.
Lnav представляет собой расширенный просмотрщик файлов журналов (log) для терминала Linux. Открывает архивные логи, отображает содержимое в режиме реального времени, возможно открыть сразу несколько логов и увидеть их наложение на одном экране.
Введение
В работе постоянно требуется просматривать логи для выявления ошибок и оптимальной настройки как системы так и разных служб. На практике я перепробовал разные утилиты, но данная программа подходит идеально для разных случаев. Устанавливается просто и не требует никаких дополнительных настроек.
Основные преимущества утилиты:
Устанавливается просто и не требует настроек,
Показывает содержание в режиме реального времени,
Позволяет открывать архивные файлы,
Производит подсветку синтаксиса,
Можно открывать несколько логов одновременно.
Установка Lnav
Утилита присутствует во всех популярных операционных системах Linux.
Более подробно о программе и работе с ней можно посмотреть на официальном сайте Lnav.
Установка из репозитория:
= Семейство Debian =
apt install lnav
= Семейство RedHat =
dnf install lnav
Работа с Lnav
В сети существует Документация по Lnav на русском языке в котором все хорошо рассказано.
Lnav понимает наиболее популярные форматов логов, таких как access логи веб сервера, syslog, dpkg, strace и другие. Программа автоматически подсвечивает, позволяет быстро делать какие-то выборки. Например, посмотреть все ошибки в нужном логе, показать по ним статистику, вывести информацию по какой-то службе и т.д. и т. п.
В Lnav есть возможность открыть сразу несколько логов и увидеть их наложение на одном экране. Это удобно, когда надо что-то расследовать.
Открываем сразу два лога такой командой:
# В случае если находимся в нужной папке
/var/www/sevo44.ru/log # lnav sevo44.ru-access.log sevo44.ru-error.log
# С указанием полного пути
lnav /var/www/sevo44.ru/log/sevo44.ru-access.log /var/www/sevo44.ru/log/sevo44.ru-error.log
Утилита выстроит строки обоих логов в порядке времени событий.
Заключение
Конечно для более профессионального подхода в изучении логов лучше использовать такое решение как Elastic Stack, но пока его нет или не подключили новый ресурс использование утилиты Lnav лучшее решение.
Кроме того не надо путать мониторинг логов и мониторинг параметров системы это совсем разные вещи. Например я лично для мониторинга разных параметров системы активно и давно использую систему Zabbix.
Установим и настроим 1С:Предприятие 8.3 на OC Astra Linux. Работать программа может на свободном терминальном сервере XRDP для удобного подключения по протоколу RDP. Из всех вариантов этот вариант меня порадовала больше всего.
Введение
Произведём установку и настройку программы «1С:Предприятие 8.3» c конфигурацией «Бухгалтерия предприятия (базовая)» с программной и аппаратной лицензией. Установка будет производиться на сервер работающий под управлением Astra Linux Common Edition 2.12.44. Сделаем удаленный доступ с помощью XRDP который позволит одновременно сидеть на сервере нескольким пользователям по протоколу RDP.
Требования, которые предъявляет разработчик к системам на которых может работать их продукты, вы можете найти на странице Системные требования «1С:Предприятия 8».
После установки программы, в справке по пути: «1С:Предприятие» — «Работа пользователя» — «Особенности работы в Linux», можно ознакомиться с нюансами работы системы.
Многие компании, занимающиеся 1С, будут советовать вам приобрести для работы в системе именно систему Windows, обосновывая это большей надежностью и удобством. Имейте в виду, что при продаже Windows продавец, согласно политике компании, получает приличное вознаграждение, что вызывает у многих естественное желание продать побольше. В ряде случаев действительно придется использовать систему Windows, но не факт, что она подойдёт именно вам.
Платформа и конфигурация 1С:Предприятие для Linux
В документах, которые вы получили после приобретения программного продукта семейства 1С, вы найдете регистрационные данные которые необходимы для регистрации на портале поддержки 1C:Портал поддержки. После регистрации и активации своего продукта, вы получите доступ для скачивания всего необходимого.
Иногда компании, в которых вы приобретаете продукт, может зарегистрировать продукт за вас. Уточните этот момент перед тем, как зарегистрируетесь сами.
Различие Базовой и Проф конфигурации
К выбору версии надо подходить очень аккуратно и четко понимать, что и в каком виде нужно именно вам. Не стоит идти на уловки компаний — дилеров, не спешить с приобретением ПРОФ версии и подписки ИТС.
Рассмотрим кратко основные отличия:
Базовая версия — при этом выборе вы можете вести только одну организацию в одной базе. Таких баз можно вести сколько угодно, но для каждой организации будет своя база. Плюс заключается в том, что вы всегда сможете сами обновляться с официального сайта поддержки, не прибегая к помощи сторонних специалистов. Но есть и минус — работать сможет только один пользователь. Ни о какой совместной работе в базе нескольких человек, не может быть и речи.
Если вы не планируйте вносить изменения в конфигурацию, то и нет необходимости работать с базой одновременно нескольким пользователям. В этом случае базовая версия именно то, что вам и нужно.
ПРОФ версия — как только вы перешли на эту версию, обновления будут доступны только при подписке ИТС. Появится возможность вносить изменения в конфигурацию, работать нескольким пользователям и вести несколько фирм в одной базе.
Важно иметь в виду, что при переходе на ПРОФ версию, вы полностью будете зависеть от той компании, в которой оформили подписку ИТС. Таких компаний много, важно выбрать хорошую и надёжную. Лучше, если эту компанию вам порекомендуют те, которым вы доверяете.
Вот вопрос-ответ службы поддержки 1С на два моих вопроса.
Версию ПРОФ в отличии от БАЗОВОЙ можно обновлять только при активной подписке на ИТС? — Да.
В моем случае, для тестирования без приобретения подписки ИТС, я не смогу обновлять версию ПРОФ легальными способами? — Да.
В практике мне приходилось сталкиваться с тем, что иногда компания использует старую версию программы (например 8.1) и хочет перейти и обновиться до новой версии 8.3, но продавец у которого они приобретали продукт говорит, что надо купить новую версию. Каково же было их удивление, когда я обновлял им программу до последней версии и показывал, как надо обновляться в дальнейшем.
Программная и аппаратная лицензия 1С:Предприятие
Это, пожалуй, один из самых важных моментов, который нужно учесть сразу. Программная лицензия стоит дешевле, но вызывает много проблем при смене оборудования. Как правило, отдел лицензирования всегда идёт на встречу и может предоставить даже большее количество активаций при определенных условиях, но это не всегда удобно. Использование USB ключей всё упрощает и развязывает руки при обновлении оборудования.
В практике встречался случай, когда компания приобрела программную лицензию на 5 пользователей и активировала её не для сервера, а для каждого пользовательского компьютера. Поначалу все было нормально, но когда база увеличилась, начались проблемы со скоростью. Использование скоростного диска SSD и перевода сети на 1 Gbit сильно улучшило ситуацию.
Варианты разворачивания сети 1С:Предприятие
Все хотят работать в программе 1С быстро, как на предприятии, так и дома. Все это возможно оптимально настроить различными способами.
Существует два вида работы базы данных:
Файловая база данных — самый простой вариант и подходит для небольших организаций идеально. Этот вариант мы и рассмотрим в данной статье.
База данных SQL — более сложный вариант и ориентирован на большое количество пользователей. При небольшом количестве пользователей нет смысла использовать такой вариант. Для работы будет нужна серверная лицензия, она стоит около 80 000 рублей.
Внимание!
Сервер 1С:Предприятия 8.3 под Linux может запуститься и без лицензии, при этом он позволяет иметь в кластере только один рабочий процесс, который допускает не более 12 клиентских соединений. Однако такая работа сервера не дает права использования программного обеспечения сервера 1С:Предприятия без покупки продукта «1С:Предприятие 8.3 Лицензия на сервер». Об этом сказано в лицензионном соглашении любой основной поставки 1С:Предприятия.
Оптимальное использование файловой базы данных 1C:Предприятие
Когда вы используйте файловую базу данных, расположенную в локальной сети, и клиенты подключаются к ней, скорость работы в программе будет зависеть от скорости локальной сети и от мощности самого компьютера. Для небольших баз такой вариант приемлем, но очень быстро базы увеличиваются и работа в программе становится все медленней и медленней, за исключением компьютера на котором расположена сама база.
Существует два варианта улучшения скорости работы в файловой базе данных:
Использование локальной сети 1 Gbit и диска SSD для базы данных — на какой-то момент это улучшит положение, но как показывает практика -ненадолго.
Использование терминального сервера — при таком варианте приобретается один мощный компьютер, на котором устанавливается программа, а все пользователи удалено подключаются к компьютеру используя свой профиль. Получится, что на одном компьютере будет одновременно несколько пользователей, не видя друг друга. По сети передается только картинка, а вся работа производится на сервере. Можно настроить удаленный доступ из интернета, и тогда избранные пользователи смогут используя медленный интернет спокойно работать в программе с домашнего компьютера.
Конечно, вы можете приобрести серверную версию Windows, так как только там легально можно использовать терминальный режим. Некоторые, по многочисленным советам в сети, переводят обычные версии Windows в терминальный режим, используя нелегальные варианты. Мой выбор — терминальный сервер Linux, который удовлетворил все мои требования и пожелания.
Установка терминального сервера XRDP
Устанавливаем сервер для возможности удаленного доступа к серверу несколькими пользователями:
apt install xrdp xorgxrdp
Проверяем статус:
# systemctl status xrdp
● xrdp.service - xrdp daemon
Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-04-19 20:59:44 MSK; 2min 27s ago
Docs: man:xrdp(8)
man:xrdp.ini(5)
Main PID: 2443 (xrdp)
CGroup: /system.slice/xrdp.service
└─2443 /usr/sbin/xrdp --nodaemon
апр 19 20:59:44 1c systemd[1]: Starting xrdp daemon...
апр 19 20:59:44 1c systemd[1]: Started xrdp daemon.
апр 19 20:59:44 1c xrdp[2443]: [INFO ] starting xrdp with pid 2443
апр 19 20:59:44 1c xrdp[2443]: [INFO ] address [0.0.0.0] port [3389] mode 1
апр 19 20:59:44 1c xrdp[2443]: [INFO ] listening to port 3389 on 0.0.0.0
апр 19 20:59:44 1c xrdp[2443]: [INFO ] xrdp_listen_pp done
Всё работает и добавлено на автозагрузку при запуске системы.
Используя протокол RDP подключаемся к серверу и работаем.
Так быстро я еще никогда не разворачивал XRDP. Всё работает из коробки и не требует никаких дополнительных действий.
Установка 1С Предприятие 8.3 на Astra Linux
Пошагово пройдем путь установки программы на систему Astra Linux.
Предварительная подготовка
Для установки необходимо в консоли зайти под пользователем root:
sevo44@orel-astra:~$ su -
Пароль:
root@orel-astra:~#
В случае если вы забыли пароль или его просто нет, необходимо выполнить в консоли команду которая создаст новый пароль:
passwd root
Создадим папки на сервере, в которую разместим файлы для установки платформы, программного обеспечения для работы с Hasp ключами USB и папку баз данных:
mkdir /root/srv1cv83-install
mkdir /home/base1c
Установим пакеты, которые необходимы для установки и корректной работы программы:
Скачиваем с сайта поддержки 1С «Технологическая платформа 1С:Предприятия (64-bit) для Linux».
Распаковываем архив в папку srv1cv83-install с помощью консоли:
cd /root/srv1cv83-install
tar xvzf server64_8_3_20_1789.tar.gz
ls
= вывод команды =
LibericaJDK-8-9-10-licenses.pdf Liberica-Notice.txt setup-full-8.3.20.1789-x86_64.run server64_8_3_20_1789.tar.gz
В активировании программной лицензии есть один нюанс. Когда вы запустите программу, она сообщит вам о необходимости её активировать, если вы начнете вводить пин-код ,то он окажется на 1 знак больше, чем требуемое количество.
Для активации однопользовательской программной лицензии, необходимо запустить программу 1С:Предприятие под пользователем root, только тогда при активации появится необходимое поле.
Установка HASP для работы с USB ключом
Программное обеспечение для работы с USB ключом будем использовать от компании Etersoft.
cd /root/srv1cv83-install
wget http://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/AstraLinux/orel/haspd_8.23-eter2astra_amd64.deb
Установим:
dpkg -i haspd_*.deb
= вывод команды =
Выбор ранее невыбранного пакета haspd.
(Чтение базы данных … на данный момент установлено 217439 файлов и каталогов.)
Подготовка к распаковке haspd_8.23-eter2astra_amd64.deb …
Распаковывается haspd (8.23-eter2astra) …
Настраивается пакет haspd (8.23-eter2astra) …
Обрабатываются триггеры для systemd (232-25+deb9u12astra.ce9) …
В системе Proxmox проброс нужного порта в виртуальную машину делается очень просто:
Для проверки работы ключа откроем браузер по ссылке http://127.0.0.1:1947 и смотрим появление нашего ключа в списке:
Создание файловой базы данных 1C:Предприятие
В Linux для создания баз из шаблона вначале необходимо установить шаблон в необходимую папку, а потом указать в настройке откуда брать шаблоны.
Для этих действий необходимо чтобы в системе была установлена Wine. К сожалению, без этого нельзя запустить файлы exe. Других способов установки базы из шаблона в системе Linux я не нашел.
В моем случае, я скопировал папку с базой в нужное место и выдал необходимые права:
chmod -R 777 /home/base1c
Права надо выдавать только после того, как скопируете все необходимые базы 1С!
Запуск 1C:Предприятие
В меню появилась ссылка на запуск программы:
При первом запуске появляется сообщение о необходимости установки шрифтов. В моем случае все шрифты уже были и отображались корректно, но при сохранении документов в PDF были проблемы с отображением шрифтов.
Переходим в необходимое место и смотрим информацию которая там указывается.
Проблемы со шрифтами
Не сразу заметил проблему со шрифтами при экспорте в pdf файл. Часть текста обрезалась, и информация была не полной. Можно ставить пакеты со шрифтами, но достаточно иметь шрифты по пути /usr/share/fonts/msttcorefonts.
Скачиваем и распаковываем архив в нужное место под пользователем root:
cd /usr/share/fonts
wget https://sevo44.ru/sevo44/download/msttcorefonts.tar.gz
tar xvzf msttcorefonts.tar.gz
Можно установить специальный пакет, который установит необходимые шрифты:
Какой вариант выбрать, решать вам. Надеюсь, разработчики рано или поздно для версии Linux перестанут использовать эти шрифты.
Вот так это выглядит, когда мы еще не установили необходимые шрифты:
С установленными шрифтами видно, что шрифт стал другой, но это малозаметно:
Обновление платформы 1С:Предприятие в Linux
Обновление производится по тому же принципу установки программы, описанному выше. Скачиваем новые пакеты и заново устанавливаем.
Обновление базовой конфигурации 1C:Предприятие в Linux
Обновление для ПРОФ — это совсем другая история.
Обновлять конфигурацию необходимо в режиме конфигуратора базы. Конфигурация — Обновить конфигурацию — Поиск доступных обновлений указываем наш логин и пароль от личного кабинета пользователя, и обновляемся.
Обязательно перед обновлением конфигурации нужно знать, какая необходима минимальная версия платформы. В противном случае, вы не зайдете в базу пока не обновите платформу.
Резервное копирование
Механизм резервного копирования в самой программе не работает.
Общий план резервного копирования следующий:
Останавливаем все запущенные процессы 1С;
Делаем резервную копию методом архивирования папки с базой.
Обычно я держу на сервере только 3 последние резервных копии, так как другой сервер забирает резервные копии и хранит их за гораздо больший период.
Создаем скрипт, который будет выполнять все необходимые действия:
vim /root/bin/backup1c.sh
= необходимый код =
#!/bin/sh
# Дата в формате 2015-09-29_04-10
date_time=`date +"%Y-%m-%d_%H-%M"`
# Путь сохранения копии
bk_dir='/root/backup1c'
# Вначале смотрим в Диспетчер задач название приложения
# затем смотрим вывод -> ps aux | grep 1cv8c
# Выполняем команду, которая завершит все процессы
# Если не писать никакого сигнала, то команда выполнит
# SIGTERM - немедленно завершает процесс, но обрабатывается программой,
# поэтому позволяет ей завершить дочерние процессы и освободить все ресурсы.
# killall - завершит все имеющиеся процессы с таким именем
# Закрываем 1с
killall 1cv8c
# Создаем файл с датой создания базы
echo `date +"%Y-%m-%d_%H-%M"` > /root/backup1c/timestamp
# Создаем базу через 10 секунд
sleep 10/bin/tar -cvzf $bk_dir/dolotov1cbase_$date_time.tar.gz /home/base1c/dolotov1cbase/*
# Удаляем копии старше 3-x дней
/usr/bin/find $bk_dir -type f -mtime +1 -exec rm {} \;
После создания скрипта делаем его исполнительным:
chmod +x /root/bin/backup1c.sh
Для проверки обязательно запустим и проверим, как он отработает:
После успешной проверки добавляем скрипт на автоматическое выполнение по расписанию.
Открываем необходимый файл и добавляем нужный код:
vim /etc/crontab
= необходимый код =
### Backup1С
# ежедневно в 3 часа
00 3 * * * root /root/bin/backup1c.sh >/dev/null 2>&1
Согласно команде каждый день в 3:00 будет выполняться скрипт для создания ежедневного бэкапа.
Заключение
Установку и настройку 1С:Предприятие я выполнял на разных системах, но установка на Astra Linux была самая простая. Настройка терминального сервера XRDP для подключения пользователей по протоколу RDP оказалась беспроблемной, так как всё заработало без дополнительного вмешательства в настройку.
Может быть в системе Astra Linux из коробки и не так много программ в репозиториях, но то, что они все работают и стабильные — это факт. Графическая оболочку Fly, которая используется только в этом дистрибутиве, очень хорошо сделана, и все продумано максимально, но самое главное в этом то, что куда бы я не заходил, всё работает и нет ошибок.
Считаю, что использование Astra Linux под 1C:Предприятие — самый лучший вариант.
Несколько версий PHP на сервере Linux удобно в работе и последующем обслуживании. В статье пример на базе Rocky Linux , но вы можете использовать его и для других систем использующих репозиторий RHEL.
Введение
Для любого системного администратора обновление версий PHP является задачей не простой и очень ответственной. При использовании на сервере одной версии php в процессе перехода на новую версию приходиться делать много действий необходимых для безотказной работы ресурса на период обновления. Сюрпризы могут подстерегать на любом моменте и спрогнозировать их крайне сложно.
В этой статье я описал механизм того как можно совершенно спокойно обновлять версии PHP не создавая проблем в работе пользователей с рабочим ресурсом.
Предварительная подготовка
Для работы с разными версиями php на одном сервере нам необходимо произвести предварительную настройку системы.
Перед началом использования репозитория Remi (на базе которого мы и будем устанавливать разные версии PHP) необходимо подключить репозиторий Epel созданный группой специалистов операционной системы Fedora. Пакеты из Epel репозитория никогда не конфликтуют и не переустанавливают базовые пакеты RHEL.
Установка Epel для дистрибутивов на базе RHEL производится командой:
dnf install epel-release
dnf update
Установка и настройка Nginx
При написании статьи учитывается что настройка Nginx была произведена согласно статьи NGINX установка и настройка.
Посмотрим какие варианты присутствуют в базовой версии:
# dnf module list php
Последняя проверка окончания срока действия метаданных: 1:27:39 назад, Ср 10 ноя 2021 11:34:45.
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language
Подсказка: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Видим что в базовой версии по умолчанию находится версия 7.2 её и будем устанавливать.
Установим php и наиболее популярные модули, которые могут пригодится в процессе эксплуатации веб сервера.
Проверим установленную версию выполнив команду в консоли сервера:
php -v
= вывод команды =
PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.24, Copyright (c) 1999-2018, by Zend Technologies
Для того чтобы связать nginx и php будем использовать мост php-fpm. Основной файл настройки находится по пути /etc/php-fpm.conf и там должен быть параметр include=/etc/php-fpm.d/*.conf говорящий о том где лежат настройки пулов.
Запускаем php-fpm и добавляем в автозагрузку:
systemctl enable --now php-fpm
Проверяем, запустился ли он.
systemctl status php-fpm
= вывод команды =
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2021-11-10 13:51:24 EST; 16s ago
Main PID: 7567 (php-fpm)
Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 6 (limit: 23681)
Memory: 17.3M
CGroup: /system.slice/php-fpm.service
├─7567 php-fpm: master process (/etc/php-fpm.conf)
├─7568 php-fpm: pool www
├─7569 php-fpm: pool www
├─7570 php-fpm: pool www
├─7571 php-fpm: pool www
└─7572 php-fpm: pool www
ноя 10 13:51:24 localhost.localdomain systemd[1]: Starting The PHP FastCGI Process Manager...
ноя 10 13:51:24 localhost.localdomain systemd[1]: Started The PHP FastCGI Process Manager.
Из вывода видно сервис успешно работает.
Настройки php находятся по стандартному пути /etc/php.ini а настройки пулов лежат в папке /etc/php-fpm.d/.
Использовать порт или сокет решать вам, но говорят что сокет использовать лучше. Запустим php-fpm через unix сокет. Для этого переименуем конфиг /etc/php-fpm.d/www.conf, создадим новый и приводим к следующему виду:
Вы можете для каждого сайта создать свой пул и указать там все необходимые параметры. Например, для каждого сайта я создаю свой пул для гибкости настройки и благодаря этому я настраиваю корректный доступ к файлам по sftp. Более подробно про настройку доступа по SFTP прочтите в статье SFTP настройка для веб хостинга.
В настройках nginx для сайта необходимо указать требуемый пул.
Например, прописать код fastcgi_pass unix:/run/php-fpm/www.sock; в секции location ~ \.php$
Настройка базовой версии закончена и приступаем к установке других версий php.
Версии PHP от Remi
Есть замечательный человек Remi Collet, который создал репозиторий пользующийся огромной популярностью у пользователей операционных систем на базе RHEL. Познакомится с новостями репозитория можно на блоге Remi Collet.
Посмотрим список всех доступных вариантов установки php:
dnf module list php
= вывод команды =
Safe Remi's RPM repository for Enterprise Linux 8 - x86_64 1.6 MB/s | 2.0 MB 00:01
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
Подсказка: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Из вывода выше видно что появилась возможность установить версии от 7.2 до 8.1 из реппозитрия Remi.
В выводе нет информации о возможности установить PHP версии 5.6, но сделать это можно по аналогии как мы будем устанавливать версии ниже. Достаточно указать код #dnf install php56 php56-php-fpm
Для чистоты эксперимента и наглядности установим две версии 7.4 и 8.1
В результате мы получим на сервере 3 разных версии php.
Установка версий PHP от Remi
Активируем репу php remi-7.4, для этого выполняем команды:
Обращаю особое внимание на указание именно php74 перед требуемыми пакетами. Только при таком названии пакетов установятся необходимые и не возникнет путаницы.
Сразу установим версию php 8.1 из репозитория Remi и выключим активную версию:
В случае если вы не хотите смотреть всю информацию можете использовать такой код файла info.php в котором выбрано отображение информации только о загруженных модулях:
<?php
// Показывать всю информацию, по умолчанию INFO_ALL
//phpinfo();
// Показывать информацию только о загруженных модулях.
phpinfo(INFO_MODULES);
?>
Конфигурации NGIN для сайтов
Создадим для для каждого сайта свои конфигурационные файлы:
Используя этот код можно использовать различные ресурсы с разными параметрами php использующими одну версию php.
Проверка работы
Для проверки нам необходимо или прописать для каждого тестируемого ресурса DNS или на компьютере с которого производим проверку внести необходимые правки. В нашем случае система с которой проводится проверка работает на базе Linux и там необходимо внести следующие правки:
vim /etc/hosts
= необходимые добавления =
192.168.0.206 php72.loc
192.168.0.206 php74.loc
192.168.0.206 php81.loc
Для проверки необходимо в строке браузера вписать путь http://ДОМЕН/info.php.
Вот так выглядит вывод для разных сайтов:
Обновление версий PHP
Обновление версий происходит обычным механизмом обновления и последующим перезапуском необходимых сервисов.
Для нашего случая команды будут иметь такую последовательность:
Используя разные версии php на одном ресурсе можно спокойно перевести работу ресурса на новую версию и в случае проблем в работе оперативно вернутся на старую.
При использовании не сервере одной версии при переходе на другую версию необходимо было выполнять следующие действия:
Остановка php-fpm,
Вывод и удаление всех имеющихся пакетов php,
Удаление старого и активирование нового репозитория требуемой версии php,
Установка новой версии,
Проверка настрое из старой версии,
Запуск php-fpm и проверка сервиса.
Если ресурс рабочий выполнять все действия приходится оперативно и очень аккуратно для минимизирования простоя в работе ресурса.
Заключение
Данный вариант работы с разными версиями меня вполне устраивает и не вызывает проблем. В статье я специально сделал установку версии как с базовых репозиториев так и с репозитория Remi. На практике использовать базовый репозиторий не удобно, так как не удобно просматривать какие именно пакеты установлены в базовой версии. Запрос # rpm -qa | grep php выведет все имеющиеся версии.
Рекомендую использовать версии PHP от Remi это удобно и вызывает меньше путаницы.
В любом случае какие версии использовать и с какими параметрами использовать необходимо смотреть в каждом конкретном случае. Нормальные разработчики ресурсов всегда указывают какие необходимо использовать версии php и с какими параметрами.
Установим и настроим децентрализованную платформу для организации видеохостинга и видеовещания под названием PeerTube на системe Rocky Linux. Лучший вариант для организации хранения и использования своих видеофайлов. Сети распространения контента на базе P2P-коммуникаций.
Предисловие
В современном мире сделать видеозапись не составляет никакого труда. Все сложности возникают когда надо поделится видео и выбрать место где хранить видеофайлы. Вариант с выгрузкой видео на «бесплатные» ресурсы я исключил сразу. Мне необходима 100% гарантия сохранности данных и удобное использование ресурса без сюрпризов.
Не знаю как вы, но я не могу больше смотреть этот рекламный бред который размещают в видеороликах.
Мои требования для организации базы видеофайлов были следующие:
Общий сервер куда пользователи могут загружать и просматривать видеофайлы,
Система администрирования как самой системы так и прав пользователей,
Удобный поиск нужных видео,
Обработка видеофайлов на самом сервере,
Загрузка видео по прямой ссылке на видео,
Добавление видео используя торрент-файл.
Все эти требования с легкостью осуществляет PeerTube.
Мне не надо теперь сидеть и часами обрабатывать видео для получения нужного качества и размера видеофайла. Например, при загрузке фидеофайла снятого на мобильном телефоне и имеющего общий размер в районе 8 Гиб я получаю на выходе видеофайл размером в районе 1,5 Гиб без потери качества видео.
Система активно развивается и с каждым выпуском возможности только расширяются.
Становитесь пользователями PeerTube и вы никогда об этом не пожалеете.
Системные требования
Почти сразу после публикации статьи сразу в комментариях появился вопрос о системных требованиях данного сервиса.
Почему я сразу не написал про параметры системы не могу сказать, но мысль проскакивала. Коментарии важны так как получаешь обратную связь и это вызывает желание дополнять или редактировать статью в будущем.
Для работы системы в режиме просмотра много ресурсов не надо, но вот когда происходит загрузка видео и идет последующее транскодирование в другие разрешения время обработки сильно зависит от ресурсов железа.
Исходные данные тестирования:
Система работает в виртуальной машине под управлением Proxmox c процессором Intel(R) Xeon(R) CPU E5620 @ 2.40GHz, DDR3, обычные HDD;
Во время всего тестирования пользователи активно пользовались системой в режиме просмотра ( 3-5 );
Для тестирования был выбран видеофайл размером 7.8 Гиб с разрешением 1920х816.
Никаких проблем с работой в системе пользователи не заметили на протяжении всего периода тестов.
Сводная таблица времени транскодирования:
Intel(R) Xeon(R) CPU E5620 @ 2.40GHz, DDR3
Время транскодирования 816p
Время транскодирования 480p
2 ядра и 4 Гиб памяти
2 часа 45 минут
1 час
8 ядер и 8 Гиб памяти
1 час 10 минут
30 минут
Вот такие параметры были в системе мониторинга Zabbix:
Самое приятное видеть как уменьшился размер видеофайла без потери качества. Вместо 7.8 Гиб стал 1.7 Гиб!
Раньше лежал у меня фильм и занимал места 7.8 Гиб и не важно в каком разрешении и на чем я его смотрел он качался всегда целиком. Теперь у меня два файл которые в сумме дают примерно 2.5 Гиб что почти в три раза меньше чем было. Смотрю на большом экране качается 1.7 Гиб, смотрю на мобильном телефоне качает 950 Миб. Можно транскадировать ещё в другие форматы и это все равно будет меньше чем был оригинал. Чудеса да и только 🙂
Предварительная подготовка
Написание статьи базировалось на официальной документации PeerTube в которой всё хорошо изложено и описано.
Установка Rocky Linux 8
Политика поддержки CentOS 8 поменялась и пока не могу однозначно сказать хорошо это или плохо, но лично у меня с ней стали возникать некоторые сложности. Хорошо что основатель CentOS взялся за разработку Rocky Linux которая будет развиваться в лучших традициях CentOS до момента перехода на Stream.
Не спешим выходить из под пользователя postgres. Создадим пароль для главного администратора базы данных иначе в последствии при смене прав доступа к базе система будет просить внести пароль которого у нас нет.
\password
Выходим на пользователя root
postgres=# \q
[postgres@video ~]$ exit
выход
root@video.sevo44.loc ~ #
Проверяем подключение к базе данных из под пользователя root
psql -U peertube -d peertube_prod
=== вывод команды ===
psql: ВАЖНО: пользователь "peertube" не прошёл проверку подлинности (Peer)
Подключение не прошло. Необходимо настроит права доступа к базам данных.
Выполняем настройку доступа к SQL-серверу, разрешив доступ только с localhost по паролю
vim/var/lib/pgsql/data/pg_hba.conf
=== необходимые изменения ===
# TYPE DATABASE USER ADDRESS METHOD# "local" is for Unix domain socket connections onlylocal all all password# IPv4 local connections:host all all 127.0.0.1/32 password# Настройка необходимая для обновления PeerTube используя скрипт обновленияhost all all ::1/128 password# IPv6 local connections:#host all all ::1/128 ident# Allow replication connections from localhost, by a user with the# replication privilege.#local replication all peer#host replication all 127.0.0.1/32 ident#host replication all ::1/128 ident
Перегружаем сервис и проверяем подключение к базе данных
systemctl restart postgresql
psql -U peertube -d peertube_prod
=== вывод команды ===
Пароль пользователя peertube: ПАРОЛЬ
psql (10.14)
Введите "help", чтобы получить справку.
peertube_prod=> \q ВЫХОДИМ
root@video.sevo44.loc ~ #
Соединение по паролю прошло успешно.
Настройка FirewallD
Откроем необходимые порты для доступа к серверу, удалим ненужные и применим правила
Вот перевод ответа: «Если вы имеете в виду все предупреждения Yarn, вы можете их игнорировать. Насколько я понимаю, это проблема Yarn, и она будет исправлена в следующей версии.»
Конфигурация PeerTube
Создаем файл конфигурации с шаблона
cd /var/www/peertube && sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml
Произведем настройку указав свои параметры
vim/var/www/peertube/config/production.yaml
=== необходимые блоки для настройки ===
# Correspond to your reverse proxy server_name/listen configuration
webserver:
https: truehostname: 'video.sevo44.ru'# sevo44
port: 443# Your database name will be database.name OR "peertube"+database.suffix
database:
hostname: 'localhost'
port: 5432
ssl: false
suffix: '_prod'
username: 'peertube'password: 'password'# sevo44
pool:
max: 5# SMTP server to send emails
smtp:
# smtp or sendmail
transport: smtp
# Path to sendmail command. Required if you use sendmail transport
sendmail: null
hostname: smtp.yandex.ru # sevo44
port: 465# If you use StartTLS: 587username: 'video@sevo44.ru'# sevo44
password: 'password'# sevo44
tls: true# If you use StartTLS: false
disable_starttls: false
ca_file: null # Used for self signed certificatesfrom_address: 'video@sevo44.ru'# sevo44
В настройках мы указали доменное имя на котором будет работать ресурс, параметры для работы почты через сторонний smtp.
Остальные параметры можно не править, так как при работе будет создан файл /var/www/peertube/config/local-production.json в котором будут указаны все параметры которые делаются в панели администратора.
Настройка Nginx
Как правило все инструкции пишутся с учетом того что у вас на статическом внешнем ip адресе работает сервер только с этим ресурсом. На практике такое случается крайне редко и на одном IP может работать разное количество ресурсов работающих как веб север.
Приведу пример как производится проксирования сигнала до PeerTube средствами Nginx.
Ни в коем случае не пытайтесь настроить работу PeerTube на http так как будут глюки в работе как в отображении информации так и задержка при просмотре видео. Сервис заточен под работу на https и адаптировать его под работу http нет смысла. Проще добавить сертификат ssl. О том как это сделать узнаете ниже.
Подключаем официальный стабильный репозиторий разработчиков Nginx и устанавливаем
vim /etc/yum.repos.d/nginx.repo
=== необходимый код ===
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
dnf install nginx
Сделаем копию и изменим главный файл настройки Nginx
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf_orig
vim/etc/nginx/nginx.conf
=== необходимый код ===
# Пользователь и группа, от имени которых будет запущен процесс
user peertube;
# Число воркеров в новых версиях рекомендовано устанавливать параметр auto
worker_processes auto;
# Уровни лога debug, info, notice, warn, error, crit, alert или emerg# перечислены в порядке возрастания важности. При установке определённого уровня# в лог попадают все сообщения указанного уровня и уровней большей важности. # Например, при стандартном уровне error в лог попадают сообщения уровней error, crit, alert и emerg. # Если параметр не задан, используется error.
error_log /var/log/nginx/error.log warn;
# Файл в котором будет храниться идентификатор основного процесса
pid /var/run/nginx.pid;
events {# Максимальное количество соединений одного воркера
worker_connections 1024;
# Метод выбора соединений (для FreeBSD будет kqueue)
use epoll;
# Принимать максимально возможное количество соединений
multi_accept on;
}
http {# Отключить вывод версии nginx в ответе
server_tokens off;
# Указываем файл с mime-типами и указываем тип данных по-умолчанию
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Формат для лога доступа и путь к файлу
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
# Метод отправки данных sendfile эффективнее чем read+write
sendfile on;
# Ограничивает объём данных, который может передан за один вызов sendfile(). # Нужно для исключения ситуации когда одно соединение может целиком захватить воркер
sendfile_max_chunk 128k;
# Отправлять заголовки и начало файла в одном пакете
tcp_nopush on;
tcp_nodelay on;
# Параметр задаёт тайм аут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера
keepalive_timeout 65;
# Сбрасывать соединение если клиент перестал читать ответ
reset_timedout_connection on;
# Разрывать соединение по истечению тайм аута при получении заголовка и тела запроса
client_header_timeout 3;
client_body_timeout 5;
# Разрывать соединение, если клиент не отвечает в течение 3 секунд
send_timeout 3;
# Задание буфера для заголовка и тела запроса
client_header_buffer_size 2k;
client_body_buffer_size 256k;
# Ограничение на размер тела запроса
client_max_body_size 8G;
# Подключение дополнительных конфигов
include /etc/nginx/conf.d/*.conf;
}
Мы специально указали пользователя peertube так как сервер создан для работы одного ресурса.
Добавим в автозагрузку и запустим сервис Nginx
systemctl enable --now nginx
Производители рекомендуют выполнить оптимизацию и мы не будем игнорировать этим советом
Посмотреть с какими настройками создалась служба можно выполнив команду
cat /etc/systemd/system/peertube.service
=== Вывод команды ===
[Unit]
Description=PeerTube daemon
After=network.target postgresql.service redis-server.service
[Service]
Type=simple
Environment=NODE_ENV=production
Environment=NODE_CONFIG_DIR=/var/www/peertube/config
User=peertube
Group=peertube
ExecStart=/usr/bin/npm start
WorkingDirectory=/var/www/peertube/peertube-latest
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=peertube
Restart=always
; Some security directives.
; Mount /usr, /boot, and /etc as read-only for processes invoked by this service.
ProtectSystem=full
; Sets up a new /dev mount for the process and only adds API pseudo devices
; like /dev/null, /dev/zero or /dev/random but not physical devices. Disabled
; by default because it may not work on devices like the Raspberry Pi.
PrivateDevices=false
; Ensures that the service process and all its children can never gain new
; privileges through execve().
NoNewPrivileges=true
; This makes /home, /root, and /run/user inaccessible and empty for processes invoked
; by this unit. Make sure that you do not depend on data inside these folders.
ProtectHome=true
; Drops the sys admin capability from the daemon.
CapabilityBoundingSet=~CAP_SYS_ADMIN
[Install]
WantedBy=multi-user.target
В выводе кода вы видите пароль от администратора сервиса! User password: xelurocikokuyave и больше его вывод никогда не покажет. Запишите его или потом сможете создать другой.
В выводе всё хорошо расписано и в случае ошибок сможете увидеть подсказки что не так настроено.
Настройка PeerTube
Настроек множество и описывать все не имеет смысла. Покажу те моменты на которые имеет смысл обратить особое внимание.
Настоятельно рекомендую для безопасности оставить главным администратором только пользователя root. Все главные параметры нет смысла менять часто а для обычного администрирования роли «Модератор» вполне достаточно.
Выбираем варианты как можно загружать видеофайлы. Импорт с URL-адреса или торрент-файла очень удобен и отключать такую возможность не надо.
К настройке транскодирования отнеситесь очень внимательно, так как от этого будет зависеть как скорость работы ресурса так и объем занятого пространства видеофайлами.
В моем случае выбраны разрешения для транскодирования 480p и 1080p мне этого хватает. В случае если происходит загрузка видеофайла разрешением менее 480р транскодирования производится не будет и в системе будет только этот видеофайла. При загрузке видеофайла разрешением больше 1080р будет произведено транскодирование в форматы 480p и 1080р.
Чем больше форматов тем системе легче работать, но платить за это приходится размером дисков для видеофалов.
Главный параметр PeerTube
Спустя какое то время я стал замечать что объем хранилища видео стал сильно увеличиваться когда я стал более активно добавлять видео. Как влияет на объём выбор вариантов разрешения все понятно а вот с выбором формата я сразу не разобрался и включал оба параметра.
Теперь мои параметры выглядят так:
При выводе информации понятно почему этот вариант гораздо предпочтительней.
Расскажу что происходит на сервере когда включено оба параметра:
После обработки видеофайл попадает в папку /var/www/peertube/storage/videos и имеет столько вариантов сколько вариантов разрешения вы выбрали;
Потом видеофайлы попадают в папку /var/www/peertube/storage/streaming-playlists/hls и для каждого видео создаётся своя папка в которой помимо самих видеофайлов присутствуют технические файлы для работы с этой технологией.
Вот откуда идет двойное увеличение хранилища. В случае когда параметр «WebTorrent» выключен файлы всё равно во время транскодирования попадают в папку videos, но лишь временно на момент обработки файла. После окончания обработки файлы в папке videos удаляются.
Если после отключения параметра «WebTorrent» зайти и просто удалить файлы в папке videos то вы не сможете скачать видео которое было загружено с включением обоих параметров.
Обзор PeerTube
Особо расписывать нет смысла как работать в системе по причине понятного и дружественного интерфейса. Добавляйте пользователей создавайте каналы, закачивайте видео, подписывайтесь и получайте удовольствие от того что все ваше видео теперь находится в одном месте.
На фотках ниже вы увидите как система выглядит у меня.
Обновление PeerTube
В случае проблем в работе с некоторыми функциями PeerTube обновляйте если вышла новая версия.
Например, в какой то момент у меня перестала работать загрузка видео по адресу. После обновления все заработало.
Для обновления достаточно запустить скрипт который всё сделает автоматически.
Останавливаем сервис, переходим в нужное место и запускаем скрипт обновления
systemctl stop peertube
cd /var/www/peertube/peertube-latest/scripts
sudo -H -u peertube ./upgrade.sh
В конце выдаст информацию об изменениях сделанных в файле конфигурации по отношению к базовому.
В папке /var/www/peertube/config находится 3 файла:
default.yaml — базовая конфигурация. Обновляется после каждого обновления и имеет все настройки для новой версии;
local-production.json — настройки которые делаются в панели администратора и не меняются при обновлении версии;
production.yaml — настройки действующей версии.
Создадим копию файла из настроек что действуют на данный момент:
Обновим из базовой новой конфигурации файл с настройками:
cp /var/www/peertube/config/default.yaml /var/www/peertube/config/production.yaml
= при вопросе пишем yes =
Обычно надо внести необходимые правки в следующих блоках:
# Correspond to your reverse proxy server_name/listen configuration (i.e., your public PeerTube instance URL)
webserver:
https: truehostname: 'video.sevo44.ru'port: 443
# Your database name will be database.name OR 'peertube'+database.suffix
database:hostname: 'localhost'port: 5432ssl: falsesuffix: '_prod'username: 'peertube'password: 'Sdthdfhdfhhf'
pool:
max: 5
# SMTP server to send emails
smtp:
# smtp or sendmail
transport: smtp
# Path to sendmail command. Required if you use sendmail transport
sendmail: null
hostname: smtp.yandex.ruport: 465 # If you use StartTLS: 587username: 'video@sevo44.ru'password: 'tzZqAeu656ddsdfg2s6'
tls: true # If you use StartTLS: false
disable_starttls: false
ca_file: null # Used for self signed certificates
from_address: 'video@sevo44.ru'
# From the project root directory
storage:
tmp: '/var/www/peertube/storage/tmp/' # Use to download data (imports etc), store uploaded files before and during processing...
bin: '/var/www/peertube/storage/bin/'
avatars: '/var/www/peertube/storage/avatars/'
videos: '/var/www/peertube/storage/videos/'
streaming_playlists: '/var/www/peertube/storage/streaming-playlists/'
redundancy: '/var/www/peertube/storage/redundancy/'
logs: '/var/www/peertube/storage/logs/'
previews: '/var/www/peertube/storage/previews/'
thumbnails: '/var/www/peertube/storage/thumbnails/'
torrents: '/var/www/peertube/storage/torrents/'
captions: '/var/www/peertube/storage/captions/'
cache: '/var/www/peertube/storage/cache/'
plugins: '/var/www/peertube/storage/plugins/'
# Overridable client files in client/dist/assets/images:
# - logo.svg
# - favicon.png
# - default-playlist.jpg
# - default-avatar-account.png
# - default-avatar-video-channel.png
# - and icons/*.png (PWA)
# Could contain for example assets/images/favicon.png
# If the file exists, peertube will serve it
# If not, peertube will fallback to the default file
client_overrides: '/var/www/peertube/storage/client-overrides/'
Запускаем и смотрим информацию о сервисе
systemctl start peertube
journalctl -feu peertube
Без проблем прошли обновления 2.4.0 -> 3.0.0 -> 3.1.0 -> 3.2.1 -> 3.3.0 -> 3.4.0 -> 4.0.0 -> 4.1.0 -> 4.1.1
Переезд PeerTube
На новом сервере устанавливаем последнюю версию и переносим необходимые данные.
Обновлять версию на сервере с которого переезжаем нет необходимости. После переезда запускается скрипт обновления и всё обновится до необходимой версии.
При переносе на другой сервер нам необходимо перенести следующие данные:
Каталог /var/www/peertube/storage, в котором содержатся видео, миниатюры, предварительные просмотры и так далее,
Переходим в нужное место и запускаем скрипт обновления
cd /var/www/peertube/peertube-latest/scripts
sudo -H -u peertube ./upgrade.sh
После выполнения команды запускаем сервис и смотрим что происходит
systemctl start peertube
journalctl -feu peertube
При переносе для того чтобы не потерять данные которые появились во время переноса так же необходимо остановить сервис PeerTube.
Именинно поэтому я рекомендую вначале сделать тестовый переезд. Если все прошло хорошо останавливаем сервис с которого переезжаем, синхронизируем папку с данными, переносим заново базу данных и запускаем сервис после выполнения скрипта обновления.
Смена доменного имени PeerTube
При желании можно сменить доменное имя. После того как внесете правки в файл настройки PeerTube и поправите настройки Nginx необходимо выполнить следующие команды
cd /var/www/peertube/peertube-latest && su peertube[peertube@video peertube-latest]$ NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run update-host
=== вывод команды ===
> peertube@2.4.0 update-host /var/www/peertube/versions/peertube-v2.4.0
> node ./dist/scripts/update-host.js
Updating actors.
Updating actor http://video.sevo44.ru/video-channels/root_channel
Updating actor http://video.sevo44.ru/video-channels/sevo44_all
Updating actor http://video.sevo44.ru/accounts/root
Updating actor http://video.sevo44.ru/accounts/sevo44
Updating actor http://video.sevo44.ru/accounts/peertube
Updating video shares.
Updating video share http://video.sevo44.ru/videos/watch/9c178338-fa10-47b0-b2d1-f41af08179cc/announces/5
Updating video share http://video.sevo44.ru/videos/watch/9c178338-fa10-47b0-b2d1-f41af08179cc/announces/1
Updating video share http://video.sevo44.ru/videos/watch/c8dfa17f-ad7a-478a-83d0-6c53767f778a/announces/5
Updating video share http://video.sevo44.ru/videos/watch/c8dfa17f-ad7a-478a-83d0-6c53767f778a/announces/1
Updating video share http://video.sevo44.ru/videos/watch/2ef17574-dbc8-4111-936c-773c755141db/announces/5
Updating video share http://video.sevo44.ru/videos/watch/2ef17574-dbc8-4111-936c-773c755141db/announces/1
Updating video share http://video.sevo44.ru/videos/watch/753df8df-5bae-4bef-8d3c-5bb688a8c0fb/announces/5
Updating video share http://video.sevo44.ru/videos/watch/753df8df-5bae-4bef-8d3c-5bb688a8c0fb/announces/1
Updating video comments.
Updating video and torrent files.
Updating video 9c178338-fa10-47b0-b2d1-f41af08179cc
Updating torrent file720 of video 9c178338-fa10-47b0-b2d1-f41af08179cc.
[video.sevo44.ru:443]2020-12-28 00:35:39.659 info: Creating torrent /var/www/peertube/storage/torrents/9c178338-fa10-47b0-b2d1-f41af08179cc-720.torrent.
Updating video c8dfa17f-ad7a-478a-83d0-6c53767f778a
Updating torrent file720 of video c8dfa17f-ad7a-478a-83d0-6c53767f778a.
[video.sevo44.ru:443]2020-12-28 00:35:42.519 info: Creating torrent /var/www/peertube/storage/torrents/c8dfa17f-ad7a-478a-83d0-6c53767f778a-720.torrent.
Updating video 2ef17574-dbc8-4111-936c-773c755141db
Updating torrent file720 of video 2ef17574-dbc8-4111-936c-773c755141db.
[video.sevo44.ru:443]2020-12-28 00:35:45.303 info: Creating torrent /var/www/peertube/storage/torrents/2ef17574-dbc8-4111-936c-773c755141db-720.torrent.
Updating video 753df8df-5bae-4bef-8d3c-5bb688a8c0fb
Updating torrent file304 of video 753df8df-5bae-4bef-8d3c-5bb688a8c0fb.
[video.sevo44.ru:443]2020-12-28 00:35:51.759 info: Creating torrent /var/www/peertube/storage/torrents/753df8df-5bae-4bef-8d3c-5bb688a8c0fb-304.torrent.
[peertube@video peertube-latest]$
После успешного выполнения перезагрузите Nginx и PeerTube
nginx -s reload
systemctl start peertube
Смена пароля администратора PeerTube
Пароль администратора генерируется автоматически, его можно найти в журналах. Вы можете установить другой пароль с помощью следующей команды
cd /var/www/peertube/peertube-latest && NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-password -- -u root
Заключение
Долго лежала эта статья в черновиках и только после того как я все проверил и произвел несколько обновлений совесть позволила мне опубликовать статью.
Однозначно делайте резервную копию системы перед обновлением и тогда вам не страшны любые сюрпризы при обновлениях.
К сожалению обновление системы необходимо если вы хотите пользоваться всеми прелестями системы. В случае если вы планируйте производить простой вариант загрузки файлов и не использовать сеть P2P систему можно не обновлять.
За время использования много раз слышал спасибо от родни за то что теперь они могут без проблем смотреть семейное видео и делится им.
Больше всего ушло на то чтобы вытащить со всех щелей семейное видео и загрузит в одно место.
Удаленное управление компьютером без ограничений по времени и скорости сеанса. Бесплатная версия как для физических, так и для юридических лиц. Программа LiteManager это идеальное решение для удаленного управления компьютерами на разных ОС.
Введение
Удаленное управление в повседневных буднях системного администратора обыденная вещь. О том как я добился простоты и удобства в этом вопросе я расскажу в этой статье.
На практике я перепробовал все возможные бесплатные варианты удаленного управления компьютерами без использования IP адреса, но все они таят в себе сюрпризы.
Основные моменты которые меня не устраивали в бесплатных версиях:
Ограничение сеанса минутами;
Ограничение скорости сеанса;
Легальность использования в организациях;
Необходимость одинаковых версий на компьютерах.
Для себя я нашел программу LiteManager которая удовлетворила все мои требования и дает возможность комфортно и удобно работать с удаленными компьютерами.
Главные для меня моменты благодаря которым я выбрал этот продукт:
Работает на всех операционных системах, Windows, Linux, Mac OS, Android;
Подключатся по ID через свой сервер NoIP;
Легальное использование в организациях;
Программа не требует установки на компьютер.
Обязательно посетите сайт разработчика. Все возможности хорошо и наглядно задокументированы. В случае вопросов вы можете посетить их форум или написать разработчику напрямую. У программы много возможностей которые возможно вас заинтересуют и подтолкнут к выбору именно этой программы. Например, есть режим работы для удаленного обучения.
Режимы работы LiteManager
Удаленное управление может требовать разных вариантов режимов работы, но обычно их используется не много.
Основные режимы которые мной используются:
Режим просмотра — вы видите что делает пользователь но не можете ничего сделать;
Режим полного управления — полный контроль над удаленным компьютером;
Передача файлов — возможность обмениваться файлами с удаленным компьютером.
На практике мне обычно хватает этих трех режимов. Тем не менее, периодически пользуюсь и другими режимами. При покупке платной версии добавляются механизмы которые востребованы при обслуживании большого парка машин.
Слева вы видите группы компьютеров которые вы создадите по своему усмотрению, посередине компьютеры для подключения а слева типы подключений. Вы можете смотреть имеющиеся узлы в режиме списка или создать карту.
В бесплатной версии имеется ограничение на 30 компьютеров, но в программе есть замечательная возможность импорта и экспорта как всех узлов так и выбранных.
Удаленное управление для сотрудников
В случае если необходимо настроить сотруднику удаленное управление компьютером на работе достаточно выполнить несколько простых действий.
Вот перечень необходимых действий:
Добавить на компьютере пользователя профиль для подключения с необходимыми параметрами;
Экспортировать нужное подключение;
Передать работнику LiteManager Viewer портативную версию (работает без установки) и сказать как импортировать подключение.
Вот таким простым способом можно настроить работнику удаленную работу с его компьютером на работе.
Необходимо учитывать при удаленной работе разрешение экрана.
При варианте когда разрешение монитора на компьютере к которому подключаетесь больше достаточно на нем снизить разрешение до такого как на том с которого подключаетесь и работать станет комфортно.
Варианты доступа к компьютерам
На практике мне требуется организовать постоянный доступ с возможностью управления в любое время без участия пользователя или вариант когда пользователь запускает программу и сообщает мне данные для подключения.
Настройки гибкие и позволяют создавать пользователей для подключения с разными правами. При желании можно скрыть от глаз пользователя работу программы.
Доступ без разрешения
При данном виде управления я устанавливаю программу, добавляю её в автозагрузку, блокирую паролем настройки программы. Произвожу подключение в любой необходимый мне момент для решения текущих задач с компьютером.
Доступ с разрешением
Когда оказываешь разовые услуги и нужно максимально быстро и просто подключится к клиенту необходимо иметь простой и понятный механизм.
Вариант когда человек просто запускает файл и передает вам параметры для подключения (желательно только цифры) самый удобный и оптимальный. Для такой простоты необходимо развернуть свой NoIP сервер и создать свою версию программы с нужными параметрами. О том как это сделать вы узнаете читая статью дальше.
Статья прям пугающая и по ощущениям явно написана на заказ. По сути уязвимость была только в случае если вы будете подключаться через сторонний NoIP. При использовании своего NoIP уязвимости нет.
Мало кто любит читать комментарии к статьям, хотя там бывает весьма любопытная информация.
+2 Программа обновлена до версии 4.8.3 в процесс авторизации внесены изменения, с учетом данного вида угроз.
Спасибо Всем, извините за неудобства
Сервис работает под управлением операционной системы Windows, но думаю что разработчик сделает версию и под Linux. Кстати, использую Wine можно запускать и на Linux, но стабильность работы я не проверял.
Скачиваем с сайта разработчика последнюю версию LiteManager Windows. В полной версии будет папка NOIP (ID router) где находится то что нам надо.
После запуска вы увидите станицу на которой показан статус и варианты запуска программы. В моем случае я запускаю её вручную:
Не забудьте открыть порт указанный в основных настройках 5651. При желании можете поменять на любой другой . Главное при дальнейших настройках учитывайте это.
Переходим на страницу «Дополнительно» в которой необходимо выбрать параметр который обеспечит совмещенный режим работы для разных лицензий:
Переходим на стартовую страницу и запускаем сервис. В результате должно быть так:
Обязательно переходим на страницу «Информация» и убеждаемся что тип лицензии сервера бесплатный:
После того как будет подключен по ID вы увидите на странице статистики информацию:
Есть и другие полезные возможности которые в последствии вы сможете применить. Для начала использования сервиса этих настроек хватит.
Настройка подключения по ID
Используя конструктор QuickSupport можно создать свою версию программы которая будет производить соединение с необходимыми вам параметрами и выводом нужной информации.
В моем случае соединение проходит через мой NoIP сервер и как следствие все работает быстро и без сбоев.
Можно использовать и общедоступные NoIP но работают они медленно и нестабильно.
При создании есть несколько нюансов о которых я расскажу.
Запустить конструктор необходимо вот так:
Базовая информация
При данном варианте достаточно указать IP адрес вашего NoIP и выбрать запись настроек в имени файла:
После нажатия «Сохранить QuickSupport пакет» создастся необходимый файл.
Свой логотип и информация
Данный вариант более привлекательный, так как позволяет изменить текстовую информацию и вставить свой логотип. Все требования для графики указанны.
В результате вы получите папку со всеми необходимыми файлами.
В моем варианте клиент видит такое окно:
При создании пакета в обоих вариантах менять названия файлов нельзя.
Для удобства я создал само распаковывающийся архив который помещает необходимые файлы в системную папку с программами а на рабочем столе создает необходимый ярлык. Кроме того, я записал видео со всеми часто встречающиеся проблемами у пользователей связанные с запуском программы.
Пример подключения по ID
В заключение, покажу как выглядит весь механизм подключения для удаленного управления компьютером.
Клиент запускает программу для доступа. Вначале выйдет сообщение с 5 секундным таймером про лицензию:
В случае успеха видим состояние соединения и параметры для подключения:
Действия на стороне клиента закончены. Переходим к непосредственному подключению.
Запускаем соединение по ID:
Нажимаем «Настройки» и указываем необходимый NoIP сервер:
Вводим ID и после подключения видим окно в которое необходимо указать пароль:
После введения пароля вы увидите созданное подключение:
Выбираем слева режим подключения и подключаемся для удаленного управления:
На картинке указано изображение в режиме масштабирования.
Заключение
Пользуюсь программой очень давно и вижу как постоянно добавляются новые полезные возможности. Сбоев в работе за все время я не встречал.
Огромное спасибо разработчикам давшим возможность пользоваться программой в коммерческих целях и позволили создавать версию для удаленной поддержки со своей информацией.
Уважаю и ценю таких разработчиков. Они ведут открытую и понятную политику своих продуктов без использования маркетинговых ухищрений. Может из за этого они получают меньше денег, но мне кажется я не один для кого деньги пахнут.
Ошибка в работе Континент АП одна из самый неприятных, так как с помощью этой программы организация осуществляет финансовые операции. Расскажу как я решил эту постоянно появляющуюся проблему после каждого обновления системы Windows.
Введение
Обслуживая государственные конторы всегда получаю больше всего сюрпризов. Только в этих конторах видишь программные продукты которые больше нигде не встретишь.
Решил рассказать о работе с такой замечательной программой как Континент АП. Программа предназначена для создания канала VPN по сертификату.
Работала эта программа без нареканий, но после того проходило обновление Windows программа стала выдавать ошибку.
Ошибка говорит о том что в файлах программы найдены изменения и она не может работать дальше. Выглядит сообщение следующим образом:
Когда ошибка стала появляться часто и пользователи стали сильно нервничать задавая вопрос: «Почему раньше работал а теперь постоянные сбои?» решил вникнуть и разобраться в сути проблемы.
Системные требования Континент АП
На одном из компьютеров установлена Windows 10 Домашняя и в одной из контор, прочитав рекомендации на сайте, сказали что проблема в версии Windows.
В свое время я сильно озадачился версиями Windows и пришел к выводу что отличия версий только в доменом управлении, некоторыми функциями и элементами внешнего вида. В организации где не планируется и не будет использован Windows Server покупать профессиональные версии нет смысла. За название «Домашняя» отдельное спасибо маркетологам Windows, так как народ действительно думает что использовать такую версию можно только дома 🙂
На странице разработчика есть системные требования которые вы можете посмотреть. Лично у меня такие требования вызывают улыбку.
Отключение антивируса
Пробовал отключать антивирус и добавлять папку с программой в белый список, но дело это совершенно бесполезное и дальше поймете почему.
Временное решение проблемы
Всегда хочется думать что разработчики продумали программу и она будет работать без сбоев. При проблемах начинаешь искать проблемы в системе, делаешь проверки на вирусы, и только в последнюю очередь ищешь проблему в программе.
Исправление программы Континент АП
Исправление программы это первое что всегда приходило в голову и помогало решить проблему. Достаточно было запустить файл установки, указать исправление и выполнив требуемые действия программа опять работала до следующего обновления Windows.
Такой вариант решения проблемы мне не подходит, хотя в большинстве случаев народ просто отключал обновления и радовался работе без ошибок дальше. К сожалению в Windows 10 отключить обновления нельзя (по крайней мере все способы что я пробовал не позволяют полностью отключить механизм обновления).
Отключение обновлений излюбленная тема тех кто не хочет разбираться в проблемах возникающих после обновлений. Чаще всего проблема с обновлениями у тех кто не любит ждать и не дождавшись окончания процедуры жестко выключает компьютер.
Никогда не отключаю обновления и никому не советую, так как без обновлений Windows шансов поймать вирус гораздо больше.
Решение проблемы
Решение оказалось немного не обычным и не логичным. Главное что это работает и как мне показалось единственное верное на данный момент решение.
Суть контроля целостности Континент АП
При установке программа в специальном файле запоминает все параметры своих файлов и файлов что использует в системе Windows. При запуске происходит сравнение параметров с этого файла и реальными файлами в системе. В случае отличия выдает грозное предупреждение «Тест контроля целостности не пройден».
Примерно так будет выглядеть контроль целостности:
Вроде все правильно и выглядит как забота о нашей безопасности от разработчиков программы. Программу выдают в отделении ФСБ а значит есть предположение что курируют её именно они.
По факту получается что программа контролирует системные файлы Windows которые система обновляет когда ей необходимо для своего улучшения. Для меня это кажется крайне не логично. Оставим на совести разработчиков такой механизм. Возможно они уже принимают меры а может нет. В любом случае они прекрасно знают что такая проблема есть. Тематические форумы завалены криками о помощи.
Моя задача сделать так чтобы программа работала и не вызывала проблем.
Выключение функции проверки
Для того что бы не видеть больше ошибки «Тест контроля целостности не пройден» и не отключать обновление Windows в версии Континент АП 3.7 необходимо изменить файл integrity.xml. Именно в этом файле занесена информация о файлах при установке.
Необходимо сделать следующее:
Перейдите на диск С в папку Program Files -> Security Code -> Terminal Station;
Скопировать файл integrity.xml на рабочий стол;
Открыть данный файл в текстовым редакторе «Блокнот»;
или убрать все разделы кроме первого —> catalog name="common";
Вернуть файл назад с подтверждением замены.
После выполненных действий запускайте программу и радуйтесь возможности совершать финансовые действия в организации.
Заключение
Всегда надо думать и анализировать ситуацию в каждом конкретном случае. Бездумное использование советов что попадаются в интернете частенько не дает результата. Было желание написать разработчикам, но решил не лезть к ним со своими пожеланиями и замечаниями.
Возможно это вообще хохма реального разработчика. Такие конторы иногда являются только заказчиками программного обеспечения и не имеют отношения к разработке. Разработчики не сильно вдаваясь в задание делают так как сказано. Возможно даже видя глупость заказа выполняют его а потом тихонько хихикают.
Интересно увидеть ваши комментарии по этому поводу.
Установим коробочную версию Битрикс24 на операционную система CentOS 7 используя скрипт от разработчика. Выполним все первоначальные настройки которые дадут возможность произвести полноценное тестирование продукта. CRM система удобна и весьма популярна среди бизнеса.
Введение
В этой статье вы узнаете как установить коробочную версию Битрикс24 на систему CentOS 7. Варианты установки могут быть разные, но мне больше нравится именно такой способ о котором и поведаю.
Устанавливать будем тестовую версию на 30 дней и в последствии приобретём лицензию.
Мы увидим приветствие, в котором говорится, что на все вопросы по умолчанию будет ответ «Да» (Yes) и при необходимости ответить «Нет» нужно ввести n.
====================================================================
Bitrix Environment for Linux installation script.
Yes will be assumed as a default answer.
Enter 'n' or 'no' for a 'No'. Anything else will be considered a 'Yes'.
This script MUST be run as root, or it will fail.
====================================================================
Если на сервере работает SELinux, первый вопрос — согласны ли мы его отключить. Отвечаем утвердительно, нажав Enter:
You have to disable SElinux before installing Bitrix Environment.
Do you want to disable SELinux?(Y|n)
Скрипт вернет ответ, что SELinux выключен и потребует перезагрузки сервера:
SELinux status changed to disabled in the config file /etc/selinux/config.
SELinux status changed to disabled in the config file /etc/sysconfig/selinux.
Please reboot the system! (cmd: reboot)
В нашем случае мы уже отключили SELinux ранее и мы просто не увидим это сообщение. Если мы не отключали его рание надо перезагрузить сервер и запустить скрипт снова.
В конце установки при успешной установке увидем следующее:
Bitrix Environment bitrix-env has been installed successfully.
Посмотреть пароль от базы данных можно выполнив команду:
cat /root/.my.cnf
= необходимая часть информации в коде =
...
password='dfgj8856jdfbjf8'
...
Веб-окружение установлено.
Смотрим что сделал скрипт
В выводе конечно многое показывало, но проверим что произошло по факту.
Скрипт удалит FirewallD и настроил iptables.
Посмотрим какие правила iptables можно выполнив необходимую команду:
iptables -L -v -n
= вывод команды =
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 state NEW
7792 468K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW
240K 271M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
1 48 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
17887 1891K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
3 180 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
39660 6312K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 213K packets, 170M bytes)
pkts bytes target prot opt in out source destination
Параметры настройки находятся в файле /etc/sysconfig/iptables.
Были установлены основные пакеты для работы веб сервера:
PHP7.2 из репозитория Remi’s PHP 7.2 RPM repository for Enterprise Linux 7;
Nginx 1.16.1;
Apache 2.4.6.
MySQL 5.7.28-31.
Основные настройки находятся в следующих местах:
Файлы лежат по пути /home/bitrix/www/;
Настройки Nginx находятся по пути /etc/nginx/bx;
Настройки Apache находятся по пути /etc/httpd/bx.
Понятно почему так всё было сделано и свои мнения по этому поводу я оставлю за рамками этой статьи.
Установка Битрикс24
Если ресурс работает напрямую без использования проксирования переходите к следующему разделу статьи.
Работа сайта через Nginx proxy
По умолчанию считается что сервер имеет свой белый IP и это понятно. Часто коробочную версию Битрикс24 устанавливают в своей локальной сети где имеется один белый ip на котором работают разные ресурсы по протоколам http или https.
Для решения задачи размещения на одном IP адресе разных ресурсов работающих по протоколу http(s) давно и успешно используется Nginx работающий в режиме прокси сервера.
На практике удобно настроить на Nginx получение сертификатов SSL и дальше проксировать сигнал до нужного сервера по протоколу http.
crm.sevo44.ru — под домен где будет работать Битрикс24;
http://192.168.0.44:80 — адрес на котором будет установлен Битрикс24;
client_max_body_size 10m — параметр который позволит передавать на ресурс файлы больше 10 Мбайт.
Использование Nginx прокси надо учитывать при дальнейшей настройке ресурса, так как внутренняя диагностика системы будет показывать выводы исходя из того что ресурс работает напрямую не используя маршрутизацию.
Установка Битрикс24
Открываем браузер и переходим по ссылке http://IP-адрес сервера.
Увидим окно приветствия и на каждом этапе вносим всю необходимую информацию.
Процедура не сложная и описывать её не вижу смысла. Гораздо интересней дальнейшая настройка без которой не возможно начать полноценное тестирование работы ресурса.
Настройка после установки
После установки произведем проверки которые покажут нам все проблемы из за которых работа ресурса просто не возможна на начальном этапе.
Тестирование конфигурации
Первое что надо сделать это произвести «Тестирование конфигурации». Находится это по пути: Панель управления (меню пользователя) -> Настройки (слева внизу) -> Инструменты -> Проверка системы -> Тестирование конфигурации.
В нашем случае было несколько ошибок и не одном из них покажу общий принцип решения проблемы.
Рассмотрим на ошибке не позволяющей загрузки файла больше 4 Мб:
Справа у каждого параметра есть кружок с восклицательным знаком и нажав на него откроется окно:
Из описания вроде всё понятно что делать и где смотреть, но везде вы увидите что параметр стоит верный:
В начале статьи я говорил что ресурс работает через Nginx прокси и именно параметр в настройке client_max_body_size 10m; позволит нам не увидеть данную ошибку.
В случае успеха вы должны увидеть:
Были еще незначительные ошибки которые с легкостью удалось поправить используя подсказки. Ниже расмотрим ошибку связаную с работой почты так как она одна из самый главных и имеет разный подход к решению.
Настройка работы почты
Настройка почты сильно меня не удивила, но заставила немного повозиться. Ровно одни сутки (1С) 🙂
Вот что будет показывать в выводе при тестировании конфигурации:
Оказывается разработчики придумали свой механизм который необходимо изучить. На просторах интернета есть много информации что при хорошей нагрузке этот механизм плохо работает, хотя это может быть связано с тем что никто не хочет досконально изучать и тратить кучу времени на его настройку.
Для себя я решил так, если разработчики не стали использовать стандартный FirewallD который идет по умолчанию в CentOS 7 (не думаю что отказ от использования был реально необходим с технической точки зрения) а стали использовать iptable, то и я могу с легкостью отказатся от их механизма отправки почты и настроить надежный и стабильный Postfix.
На сайте поддержи Битрикс24 есть статьи пользователей о том как это настраивается, но они либо устарели либо успускают очень важные настройки без который у вас ничего не будет работать.
Мой пример рабочий на все 100% и успешно работает на нескольких серверах.
Если Postfix не установлен то производим установку выполнив команду:
yum install postfix
Запускаем и добавляем в автозагрузку командами:
systemctl start postfix
systemctl enable postfix
Чтобы отправлять письма с консоли необходимо установить пакет mailx:
yum install mailx
После этого можно отправлять с консоли сервера сообщения на свою почту:
uname -a | mail -s "info server" info@sevo44.ru
Если сообщения получаем на почту значит все работает и двигаемся дальше.
Для начала надо в настройках /etc/php.d/bitrixenv.ini поменять значение:
vim /etc/php.d/bitrixenv.ini
= вывод команды с информацией для правки =
-- мы увидим --
sendmail_path = msmtp -t -i
-- меняем на --
sendmail_path = /usr/sbin/sendmail -i -t
Теперь открываем любой лид и производим отправку сообщения. Ошибки мы не увидим, так смотреть надо на сервере выполнив команду которая покажет последнюю информацию о работе почты:
tail -n 10 /var/log/maillog
В выводе отправляемого письма вы увидите:
said: 550 5.7.1 Email rejected per DMARC policy for mail.ru
В данном случае письма сразу попадают в спам.
Теперь настроим отправку почты через сторонний SMTP сервер.
Настроить через mail.ru не выйдет, так как будет ругаться что поле from не совпадает.
(host smtp.mail.ru[94.100.180.160] said: 550 Message was not accepted – it contains invalid headers. More specially, ‘From:’ header must match user you are sending mail from.
Будем настраивать используя Yandex, так как при тестовых оправках с почтового ящика mail, yandex.ru и gmail письма письма благополучно уходят и проходят успешную проверку у получателя.
Настройка через SMTP Yandex
В примере будет использована почта noreply@sevo44.ru которая обслуживается Yandex.
Переименуем базовый конфиг Postfix. После этого, создадим рабочий и добавим необходимые настройки:
mv /etc/postfix/main.cf /etc/postfix/main.cf_orig
vim /etc/postfix/main.cf
= необходимый код =
# DEFAULT CONFIG
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
# Имя сервера, которое выводит команда hostname
myhostname = vds-micro2.sevo44.ru
# По логике нужно оставлять только домен, но в данном случае лучше оставить полное имя сервера, чтобы в поле отправитель
# фигурировало полное имя сервера, так удобнее разбирать служебные сообщения
mydomain = vds-micro2.sevo44.ru
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost
inet_interfaces = localhost
inet_protocols = all
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.10.1/samples
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
# SMTP YANDEX CONFIG
relayhost = smtp.yandex.ru:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
# База параметров авторизации с SMPT
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Беза подмены имени почтового ящика
smtp_generic_maps = hash:/etc/postfix/generic
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
Создаем файл с информацией об имени пользователя и пароле для авторизации на сервере SMTP:
vim /etc/postfix/sasl_passwd
= необходимый код =
smtp.yandex.ru:587 noreply@sevo44.ru:PASSWORD
Создаем db файл:
postmap /etc/postfix/sasl_passwd
Переименуем дефолтную базу подмены имени почтового ящика. После этого, создадим рабочий и добавим необходимые настройки:
mv /etc/postfix/generic /etc/postfix/generic_orig
vim /etc/postfix/generic
= необходимый код =
bitrix@bitrix24.localdomain noreply@sevo44.ru
root@bitrix24.localdomain noreply@sevo44.ru
Выделенные параметры смотрим исходя из вывода команды: tail -n 10 /var/log/maillog в которой вы увидите информацию об отправлениях.
Создаем db файл:
postmap /etc/postfix/generic
При получении ошибки при проверке: «warning: SASL authentication failure: No worthy mechs found»
Необходимо установить ещё несколько пакетов для работы SASL.
В заключение, осталось добавить к стандартному алиасу для root в /etc/aliases, внешний адрес, куда будет дублироваться почта, адресованная root. Для этого редактируем указанный файл, изменяя последнюю строку:
vim /etc/aliases
= необходимо привести к виду =
# Person who should get root's mail
root: root,info@sevo44.ru
Обновляем базу сертификатов:
newaliases
Создание пула серверов
При подключении к консоли сервера вы увидете сообщение:
Нам предложено создать пул серверов, но делать мы это пока не будем так как это отдельная тема которой я посвящу отдельную статью.
Вводим 0 нажимаем Ентер и продолжаем работать дальше с имеющейся системой.
Вывод
В целом система мне понравилась. Радует наличие огромного количества проверок. Единственное что настоятельно рекомендую перед любыми действиями делать резервную копию, ну и конечно должны автоматически создаваться резервные копии за период который максимально позволяет размер дискового массива сервера резервных копий.
Обслуживание компьютеров, ремонт, лечение вирусов, модернизация. Системы на ОС Linux. Создание и продвижение Интернет проектов. Бесплатные консультации. Офисные АТС. Видеонаблюдение.