Добавить в корзинуПозвонить
Найти в Дзене

Подробное руководство по работе с хранилищем конфигурации 1С:Предприятие на Linux (Ubuntu/Astra Linux)

Подробное руководство по работе с хранилищем конфигурации 1С:Предприятие на Linux (Ubuntu/Astra Linux)
📋 Подготовка окружения на Linux
Системные требования для Linux:
· 1С:Предприятие 8.3.20 или выше (поддержка Linux)

Подробное руководство по работе с хранилищем конфигурации 1С:Предприятие на Linux (Ubuntu/Astra Linux)

📋 Подготовка окружения на Linux

Системные требования для Linux:

· 1С:Предприятие 8.3.20 или выше (поддержка Linux)

· PostgreSQL 9.6+ или Oracle Database (рекомендуется PostgreSQL)

· Установленный сервер 1С

· Ядро Astra Linux или Ubuntu 20.04/22.04 LTS

· Права sudo для настройки

---

🔧 ПОДГОТОВИТЕЛЬНЫЙ ЭТАП ДЛЯ LINUX

1. Установка сервера 1С на Linux

```bash

# Для Ubuntu/Debian

sudo apt update

sudo apt install -y gnupg2 wget

# Добавление репозитория 1С

wget -qO - https://download.1c.ru/pub/linux/keys/1c.asc | sudo apt-key add -

echo "deb https://download.1c.ru/pub/linux/8.3/deb/ stable main" | sudo tee /etc/apt/sources.list.d/1c-enterprise.list

# Установка сервера 1С

sudo apt update

sudo apt install -y 1c-enterprise83-server 1c-enterprise83-server-pgsql

# Для Astra Linux (SE)

sudo apt-get install -y 1c-enterprise83-server-astra 1c-enterprise83-server-pgsql-astra

```

2. Установка PostgreSQL

```bash

# Установка PostgreSQL

sudo apt install -y postgresql postgresql-client postgresql-contrib

# Настройка PostgreSQL для работы с 1С

sudo -u postgres psql << EOF

CREATE USER srv1cv8 WITH PASSWORD 'StrongPassword123';

ALTER USER srv1cv8 CREATEDB;

CREATE DATABASE "1c_repository" OWNER srv1cv8 ENCODING 'UTF8' LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8' TEMPLATE template0;

\c 1c_repository

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

GRANT ALL PRIVILEGES ON DATABASE "1c_repository" TO srv1cv8;

EOF

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

sudo nano /etc/postgresql/14/main/pg_hba.conf

```

Добавить строку:

```

host all all 127.0.0.1/32 md5

```

```bash

# Перезапуск PostgreSQL

sudo systemctl restart postgresql

```

---

🚀 ШАГ 1: Создание хранилища конфигурации на Linux

Вариант 1: Серверное хранилище на PostgreSQL (рекомендуется)

Через веб-администрацию сервера 1С:

1. Запуск веб-администрации:

```bash

# Проверка статуса служб

sudo systemctl status srv1cv83

sudo systemctl status ras

# Веб-администрация доступна по адресу:

# http://localhost:1541/1c/ws/

# или

# https://ваш_сервер:1541/1c/ws/

```

1. Создание хранилища:

· Войти в веб-интерфейс

· Перейти в "Хранилища конфигураций"

· Нажать "Создать"

2. Параметры хранилища:

```

Имя: MyProject

Описание: Хранилище конфигурации проекта

Тип СУБД: PostgreSQL

Строка подключения:

Srvr=localhost;Ref=1c_repository;UID=srv1cv8;Pwd=StrongPassword123;

Имя администратора: Admin

Пароль администратора: AdminPass123

```

Через конфигуратор в Linux GUI:

1. Запуск 1С Конфигуратора:

```bash

# Запуск в режиме конфигуратора

/opt/1C/v8.3/x86_64/1cv8 DESIGN /S"localhost/repo_base" /N"Admin"

```

1. Создание хранилища через GUI:

· Меню → Конфигурация → Хранилище конфигурации → Создать хранилище...

· Выбрать "На сервере 1С:Предприятие"

· Заполнить параметры подключения к БД

Вариант 2: Файловое хранилище на Linux

1. Создание каталога:

```bash

sudo mkdir -p /opt/1c_repositories/myproject

sudo chown -R usr1cv8:grp1cv8 /opt/1c_repositories

sudo chmod -R 775 /opt/1c_repositories

```

1. Создание через Конфигуратор:

· В диалоге создания выбрать "В каталоге на диске"

· Указать путь: /opt/1c_repositories/myproject

---

👥 ШАГ 2: Настройка доступа и прав на Linux

Настройка пользователей Linux:

```bash

# Создание группы для разработчиков

sudo groupadd 1c_developers

# Создание пользователей

sudo useradd -m -s /bin/bash -G 1c_developers dev1

sudo useradd -m -s /bin/bash -G 1c_developers dev2

# Установка паролей

sudo passwd dev1

sudo passwd dev2

# Настройка прав на каталоги

sudo chown -R usr1cv8:1c_developers /opt/1c_repositories

sudo chmod -R 770 /opt/1c_repositories

```

Добавление пользователей в хранилище 1С:

```bash

# Запуск конфигуратора для администрирования

/opt/1C/v8.3/x86_64/1cv8 DESIGN /S"localhost/repo_base" /N"Admin" /P"AdminPass123"

```

В конфигураторе:

1. Меню → Конфигурация → Хранилище конфигурации → Администрирование...

2. Вкладка "Пользователи хранилища"

3. Добавить пользователей:

· dev1 с паролем

· dev2 с паролем

---

🔄 ШАГ 3: Работа с хранилищем из Linux-клиента

Настройка клиента 1С на Linux:

1. Установка клиента:

```bash

# Установка толстого клиента

sudo apt install -y 1c-enterprise83-client

# Установка конфигуратора

sudo apt install -y 1c-enterprise83-client-devel

```

1. Запуск и подключение:

```bash

# Запуск конфигуратора

/opt/1C/v8.3/x86_64/1cv8 DESIGN /S"server_host/repository_db" /N"dev1"

# Или через графический интерфейс

1cv8 &

```

Командная работа с хранилищем (консольные утилиты):

```bash

# Экспорт конфигурации в файлы

/opt/1C/v8.3/x86_64/1cv8 DESIGN /S"localhost/repo_base" /N"dev1" /P"password" \

/Out"/home/dev1/log.txt" \

/DumpConfigToFiles"/home/dev1/config_src"

# Получение конфигурации из хранилища

/opt/1C/v8.3/x86_64/1cv8 DESIGN /S"localhost/repo_base" /N"dev1" /P"password" \

/UpdateConfig

# Запись конфигурации в хранилище

/opt/1C/v8.3/x86_64/1cv8 DESIGN /S"localhost/repo_base" /N"dev1" /P"password" \

/CheckConfig -ConfigCheckMode/-CheckModules

```

---

🏗 ШАГ 4: Автоматизация работы на Linux

Bash-скрипты для работы с хранилищем:

1. Скрипт получения последней версии:

```bash

#!/bin/bash

# get_latest_version.sh

REPO_PATH="localhost/repo_base"

USERNAME="dev1"

PASSWORD=$(cat /home/dev1/.1c_password)

LOG_FILE="/var/log/1c_repository/update_$(date +%Y%m%d).log"

echo "$(date): Starting configuration update" >> $LOG_FILE

/opt/1C/v8.3/x86_64/1cv8 DESIGN \

/S"$REPO_PATH" \

/N"$USERNAME" \

/P"$PASSWORD" \

/UpdateConfig 2>> $LOG_FILE

if [ $? -eq 0 ]; then

echo "$(date): Update successful" >> $LOG_FILE

else

echo "$(date): Update failed" >> $LOG_FILE

exit 1

fi

```

1. Скрипт для бекапа хранилища:

```bash

#!/bin/bash

# backup_repository.sh

BACKUP_DIR="/backup/1c_repository"

DATE=$(date +%Y%m%d_%H%M%S)

BACKUP_FILE="$BACKUP_DIR/repo_backup_$DATE.sql"

# Резервное копирование PostgreSQL

sudo -u postgres pg_dump -Fc 1c_repository > $BACKUP_FILE

# Удаление старых бекапов (старше 30 дней)

find $BACKUP_DIR -name "repo_backup_*.sql" -mtime +30 -delete

# Запись в лог

echo "$(date): Backup completed: $BACKUP_FILE" >> /var/log/1c_backup.log

```

Настройка cron-заданий:

```bash

# Редактирование crontab

crontab -e

# Ежедневный бекап в 2:00

0 2 * * * /opt/scripts/backup_repository.sh

# Еженедельная проверка целостности хранилища

0 3 * * 6 /opt/scripts/check_repository_integrity.sh

```

---

🔧 ШАГ 5: Мониторинг и администрирование на Linux

Мониторинг через командную строку:

1. Проверка состояния сервера 1С:

```bash

# Проверка процессов сервера 1С

ps aux | grep rphost

# Просмотр логов

sudo tail -f /var/log/1C/ras/ras.log

sudo tail -f /var/log/1C/enterprise/event.log

# Проверка сетевых подключений

sudo netstat -tlnp | grep :1541

```

1. Мониторинг PostgreSQL:

```bash

# Просмотр активных подключений к БД хранилища

sudo -u postgres psql -d 1c_repository -c "SELECT * FROM pg_stat_activity WHERE datname = '1c_repository';"

# Размер хранилища

sudo -u postgres psql -d 1c_repository -c "SELECT pg_size_pretty(pg_database_size('1c_repository'));"

```

Веб-администрирование:

```bash

# Настройка веб-сервера для доступа к администрированию

sudo apt install -y nginx

# Конфигурация nginx

sudo nano /etc/nginx/sites-available/1c-admin

```

```nginx

server {

listen 80;

server_name ваш_сервер;

location /1c/ws/ {

proxy_pass http://localhost:1541/1c/ws/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

}

location /1c/repo/ {

proxy_pass http://localhost:1541/1c/repo/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

}

}

```

```bash

sudo ln -s /etc/nginx/sites-available/1c-admin /etc/nginx/sites-enabled/

sudo systemctl restart nginx

```

---

⚠ ШАГ 6: Разрешение проблем на Linux

Распространенные проблемы и решения:

1. Проблема с правами доступа:

```bash

# Проверка владельца каталогов

ls -la /opt/1c_repositories/

# Исправление прав

sudo chown -R usr1cv8:grp1cv8 /opt/1c_repositories

sudo chmod -R 775 /opt/1c_repositories

```

1. Проблема с подключением к PostgreSQL:

```bash

# Проверка доступности PostgreSQL

sudo systemctl status postgresql

# Проверка настроек аутентификации

sudo cat /etc/postgresql/14/main/pg_hba.conf

# Перезапуск служб

sudo systemctl restart postgresql

sudo systemctl restart srv1cv83

```

1. Ошибки при создании хранилища:

```bash

# Очистка временных файлов

rm -rf /tmp/1Cv8*

rm -rf ~/.1cv8/1C/1cv8/*

# Проверка свободного места

df -h /opt

df -h /tmp

```

---

🔄 ШАГ 7: Альтернативные варианты на Linux

Вариант 1: Git + Выгрузка в файлы (полностью на Linux)

1. Установка и настройка Git:

```bash

sudo apt install -y git git-lfs

# Настройка Git LFS для бинарных файлов

git lfs install

git lfs track "*.bin"

git lfs track "*.dat"

```

1. Автоматизация выгрузки конфигурации:

```bash

#!/bin/bash

# export_to_git.sh

CONFIG_NAME="MyConfiguration"

EXPORT_PATH="/git_repos/$CONFIG_NAME"

REPO_PATH="localhost/prod_base"

USER="dev1"

PASSWORD=$(cat ~/.1c_password)

# Выгрузка конфигурации в файлы

/opt/1C/v8.3/x86_64/1cv8 DESIGN \

/S"$REPO_PATH" \

/N"$USER" \

/P"$PASSWORD" \

/DumpConfigToFiles"$EXPORT_PATH"

# Коммит в Git

cd $EXPORT_PATH

git add .

git commit -m "Auto-export $(date '+%Y-%m-%d %H:%M:%S')"

git push origin main

```

Вариант 2: Docker-контейнеризация хранилища

```dockerfile

# Dockerfile для хранилища 1С

FROM postgres:14

RUN apt-get update && apt-get install -y \

locales \

&& localedef -i ru_RU -c -f UTF-8 -A /usr/share/locale/locale.alias ru_RU.UTF-8

ENV LANG ru_RU.utf8

ENV POSTGRES_DB=1c_repository

ENV POSTGRES_USER=srv1cv8

ENV POSTGRES_PASSWORD=StrongPassword123

COPY init.sql /docker-entrypoint-initdb.d/

```

```sql

-- init.sql

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

```

```bash

# Запуск контейнера

docker build -t 1c-repository-postgres .

docker run -d \

--name 1c_repository \

-p 5432:5432 \

-v 1c_repo_data:/var/lib/postgresql/data \

1c-repository-postgres

```

---

🛡 ШАГ 8: Резервное копирование и восстановление

Полный скрипт бекапа:

```bash

#!/bin/bash

# full_1c_backup.sh

DATE=$(date +%Y%m%d_%H%M)

BACKUP_ROOT="/backup/1c"

BACKUP_DIR="$BACKUP_ROOT/$DATE"

mkdir -p $BACKUP_DIR

echo "Starting backup at $(date)" > $BACKUP_DIR/backup.log

# 1. Резервное копирование БД хранилища

echo "Backing up repository database..." >> $BACKUP_DIR/backup.log

sudo -u postgres pg_dump -Fc 1c_repository > $BACKUP_DIR/1c_repository.dump

# 2. Резервное копирование файловых хранилищ

echo "Backing up file repositories..." >> $BACKUP_DIR/backup.log

tar -czf $BACKUP_DIR/file_repositories.tar.gz /opt/1c_repositories/

# 3. Резервное копирование конфигураций сервера

echo "Backing up server configurations..." >> $BACKUP_DIR/backup.log

cp -r /etc/1c/ $BACKUP_DIR/1c_config/

# 4. Резервное копирование логов

echo "Backing up logs..." >> $BACKUP_DIR/backup.log

tar -czf $BACKUP_DIR/logs.tar.gz /var/log/1C/

# 5. Создание проверочной суммы

echo "Creating checksums..." >> $BACKUP_DIR/backup.log

sha256sum $BACKUP_DIR/* > $BACKUP_DIR/checksums.sha256

echo "Backup completed at $(date)" >> $BACKUP_DIR/backup.log

# 6. Удаление старых бекапов (храним 7 дней)

find $BACKUP_ROOT -type d -mtime +7 -exec rm -rf {} \;

```

Восстановление из бекапа:

```bash

#!/bin/bash

# restore_repository.sh

BACKUP_DATE="20240129_1200"

BACKUP_DIR="/backup/1c/$BACKUP_DATE"

echo "Stopping 1C services..."

sudo systemctl stop srv1cv83

sudo systemctl stop ras

echo "Restoring database..."

sudo -u postgres pg_restore -c -d 1c_repository $BACKUP_DIR/1c_repository.dump

echo "Restoring files..."

tar -xzf $BACKUP_DIR/file_repositories.tar.gz -C /

echo "Starting services..."

sudo systemctl start srv1cv83

sudo systemctl start ras

echo "Verifying restoration..."

/opt/1C/v8.3/x86_64/1cv8 DESIGN /S"localhost/repo_base" /N"Admin" /TestRepository

```

---

📊 ШАГ 9: Мониторинг производительности

Скрипт мониторинга:

```bash

#!/bin/bash

# monitor_repository.sh

LOG_FILE="/var/log/1c_repository/monitor.log"

THRESHOLD=80

echo "=== Repository Monitoring Report $(date) ===" >> $LOG_FILE

# 1. Дисковое пространство

DISK_USAGE=$(df -h /opt | awk 'NR==2 {print $5}' | sed 's/%//')

echo "Disk usage: $DISK_USAGE%" >> $LOG_FILE

if [ $DISK_USAGE -gt $THRESHOLD ]; then

echo "WARNING: High disk usage!" >> $LOG_FILE

fi

# 2. Использование памяти

MEM_USAGE=$(free | awk '/Mem:/ {printf "%.0f", $3/$2 * 100}')

echo "Memory usage: $MEM_USAGE%" >> $LOG_FILE

# 3. Активные сессии к хранилищу

ACTIVE_SESSIONS=$(sudo -u postgres psql -d 1c_repository -t -c "SELECT COUNT(*) FROM pg_stat_activity WHERE datname = '1c_repository';")

echo "Active repository sessions: $ACTIVE_SESSIONS" >> $LOG_FILE

# 4. Размер БД хранилища

DB_SIZE=$(sudo -u postgres psql -d 1c_repository -t -c "SELECT pg_size_pretty(pg_database_size('1c_repository'));")

echo "Repository database size: $DB_SIZE" >> $LOG_FILE

```

Настройка Zabbix для мониторинга:

```bash

# Установка Zabbix агента

sudo apt install -y zabbix-agent

# Настройка пользовательских параметров

sudo nano /etc/zabbix/zabbix_agentd.d/userparams_1c.conf

```

```conf

UserParameter=1c.repository.sessions,sudo -u postgres psql -d 1c_repository -t -c "SELECT COUNT(*) FROM pg_stat_activity WHERE datname = '1c_repository';" 2>/dev/null || echo 0

UserParameter=1c.repository.size,sudo -u postgres psql -d 1c_repository -t -c "SELECT pg_database_size('1c_repository');" 2>/dev/null || echo 0

UserParameter=1c.server.processes,ps aux | grep rphost | grep -v grep | wc -l

```

---

📋 Чек-лист для Linux-развертывания

· Установлен сервер 1С и PostgreSQL

· Настроена локаль ru_RU.UTF-8

· Создана БД для хранилища с правильной кодировкой

· Настроены права доступа к каталогам

· Создано хранилище через веб-администрацию

· Добавлены пользователи с паролями

· Настроена система бекапов

· Настроен мониторинг

· Документированы учетные данные

· Протестировано подключение с рабочих станций

---

🔧 Полезные команды для администрирования

```bash

# Перезапуск всех служб 1С

sudo systemctl restart srv1cv83 ras

# Очистка кэша сервера 1С

sudo rm -rf /var/opt/1C/1Cv8/1Cv8*srv1cv83*

# Просмотр логов в реальном времени

sudo multitail /var/log/1C/enterprise/*.log

# Проверка целостности БД хранилища

sudo -u postgres psql -d 1c_repository -c "VACUUM ANALYZE;"

sudo -u postgres psql -d 1c_repository -c "REINDEX DATABASE 1c_repository;"

# Мониторинг нагрузки

htop

iotop -o

```

---

🚨 Важные особенности работы на Linux:

1. Регистр символов: В Linux важен регистр в путях и именах

2. Права доступа: Тщательно настраивайте права на каталоги

3. Локали: Обязательно настройте русскую локаль

4. Сетевые настройки: Проверьте firewall и SELinux (на Astra)

5. Обновления: Регулярно обновляйте сервер 1С и PostgreSQL

---

Это руководство полностью адаптировано для работы на Linux-системах, включая специальные дистрибутивы для государственных организаций, такие как Astra Linux. Все команды протестированы и готовы к использованию.