Подробное руководство по работе с хранилищем конфигурации 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. Все команды протестированы и готовы к использованию.