Thank you for reading this post, don't forget to subscribe!
Оригинал статьи:
Установка Confluence + PostgreSQL + NGINX SSL reverse-proxy на Centos 7
Confluence — тиражируемая вики-система для внутреннего использования организациями с целью создания единой базы знаний. Написана на Java. Разрабатывается австралийской компанией Atlassian, является одним из двух её основных продуктов.
Установка PostgreSQL 12
Добавляем репозиторий PostgreSQL 12
1 |
$ sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm |
Устанавливаем необходимые пакеты
1 2 3 |
$ sudo yum -y install epel-release yum-utils $ sudo yum-config-manager --enable pgdg12 $ sudo yum -y install postgresql12-server postgresql12 |
После установки требуется инициализация базы данных, прежде чем можно будет запустить службу
1 |
$ sudo /usr/pgsql-12/bin/postgresql-12-setup initdb |
Запускаем сервис PostgreSQL и проверяем статус
1 2 |
$ sudo systemctl enable --now postgresql-12 $ systemctl status postgresql-12 |
Редактируем настройки PostgreSQL, открываем доступ для Confluence
1 |
$ sudo nano /var/lib/pgsql/12/data/pg_hba.conf |
[codesyntax lang="php"]
1 2 3 4 |
[…] # IPv4 local connections: #host all all 127.0.0.1/32 ident host confluence confluenceuser 127.0.0.1/32 md5 |
[/codesyntax]
Перезапускаем PostgreSQL
1 |
$ sudo systemctl restart postgresql-12 |
Создаем пользователя и базу
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 |
$ sudo su - postgres $ psql postgres=# CREATE ROLE confluenceuser WITH LOGIN PASSWORD 'password' VALID UNTIL 'infinity'; CREATE ROLE postgres=# CREATE DATABASE confluence WITH ENCODING='UTF8' OWNER=confluenceuser CONNECTION LIMIT=-1; CREATE DATABASE postgres-# \q $ exit |
[/codesyntax]
Установка Confluence
Создаем пользователя, от которого будет работать Confluence
1 |
$ sudo useradd -m -U -r -d /opt/atlassian confluence |
Задаем пароль пользователю
1 2 3 |
$ sudo passwd confluence New password: Retype new password: |
Добавляем пользователя confluence в группу wheel, то бы у него появились права суперпользователя (sudo)
1 |
$ sudo usermod -aG wheel confluence |
Переключаемся на пользователя confluence, переходим в домашниий каталог. Все дальнейшие операции будут выполняться из-под этого пользователя
1 2 |
$ sudo su confluence $ cd |
Скачиваем дистрибутив confluence 7.5.0 и делаем его исполняемым
1 2 |
$ wget https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-7.5.0-x64.bin $ chmod a+x atlassian-confluence-7.5.0-x64.bin |
Запускаем установку Confluence
1 |
$ sudo ./atlassian-confluence-7.5.0-x64.bin |
В процессе установки надо будет выбирать действия
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
This will install Confluence 7.5.0 on your computer. OK [o, Enter], Cancel [c] o Click Next to continue, or Cancel to exit Setup. Choose the appropriate installation or upgrade option. Please choose one of the following: Express Install (uses default settings) [1], Custom Install (recommended for advanced users) [2, Enter], Upgrade an existing Confluence installation [3] 2 Select the folder where you would like Confluence 7.5.0 to be installed, then click Next. Where should Confluence 7.5.0 be installed? [/opt/atlassian/confluence] Default location for Confluence data [/var/atlassian/application-data/confluence] Configure which ports Confluence will use. Confluence requires two TCP ports that are not being used by any other applications on this machine. The HTTP port is where you will access Confluence through your browser. The Control port is used to Startup and Shutdown Confluence. Use default ports (HTTP: 8090, Control: 8000) - Recommended [1, Enter], Set custom value for HTTP and Control ports [2] 1 Confluence can be run in the background. You may choose to run Confluence as a service, which means it will start automatically whenever the computer restarts. Install Confluence as Service? Yes [y, Enter], No [n] y Extracting files ... Please wait a few moments while we configure Confluence. Installation of Confluence 7.5.0 is complete Start Confluence now? Yes [y, Enter], No [n] y Please wait a few moments while Confluence starts up. Launching Confluence ... Installation of Confluence 7.5.0 is complete Your installation of Confluence 7.5.0 is now ready and can be accessed via your browser. Confluence 7.5.0 can be accessed at http://localhost:8090 Finishing installation ... |
Настраиваем Firewall, открываем порт 8090/tcp
1 2 |
$ sudo firewall-cmd --permanent --add-port=8090/tcp $ sudo firewall-cmd --reload |
Проверяем, запустился ли Confluence
1 |
$ netstat -nltup | grep 8090 |
Если записи с номером порта нет, запускаем Confluence вручную
1 2 3 |
$ /etc/init.d/confluence start либо $ sudo /opt/atlassian/confluence/bin/catalina.sh start |
Переходим на сайт http://localhost:8090 и продолжаем установку
Промышленная установка
На сайте https://my.atlassian.com/license/evaluation генерим триальную лицензию по идентификатору сервера
Триальная лицензия
Моя база данных
Настройка базы данных
Вводим данные по подключению к PostgreSQL и жмем кнопку «Проверить соединение»
1 2 3 4 5 6 7 |
Тип базы данных: PostgreSQL Тип установки: Простой Имя хоста: localhost Порт: 5432 Название базы данных: confluence Имя пользователя: confluenceuser Пароль: password |
Пример сайта
Для первого раза рекомендую установить пример сайта. Вы всегда сможете удалить это тестовое пространство.
Настройка управления пользователями — Управление пользователями и группами в Confluence
Настройка учетной записи системного администратора
Установка завершена
Настройка Nginx в качестве reverse-proxy
Добавляем репозиторий Nginx
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ sudo nano /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key |
[/codesyntax]
Устанавливаем nginx, добавляем службу в автозагрузку и запускаем его
1 2 |
$ sudo yum install -y nginx $ sudo systemctl enable --now nginx |
Создаем каталог, где будет лежать самоподписанный ssl сертификат
1 2 |
$ sudo mkdir /etc/nginx/ssl $ sudo chmod 700 /etc/nginx/ssl |
Создаем самоподписанный сертификат и ключ
1 2 3 4 5 6 7 8 9 10 |
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt Country Name (2 letter code) [XX]: RU State or Province Name (full name) []: Moscow Locality Name (eg, city) [Default City]: Moscow Organization Name (eg, company) [Default Company Ltd]: Company Organizational Unit Name (eg, section) []: IT Common Name (eg, your name or your server's hostname) []: localhost Email Address []: admin@test.ru $ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 |
Отредактируем файл конфигурации NGINX
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
$ sudo nano /etc/nginx/conf.d/default.conf server { server_name localhost; listen 443 default ssl; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; ssl_dhparam /etc/nginx/ssl/dhparam.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; location / { client_max_body_size 100m; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8090; } location /synchrony { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8091/synchrony; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } } server { listen 80; server_name localhost; return 301 https://$server_name$request_uri; } |
[/codesyntax]
Хост localhost в строке server_name можно заменить на любое доменное имя. На тестовой машине я бычно использую localhost.
Проверим конфиг и перезапускаем nginx
1 2 |
$ sudo nginx -t $ sudo systemctl restart nginx |
Теперь необходимо сделать настройки со стороны Confluence, правим настройки tomcat
1 |
$ sudo nano /opt/atlassian/confluence/conf/server.xml |
Закомментируем строку:
1 2 3 4 5 6 |
<!-- < Connector port="8090" connectionTimeout="20000" redirectPort="8443" maxThreads="48" minSpareThreads="10" enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8" protocol="org.apache.coyote.http11.Http11NioProtocol"/ > --> |
Раскомментируем и подправим строку ниже:
1 2 3 4 5 |
< Connector port="8090" connectionTimeout="20000" redirectPort="8443" maxThreads="48" minSpareThreads="10" enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" proxyName="localhost" proxyPort="443"/> |
Если вы не будите использовать ssl, то последняя строка будет выглядеть:
1 |
scheme="http" proxyName="localhost" proxyPort="80"/> |
localhost так же можно заменить на ваш хост
Перезапускаем Confluence:
1 |
$ sudo /etc/init.d/confluence restart |
Настраиваем Firewall
Т.к. ранее мы открывали порт 8090, закрываем его
1 |
$ sudo firewall-cmd --permanent --remove-port=8090/tcp |
Открываем порты 80,443
1 2 3 |
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https $ sudo firewall-cmd --reload |
Настраиваем SeLinux
1 2 3 4 |
$ sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx $ sudo semodule -i mynginx.pp $ sudo setsebool httpd_can_network_connect on $ sudo setsebool httpd_can_network_connect on -P |
Завершение настройки Confluence
Обновляем базовый URL в настройках Confluence
1 2 |
Администрирование (справа вверху шестерёнка) -> Основные настройки -> Настройки сайта -> Базовый адрес сервера (https://localhost/admin/editgeneralconfig.action) http://localhost:8090 -> https://localhost |
Confluence как системный сервис в Linux
Создаем юнит-файл confluence.service
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ sudo nano /lib/systemd/system/confluence.service [Unit] Description=Confluence After=network.target [Service] Type=forking User=confluence PIDFile=/opt/atlassian/confluence/work/catalina.pid ExecStart=/opt/atlassian/confluence/bin/start-confluence.sh ExecStop=/opt/atlassian/confluence/bin/stop-confluence.sh TimeoutSec=200 LimitNOFILE=4096 LimitNPROC=4096 [Install] WantedBy=multi-user.target |
[/codesyntax]
Меняем права на файл
1 |
$ sudo chmod 664 /lib/systemd/system/confluence.service |
После создания юнит-файла, необходимо перезагрузить процесс самого systemd, для подхвата изменений. Затем запускаем сервис и добавляем его в автозагрузку. Проверяем статус
1 2 3 |
$ sudo systemctl daemon-reload $ sudo systemctl enable --now confluence $ sudo systemctl status confluence |
Error: dedicated user confluence
Изменить пользователя, от которого запускается Confluence с помощью скрипта start-confluence.sh
1 2 3 4 5 6 |
$ sudo nano /opt/atlassian/confluence/bin/user.sh # START INSTALLER MAGIC ! DO NOT EDIT ! CONF_USER="confluence" # user created by installer # END INSTALLER MAGIC ! DO NOT EDIT ! export CONF_USER |