1C/MultiClient: различия между версиями
(Полностью описал процесс) |
(Добавлен код скрипта) |
||
Строка 21: | Строка 21: | ||
== Создание архива клиента 1С == | == Создание архива клиента 1С == | ||
Другую версию 1С нужно распаковать в папку /opt/1C/v8.3.x-xxxx. Для удобства | Другую версию 1С нужно распаковать в папку /opt/1C/v8.3.x-xxxx. Для удобства был написан [[1C/MultiClient#1ctarball.sh|скрипт (см.ниже)]], который намного упростит это действие. | ||
* Скрипт (можно скачать [https://yadi.sk/d/Sx3TXYQY3DoGaZ здесь]) | * Скрипт (можно скачать [https://yadi.sk/d/Sx3TXYQY3DoGaZ здесь]) положите в папку вместе с распакованными [[1C/Quick#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.BE.D0.B2|RPM-пакетами]] | ||
* Если у архитектура требуемого клиента x86_64 - скрипт менять не нужно. Если же нет - откройте его и измените значение переменной ''arch'' на i386. | * Если у архитектура требуемого клиента x86_64 - скрипт менять не нужно. Если же нет - откройте его и измените значение переменной ''arch'' на i386. | ||
* Сделайте его исполняемым ({{cmd|chmod +x 1ctarball.sh}}) | * Сделайте его исполняемым ({{cmd|chmod +x 1ctarball.sh}}) | ||
Строка 40: | Строка 40: | ||
Остается только настроить ярлыки для каждой из версий (самое простое - скопировать из меню существующий и изменить в нем команду) | Остается только настроить ярлыки для каждой из версий (самое простое - скопировать из меню существующий и изменить в нем команду) | ||
= 1сtarball.sh = | |||
<source lang="bash"> | |||
#!/bin/bash | |||
if ! [ $USER = "root" ]; then | |||
echo "Запустите скрипт с правами root!" | |||
exit 1 | |||
fi | |||
arch=x86_64 | |||
if [ -z $1 ]; then | |||
echo "Введите номер версии 1С в формате 8.3.x-xxxx" | |||
exit 1 | |||
else | |||
name="1C_Enterprise83" | |||
if ! [ -f $name-client-$1.$arch.rpm ]; then | |||
echo "В текущей директории не найдены необходимые пакеты для указанной версии 1С. | |||
Убедитесь в наличие всех следующих пакетов: | |||
* $name-client-$1.$arch.rpm | |||
* $name-client-nls-$1.$arch.rpm | |||
* $name-server-$1.$arch.rpm | |||
* $name-common-$1.$arch.rpm" | |||
exit 1 | |||
else | |||
echo -n "Подождите, операция выполняется..." | |||
rpm2cpio $name-client-$1.$arch.rpm | cpio -idmv 2> /dev/null | |||
rpm2cpio $name-client-nls-$1.$arch.rpm | cpio -idmv 2> /dev/null | |||
rpm2cpio $name-server-$1.$arch.rpm | cpio -idmv 2> /dev/null | |||
rpm2cpio $name-common-$1.$arch.rpm | cpio -idmv 2> /dev/null | |||
chown -R root:root opt | |||
mv opt/1C/v8.3 opt/1C/v$1 | |||
tar -cpzf 1С_$1.tgz opt | |||
rm -rf opt/ etc/ usr/ | |||
echo; echo "Выполнено, установите сгенерированный архив в систему командой (c правами root): | |||
# tar -xzvf 1С_$1.tgz -C /" | |||
exit 0 | |||
fi | |||
fi | |||
</source> | |||
{{Category navigation|title=1C|category=1C|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=1C|category=1C|sortkey={{SUBPAGENAME}}}} |
Версия от 18:13, 10 февраля 2017
Установка и настройка нескольких версий клиентов 1С 8.3
Необходимость в использовании нескольких версий платформ 1С на клиентских машинах актуальна, когда в организации несколько серверов 1С, и на каждом из них, установлена своя версия 1С-платформы.
Для примера имеются: сервер vm-db2 (192.168.0.10) - c версией платформы 1C 8.3.5-1460 и vm-pg9 (192.168.0.11) - c версией платформы 1C 8.3.9-2033. В данном случае для подключения к базам на одном ПК необходимо установить обе версии. В Windows проблем нет - каждая платформа ставится как отдельная программа. Например, после установки данных платформа - структура папок такова:
C:\Program Files (x86)\1cv8\8.3.5.1460 C:\Program Files (x86)\1cv8\8.3.9.2033 C:\Program Files (x86)\1cv8\common
В последней папке лежит файл 1cestart.exe, который выбирает при запуске базы из списка (он единый, хранится в Users\AppData) платформу, соответствующую установленной на сервере хранения этой базы.
Однако под Linux разработчики 1С не потрудились организовать такую же установку, при установке второй версии - 1С просто обновляется...
Идеальной была бы реализация, как у пакетов ядра kernel-image-*... Но пока справляемся своими силами.
Первичная установка одной из версий
Одну из необходимых версий нужно установить обычным способом, см. 1C/Quick.
В нашем случае выбрана 8.3.9-2033 (так как на данном сервере 1С - vm-pg9 - платформа обновляется намного чаще, чем на vm-db2).
ОС - BaseAlt Рабочая Станция 8.1, x86_64 (установлен 1c-preinstall-full и четыре необходимых RPM-пакета)
Создание архива клиента 1С
Другую версию 1С нужно распаковать в папку /opt/1C/v8.3.x-xxxx. Для удобства был написан скрипт (см.ниже), который намного упростит это действие.
- Скрипт (можно скачать здесь) положите в папку вместе с распакованными RPM-пакетами
- Если у архитектура требуемого клиента x86_64 - скрипт менять не нужно. Если же нет - откройте его и измените значение переменной arch на i386.
- Сделайте его исполняемым (chmod +x 1ctarball.sh)
- Запустите его в таком формате: ./1ctarball.sh <номер версии 1с в формате 8.3.x-xxxx> (в нашем случае ./1ctarball.sh 8.3.5-1460)
- Результатом будет архив c именем 1С_8.3.5-1460.tgz
Установка дополнительной версии клиента 1С
На клиентской машине (с уже установленной другой версией платформы!) выполняем от рута следующую команду:
tar -xzvf 1С_8.3.5-1460.tgz -C /
Теперь рядом с директорией /opt/1C/v8.3 (в которой установлена версия 8.3.9-2033) есть с другой версией: /opt/1C/v8.3.5-1460. Все, на вашем Линуксе установлено две версии клиента 1С (можно сделать и больше)
Настройка доступа к базам 1С
Затем необходимо настроить подключение к базам 1С. Из одного меню запуска, как в Windows, подключение к базам с разными версиями сделать не получится (так как исполняемый файл 1cestart для каждой из платформ свой), хотя список баз и будет общий - хранится в ~/.1C/1cestart.
Для подключения к серверу БД с версией 1С, которая установлена обычным способом (apt-get install), используется команда: /opt/1C/v8.3/x86_64/1cestart. Для подключения с помощью других имеющихся версий: /opt/1C/v8.3.x-xxxx/x86_64/1cestart
Остается только настроить ярлыки для каждой из версий (самое простое - скопировать из меню существующий и изменить в нем команду)
1сtarball.sh
#!/bin/bash
if ! [ $USER = "root" ]; then
echo "Запустите скрипт с правами root!"
exit 1
fi
arch=x86_64
if [ -z $1 ]; then
echo "Введите номер версии 1С в формате 8.3.x-xxxx"
exit 1
else
name="1C_Enterprise83"
if ! [ -f $name-client-$1.$arch.rpm ]; then
echo "В текущей директории не найдены необходимые пакеты для указанной версии 1С.
Убедитесь в наличие всех следующих пакетов:
* $name-client-$1.$arch.rpm
* $name-client-nls-$1.$arch.rpm
* $name-server-$1.$arch.rpm
* $name-common-$1.$arch.rpm"
exit 1
else
echo -n "Подождите, операция выполняется..."
rpm2cpio $name-client-$1.$arch.rpm | cpio -idmv 2> /dev/null
rpm2cpio $name-client-nls-$1.$arch.rpm | cpio -idmv 2> /dev/null
rpm2cpio $name-server-$1.$arch.rpm | cpio -idmv 2> /dev/null
rpm2cpio $name-common-$1.$arch.rpm | cpio -idmv 2> /dev/null
chown -R root:root opt
mv opt/1C/v8.3 opt/1C/v$1
tar -cpzf 1С_$1.tgz opt
rm -rf opt/ etc/ usr/
echo; echo "Выполнено, установите сгенерированный архив в систему командой (c правами root):
# tar -xzvf 1С_$1.tgz -C /"
exit 0
fi
fi