Так как 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 года.
Берем скачиваем все дистрибутивы для установки каждый в свою папку и не по-русски обзываем папки.
- СУБД PostgreSQL. Берем из сайта 1С. на момент установки был релиз postgresql_10.9_5.1C_x86_64_rpm.
- Java берем с сайта jdk-8u202-linux-x64.rpm понадобиться логин и пароль от сайта Java.
- Драйвер для общения Java с PostgreSQL PostgreSQL JDBC 4.2 Driver, 42.2.8
- Скачиваем с официального сайта Apache Tomcat7 так как 1C требует не выше 7 версии, есть только Apache Tomcat 7.0.96
- Сам сайт в виде папки media и файла ROOT.war
- Контейнер Сертификата от домена.
После установки сервера и подключившись через 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 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
#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
Получаем ответ, в котором указывается местоположение этого файла: /home/pgsql/pg_hba.conf
#mcedit /home/pgsql/pg_hba.conf
И сохранить изменения в файле.
После этого нужно перезапустить службу PostgreSQL, чтобы изменения вступили в силу: #systemctl restart postgresql-10
Для проверки того, что служба PostgreSQL запущена, можно ввести команду: #systemctl status postgresql-10
Получаем ответ:
#sudo -u postgres /usr/pgsql-10/bin/psqlpsql -U postgres -c «alter user postgres with password ‘12345Qwer’;»
на
Сохраняем и выходим.
Перезапускаем службу
#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 "%r" %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 так и на созданные папки.