Установка Confluence + PostgreSQL + Nginx SSL reverse-proxy на Centos 7
Confluence — тиражируемая вики-система для внутреннего использования организациями с целью создания единой базы знаний. Написана на Java. Разрабатывается австралийской компанией Atlassian, является одним из двух её основных продуктов.
Установка PostgreSQL 12
Добавляем репозиторий PostgreSQL
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
2
3
4
5
$ sudo nano /var/lib/pgsql/12/data/pg_hba.conf
[...]
# IPv4 local connections:
#host all all 127.0.0.1/32 ident
host confluence confluenceuser 127.0.0.1/32 md5
Перезапускаем PostgreSQL
1
$ sudo systemctl restart postgresql-12
Создаем пользователя и базу
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
Установка 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
и продолжаем установку
На сайте atlassian генерим триальную лицензию по идентификатору сервера
Вводим данные по подключению к PostgreSQL и жмем кнопку “Проверить соединение”
1
2
3
4
5
6
7
Тип базы данных: PostgreSQL
Тип установки: Простой
Имя хоста: localhost
Порт: 5432
Название базы данных: confluence
Имя пользователя: confluenceuser
Пароль: password
Для первого раза рекомендую установить пример сайта. Вы всегда сможете удалить это тестовое пространство
Настройка управления пользователями - Управление пользователями и группами в Confluence
Настройка учетной записи системного администратора
Настройка Nginx в качестве reverse-proxy
Добавляем репозиторий Nginx
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
Устанавливаем 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 []: [email protected]
$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
Отредактируем файл конфигурации Nginx
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;
}
Хост 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
Создаем Systemd Unit confluence.service
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
Меняем права на файл
1
$ sudo chmod 664 /lib/systemd/system/confluence.service
После создания Systemd Unit, необходимо перезагрузить процесс самого 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