“Одна голова хорошо, а две лучше.”
— Народная мудрость
Чем крупнее становится компания, тем больше появляется различной документации во всех её сферах. Документирование начинается от инструкций для сотрудников и заканчивая описаниями решений проблем и т.п. При малом количестве людей можно даже ничего не вести, ведь куда проще рассказать основное на словах и показать “на пальцах”. А если сотрудников много или большая “текучка” кадров на какой-нибудь должности? Можно использовать обычные офисные программы для создания документов. А если компания настолько разрослась, что таких документов становится очень много? Или у компании столько различных проектов, что можно заблудится во всех этих документах? Что если требуется вести протоколы встреч, выкладывать идеи для общего обсуждения, строить планы по проектам, устраивать опросы? Что если требуется хранить историю изменений и иметь раздельные права доступа? А еще требуется возможность выгрузки из системы в виде документов, например, в PDF формате? Здесь нужен уже какой-нибудь единый портал, единая база знаний, что-то в формате wiki. Для решения таких задач подойдет проект Confluence от Австралийской компании Atlassian.
Проверяем требования
Перед установкой проверим минимальные требования:
- наличие root доступа; операционные системы(ОС) Linux и Windows;
- СУБД PostgreSQL версии 9.6, MySQL версии 5.6.16 и 5.7, причем не поддерживается MariaDB, Oracle 12c, Microsoft SQL Server 2012 и выше;
- для запуска системы хватит 2ГБ оперативной памяти, но минимальные требования - 6ГБ;
- место на жестком диске минимально 10ГБ;
- процессор четырехъядерный 2GHz;
- поддерживаются все браузеры, кроме Internet Explorer 11 и младше.
Более подробно о требованиях можно узнать на официальной странице документации проекта. Что касаемо требований к железной части - тут сильно зависит от количества одновременно работающих людей с системой, от редактирования документов, да и много еще от чего, поэтому приблизительные расчеты для железной части сервера можно посмотреть здесь.
Мы будем использовать в качестве ОС CentOS 7, поскольку он хорошо себя зарекомендовал для серверных решений. А в качестве СУБД - PostgreSQL 9.6. Способов установки Confluence несколько, мы будем использовать установщик. С другими способами Вы можете ознакомиться самостоятельно на официальной странице.
Предварительная настройка
Для начала установим несколько удобных пакетов:
Cоздадим пользователя supp:
И зададим ему пароль:
Затем ограничим доступ к серверу только для нашего пользователя по ssh. Для этого отредактируем файл /etc/ssh/sshd_config
Раскоментируем строчку
PermitRootLogin no
И добавим
AllowUsers supp
Теперь перезапустим демона SSH:
Можно авторизоваться под нашим новым пользователем и продолжим установку.
Установка PostgreSQL
Мы уже определились, что будем использовать PostgreSQL 9.6. К сожалению, в стандартных репозиториях CentOS 7 есть только версия 9.2.24
Затем редактируем файл /var/lib/pgsql/9.6/data/pg_hba.conf и в начале раздела “IPv4 local connections”добавим строчку:
host confluence confluenceuser 127.0.0.1/32 md5
Создадим пользователя confluenceuser и базу данных confluence:
Естественно вместо
Настройка firewall
В CentOS 7 по-умолчанию используется firewalld, советую не отказываться от него, а посидеть и разобраться. Confluence использует порт 8090 для доступа к системе. Поэтому разрешим его:
Если Вы всё же используете по-старинке iptables:
или если у вас последнее правило - все запрещает, то вводим такую команду, где num_line - номер строки, куда будет вставлено правило:
Проверяем правила:
Установка Confluence
Для начала скачаем с официального сайта установщик. На текущий момент версия Confluence 7.0.1. Перед установкой не забываем разрешить исполнение файла:
Во время установки выводится много информации, здесь мы приведем основные пункты:
Как видно, мы использовали расширенный вариант установки и переназначили место установки Confluence. Если вы везде нажимали Enter, то папка по умолчанию для самого Confluence /opt/atlassian/confluence. Папка по-умолчанию для хранения данных и плагинов /var/atlassian/application-data/confluence.
Как видно в конце - нам можно зайти по адресу http://localhost:8090 для продолжения установки, вместо localhost можно использовать, например, внешний ip адрес нашего сервера.
Выбираем русский язык. Как видим, тут нам предлагают установить демонстрационную версию или рабочую. Выбираем второй вариант(Production Installation).
На этом этапе предлагается установить дополнительные сервисы, мы ничего не покупали отдельно, продолжаем установку.
Вот на этом этапе уже надо получить лицензионный ключ. Для начала получим trial на 30 дней бесплатно. А потом можно будет купить. Для этого на официальном сайте жмем “Create an account” для создания аккаунта на atlassian. После регистрации мы попадаем в окно для получения лицензии:
Идентификатор сервера необходимо скопировать в поле “server ID”, после получения лицензионного ключа вводим его в форму и продолжаем установку.
Здесь всё и так понятно, выбираем “Моя база данных”.
Соответственно Вам нужно вводить свои данные для подключения к базе данных PostgreSQL.
Здесь уже на Ваше усмотрение, но для первого раза рекомендую установить пример сайта. Вы всегда сможете удалить это тестовое пространство.
Создание первой учетной записи. Имя пользователя, да и всё остальное можно изменить в дальнейшем.
На этом можно было бы и закончить данную статью, но нам еще есть что Вам рассказать.
Безопасность
На официальном сайте есть много доработок по безопасности для Confluence. Мы рассмотрим один из ключевых.
По-умолчанию Confluence работает по HTTP, а значит все ваши данные будут передаваться в незашифрованном виде. Если Ваш сервер находится только в локальной сети и не имеет доступа в Интернет, то еще можно оставить, но в остальных случаях строго рекомендуем использовать HTTPS.
Нам предлагают различные варианты использования HTTPS, мы рассмотрим вариант с использованием NGINX по HTTPS и между NGINX и Confluence - HTTP. Этот вариант приемлем для нас, поскольку NGINX находится на этом же сервере. Еще мы не будем использовать контекстный путь(example.com/confluence). Центром сертификации у нас будет Let’s Encrypt. Ставить будем с помощью Certbot.
Для начала установим NGINX. По-умолчанию в CentOS 7 используется старая версия NGINX, поэтому подключим репозитории и установим последнюю версию. Заходим на официальный сайт и следуем инструкции:
Установим пакеты, необходимые для подключения yum-репозитория, а также создадим файл с именем /etc/yum.repos.d/nginx.repo:
Добавим в файл /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:
server {
server_name your_domain;
listen 443 default ssl;
ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.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 your_domain;
return 301 https://$server_name$request_uri;
}
Вам надо только заменить your_domain на своё доменное имя.
Теперь необходимо сделать настройки со стороны Confluence. Сначала сделать правки в Tomcat. Находим файл installation-directory/conf/server.xml. Мы устанавливали свой сервер в директорию /home/atlassian/confluence, если во время установки Вы ничего не вводили, то у Вас он будет в директории /opt/atlassian/confluence. Там уже ищем файл ./conf/server.xml. Для начала закомментируем коннектор по-умолчанию:
===========================================================
DEFAULT - Direct connector with no proxy, for unproxied HTTP access to Confluence.
If using a http/https proxy, comment out this connector.
===========================================================
< 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"/ >
Для комментирования необходимо в начале текста добавить < !-- и в конце текста добавить --> (без пробелов). Затем раскомментируем коннектор для нашего типа подключения и внесем правки:
HTTP - Proxying Confluence via Apache or Nginx over HTTP
If you're proxying traffic to Confluence over HTTP, uncomment the connector below and comment out the others.
Make sure you provide the right information for proxyName and proxyPort.
For more information see:
Apache - https://confluence.atlassian.com/x/4xQLM
nginx - https://confluence.atlassian.com/x/TgSvEg
===============================================================
-->
< 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="your_domain" proxyPort="443"/>
Теперь перезапускаем Confluence:
Или таким способом:
Далее займемся firewall’ом, мы же помним, что мы разрешили доступ по порту 8090?
Теперь установим Certbot. Переходим по ссылке для самостоятельного выбора или воспользуемся инструкцией ниже. В консоли набираем следующие команды:
Сертификаты от Let’s Encrypt даются на 3 месяца, дальше надо снова их продлевать. Для автоматического продления сертификата добавим в cron выполнив следующую команду:
Перезапустим nginx:
Осталось дело за малым - подправить параметр “Server Base URL” или в русском варианте - базовый адрес сервера. Заходим на наш сайт уже по доменному имени. Заходим в Администрирование (справа вверху шестерёнка) -> Основные настройки -> Настройки сайта -> Базовый адрес сервера.
На этом установка закончена.
Заключение
Вроде было не сложно, правда? Стоимость лицензии для серверной версии для команды до 10 человек всего 10$, к тому же они дают скидки для бюджетных организаций. В wiki написано, что для некоммерческих организаций могут предоставить и полностью бесплатно. С учётом огромных функциональных возможностей - считай бесплатно.
В начале кажется, что Confluence очень сложный, но спустя время - ты понимаешь, что это очень удобно и начинаешь записывать в нём всё, с чем приходится работать. Огромное количество возможностей и готовых шаблонов. Система действительно облегчает работу, что проверено многими компаниями, в том числе и нашей. Единственная большая проблема - это начать писать. Но мы Вам в этом поможем. Достаточно начать с маленького шага. Для начала создадим пространство “Пространства -> Создать пространство”.
А теперь создайте пустую страницу и напишите свой опыт установки Confluence. Создайте еще одну страницу с шаблоном “Решение проблем” и занесите туда все проблемы, с которыми Вы столкнулись во время установки. Это маленький шаг, но это первый шаг большого пути.