Разворачиваем сервер под сайт и форум 1сFrash.

Так как 1сFrash идет не в ногу со временем и приходиться ставить centos6, а не 7 или 8.
Приходиться самому разбираться как установить на нашу платформу, а именно Centos7.

Начнем со стандартной установки centos7, на момент написания статьи релиз последний 7 версии 7.7.1908, ставим с минимальными требованиями c одним сетевым адаптером так как на него из вне будут попадать через Frontend.
Теперь нам нужно установить на этот сервер Apache Tomcat7, СУБД PostgreSQL 10.5., драйвер JDBC для PostgreSQL, Oracle Java Runtime Environment версии 8 (1.8) и сертификат мульти-доменный желательно платный и на сроком 2 года.

Берем скачиваем все дистрибутивы для установки каждый в свою папку и не по-русски обзываем папки.

  1. СУБД PostgreSQL. Берем из сайта 1С. на момент установки был релиз postgresql_10.9_5.1C_x86_64_rpm.
  2. Java берем с сайта jdk-8u202-linux-x64.rpm понадобиться логин и пароль от сайта Java.
  3. Драйвер для общения Java с PostgreSQL PostgreSQL JDBC 4.2 Driver, 42.2.8
  4. Скачиваем с официального сайта Apache Tomcat7 так как 1C требует не выше 7 версии, есть только Apache Tomcat 7.0.96
  5.  Сам сайт в виде папки media и файла ROOT.war
  6.  Контейнер Сертификата от домена.

После установки сервера и подключившись через Putty.

#yum install tcl bzip2 net-tools mc wget open-vm-tools epel-release unzip zip bind-utils -y
После обновляем #yum update -y и перезагружаем #reboot

Так как у нас виртуальная машинка то ставим VMware Tools на Centos.

Дальше подготавливаем сервер, так как он внутри локальной сети то файрволлы не нужны.

#systemctl stop tuned
#systemctl disable tuned
#systemctl stop firewalld
#systemctl disable firewalld

#sed -i ‘s/^SELINUX=enforcing/SELINUX=disabled/’ /etc/sysconfig/selinux
#sed -i ‘s/^SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config

Для более быстрой работы swap. elevator=noop только для виртуалок, для физической машины elevator=deadline

#sed -i ‘s/rhgb quiet/zswap.enabled=1 zswap.max_pool_percent=30 elevator=noop transparent_hugepage=never/’ /etc/default/grub
#grub2-mkconfig -o /boot/grub2/grub.cfg
Все дистрибутивы скидываем при помощи программки WinCSP сразу в директорию root

Установка СУБД PostgreSQL.

Переходим где у нас дистрибутив PostgreSQL

Распаковка архивов
#tar -xvf postgresql_10.5_24.1C_x86_64_rpm.tar.bz2
#tar -xvf postgresql_10.5_24.1C_x86_64_addon_rpm.tar.bz2Установка PostgresSQL
#cd postgresql-10.5-24.1C_x86_64_rpm
#yum localinstall -y *.rpmУстановка дополнений
#cd /home/postgresql-10.5-24.1C_x86_64_addon_rpm/
#yum localinstall -y *.rpm
Будем держать сами базы в определенной папке.
#mkdir /home/pgsql
дадим права на эту папку
#chown -R postgres:postgres /home/pgsql

#su — postgres -c «/usr/pgsql-10/bin/initdb -D /home/pgsql/»
#mcedit  /usr/lib/systemd/system/postgresql-10.service

находим в файле
Environment=PGDATA=/var/lib/pgsql/10/data/ и меняем на свое значение Environment=PGDATA=/home/pgsql/
Чтобы изменения применились, перезапускаем
#systemctl daemon-reload
После перезагрузки запустим вручную и добавим в автозагрузку
#systemctl start postgresql-10
#systemctl enable postgresql-10
#systemctl status postgresql-10
Нужно определить, где находится файл pg_hba.conf с настройками прав доступа к СУБД PostgreSQL:
#su — postgres -c «psql -t -P format=unaligned -c ‘show hba_file’;»
Получаем ответ, в котором указывается местоположение этого файла: /home/pgsql/pg_hba.conf
Перед тем как задать пароль нужно заменить тип пароля
#mcedit /home/pgsql/pg_hba.conf
нужно изменить строку
local all postgres peer  на local all postgres trust
И сохранить изменения в файле.
После этого нужно перезапустить службу PostgreSQL, чтобы изменения вступили в силу: #systemctl restart postgresql-10
Для проверки того, что служба PostgreSQL запущена, можно ввести команду: #systemctl status postgresql-10
Получаем ответ:
● postgresql.service — PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor prese Active: active (exited) since Wed 2019-02-06 19:39:06 MSK; 9s ago Process: 17411 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 17411 (code=exited, status=0/SUCCESS) . . .
Подключение в базе
#sudo -u postgres /usr/pgsql-10/bin/psqlpsql -U postgres -c «alter user postgres with password ‘12345Qwer’;»
В файле /home/pgsql/pg_hba.conf следует изменить строку
local all postgres trust
на
local all postgres peer
local all all md5
host all postgres 127.0.0.1/16 md5
host site site 127.0.0.1/16 md5
host forum forum 127.0.0.1/16 md5

Сохраняем и выходим.

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

#systemctl restart postgresql-10

Установка и настройка Java

Переходим где у нас теперь дистрибутив java и в папке запускаем установку.

#rpm -ivh *

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

#java -version

если все хорошо пропускаем замену версий java.

Если у нас несколько версий

меняем версию по умолчанию
#alternatives —install /usr/bin/java java /usr/java/latest/bin/java 2
#alternatives —config java
выбираем цифрой 2
ну и еще раз проверяем
#java -version
теперь все ok

Установим переменные окружения, указывающие местонахождение Java. Для этого вводим команды:

#JAVA_HOME=$(readlink -f /usr/bin/javac | sed «s:/bin/javac::»)
#JDK_HOME=$(readlink -f /usr/bin/javac | sed «s:/bin/javac::»)
#JRE_HOME=$(readlink -f /usr/bin/java | sed «s:bin/java::»)
Для проверки результата вводим команду:

#set | grep _HOME
Получаем ответ:

JAVA_HOME=/usr/java/jdk1.8.0_202-amd64
JDK_HOME=/usr/java/jdk1.8.0_202-amd64
JRE_HOME=/usr/java/jdk1.8.0_202-amd64/jre/

Установка Apache Tomcat 7

Установим Apache Tomcat 7 в каталог /opt/tomcat. Для этого необходимо выполнить следующие действия.

Скопировать в каталог /opt сервера файл дистрибутива Apache Tomcat 7, который был закачан в папку root.
Перейти в каталог /opt:

#cd /opt
Распаковать файл дистрибутива Apache Tomcat 7:
#tar -xvzf *.tar.gz
Удалить файл дистрибутива Apache Tomcat 7

#rm -f *.tar.gz
Переименовать созданный подкаталог с дистрибутивом Apache Tomcat 7 в tomcat:

#mv apache-tomcat* tomcat

Установка драйвера JDBC

Скопируем файл postgresql-42.2.5.jar, который был скачан в папку root в каталог /opt/tomcat/lib/

Возвращаемся к Apache Tomcat 7

Нужно создать пользователя и группу tomcat.

#groupadd tomcat

Добавляем пользователя в созданную группу
#useradd -s /bin/bash -g tomcat tomcat

Сделаем пользователя tomcat владельцем каталога /opt/tomcat:

#chown -R tomcat:tomcat /opt/tomcat

Чтобы Apache Tomcat мог запускаться как служба, создадим в каталоге /etc/systemd/system сервера файл tomcat.service

#mcedit /etc/systemd/system/tomcat.service

со следующим содержимым:

[Unit]
Description=Apache Tomcat
After=network.target

[Service]

Type=forking
User=tomcat
Group=tomcat

Environment=JAVA_HOME=/usr/java/jdk1.8.0_202-amd64
Environment=CATALINA_PID=/opt/tomcat/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment=»JAVA_OPTS=-XX:-UseSerialGC -XX:-UseConcMarkSweepGC -XX:+UseParallelGC -XX:MinHeapFreeRatio=15 -XX:MaxHeapFreeRatio=50 -XX:CompileThreshold=1 -Xmx2g -Xms384m»

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

ExecReload=/bin/kill $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Здесь текст, начинающийся с Environment=»JAVA_OPTS= и до закрывающей кавычки, должен располагаться в одной строке.
В строке Environment=JAVA_HOME= должен быть указан каталог JRE, который был показан ранее (значение переменной окружения JAVA_HOME).
Этот файл позволит запускать Apache Tomcat как службу с именем tomcat. Чтобы его задействовать, следует выполнить команды:

#chmod +x /etc/systemd/system/tomcat.service

#systemctl daemon-reload

По умолчанию Apache Tomcat «слушает» IP-порт 8080. Однако в нашем экземпляре сервиса этот порт уже используется шлюзом приложений. Чтобы задействовать для Apache Tomcat другой порт, нужно внести изменяя в файл server.xml, расположенный в каталоге /opt/tomcat/conf сервера.

#mcedit /opt/tomcat/conf/server.xml
В этом файле строки:
<Connector port=»8080″ protocol=»HTTP/1.1″
connectionTimeout=»20000″
URIEncoding=»UTF-8″
redirectPort=»8443″ />
нужно заменить на строки:
<Connector port=»8000″ protocol=»HTTP/1.1″
connectionTimeout=»20000″
URIEncoding=»UTF-8″
redirectPort=»8443″
proxyPort=»443″
scheme=»https»
secure=»true» />
Здесь Tomcat инструктируется о том, что он должен «слушать» порт 8000 и он находится за фронтенд-сервером, работающим по защищенному протоколу HTTPS.
Для проверки файлов конфигурации Apache Tomcat можно выполнить команду:
#/opt/tomcat/bin/configtest.sh
ПРИМЕЧАНИЕ. Команду configtest.sh следует запускать только когда Apache Tomcat выключен.
Если конфигурация Apache Tomcat в порядке (не было выдано сообщений с кодами ERROR или SEVERE), то для запуска Apache Tomcat следует выполнить команды:
#systemctl enable tomcat
#systemctl start tomcat
Для проверки состояния службы tomcat можно ввести команду:
#systemctl status tomcat

Должен быть выдан ответ:
● tomcat.service — Apache Tomcat Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-03-21 17:09:58 MSK; 33s ago Process: 7330 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 7348 (java) Tasks: 26 (limit: 4915)

Теперь Apache Tomcat запущен и работает. Можно проверить его работу. На хост-компьютере или ином компьютере, с которого «виден» сервер, следует:
Ввести в адресную строку веб-обозревателя строку: https://сайт И нажать клавишу Ввод (Enter).
Если все было сделано правильно, то в окне веб-обозревателя будет отображена тестовая страница Apache Tomcat.

Проверим теперь, что к Apache Tomcat можно обратиться напрямую, в обход NGINX. Для этого в адресную строку веб-обозревателя следует ввести строку: http://сайт:8000 И нажать клавишу Ввод (Enter). В окно веб-обозревателя также должна быть выведена тестовая страница Apache Tomcat. Если все хорошо приступаем к разворачиванию самого сайта.

Установка сайта
В этой главе мы расскажем, как установить и настроить сайт сервиса.

Создадим базу данных PostgreSQL для сайта. Ее имя будет site, пользователь этой базы данных тоже будет называться site

#su — postgres
#psql
postgres=#CREATE DATABASE site ENCODING=’UTF8′ LC_CTYPE=’ru_RU.UTF-8′;
Видим сообщение: CREATE DATABASE
База данных site создана.
postgres=#CREATE USER site WITH PASSWORD ‘12345Qwer’;
Видим сообщение: CREATE ROLE
В базе данных создан пользователь site с паролем 12345Qwer. Вы можете использовать здесь любой удобный вам пароль.
postgres=#ALTER DATABASE site OWNER TO site;
Видим сообщение: ALTER DATABASE
Пользователь site сделан владельцем базы данных site.
postgres=#GRANT ALL PRIVILEGES ON DATABASE site TO site;
Видим сообщение: GRANT
Пользователю site даны все права на базу данных site.
Выходим из pqsl, введя команду: \q
Выходим из bash, введя команду: exit

Проверим наличия языка PL/pgSQL
Входим в pqsl от имени учетной записи site, введя команду:

#psql -U site
В ответ на выведенный запрос введем пароль пользователя site.
Видим сообщения: psql (10.7 (Ubuntu 10.7-0ubuntu0.18.04.1), server 10.5 (Ubuntu 10.5-24.1C)) Type «help» for help.
и строку приглашения вида site=>.
site=>\connect site
Видим ответ: You are now connected to database «site» as user «site».
site=>SELECT lanname FROM pg_language;
Получаем ответ: lanname ———- internal
c sql plpgsql (4 строки)
Язык plpgsql в выведенном списке есть, значит, нужный язык уже установлен.
Выходим из pqsl, введя команду: \q
Выходим из bash, введя команду: exit
ПРИМЕЧАНИЕ. Если бы языка plpgsql в списке не было, нужно было бы его создать, введя команду CREATE LANGUAGE plpgsql;

Изменение настроек Apache Tomcat

#mcedit /opt/tomcat/conf/server.xml

Блок директив <Service> … </Service>, содержащийся в этом файле, следует заменить следующими строками:

<Service name=»fresh»> <Connector port=»8000″ protocol=»HTTP/1.1″
connectionTimeout=»20000″
redirectPort=»8443″
proxyPort=»443″
scheme=»https»
secure=»true»
URIEncoding=»UTF-8″ />
<Engine name=»fresh» defaultHost=»fresh»>
<Host name=»fresh» appBase=»webapps»
unpackWARs=»true»
autoDeploy=»true»>
<Valve className=»org.apache.catalina.valves.AccessLogValve»
directory=»logs»
prefix=»fresh_access_log.»
suffix=».txt»
pattern=»%h %l %u %t &quot;%r&quot; %s %b» />
</Host>
</Engine>
</Service>
Сохраняем и выходим из редактора.

#mcedit /opt/tomcat/conf/context.xml

следующие строки сразу же после строки <Context>:

<Resource
name=»jdbc/freshSiteDS»
auth=»Container»
type=»javax.sql.DataSource»
driverClassName=»org.postgresql.Driver»
url=»jdbc:postgresql://localhost:5432/site»
username=»site»
password=»12345Qwer»
removeAbandoned=»true»
removeAbandonedTimeout=»90″
logAbandoned=»true»
maxActive=»30″
maxIdle=»20″
maxWait=»-1″ />

Нужно выполнить еще некоторые действия

#mkdir -p /var/www/1cfreshl.example/media

#mkdir -p /var/www/1cfreshl.example/searchIndex

Cкопировать в каталог /var/www/1cfreshl.example/media сервера все содержимое каталога media дистрибутива сайта.

Даем права пользователю tomcat

#chown -R tomcat:tomcat /var/www/1cfreshl.example/media

#chown -R tomcat:tomcat /var/www/1cfreshl.example/searchIndex

Останавливаем tomcat

#systemctl stop tomcat

Скопировать файл ROOT.war из дистрибутива сайта в каталог /opt/tomcat/webapps/

#cd /opt/tomcat/webapps

#rm -rf ROOT

#unzip -q ROOT.war -d ROOT

#sed -i ‘s:<file>:<file>/opt/tomcat/:g’ ROOT/WEB-INF/classes/logback.xml

#rm -f ROOT.war

запускаем tomcat

#systemctl start tomcat

Проверяем должны попасть на http://сайт:8000.

Устанавливаем сертификат.

Если сайт не открылся значит все дело в доступах проверяем доступы на PostgreSQL в базу site под пользователем site, права на папки самой tomcat так и на созданные папки.