Установите Java 11
Обновите пакеты.
1$ sudo apt update
Установите зависимости.
1$ sudo apt install wget unzip curl gnupg2 ca-certificates lsb-release socat -y
Установите Java 11.
1$ sudo apt-get install openjdk-11-jre -y
Установите PostgreSQL
Добавьте репозиторий PostgreSQL.
1$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
Добавьте ключ PostgreSQL.
1$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
Обновите систему.
1$ sudo apt update
Установите PostgreSQL.
1$ sudo apt-get install postgresql postgresql-contrib -y
Включите запуск службы PostgreSQL при загрузке системы.
1$ sudo systemctl enable postgresql
Запустите службу PostgreSQL.
1$ sudo systemctl start postgresql
Создайте базу данных SonarQube
Измените postgres
пароль пользователя по умолчанию.
1$ sudo passwd postgres
Войдите в систему с помощью пользователя postgres
.
1$ su - postgres
Создайте sonarqube
пользователя.
1$ createuser sonarqube
Войдите в интерактивную оболочку PostgreSQL.
1$ psql
Установите пароль для пользователя sonarqube
. Измените SecurePassword
свой безопасный пароль.
1ALTER USER sonarqube WITH ENCRYPTED password 'SecurePassword';
Создайте базу данных с именем sonarqube
.
1CREATE DATABASE sonarqube OWNER sonarqube;
Предоставьте пользователю все права доступа к sonarqube
базе данныхsonarqube
.
1GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonarqube;
Что бы избежать следующей ошибки после запуска SonarQube:
1java.lang.IllegalStateException: Failed to create table schema_migrations
2 at org.sonar.server.platform.db.migration.history.MigrationHistoryTableImpl.start(MigrationHistoryTableImpl.java:48)
3 at java.base/java.util.Optional.ifPresent(Optional.java:183)
4 at org.sonar.server.platform.platformlevel.PlatformLevel2.start(PlatformLevel2.java:105)
5 at org.sonar.server.platform.PlatformImpl.start(PlatformImpl.java:213)
6 at org.sonar.server.platform.PlatformImpl.startLevel2Container(PlatformImpl.java:179)
7 at org.sonar.server.platform.PlatformImpl.init(PlatformImpl.java:87)
8 at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:43)
9 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4763)
10 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5232)
11 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
12 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429)
13 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
14 at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
15 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
16 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
17 at java.base/java.lang.Thread.run(Thread.java:829)
18Caused by: org.postgresql.util.PSQLException: ОШИБКА: нет доступа к схеме public
Как один из вариантов можно сразу назначить путь поиска пользователю sonarqube:
1alter user sonarqube set search_path to public;
Выйдите из оболочки PostgreSQL.
1\q
Вернитесь в свою учетную запись.
1$ exit
Установка и настройка SonarQube
Загрузите последнюю версию SonarQube. Чтобы найти последнюю версию, посетите страницу загрузки.
1$ wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.2.2.50622.zip
Извлеките загруженный архив.
1$ sudo unzip sonarqube-9.2.2.50622.zip
Создайте каталог установки /opt/sonarqube
.
1$ sudo mkdir /opt/sonarqube
Переместите извлеченные файлы в каталог установки.
1$ sudo mv sonarqube-*/* /opt/sonarqube
Создайте учетную запись системного пользователя для SonarQube.
1$ sudo useradd -M -d /opt/sonarqube/ -r -s /bin/bash sonarqube
Измените владельца каталога установки.
1$ sudo chown -R sonarqube:sonarqube -R /opt/sonarqube
Отредактируйте файл свойств, чтобы обновить учетные данные базы данных.
1$ sudo nano /opt/sonarqube/conf/sonar.properties
Окончательный файл должен иметь следующие изменения. Сохраните и закройте файл.
1sonar.jdbc.username=sonarqube
2sonar.jdbc.password=SecurePassword
3sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube
4sonar.web.host=0.0.0.0
Добавьте службы systemd
Создайте служебный файл systemd.
1$ sudo nano /etc/systemd/system/sonarqube.service
Добавьте приведенный ниже код в файл. Сохраните и закройте файл.
1[Unit]
2Description=SonarQube Service
3After=syslog.target network.target
4[Service]
5Type=forking
6ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
7ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
8User=sonarqube
9Group=sonarqube
10Restart=always
11LimitNOFILE=65536
12LimitNPROC=4096
13[Install]
14WantedBy=multi-user.target
Отредактируйте файл скрипта sonar.
1$ sudo nano /opt/sonarqube/bin/linux-x86-64/sonar.sh
Найдите эту строку. Чтобы выполнить поиск, используйте CTRL+W, введите поисковую фразу, затем нажмите ENTER.
1#RUN_AS_USER=
Теперь раскомментируйте строку и измените ее. Наконец, сохраните и выйдите из файла.
1RUN_AS_USER=sonarqube
Примените изменения.
1$ sudo systemctl daemon-reload
Включите службу SonarQube для запуска при загрузке системы.
1$ sudo systemctl enable sonarqube
Запустите службу SonarQube.
1$ sudo systemctl start sonarqube
Проверьте состояние службы.
1$ sudo systemctl status sonarqube
Установка и настройка Nginx
Установите и настройте Nginx в качестве обратного прокси-сервера для SonarQube.
Установите Nginx.
1$ sudo apt-get install nginx -y
Включите службу Nginx для запуска при загрузке системы.
1$ sudo systemctl enable nginx
Для настройки https сгенерируйте сертификат и ключ, например, с помощью “Автоматическая генерация сертификатов из MS CA на Linux” . Ключ скопируйте в папку /etc/ssl/private , а сертификат в папку /etc/ssl/certs
Создайте новый файл конфигурации Nginx с именем sonarqube.conf
.
1$ sudo nano /etc/nginx/sites-available/sonarqube.conf
Добавьте следующий код в файл. В настройках мы так же добавили перенаправление с http на https. Сохраните и закройте файл.
1server {
2 listen 80 ;
3 listen [::]:80;
4 server_name sonarqube.0xbbeer.ru;
5 return 302 https://sonarqube.0xbbeer.ru;
6}
7
8server {
9 listen 443 ssl;
10 listen [::]:443 ssl;
11 ssl on;
12 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
13 ssl_certificate /etc/ssl/certs/sonarqube.0xbbeer.ru.pem;
14 ssl_certificate_key /etc/ssl/private/sonarqube.0xbbeer.ru.key;
15 server_name sonarqube.0xbbeer.ru;
16
17 location / {
18 # First attempt to serve request as file, then
19 # as directory, then fall back to displaying a 404.
20 #try_files $uri $uri/ =404;
21 proxy_pass http://sonarqube.0xbbeer.ru:9000;
22 proxy_set_header Host $host;
23 proxy_set_header X-Forwarded-Proto $scheme;
24 proxy_set_header X-Real-IP $remote_addr;
25 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
26 }
27}
Включите новый файл конфигурации.
1$ sudo ln -s /etc/nginx/sites-available/sonarqube.conf /etc/nginx/sites-enabled/sonarqube.conf
Протестируйте конфигурацию Nginx.
1$ sudo service nginx configtest
Перезапустите службу Nginx.
1$ sudo systemctl restart nginx
Попробуйте зайти в SonarQube