> /etc/systemd/system/usbhaspemul.service
[Unit]
Description=Emulation HASP key for 1C
Requires=haspd.service
After=haspd.service
[Service]
Type=simple
ExecStart=/usr/bin/sh -c 'find /etc/usbhaspkey -name "*.json" | xargs /usr/local/sbin/usbhasp'
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
В папку "/etc/usbhaspkey/" положить файлы дампов ключей и запустить службу эмулятора:
systemctl enable --now usbhaspemul
==== Обновление модулей ядра после обновления ядра ====
При обновлении ядра перестанут работать vhci-hcd и libusb_vhci. Перекомпилировать их можно следующим скриптом (в папке со скриптом должны быть папки с распакованными vhci-hcd-1.15 и libusb_vhci-0.8, можно использовать папки от предыдущей компиляции):
# cat after-kernel-update
#!/bin/sh
# Обновление модулей ядра после обновления ядра
# Должны присутствовать паапки:
# vhci-hcd-1.15
# libusb_vhci-0.8
KVER=`uname -r`
cd vhci-hcd-1.15
mkdir -p linux/${KVER}/drivers/usb/core
cp /usr/src/kernels/${KVER}/include/linux/usb/hcd.h linux/${KVER}/drivers/usb/core
make -s KVERSION=${KVER}
make install
modprobe usb_vhci_hcd
modprobe usb_vhci_iocifc
cd ..
cd libusb_vhci-0.8
./configure --enable-shared
make -s
make install
ldconfig
systemctl restart usbhaspemul
systemctl restart haspd
==== Установка сервера "USB Redirect" для возможной передачи ключей на другую машину ====
В этом случае, локально, ключи использовать нельзя:
curl -sL http://www.incentivespro.com/usb-redirector-linux-x86_64.tar.gz > usbredirector.tar.gz
tar -xpf usbredirector.tar.gz
cd usb-redirector-linux-x86_64
sh ./installer.sh install-server
usbsrv -autoshareon
usbsrv -createcallback 192.168.0.0:32032
==== Настройки USB Redirect Server ====
Показать все устройства:
usbsrv -l
Не "расшаривать" устройство:
usbsrv -t 1
Задать имя устройства:
usbsrv -nickname "Reserved" 8
==== Проверка наличия подключенных ключей ====
# lsusb | grep HASP
Bus 009 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 009 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 009 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Проверка работы этих ключей (если не запущен haspd и usbhaspemul, выхлоп пустой):
# /usr/sbin/usbkeytest --list
ID: 0529:0001, Bus: 009, Device: 004, Major: 189, Minor: 1027
ID: 0529:0001, Bus: 009, Device: 003, Major: 189, Minor: 1026
ID: 0529:0001, Bus: 009, Device: 002, Major: 189, Minor: 1025
==== Без HASPD ====
Пакет "haspd-7.90-eter2centos.x86_64.rpm" включает в себя драйверы для HASP и службу HASPD для раздачи ключей по сети.\\
Если раздавать ключи по сети нет необходимости, то данный пакет можно не устанавливать или отключить.\\
Если машина с CentOS 7 используется для раздачи ключей посредством "USB Redirect Server", то драйверы HASP на ней не требуются, потому, что они устанавливаются на машинах с клиентами "USB Redirect".
Если-же, машина с CentOS 7 используется, как сервер 1С, то вместо HASPD можно установить драйверы HASP от Sentinel:
Со страницы загрузки (https://thales-sentinel.ru/helpdesk/download-space/) скачать "Sentinel_LDK_Run-time_linux.zip", найти в архиве "Sentinel_LDK_Linux_Run-time_Installer_script/aksusbd-8.21.1/pkg/aksusbd-8.21-1.x86_64.rpm" и установить его.
Чтобы служба эмулятора запускалась без наличия HASPD, необходимо закомментировать или удалить строки в файле "/etc/systemd/system/usbhaspemul.service":
Requires=haspd.service
After=haspd.service
==== Несколько эмуляторов для нескольких клиентов на одной машине ====
Для раздачи ключей посредством "USB Redorect" для нескольких клиентов, можно запустить несколько служб "usbhaspemul" с уникальными именами, например, вместо файла "/etc/systemd/system/usbhaspemul.service", создать несколько файлов "hasp-1.service...hasp-N.service" включить и запустить их (можно пакетным файлом):
systemctl enable --now hasp-1
.
.
.
systemctl enable --now hasp-N
В этих файлах необходимо закомментировать строки:
Requires=haspd.service
After=haspd.service
После каждого изменения в вышеуказанных файлах, необходимо выполнять:
systemctl daemon-reload
Службу HASPD можно отключить или удалить.
==== Архивы и пакеты, используемые в командах (скачаны 25.12.2020г.) ====
{{ :other:haspd-7.90-eter2centos.x86_64.rpm |}}\\
{{ :other:libusb_vhci-0.8.tar.gz |}}\\
{{ :other:usbhasp.zip |}}\\
{{ :other:usbredirector.tar.gz |}}\\
{{ :other:vhci-hcd-1.15.tar.gz |}}\\
{{ :other:vhci_hcd.zip |}}\\
{{ :other:aksusbd-8.21-1.x86_64.rpm |}}
===== HTTPD =====
yum install httpd
systemctl enable httpd --now
Регистрация базы test_buh на http сервере:
webinst -apache24 -wsdir test_buh -dir /var/www/html/test_buh -connstr "Srvr=lin1c;Ref=test_buh;" -confPath /etc/httpd/conf/httpd.conf
systemctl reload httpd
Удаление публикации (таже строка с первым параметром -delete):
webinst -delete -apache24 -wsdir test_buh -dir /var/www/html/test_buh -connstr "Srvr=lin1c;Ref=test_buh;" -confPath /etc/httpd/conf/httpd.conf
systemctl reload httpd
В случае получения ошибки при входе браузером, "Permission denied; line=1067 file=./src/DataExchangeTcpClientImpl.cpp", проверить сообщения selinux:
grep httpd /var/log/audit/audit.log | grep denied
В случае наличия сообщений о запрете, добавить исключения:
semanage port -a -t http_port_t -p tcp 1541
semanage port -a -t http_port_t -p tcp 1560
Или отключить selinux.\\
https://qna.habr.com/q/340732
==== Конфигурация в отдельном файле ====
Лучший результат достигается при использовании отдельного файла для публикации баз на WEB сервере. Например, в файле "/etc/httpd/conf.d/1c.conf":
webinst -apache24 -wsdir test_buh -dir /var/www/html/test_buh -connstr "Srvr=lin1c;Ref=test_buh;" -confPath /etc/httpd/conf.d/1c.conf
В этом случае, конфигурация находится в файле "/etc/httpd/conf.d/1c.conf" и имеет такой вид:
LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap24.so"
# 1c publication
Alias "/test_buh" "/var/www/html/test_buh/"
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "/var/www/html/test_buh/default.vrd"
===== Клиент 1С, XRDP и KDE =====
Пакеты, необходимые для "толстого" клиента:
1C_Enterprise83-client
1C_Enterprise83-common
1C_Enterprise83-server
"1C_Enterprise83-server" ставится по зависимости от "1C_Enterprise83-client". Вохможно, при установке "тонкого" клиента, этой зависимости не будет.
yum install xrdp
Рабочий стол:
yum -y groupinstall "KDE Plasma Workspaces"
echo "exec startkde" >> /home/user/.xinitrc
chown user. /home/user/.xinitrc
yum -y install kde-l10n-Russian
systemctl enable xrdp
systemctl start xrdp
Чтобы в KDE отображались флаги стран, необходимо установить [[http://kochkin.mooo.com/files/kde-runtime-flags-4.13.3-3.fc20.noarch.rpm|пакет kde-runtime-flags от Fedora 20]], которого нет в репах CentOS.\\
Самый простой вариант установить его посредством RPM, потому, что YUM не ставит его из-за зависимостей, хотя, в пакете нет ничего, кроме картинок флагов.
rpm -ivh --nodeps http://kochkin.mooo.com/files/kde-runtime-flags-4.13.3-3.fc20.noarch.rpm
//**Клиент 1С не установился на CentOS 8. Требует libwebkitgtk-3.0.so.0, удалённый, как из CentOS 8, так и из Fedora 31.\\
Временно попробовал скопировать уже установленную 1С (сервер и клиента) с установки в CentOS 7.\\
Также скопировал с CentOS 7 недостающие библиотеки в папку с бинарнмками 1С.**//
Решение вышеуказанной проблемы найдено [[https://holydiver-777.livejournal.com/1388403.html|здесь:]]\\
Весь архив: {{ :other:webkitgtk3_el8.tar.gz |}}\\
Прямая ссылка на rpm файл: http://kochkin.mooo.com/files/webkitgtk3-2.4.11-7.el8.x86_64.rpm
==== Проблемы с переключением языков ввода в XRDP ====
Невозможно печатать русскими буквами. Индикатор переключается, но при вводе нет русских букв - только латинские. Как оказалось, это проблема vnc серверов, которая существует уже более 10-ти лет и не решается. А XRDP использует vnc сервер. Вариант решения: отказ от vnc и использование xorgxrdp.
Установить xorgxrdp
yum -y install xorgxrdp
В файле /etc/xrdp/xrdp.ini убрать секцию:
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
И раскомментировать секцию:
[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20
И перезапустить xrdp:
systemctl restart xrdp
==== Проблемы с обновления XRDP до версии 0.9.22-3====
На CentOS 8 Stream, XRDP перестал работать после обновления с версии 0.9.21-1 до 0.9.22-3.\\
Решение - обновление на тестовую версию 0.9.22-5:
dnf up --enablerepo=epel-testing xrdp
===== x2Go =====
Лучший результат, нежели с xrdp, был достигнут с использованием [[https://wiki.x2go.org/doku.php|x2go]].
__**ВНИМАНИЕ!**__ Устанавливать x2Go надо __**ПОСЛЕ**__ установки KDE и пакета "kde-l10n-Russian", иначе в KDE будет нарушение локализации - часть останется на английском языке и локаль в KDE будет POSIX, хотя вне KDE, у пользователя будет ru_RU.utf8.
Пакеты, необходимые для установки сервера x2go:
x2goserver-xsession
x2goserver
cups-x2go
x2goagent
x2goserver-common
x2goserver-printing
x2godesktopsharing
x2goserver-desktopsharing
yum -y install x2goserver-xsession x2goserver cups-x2go x2goagent x2goserver-common x2goserver-printing x2goserver-desktopsharing x2godesktopsharing
__**ВНИМАНИЕ!**__ Для разрешения печати, необходимо в файле "/usr/lib/systemd/system/cups.service" поменять "PrivateTmp=true" на "PrivateTmp=false"
и
systemctl daemon-reload && systemctl restart cups
__**ВНИМАНИЕ!**__ В случае запуска x2Go в контейнере LXC в Proxmox, необходимо включить опцию "FUSE" (Контейнер/Параметры/Features), иначе сервер x2Go не сможет смонтировать подключаемые папки пользователя.
{{:other:fuse-proxmox.png|}}
{{:other:201217-155358.png|}}
Для изменения политики, создать файл, например, "/usr/share/polkit-1/rules.d/10-x2go-policy.rules" со следующим содержимым:
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.login1.set-user-linger") {
return polkit.Result.YES;
}
});
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.color-manager.create-device" ||
action.id == "org.freedesktop.color-manager.create-profile" ||
action.id == "org.freedesktop.color-manager.delete-device" ||
action.id == "org.freedesktop.color-manager.delete-profile" ||
action.id == "org.freedesktop.color-manager.modify-device") {
return polkit.Result.YES;
}
});
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.NetworkManager.settings.modify.system")
{
polkit.log("NetworkManager.settings.modify.system: rule called");
return polkit.Result.YES;
}
});
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.NetworkManager.network-control")
{
polkit.log("NetworkManager.network-control: rule called");
return polkit.Result.YES;
}
});
Если будут выскакивать ещё какие-либо запросы, можно отследить, какие правила нужно переназначить, предварительно запустить слежение за журналом:
journalctl -u polkit -f
Если запуск программ через x2Go производится без использования рабочего стола, можно использовать переключение раскладки клавиатуры средствами X сервера:
setxkbmap -layout 'us,ru' -option 'grp:alt_shift_toggle,grp_led:scroll'
==== x2godesktopsharing ====
__**ВНИМАНИЕ!**__ Для доступа к сессии пользователя, **и администратор и пользователь** должны входить в группу "x2godesktopsharing", а у пользователя должен быть запущен "x2godesktopsharing" с включенным разрешением подключений.
Можно запустить "x2godesktopsharing" в автозапуске с ключом "--activate-desktop-sharing"
x2godesktopsharing --activate-desktop-sharing
, а администраторов, которым разрешено подключение к пользователю, необходимо указать в файле профиля пользователя "/home/user1c/.x2godesktopsharing/settings", параметр "whitelist", например:
whitelist=admin,gendir
В "x2godesktopsharing" в "CentOS 8" не работает ключ "--activate-desktop-sharing". Выводится сообщение "X server does not support XInput 2" и приложение завершает работу. Были взяты исходники "x2godesktopsharing" и в файле "sharetray.cpp", в районе 233-строки, изменено (добавлен вызов "slotStartSharing()"):
loadSystemSettings();
loadUserSettings();
setTrayIcon();
trayIcon->show();
на:
slotStartSharing();
loadSystemSettings();
loadUserSettings();
setTrayIcon();
trayIcon->show();
Для включения "тихого" режима, когда не показывается значок и не выводятся какие-либо сообщения, закомментировать вызов "trayIcon->show()".
"x2godesktopsharing" стал запускаться с разрешением подключений. Откомпилированный вариант - http://kochkin.mooo.com/files/x2godesktopsharing\\
Так-же это изменение влияет на повторное подключение после обрыва сеанса. Но для этого бинарник необходимо поместить в "/usr/bin/", иначе, при повторном подключении, вызывается неизменённый вариант.
Чтобы "x2godesktopsharing" запускался для всех пользователей при начале сеанса, можно создать файл "/etc/X11/xinit/xinitrc.d/x2godesktopsharing" со следующим содержимым:
#!/bin/sh
x2godesktopsharing &>/dev/null &
==== Аутентификация по ключу ====
Допустим, что на клиентском компьютере с Windows, пользователь "client", подключается к серверу x2Go с именем пользователя "user1c", то манипуляция с ключами выглядит так:\\
В клиенте Windows в качестве "RSA/DSA ключ для ssh соединения" указывается приватный ключ пользователя "C:/Users/client/.x2go/etc/ssh_host_rsa_key".\\
Публичный ключ пользователя "C:/Users/client/.x2go/etc/ssh_host_rsa_key.pub" добавляется на сервер в файл пользователя "/home/user1c/.ssh/authorized_keys".
Все версии клиентов для Windows: https://code.x2go.org/releases/binary-win32/\\
"Ночные" сборки для Windows: https://code.x2go.org/releases/binary-win32/x2goclient/heuler/mingw32-4.8/qt-4.8/
===== GUIRac & WebRac =====
GUIRac (https://github.com/OlegKochkin/guirac) и WebRac (https://github.com/OlegKochkin/webrac)
===== Задачи =====
==== Выгрузка в DT ====
Выгрузка в DT в текущую папку (запустилось из под root, ERP выгружается 3 минуты 14 секунд, 2 Гб):
/opt/1C/v8.3/x86_64/1cv8 CONFIG /S "lin1c\BASE" /N 1CUser /P 1CPassword /DumpIB "BASE-$(date +%y%m%d-%H%M%S).dt" /Out "BASE-$(date +%y%m%d-%H%M%S).log"
Для выгрузки в пакетном режиме, лучше использовать Xvfb (не выводит окна 1С клиента на экран):
yum install xorg-x11-server-Xvfb
xvfb-run /opt/1C/v8.3/x86_64/1cv8 CONFIG ...
==== Бэкап SQL ====
Бэкап SQL в bzip2 (самый долгий с наилучшим сжатием):
pg_dump -U postgres -w BASE | bzip2 -9 > "BASE-$(date +%y%m%d-%H%M%S).bz2"
Бэкап SQL (самый быстрый, без сжатия):
pg_dump -U postgres -w BASE > "BASE-$(date +%y%m%d-%H%M%S).sql"
Бэкап SQL в gzip (оптимальное соотношение скорости и сжатия):
pg_dump -U postgres -w BASE | gzip > "BASE-$(date +%y%m%d-%H%M%S).gz"
==== Восстановление из бэкапа SQL ====
**Бэкап восстанавливается, исключительно, в пустую базу. Иначе, при восстановлении, появляются ошибки и, впоследствии, база не работает!**
dropdb -U postgres GILEV
createdb -U postgres GILEV
gunzip -c GILEV.gz | psql -U postgres GILEV
==== Завершение сеансов на сервере 1С для заданной базы ====
Необходим запущенный "ras"
{{ :other:1c-sessions-close |}}
==== Копии статьи в RedMine ====
{{ :other:linux_1c-220816.pdf |}}
==== Записки на память (не форматировано) ====
dnf install http://repo.postgrespro.ru/pg_probackup/keys/pg_probackup-repo-centos.noarch.rpm
Если бэкап производится на той-же машине, где сервер PostgreSQL:
https://www.droider.org/content/vyzhimki-po-administrirovaniyu-postgres
pg_probackup init -B /mnt/pgbak
pg_probackup add-instance -B /mnt/pgbak --instance=LIN --pgdata=/var/lib/pgpro/1c-14/data
su postgres
pg_probackup backup -B /mnt/pgbak --instance=LIN -b FULL --stream --pgdata=/var/lib/pgpro/1c-14/data -U postgres -w --compress-algorithm=zlib --compress-level=9 --pghost=/tmp
pg_probackup backup -B /mnt/pgbak --instance=LIN -b DELTA --stream --pgdata=/var/lib/pgpro/1c-14/data --compress --pghost=/tmp
pg_probackup backup --instance=LIN -b DELTA --stream --compress
От root:
sudo -u postgres pg_probackup backup --instance=LIN -b DELTA --stream --compress
Проверка:
pg_probackup validate --instance=LIN
Восстановление:
pg_probackup restore --instance=LIN -B /mnt/pgbak/probackup -D /var/lib/pgpro/1c-14/data -i RKVB4E -j2 --recovery-target='immediate'
После поменять владельца на папку data postgres - chown -R postgres. data
После ОБЯЗАТЕЛЬНО !!! выйти из режима восстановления:
sudo -u postgres psql
postgres=# select pg_wal_replay_resume();
postgres=# \q
CryptoPro:
Версия (ключи есть для 5.0.11455 KC1):
./csptest -keyset -verifycontext
SQLCMD:
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/msprod.repo
dnf install mssql-tools unixODBC-devel
sqlcmd -U sa -P logotip -S sql.test -Q "SELECT @@VERSION;"
rsync -axvh --delete --progress lin.test:/mnt/pgbak/probackup/backups/LIN.TEST/ /mnt/pgbak/probackup/backups/LIN/
Запуск выгрузки 1С на виндовом сервере с линукса:
ssh oleg@sql.test "C:/PROGRA~1/1cv8/8.3.20.1996/bin/1cv8.exe" CONFIG /S "SQL\UKRAINE" /N System /P R04rby0ktu /DumpIB C:/TEST.dt /Out C:/TEST.dt.log /DisableStartUpMessages /DisableStartupDialogs /RunModeManagedApplication
Копирование и удаление по SSH
scp exec1c@SQL.TEST:C:/Windows/Temp/UKRAINE.dt /
ssh exec1c@SQL.TEST del C:\\Windows\\Temp\\UKRAINE.dt
Сеансы в системе:
loginctl
Завершить сеансы пользователя:
loginctl terminate-user USER
Установить количество соединений на процесс:
rac server --cluster=3f6860dd-e474-476b-8e2b-e000e81945e6 update --server=d8a3808e-1cf5-49ef-81a6-23d5bb378add --connections-limit=8