SonarQube® – это инструмент автоматической проверки кода для обнаружения ошибок, уязвимостей и качества кода в вашем проекте.
Он может интегрироваться с вашим существующим рабочим процессом, таким как Jenkins, для обеспечения непрерывной проверки кода в ветках проекта и пулл реквестах.
В этом кратком руководстве мы установим этот фантастический инструмент с открытым исходным кодом, чтобы у вас была возможность ознакомиться с кодом вашей команды до того, как они будут развернуты в производственной среде.
Это поможет оптимизировать ваши приложения, а также повысить их безопасность за счет обнаружения устаревшего используемого программного обеспечения и оперативного предоставления рекомендаций.
Предварительные условия
- SonarQube собран на Java, поэтому мы должны убедиться, что Java 11 установлена.
- Другой пользователь, кроме root, следовательно, SonarQube
- PostgreSQL
Чтобы установить этот инструмент в вашем CentOS 7, выполните следующие действия:
Шаг 1. Обновите и установите необходимые инструменты и выполните системные настройки.
На этом этапе убедитесь, что ваш серве обновлен, а также установите все инструменты, которые потребуются в процессе установки.
Мы также настроим системные настройки, такие как SELinux, max_map_count и fs.file-max.
Выполните приведенные ниже команды, чтобы обновить свой сервер.
sudo yum update
sudo yum install vim wget curl -y
Настройте SELinux как Permissive
Это можно сделать, выполнив следующие команды:
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
Настройка max_map_count и fs.file-max
Из документации ядра Linux этот файл содержит максимальное количество областей карты памяти, которые может иметь процесс.
Области карты памяти используются как побочный эффект вызова malloc, непосредственно через mmap, mprotect и madvise, а также при загрузке разделяемых библиотек.
Чтобы настроить параметры в соответствии с требованиями SonarQube, откройте файл «/etc/sysctl.conf» и добавьте параметры, как показано ниже:
$ sudo vim /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65536
Создадим пользователя для сонара
Рекомендуется создать отдельного пользователя для запуска SonarQube.
Создадим его следующим образом:
Затем установите пароль для пользователя
sudo passwd sonar
Шаг 2. Установите Java 11 на CentOS 7
Как уже упоминалось во вводном разделе, SonarQube написан на Java, и для него требуется установленная Java (11, особенно в этой настройке).
Чтобы установить Java 11 в CentOS 7, следуйте приведенному ниже руководству в нашем блоге.
Шаг 3: Установите и настройте PostgreSQL
В этом примере руководства мы собираемся установить сервер PostgreSQL 11 на том же сервере, на котором будет находиться SonarQube.
Вы можете разместить его на другом сервере в зависимости от ваших потребностей.
Чтобы установить PostgreSQL 11 на свой сервер CentOS 7, выполните следующие действия, чтобы быстро настроить и запустить его.
Добавить репозиторий PostgreSQL Yum
Добавьте репозиторий PostgreSQL Yum в вашу систему CentOS 7, выполнив общую команду, показанную ниже.
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Установим пакеты PostgreSQL Server и Client
После добавления PostgreSQL Yum Repository установите PostgreSQL Server / Client пакеты:
sudo yum -y install postgresql11-server postgresql11
После установки инициализируйте базу данных и включите автоматический запуск
Теперь, когда пакеты базы данных установлены, инициализируйте базу данных, выполнив следующую команду
sudo /usr/pgsql-11/bin/postgresql-11-setup initdb
Затем запустите и разрешите запуск службы при загрузке
sudo systemctl start postgresql-11
sudo systemctl enable postgresql-11
После того, как вы установили сервер PostgreSQL, приступайте к его настройке следующим образом.
Откройте файл pg_hba.conf и измените «peer» на «trust», а «idnet» на «md5».
$ sudo vim /var/lib/pgsql/11/data/pg_hba.conf
##Измените это:
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
##На это:
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
Включите удаленный доступ к PostgreSQL
Если ваше приложение находится в удаленном месте, вам нужно будет разрешить ему доступ к вашей базе данных следующим образом:
Отредактируйте файл /var/lib/pgsql/11/data/postgresql.conf и установите для параметра Listen address IP-адрес вашего сервера или «*» для всех интерфейсов.
$ sudo vim /var/lib/pgsql/11/data/postgresql.conf
listen_addresses = '10.38.87.160'
Затем добавьте следующее в файл «pg_hba.conf»
$ sudo vim /var/lib/pgsql/11/data/pg_hba.conf
# Accept from anywhere
host all all 0.0.0.0/0 md5
# Or accept from trusted subnet
host all all 10.38.87.0/24 md5
Перезапустите службу PostgreSQL.
sudo systemctl restart postgresql-11
Установите пользователя с правами администратора PostgreSQL
Нам нужно будет изменить пароль пользователя admin postgres, как показано ниже:
$ sudo su - postgres
-bash-4.2$
-bash-4.2$: psql
postgres=# alter user postgres with password 'StrongPassword';
ALTER ROLE
postgres=#
Создание пользователя и базы данных SonarQube
Далее мы собираемся создать пользователя для SonarQube.
Перед выходом из базы данных действуйте, как показано ниже.
postgres=# createuser sonar;
postgres=# createdb sonar_db owner sonar;
postgres=# grant all privileges on database sonar_db to sonar;
Установим пароль для пользователя sonar
postgres=# ALTER USER sonar WITH ENCRYPTED password 'StrongPassword';
Шаг 4: Скачайте и установите SonarQube
Теперь мы находимся на шаге, который долго ждали.
Мы загрузим долгосрочный выпуск SonarQube, а затем установим его на наш сервер.
Чтобы установить SonarQube, выполните следующие действия.
Узнаем версию SonarQube LTS !
Вы можете посетить страницу скачивания SonarQube
https://www.sonarqube.org/downloads/
чтобы просмотреть их различные предложения.
Мы скачаем LTS
cd /opt/
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.5.zip
Затем разархивируйте файл
sudo unzip sonarqube-7.9.5.zip
После этого переименуйте папку в sonarqube
sudo mv sonarqube-7.9.5 sonarqube
Шаг 5: Настройка SonarQube
После того, как файлы были извлечены в каталог /opt/, пора настроить приложение.
Откройте файл «/opt/sonarqube/conf/sonar.properties» и добавьте детали базы данных, как показано ниже.
Вдобавок найдите общие строки и раскомментируйте их.
$ sudo vim /opt/sonarqube/conf/sonar.properties
\##Детали БД
sonar.jdbc.username=sonar
sonar.jdbc.password=StrongPassword
sonar.jdbc.url=jdbc:postgresql://localhost/sonar_db
\##
Как вы получите доступ к веб-интерфейсу SonarQube
sonar.web.host=10.38.87.160
sonar.web.port=9000
\##Java
sonar.web.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-server -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError
\##
Также добавьте следующие пути хранения Elasticsearch
sonar.path.data=/var/sonarqube/data
sonar.path.temp=/var/sonarqube/temp
Передайте права собственности на файлы SonarQube пользователю sonar, которого мы создали на шаге 1.
sudo chown -R sonar:sonar /opt/sonarqube
В случае, если Java не может быть найден в расположении по умолчанию, вам нужно будет указать бинарники, которые SonarQube сможет найти.
Вы можете указать расположение java в файле «/opt/sonarqube/conf/wrapper.conf».
Найдите строку «wrapper.java.command» и разместите рядом в ней местоположение Java.
$ sudo vim /opt/sonarqube/conf/wrapper.conf
wrapper.java.command=/usr/local/jdk-11.0.2/bin/java
Добавим файл службы SonarQube SystemD
Наконец, мы должны убедиться, что сможем управлять нашим приложением SonarQube через Systemd, чтобы мы могли запускать и останавливать его, как и другие службы на вашем сервере.
$ sudo vim /etc/systemd/system/sonarqube.service
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
LimitNOFILE=65536
LimitNPROC=4096
User=sonar
Group=sonar
Restart=on-failure
[Install]
WantedBy=multi-user.target
После редактирования файлов systemd мы должны перезагрузить их, чтобы их можно было читать и загружать.
sudo systemctl daemon-reload
Затем запустите и включите службу
sudo systemctl start sonarqube.service
sudo systemctl enable sonarqube.service
Проверьте его статус, что sonarqube успешно запущен и работает.
sudo systemctl status sonarqube.service
Шаг 6. Измените правила брандмауэра, чтобы разрешить доступ к SonarQube.
На этом этапе сервис sonarqube должен быть запущен.
Если вы не можете получить доступ к веб-интерфейсу, посетите файлы журнала, расположенные в «/opt/sonarqube/logs», где вы найдете
- elasticsearch логи (es.log)
- Sonar логи (sonar.log)
- web логи (web.log)
- Логи доступа (access.log)
- и другие
Мы включили SonarQube web на порту 9000, и мы должны разрешить это дело на брандмауэре.
Сделайте это, как описано ниже.
sudo firewall-cmd --permanent --add-port=9000/tcp && sudo firewall-cmd --reload
Шаг 7: доступ к веб-интерфейсу
То, чего мы так долго ждали, наконец-то пришло.
Теперь мы готовы получить доступ к интерфейсу SonarQube и начать оценку нашего кода на предмет безопасности.
Чтобы получить доступ к интерфейсу, откройте свой любимый браузер и укажите в нем http://ip-сервера:9000.
Вы должны увидеть поле входа, похожий на показанный ниже:
Используйте имя пользователя «admin» и пароль «admin».
Заключение
Теперь у нас есть инструмент автоматической проверки кода, который вы можете использовать для сканирования различных приложений, прежде чем они будут утверждены в прод.
Спасибо.
По ваше описанию все заработало, получилось.
http://192.168.*.*:9000/sessions/new?return_to=%2F
у меня только по такой ссылке заходил.
и firewalld был изначально отключен и selinux в режиме аудита.
еще в ручную создал /var/sonarqube и дал ей пара владельца и группы sonar.
для всех очень важно версии соблюдать java-11, postgresql-11, sonarqube 8.* если версии другие то установка будет отличаться.
Спасибо за дополнение