1C: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Поставить и настроить актуальную для p10 версию postgres с модификациями для 1С)
(Поставить и настроить актуальную для p10 версию postgres с модификациями для 1С)
 
(не показаны 3 промежуточные версии этого же участника)
Строка 59: Строка 59:
 
cat << 'EOF' > /var/lib/pgsql/data/pg_hba.conf  
 
cat << 'EOF' > /var/lib/pgsql/data/pg_hba.conf  
 
# TYPE  DATABASE        USER            ADDRESS                METHOD
 
# TYPE  DATABASE        USER            ADDRESS                METHOD
local  all            postgres                                md5
 
  
 
# "local" is for Unix domain socket connections only
 
# "local" is for Unix domain socket connections only
local  all            all                                    peer
+
local  all            all                                    trust
  
 
# IPv4 local connections:
 
# IPv4 local connections:
host    all            all            127.0.0.1/32            md5
+
host    all            all            127.0.0.1/32            trust
 
host    all            all            0.0.0.0/0            md5
 
host    all            all            0.0.0.0/0            md5
local  replication    all                                    peer
+
 
host    replication    all            127.0.0.1/32            md5
+
# Allow replication connections from localhost, by a user with the
host    replication    all            ::1/128                md5
+
# replication privilege.
 +
local  replication    all                                    trust
 +
host    replication    all            127.0.0.1/32            trust
 
EOF
 
EOF
 
</pre>
 
</pre>
Строка 76: Строка 77:
 
cat << 'EOF' > /var/lib/pgsql/data/postgresql.conf  
 
cat << 'EOF' > /var/lib/pgsql/data/postgresql.conf  
 
listen_addresses = '*'
 
listen_addresses = '*'
max_connections = 50
+
max_connections = 100 # (change requires restart)
shared_buffers = 10752MB
+
shared_buffers = 4GB # min 128kB
huge_pages = off
+
dynamic_shared_memory_type = posix # the default is usually the first option
temp_buffers = 256MB
+
max_wal_size = 2GB
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
 
min_wal_size = 1GB
random_page_cost = 1.1
+
log_destination = 'stderr' # Valid values are combinations of
effective_cache_size = 32256MB
+
logging_collector = on # Enable capturing of stderr, jsonlog,
default_statistics_target = 500 # range 1-10000
+
log_directory = 'log' # directory where log files are written,
from_collapse_limit = 20
+
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
join_collapse_limit = 20
+
log_file_mode = 0600 # creation mode for log files,
log_destination = 'stderr'
+
log_rotation_size = 10MB # Automatic rotation of logfiles will
logging_collector = on
+
log_min_messages = warning # values in order of decreasing detail:
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_checkpoints = off
 
log_timezone = 'Europe/Moscow'
 
log_timezone = 'Europe/Moscow'
 
datestyle = 'iso, dmy'
 
datestyle = 'iso, dmy'
timezone = 'UTC'
+
timezone = 'Europe/Moscow'
lc_messages = 'ru_RU.UTF-8'
+
lc_messages = 'ru_RU.UTF-8' # locale for system error message
lc_monetary = 'ru_RU.UTF-8'
+
lc_monetary = 'ru_RU.UTF-8' # locale for monetary formatting
lc_numeric = 'ru_RU.UTF-8'
+
lc_numeric = 'ru_RU.UTF-8' # locale for number formatting
lc_time = 'ru_RU.UTF-8'
+
lc_time = 'ru_RU.UTF-8' # locale for time formatting
 
default_text_search_config = 'pg_catalog.russian'
 
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
 
EOF
 
</pre>
 
</pre>
Строка 145: Строка 118:
 
  dbname='cp'
 
  dbname='cp'
 
  psql -U postgres -c "CREATE DATABASE ${dbname};"
 
  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 -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='ru_RU.UTF-8', datctype='ru_RU.UTF-8' WHERE datname='${dbname}';GRANT ALL ON DATABASE ${dbname} TO postgres;ALTER DATABASE ${dbname} OWNER TO postgres;"
  
 
  dbname='dcp'
 
  dbname='dcp'
 
  psql -U postgres -c "CREATE DATABASE ${dbname};"
 
  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 -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='ru_RU.UTF-8', datctype='ru_RU.UTF-8' WHERE datname='${dbname}';GRANT ALL ON DATABASE ${dbname} TO postgres;ALTER DATABASE ${dbname} OWNER TO postgres;"
  
 
  dbname='cp_demo'
 
  dbname='cp_demo'
 
  psql -U postgres -c "CREATE DATABASE ${dbname};"
 
  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 -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='ru_RU.UTF-8', datctype='ru_RU.UTF-8' WHERE datname='${dbname}';GRANT ALL ON DATABASE ${dbname} TO postgres;ALTER DATABASE ${dbname} OWNER TO postgres;"
  
 
  dbname='libr'
 
  dbname='libr'
 
  psql -U postgres -c "CREATE DATABASE ${dbname};"
 
  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 -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='ru_RU.UTF-8', datctype='ru_RU.UTF-8' WHERE datname='${dbname}';GRANT ALL ON DATABASE ${dbname} TO postgres;ALTER DATABASE ${dbname} OWNER TO postgres;"
  
 
  dbname='passport'
 
  dbname='passport'
 
  psql -U postgres -c "CREATE DATABASE ${dbname};"
 
  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 -c "UPDATE pg_database SET encoding = pg_char_to_encoding('UTF8'), datcollate='ru_RU.UTF-8', datctype='ru_RU.UTF-8' WHERE datname='${dbname}';GRANT ALL ON DATABASE ${dbname} TO postgres;ALTER DATABASE ${dbname} OWNER TO postgres;"
  
 
====Залить в них дампы====
 
====Залить в них дампы====

Текущая версия на 14:10, 8 июня 2024

На ОС Альт платформы 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" is for Unix domain socket connections only
local   all             all                                     trust

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0            md5

# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
EOF
cat << 'EOF' > /var/lib/pgsql/data/postgresql.conf 
listen_addresses = '*'
max_connections = 100			# (change requires restart)
shared_buffers = 4GB			# min 128kB
dynamic_shared_memory_type = posix	# the default is usually the first option
max_wal_size = 2GB
min_wal_size = 1GB
log_destination = 'stderr'		# Valid values are combinations of
logging_collector = on		# Enable capturing of stderr, jsonlog,
log_directory = 'log'			# directory where log files are written,
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'	# log file name pattern,
log_file_mode = 0600			# creation mode for log files,
log_rotation_size = 10MB		# Automatic rotation of logfiles will
log_min_messages = warning		# values in order of decreasing detail:
log_checkpoints = off
log_timezone = 'Europe/Moscow'
datestyle = 'iso, dmy'
timezone = 'Europe/Moscow'
lc_messages = 'ru_RU.UTF-8'			# locale for system error message
lc_monetary = 'ru_RU.UTF-8'			# locale for monetary formatting
lc_numeric = 'ru_RU.UTF-8'			# locale for number formatting
lc_time = 'ru_RU.UTF-8'				# locale for time formatting
default_text_search_config = 'pg_catalog.russian'
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='ru_RU.UTF-8', datctype='ru_RU.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='ru_RU.UTF-8', datctype='ru_RU.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='ru_RU.UTF-8', datctype='ru_RU.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='ru_RU.UTF-8', datctype='ru_RU.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='ru_RU.UTF-8', datctype='ru_RU.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