<mohammadrony>

Installation

Prerequisites

sudo vi /etc/sysctl.conf
vm.max_map_count=524288
fs.file-max=131072
sudo sysctl --system
ulimit -n 131072
ulimit -u 8192
sudo vi /etc/security/limits.d/99-sonarqube.conf
*   -   nofile   131072
*   -   nproc    8192

Database

sudo -i -u postgres psql
CREATE USER sonarqube WITH PASSWORD 'sonarqube';
CREATE DATABASE sonarqube OWNER sonarqube;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;

Sonarqube

sudo useradd -b /opt/sonarqube -s /bin/bash sonarqube
sudo apt install unzip software-properties-common wget

Download Sonarqube Community Build

unzip sonarqube-*.zip
sudo mv sonarqube-* /opt/
sudo mv /opt/sonarqube-* /opt/sonarqube
sudo chown -R sonarqube:sonarqube /opt/sonarqube
sudo tee -a /opt/sonarqube/conf/sonar.properties << EOF
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube

sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError

sonar.web.host=127.0.0.1
sonar.web.port=9000
sonar.web.javaAdditionalOpts=-server

sonar.log.level=INFO
sonar.path.logs=logs
EOF
sudo tee -a /etc/systemd/system/sonarqube.service << EOF
[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
User=sonarqube
Group=sonarqube
Restart=always
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now sonarqube
sudo systemctl status sonarqube

Nginx

sudo apt install -y nginx
sudo tee -a /etc/nginx/sites-available/sonarqube.conf << EOF
server {
  listen 80;
  server_name sonar.example.com;
  access_log /var/log/nginx/sonar.access.log;
  error_log /var/log/nginx/sonar.error.log;
  proxy_buffers 16 64k;
  proxy_buffer_size 128k;

  location / {
    proxy_pass http://127.0.0.1:9000;
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto http;
  }
}
EOF
sudo ln -s /etc/nginx/sites-available/sonarqube.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx