1C

Материал из wiki.nntc.nnov.ru
Версия от 13:27, 8 июня 2024; Vovan (обсуждение | вклад) (Поставить и настроить актуальную для p10 версию postgres с модификациями для 1С)
Перейти к навигации Перейти к поиску

На ОС Альт платформы p9 и p10

Обновление ос с платформы p9 на p10

Снять дампы баз данных из postgres

su - root
pg_dump -U postgres cp > dump_cp.sql
pg_dump -U postgres cp_demo > dump_cp_demo.sql
pg_dump -U postgres dcp > dump_dcp.sql
pg_dump -U postgres libr > dump_libr.sql
pg_dump -U postgres postgres > dump_passport.sql

Обновить дистрибутив до самого свежего p9

apt-get update
apt-get dist-upgrade

Изменить источники для обновления

apt-get install apt-repo
apt-repo set p10

Обновиться до p10

apt-get update
apt-get clean
apt-get dist-upgrade -d

Первая команда удалит из кэша apt все старые пакеты, вторая скачает (но не установит) все нужные пакеты. Полученное содержимое /var/cache/apt может быть использовано для последующей массовой установки пакетов посредством rpm.

apt-get dist-upgrade
update-kernel -t std-def
reboot

Удалить старую версию postgres с модификациями для 1С

apt-get remove --purge postgresql12-1C postgresql12-1C-server
mv /var/lib/pgsql/data /var/lib/pgsql/data_old

Поставить и настроить актуальную для p10 версию postgres с модификациями для 1С

apt-get install postgresql15-1C postgresql15-1C-server postgresql15-1C-contrib postgresql15-1C-llvmjit postgresql15-1C-perl postgresql15-1C-python postgresql15-1C-tcl postgresql15-1C-pg_repack postgresql15-1C-docs


/etc/init.d/postgresql initdb
cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.backup
cp /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.backup
cat << 'EOF' > /var/lib/pgsql/data/pg_hba.conf 
# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             postgres                                md5

# "local" is for Unix domain socket connections only
local   all             all                                     peer

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0            md5
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5
EOF
cat << 'EOF' > /var/lib/pgsql/data/postgresql.conf 
listen_addresses = '*'
max_connections = 50			
shared_buffers = 4GB
huge_pages = off
temp_buffers = 256MB
work_mem = 27525kB
maintenance_work_mem = 1536MB
dynamic_shared_memory_type = posix
max_files_per_process = 8000
effective_io_concurrency = 200
max_worker_processes = 32
max_parallel_workers_per_gather = 4
max_parallel_maintenance_workers = 4
max_parallel_workers = 32
wal_buffers = 16MB
checkpoint_completion_target = 0.9
max_wal_size = 4GB
min_wal_size = 1GB
random_page_cost = 1.1
effective_cache_size = 32256MB
default_statistics_target = 500	# range 1-10000
from_collapse_limit = 20
join_collapse_limit = 20
log_destination = 'stderr'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_file_mode = 0600
log_rotation_size = 10MB
log_min_messages = warning
log_checkpoints = off
log_timezone = 'Europe/Moscow'
datestyle = 'iso, dmy'
timezone = 'UTC'
lc_messages = 'ru_RU.UTF-8'
lc_monetary = 'ru_RU.UTF-8'
lc_numeric = 'ru_RU.UTF-8'
lc_time = 'ru_RU.UTF-8'
default_text_search_config = 'pg_catalog.russian'
shared_preload_libraries = 'online_analyze, plantuner'	# (change requires restart)
max_locks_per_transaction = 150
escape_string_warning = off
standard_conforming_strings = off
online_analyze.threshold = 50
online_analyze.scale_factor = 0.1
online_analyze.enable = off
online_analyze.verbose = off
online_analyze.local_tracking = on
online_analyze.min_interval = 10000 
online_analyze.table_type = 'temporary'
EOF
systemctl enable --now postgresql
psql -U postgres -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='en_US.UTF-8', datctype='en_US.UTF-8' WHERE datname='postgres';";
psql -U postgres -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='en_US.UTF-8', datctype='en_US.UTF-8' WHERE datname='template0';";
psql -U postgres -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='en_US.UTF-8', datctype='en_US.UTF-8' WHERE datname='template1';";
NEW_PASS='ваш новый пароль здесь'
psql -U postgres -c "ALTER USER postgres WITH PASSWORD '${NEW_PASS}'";

Залить дампы обратно

cd

Создать пустые базы

dbname='cp'
psql -U postgres -c "CREATE DATABASE ${dbname};"
psql -U postgres -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='en_US.UTF-8', datctype='en_US.UTF-8' WHERE datname='${dbname}';GRANT ALL ON DATABASE ${dbname} TO postgres;ALTER DATABASE ${dbname} OWNER TO postgres;"
dbname='dcp'
psql -U postgres -c "CREATE DATABASE ${dbname};"
psql -U postgres -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='en_US.UTF-8', datctype='en_US.UTF-8' WHERE datname='${dbname}';GRANT ALL ON DATABASE ${dbname} TO postgres;ALTER DATABASE ${dbname} OWNER TO postgres;"
dbname='cp_demo'
psql -U postgres -c "CREATE DATABASE ${dbname};"
psql -U postgres -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='en_US.UTF-8', datctype='en_US.UTF-8' WHERE datname='${dbname}';GRANT ALL ON DATABASE ${dbname} TO postgres;ALTER DATABASE ${dbname} OWNER TO postgres;"
dbname='libr'
psql -U postgres -c "CREATE DATABASE ${dbname};"
psql -U postgres -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='en_US.UTF-8', datctype='en_US.UTF-8' WHERE datname='${dbname}';GRANT ALL ON DATABASE ${dbname} TO postgres;ALTER DATABASE ${dbname} OWNER TO postgres;"
dbname='passport'
psql -U postgres -c "CREATE DATABASE ${dbname};"
psql -U postgres -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='en_US.UTF-8', datctype='en_US.UTF-8' WHERE datname='${dbname}';GRANT ALL ON DATABASE ${dbname} TO postgres;ALTER DATABASE ${dbname} OWNER TO postgres;"

Залить в них дампы

psql -U postgres cp -f dump_cp.sql
psql -U postgres dcp -f dump_dcp.sql
psql -U postgres cp_demo -f dump_cp_demo.sql
psql -U postgres libr -f dump_libr.sql
psql -U postgres passport -f dump_passport.sql

Установка продуктов 1C на Ubuntu14.04

Установка сервера

Для удобства администрирования был выбран дистрибутив UbuntuMATERemix со старым добрым GNOME-ом версии 2 (ныне существующим под названием MATE)

Установка происходит в обычном режиме. Если нужно, настраивается доступ через NoMachine.

Особенность:

На Ubuntu Server 14.04 из репозитория устанавливается Apache 2.4, с которым не работает 1C при публикации WEB-клиента
Нужно снизить версию Apache до 2.2, чтобы получилось опубликовать веб-клиент по HTTP

Снижение версии Apache до 2.2

Рабочий вариант по снижению версии был найден в этом блоге IT-шника и заключается в следующем:

Открываем файл (его по умолчанию нет):

nano /etc/apt/sources.list.d/ubuntu1204.list

Добавляем туда содержимое:

deb http://ru.archive.ubuntu.com/ubuntu/ precise main

Открываем файл (его по умолчанию тоже нет):

nano /etc/apt/preferences.d/apache22

Добавляем туда содержимое:

Package: apache*
Pin: release a=precise
Pin-Priority: 500

Обновляем список репозиториев

apt-get update

Обновляем систему (если надо)

sudo apt-get dist-upgrade

Устанавливаем apache2

sudo apt-get install apache2

Проверяем версию apache

apache2 -v

Должна быть

2.2

Работало вчера (--Vovan (обсуждение) 06:34, 27 декабря 2014 (UTC))

Установка платформы 1C:Предприятие

Установка

Для установки платформы 1С необходимо

  • Зарегистрироваться на личный кабинет пользователя 1С путем ввода данных регистрационного номера и пин кода с белого конверта, входящего в состав решения, которое приобретено у дилера 1C
  • Найти в личном кабинете дистрибутив в виде deb-пакетов
  • Скачать их, например, в домашнюю директорию пользователя
  • Распаковать, перейти в директорию с пакетами и установить (dpkg -i ./*.deb)

Развёртывание конфигурации

Для развертывания конфигурации нужно

  • запустить 1C:Предприятие и добавить конфигурацию стандартным способом (см. инструкции от 1С)
  • запустить конфигуратор для развернутой конфигурации

После запуска конфигуратора, если запуск производится впервые, система откроет диалог получения программной лицензии. В этом диалоге нужно заполнить форму и выполнить все условия по регистрации программной лицензии.

Теперь самое интересное и В А Ж Н О Е:

Если вы, например, запустили 1С:Предприятие под пользовтаелем administrator и получили программную лицензию,
то в домашней директории пользователя administrator в скрытой директории .1cv8 будет создана директория 1C,
внутри которой будет находиться полученная программная лицензия. С этого момента запуск конфигурации ПРИВЯЗАН к пользовтаелю administrator.
То есть, если Вы вдруг поставили apache2, настроили все как пишут в учебниках и в вебе конфигурация запускается, но просит лицензию, то знайте - 
пока вы не запустите apache2 от пользователя administrator, а не из под www-data (по уполчанию) - лицензия не будет найдена.

Почему?

Видимо, потому, что при запуске веб-клиента, проверяется пользователь, от которого запущен процесс apache2, далее система проверяет наличие
скрытой директории с лицензией в домашней директории пользователя, под которым работает apache2.

Важно:

Даже если Вы захотите переложить директорию с лицензией в домашнюю директорию пользвоателя www-data, ничего не получится, т.к. файл лицензии при её
запросе завязан на имя пользователя, от которого работала платформа в момент получения лицензии (ну и еще на ряд параметров железа, при изменении 
которых лицензия слетает, см. официальные руководства от 1С)

И как же быть? - Заставить apache2 запускаться от пользователя, от которого получали лицензию (в контексте этой статьи - administrator).

Как заставить Apache запускаться от пользователя, под которым была получена программная лицензия?

Открыть файл

nano /etc/apache2/envvars

Заменить строки

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

На

export APACHE_RUN_USER=administrator
export APACHE_RUN_GROUP=administrator

Перезапустить apache2

service apache2 restart