Обновление тонких клиентов 1С через Apache и PHP
-

Обновление тонких клиентов 1С через Apache и PHP

0
7256
10.10.2024 Егор Баукин

Содержание:



Современные бизнес-процессы требуют оперативного доступа к информационным системам, и платформа системы 1С: Предприятие играет в этом ключевую роль. Обеспечение своевременного обновления тонких клиентов 1С является критически важным для поддержания безопасности и эффективности работы. В этой статье мы рассмотрим, как настроить автоматическое обновление тонких клиентов 1С с помощью веб-сервера Apache и скриптов на PHP, а также подробно разберем, как это взаимодействует с механизмами обновления в 1С.   


1. Преимущества автоматического обновления 1С

 

Централизованное управление: Все обновления распространяются с одного сервера, что упрощает контроль версий.

Снижение нагрузки на ИТ-персонал: Исключается необходимость ручного обновления на каждом рабочем месте, экономя время и ресурсы.

Повышение безопасности: Своевременное применение патчей и обновлений снижает риски уязвимостей.

Повышение стабильности работы системы: Обновления часто включают исправления ошибок и оптимизацию производительности.   


2. Механизм обновления тонких клиентов 1С

 

Тонкий клиент 1С: Предприятие обладает встроенным механизмом автоматического обновления. При запуске клиент проверяет свою версию и, если обнаруживает доступное обновление, предлагает пользователю установить его.


Как работает обновление в 1С:

1. Чтение конфигурации: При запуске тонкий клиент обращается к файлу 1cestart.cfg для чтения параметров.

2. Проверка параметров обновления: Если в конфигурации установлено AutoUpdate=yes, клиент инициирует проверку обновлений.

3. Запрос к серверу обновлений: Клиент обращается по адресу, указанному в UpdateURL, передавая текущую версию.

4. Сравнение версий 1С: Сервер сравнивает версию клиента с доступной на сервере.

5. Предоставление обновления: Если на сервере есть более новая версия, клиент скачивает ее и запускает процесс обновления.

6. Установка обновления 1С: После скачивания клиент автоматически устанавливает обновление и перезапускается.


Роль Apache и PHP в обновлении:

Apache: Выступает в роли веб-сервера, обрабатывающего запросы от тонких клиентов.

• PHP-скрипт: Отвечает на запросы клиента, сравнивает версии и предоставляет обновления при необходимости.   


3. Необходимые компоненты 1С: Предприятие

 

Веб-сервер Apache: Для обработки HTTP-запросов от тонких клиентов.

Интерпретатор PHP: Для выполнения логики сравнения версий и передачи обновлений.

Дистрибутивы обновлений тонкого клиента 1С: Последние версии тонкого клиента 1С.


Шаг 1: Установка и настройка Apache

Установка Apache и PHP

Установите Apache и PHP на сервер, который будет использоваться для распространения обновлений.

Для Linux (Ubuntu/Debian):


sudo apt-get update

sudo apt-get install apache2 php libapache2-mod-php


Для Windows:

Скачайте и установите XAMPP, который включает Apache и PHP.


Настройка виртуального хоста

Создайте файл конфигурации 1С для вашего виртуального хоста.

Linux:

Создайте файл /etc/apache2/sites-available/update.conf с содержимым:


<VirtualHost *:80>

    ServerName updates.yourdomain.com

    DocumentRoot /var/www/updates

    <Directory /var/www/updates>

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>


Активируйте виртуальный хост и перезапустите Apache:


sudo a2ensite update.conf

sudo systemctl reload apache2


Windows (XAMPP):

Редактируйте файл httpd-vhosts.conf, добавив:


<VirtualHost *:80>

    ServerName updates.yourdomain.com

    DocumentRoot "C:/xampp/htdocs/updates"

    <Directory "C:/xampp/htdocs/updates">

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>


Перезапустите Apache через панель управления XAMPP.


Шаг 2: Подготовка директории обновлений

Создайте структуру каталогов для хранения скриптов и файлов обновлений.


Linux:

sudo mkdir -p /var/www/updates/{scripts,files}

sudo chown -R www-data:www-data /var/www/updates


Windows:

Создайте папку C:\xampp\htdocs\updates и внутри нее папки scripts и files.


Шаг 3: Разработка PHP-скрипта для обновлений

Создайте файл update.php в директории scripts, который будет отвечать на запросы от тонких клиентов 1С.


Содержание update.php:

<?php

// Получаем версию клиента из параметров запроса

$clientVersion = $_GET['version'] ?? '';

 

// Указываем актуальную версию тонкого клиента

$latestVersion = '8.3.20.1686';

 

// Функция для сравнения версий

function versionGreaterThan($ver1, $ver2) {

    return version_compare($ver1, $ver2, '>');

}

 

if (!$clientVersion) {

    http_response_code(400);

    echo 'Не указана версия клиента.';

    exit;

}

 

if (version_compare($clientVersion, $latestVersion, '<')) {

    // Путь к файлу обновления

    $filePath = __DIR__ . '/../files/1C_ThinClient_' . $latestVersion . '.msi';

 

    if (file_exists($filePath)) {

        // Отправляем файл обновления клиенту

        header('Content-Type: application/octet-stream');

        header('Content-Disposition: attachment; filename="1C_ThinClient_Update.msi"');

        header('Content-Length: ' . filesize($filePath));

 

        // Выводим содержимое файла

        readfile($filePath);

    } else {

        http_response_code(404);

        echo 'Обновление не найдено.';

    }

} else {

    echo 'Ваш клиент актуален.';

}

?>


Разбор скрипта:

Получение версии клиента: Скрипт получает версию клиента из параметра запроса version.

Сравнение версий: Используется функция version_compare для определения, нужна ли обновление.

Отправка обновления: Если требуется обновление, скрипт отправляет клиенту файл MSI для установки.

Обработка ошибок: Скрипт возвращает соответствующие HTTP-коды и сообщения об ошибках при необходимости.


<a name="step4"></a>


Шаг 4: Размещение файлов обновлений

Скопируйте установочный файл тонкого клиента 1С: Предприятие в директорию files.


Linux:

sudo cp 1C_Enterprise_ThinClient_8.3.20.1686.msi /var/www/updates/files/

sudo chown www-data:www-data /var/www/updates/files/1C_Enterprise_ThinClient_8.3.20.1686.msi


Windows:

Скопируйте файл 1C_Enterprise_ThinClient_8.3.20.1686.msi в C:\xampp\htdocs\updates\files\.

Важно: Убедитесь, что имя файла в скрипте update.php совпадает с фактическим именем файла.


Шаг 5: Настройка тонких клиентов 1С: Предприятие

На компьютерах пользователей необходимо настроить файл конфигурации 1cestart.cfg.


Параметры конфигурации:

[Options]

AutoUpdate=yes

UpdateURL=http://updates.yourdomain.com/scripts/update.php


AutoUpdate: Включает автоматическое обновление клиента.

UpdateURL: Указывает URL для проверки обновлений. Этот адрес должен быть доступен клиенту и вести к вашему скрипту update.php.


Расположение файла 1cestart.cfg:

Windows: Обычно находится в папке установки тонкого клиента, например, C:\Program Files (x86)\1cv8\conf\1cestart.cfg.

Linux: Файл может находиться в /etc/1C/1cestart.cfg или в домашней директории пользователя.


Альтернативный способ настройки:

Вы можете использовать параметры командной строки при запуске тонкого клиента:

1cv8.exe ENTERPRISE /S"server_name\base_name" /AutoUpdate /UpdateURL"http://updates.yourdomain.com/scripts/update.php"


Шаг 6: Тестирование обновления

1. Имитируйте устаревшую версию клиента:

• Временно измените версию клиента в 1cestart.cfg на более старую.

• Например, установите Version=8.3.20.1641.

2. Запустите тонкий клиент и убедитесь, что он:

• Обращается к вашему серверу обновлений.

• Скачивает обновление.

• Запускает процесс установки обновления.

3. Мониторинг процесса:

• Проверьте логи Apache и PHP на сервере обновлений.

• Убедитесь, что запросы поступают и обрабатываются корректно.

4. Проверка обновления:

• После обновления клиент должен иметь версию 8.3.20.1686.

• Повторный запуск клиента не должен инициировать обновление.


Шаг 7: Обеспечение безопасности

Включение HTTPS

Для защиты передаваемых данных следует использовать HTTPS.


Получение SSL-сертификата:

• Используйте Let's Encrypt для получения бесплатного сертификата.

• Установите сертификат на ваш веб-сервер.


Настройка Apache для HTTPS:

<VirtualHost *:443>

    ServerName updates.yourdomain.com

    DocumentRoot /var/www/updates

    SSLEngine on

    SSLCertificateFile /path/to/fullchain.pem

    SSLCertificateKeyFile /path/to/privkey.pem

    <Directory /var/www/updates>

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>


Ограничение доступа

Ограничьте доступ к серверу обновлений по IP или настройте аутентификацию.


Ограничение по IP:

<Directory /var/www/updates>

    Require ip 192.168.1.0/24

</Directory>


Настройка аутентификации:

Создайте файл .htpasswd и настройте доступ.


<Directory /var/www/updates>

    AuthType Basic

    AuthName "Restricted Access"

    AuthUserFile /etc/apache2/.htpasswd

    Require valid-user

</Directory>


Дополнительные возможности:

Логирование обновлений

Добавьте в скрипт update.php ведение журнала обращений для мониторинга и анализа.

// Логирование


// Логирование

$logEntry = sprintf(

    "[%s] IP: %s - Client version: %s\n",

    date('Y-m-d H:i:s'),

    $_SERVER['REMOTE_ADDR'],

    $clientVersion

);

file_put_contents('/var/log/update_log.txt', $logEntry, FILE_APPEND);


Уведомления администраторам

Настройте отправку уведомлений при возникновении ошибок.


if (!file_exists($filePath)) {

    // Отправка уведомления администратору

    mail('admin@yourdomain.com', 'Ошибка обновления', 'Файл обновления не найден');

 

    http_response_code(404);

    echo 'Обновление не найдено.';

    exit;

}


Поддержка нескольких версий

Если у вас используются разные версии платформы 1С: Предприятие, скрипт можно доработать для предоставления соответствующих обновлений.


// Получаем архитектуру ОС (x86 или x64)

$clientArch = $_GET['arch'] ?? 'x86';

 

// Определяем имя файла обновления

$fileName = sprintf('1C_ThinClient_%s_%s.msi', $latestVersion, $clientArch);

 

// Остальной код остается прежним


Интеграция с сервером 1С

Можно настроить автоматическое обновление тонких клиентов при обновлении платформы на сервере 1С.

Скрипт обновления платформы: После обновления сервера копируйте новую версию клиента в директорию обновлений.

Обновление latestVersion в скрипте: Автоматически обновляйте переменную $latestVersion в update.php.


Заключение:

Настройка автоматического обновления тонких клиентов 1С через Apache и PHP позволяет значительно упростить процесс администрирования и повысить безопасность системы. Понимание того, как тонкий клиент 1С: Предприятие взаимодействует с сервером обновлений, позволяет настроить систему более эффективно и избежать возможных ошибок.


Основные преимущества такого подхода:

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

Снижение ИТ-рисков: Исключаются ситуации, когда разные рабочие места работают на разных версиях клиента.

Удобство для пользователей: Обновления устанавливаются быстро и незаметно для пользователя.


Рекомендации:

Тестирование: Перед внедрением в рабочую среду протестируйте обновление на нескольких компьютерах.

Документация: Подготовьте инструкции для пользователей на случай возникновения вопросов.

•  Обратная связь: Собирайте отзывы от пользователей для улучшения процесса обновления.


Примечание: Поддерживайте актуальность сервера обновлений, своевременно загружая новые версии тонкого клиента и обновляя скрипт update.php.




Благодарим за внимание! Надеемся, что эта статья поможет вам настроить эффективную систему обновления тонких клиентов 1С.

    

Специалист компании ООО "Кодерлайн"

Егор Баукин

 

Обсудить статью в Telegram Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Услуги программиста 1С
Получите специалиста
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.