GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat SonarQube s Lets Encrypt na Ubuntu 20.04

Snem každého vývojáře je mít čistý a bezproblémový kód, který lze snadno nasadit do pracovního a produkčního prostředí. Jedním z nástrojů, který vám toho může pomoci dosáhnout, je ve vašem CI/CD potrubí SonarQube. SonarQube je multiplatformní a webový nástroj používaný pro průběžnou kontrolu zdrojového kódu. Je napsán v Javě. SonarQube vám umožňuje psát čistší a bezpečnější kód kontrolou kódu a zjišťováním chyb a jiných nesrovnalostí.

SonarQube lze integrovat do platforem, jako jsou GitHub, Gitlab, BitBucket a Azure DevOps, abychom zmínili několik platforem. Dodává se v různých edicích, včetně edic Community, Developer, Enterprise a Datacenter.

V tomto tutoriálu se naučíme, jak instalovat SonarQube na Ubuntu 20.04 . Nainstalujeme komunitní edici, protože je zdarma ke stažení a povolení certifikátu SSL (https) pomocí Let's Encrypt nastavením Nginx jako reverzního proxy.

Předpoklady

Než začnete, ujistěte se, že splňujete následující požadavky:

  1. Ubuntu 20.04 LTS s nakonfigurovaným uživatelem sudo.
  2. Ujistěte se, že váš systém má minimálně 4 GB RAM a 2 jádra vCPU

Budete muset nainstalovat nějaké nástroje

$ sudo apt update
$ sudo apt install net-tools unzip vim curl

Také musíte zvětšit jádro virtuální paměti

$ sudo sysctl -w vm.max_map_count=262144

s maximálním počtem otevřených souborů

$ sudo sysctl -w fs.file-max=65536

a limity zdrojů

$ ulimit -n 65536
$ ulimit -u 4096

Změny můžete přetrvat úpravou systémových parametrů v /etc/sysctl.conf konfigurační soubor

$ sudo vim /etc/sysctl.conf

Přidejte následující řádky.

vm.max_map_count=262144
fs.file-max=65536
ulimit -n 65536
ulimit -u 4096

Uložit a odejít. Poté otevřete soubor limits.conf soubor

$ sudo vim /etc/security/limits.conf

Úplně dole přidejte následující řádky

sonarqube - nofile 65536
sonarqube - nproc 4096

Uložit a odejít. Aby se změny projevily, restartujte server.

Krok 1:Nainstalujte OpenJDK

Jelikož je SonarQube napsán v Javě, jeho fungování závisí na Javě. Nainstalujeme OpenJDK 11, který poskytuje java.

$ sudo apt install openjdk-11-jdk

Po instalaci můžete ověřit verzi Java.

$ java -version

Krok 2:Instalace databáze PostgreSQL

Od roku 2016 SonarQube upustil od podpory MySQL a nyní podporuje pouze PostgreSQL. Proto musíme nainstalovat databázi PostgreSQL.

Chcete-li začít, stáhněte si a přidejte klíč PostgreSQL GPG.

$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Poté přidejte úložiště PostgreSQL.

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

Poté aktualizujte index balíčku, aby se synchronizovalo nové úložiště.

$ sudo apt update

Jakmile dokončíte aktualizaci seznamů balíčků, nainstalujte databázi PostgreSQL a její závislosti.

$ sudo apt install postgresql postgresql-contrib

Ve výchozím nastavení se služba PostgreSQL spustí po instalaci, pokud není spuštěna, spusťte následující příkaz.

$ sudo systemctl start postgresql

Chcete-li potvrdit, že vše běží podle očekávání, ověřte jeho provozní stav.

$ sudo systemctl status postgresql

Můžete také potvrdit port, na kterém naslouchá:

$ sudo netstat -pnltu | grep 5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      7768/postgres       
tcp6       0      0 ::1:5432                :::*                    LISTEN      7768/postgres    

Povolit automatické spouštění PostgreSQL při bootování:

$ sudo systemctl enable postgresql

Náš PostgreSQL je zatím v provozu bez jakýchkoliv problémů.

Krok 3:Konfigurace PostgreSQL

Nyní nastavíme heslo pro uživatele Postgres, které se obvykle objeví ve výchozím nastavení, když je nainstalován PostgreSQL. Chcete-li to provést, spusťte příkaz:

$ sudo passwd postgres

Zadejte heslo a potvrďte jej. Dále se přepněte na uživatele Postgres.

$ su - postgres

Dále pokračujte a vytvořte nového uživatele databáze.

$ createuser sonar

Po dokončení se přepněte na výzvu PostgreSQL pomocí příkazu:

$ psql

S přístupem do prostředí PostgreSQL vytvořte heslo pro uživatele, kterého jste právě vytvořili.

 ALTER USER sonar WITH ENCRYPTED PASSWORD 'strong_password';

Dále vytvořte databázi SonarQube s uživatelem, kterého jste vytvořili jako vlastníka

CREATE DATABASE sonarqube OWNER sonar;

Poté přiřaďte nebo udělte všechna oprávnění použití databáze, aby měli všechna oprávnění k úpravě databáze.

GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;

Nyní ukončete databázi.

\q

Krok 4:Stáhněte a nakonfigurujte SonarQube

Pokračujeme a stáhneme nejnovější binární soubor zip SonarQube. V tuto chvíli je nejnovější vydání Community Edition, což je vydání Long Term Service (LTS), SonarQube verze 9.0.1. Můžete přejít na stránku stahování SonarQube, kde najdete nejnovější soubory ke stažení.

Chcete-li stáhnout soubor zip, zadejte příkaz:

$ wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.0.1.46107.zip 

Dále rozbalte komprimovaný soubor.

$ unzip sonarqube-9.0.1.46107.zip

A přesuňte jej do cesty /opt/.

$ sudo mv sonarqube-9.0.1.46107 /opt/sonarqube

Krok 5:Vytvořte nového uživatele a skupinu

Dále vytvoříme nového uživatele a skupinu, která bude provozovat službu SonarQube. Takže vytvořte skupinu.

$ sudo groupadd sonar

Poté vytvořte uživatele s domovským adresářem nastaveným na /opt/sonarqube a přidejte uživatele do nově vytvořené skupiny.

$ sudo useradd -c "SonarQube - User" -d /opt/sonarqube/ -g sonar sonar

Poté nastavte vlastnictví do adresáře /opt/sonarqube.

$ sudo chown -R sonar:sonar /opt/sonarqube/

Krok 6:Konfigurace SonarQube

Pojďme nyní nakonfigurovat SonarQube. Otevřete konfigurační soubor SonarQube.

$ sudo vim  /opt/sonarqube/conf/sonar.properties

Najděte a zrušte komentář na následujících řádcích

sonar.jdbc.username=
sonar.jdbc.password=

Ty představují uživatele databáze SonarQube a heslo, které jsme vytvořili na databázovém serveru PostgreSQL. Hodnoty tedy vyplňte podle toho.

sonar.jdbc.username=sonar_user
sonar.jdbc.password=strong_password

Dále upravte tyto řádky tak, aby vypadaly jako poskytnuté

sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube
sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError

Poté upravte následující řádky, aby vypadaly tak, jak vypadají.

sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.web.javaAdditionalOpts=-server
sonar.log.level=INFO
sonar.path.logs=logs

Dále upravte uživatele, který bude spouštět službu SonarQube, úpravou zobrazeného souboru.

$ sudo vim /opt/sonarqube/bin/linux-x86-64/sonar.sh

Přejděte dolů a ujistěte se, že řádek níže vypadá jako na obrázku.

RUN_AS_USER=sonar

Krok 7:Vytvořte soubor služby Systemd pro SonarQube

V tuto chvíli náš systém nemá žádný způsob, jak spustit službu SonarQube. Proto musíme vytvořit službu systemd. Chcete-li to provést, spusťte příkaz:

$ sudo vim  /etc/systemd/system/sonarqube.service

Přidejte následující řádky.

[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=sonar
Group=sonar
Restart=always
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

Uložte změny a ukončete soubor.

Povolte spuštění služby SonarQube při spuštění

$ sudo systemctl enable sonarqube

A spusťte službu SonarQube.

$ sudo systemctl start sonarqube

Abyste zajistili, že služba SonarQube běží, spusťte příkaz:

$ sudo systemctl status sonarqube

Také se ujistěte, že je otevřen port 9000

$ sudo ufw allow '9000'
Rules updated
Rules updated (v6)

Zkontrolujte, zda služba naslouchá na portu 9000

$ sudo netstat -pnltu | grep 9000
tcp6       0      0 :::9000                 :::*                    LISTEN      65140/java  

Nyní můžete zkusit zkontrolovat, zda máte přístup na přihlašovací stránku zadáním veřejné IP vašeho serveru a čísla portu z vašeho prohlížeče, tj. http://<server-ip>:9000/ . Výchozí uživatelské jméno správce je 'admin' a heslo je 'admin'.

Sonarqube vás požádá o aktualizaci hesla, aby bylo možné změnit výchozí.

Krok 8:Nainstalujte a nakonfigurujte Nginx s SSL (volitelné)

Chcete-li získat přístup k vašemu Sonarqube s názvem domény s povoleným SSL, budete muset nainstalovat reverzní proxy, jako je Nginx. Webový server bude proxy připojení k SonarQube, aby k němu vývojáři měli přístup ze zabezpečeného názvu domény.

Instalace Nginx je jednoduchá a přímočará a lze ji provést jediným příkazem.

$ sudo apt install nginx

Po instalaci povolte spuštění webového serveru Nginx při spuštění.

$ sudo systemctl enable nginx

A spusťte službu

$ sudo systemctl start nginx

Aby byl webový server informován o SonarQube, vytvoříme zobrazený konfigurační soubor.

$ sudo vim  /etc/nginx/sites-available/sonarqube.conf

Poté vložte poskytnutý obsah.

server {

listen 80;
server_name example.com or SERVER-IP;
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;
}
}

Uložit a odejít. Poté povolte web Sonarqube:

$ sudo ln -s /etc/nginx/sites-available/sonarqube.conf  /etc/nginx/sites-enabled/sonarqube.conf

Zkontrolujte, zda je konfigurace správná

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Poté restartujte webový server Nginx, aby se změny uplatnily.

$ sudo systemctl restart nginx

Nyní musíme nakonfigurovat firewall UFW tak, aby umožňoval nginx. Chcete-li to provést, spusťte příkazy

$ sudo ufw allow 'Nginx Full'

Poté znovu načtěte firewall, aby se změny projevily.

$ sudo ufw --reload

Nyní můžete přistupovat k vašemu SonarQube prostřednictvím jeho názvu domény

Zde použijeme bezplatný certifikát let's encrypt. Abychom to nakonfigurovali, musíme spustit cerbot pro Nginx:

$ sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
 Plugins selected: Authenticator nginx, Installer nginx
 Enter email address (used for urgent renewal and security notices) (Enter 'c' to
 cancel): [email protected]                                                    
 
 Please read the Terms of Service at
 https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
 agree in order to register with the ACME server at
 https://acme-v02.api.letsencrypt.org/directory
 
 (A)gree/(C)ancel: A
 
 Would you be willing to share your email address with the Electronic Frontier
 Foundation, a founding partner of the Let's Encrypt project and the non-profit
 organization that develops Certbot? We'd like to send you email about our work
 encrypting the web, EFF news, campaigns, and ways to support digital freedom.
 
 (Y)es/(N)o: N
Saving debug log to /var/log/letsencrypt/letsencrypt.log
 Plugins selected: Authenticator nginx, Installer nginx
 Which names would you like to activate HTTPS for?
 
 1: websitefortesting.com
 
 Select the appropriate numbers separated by commas and/or spaces, or leave input
 blank to select all options shown (Enter 'c' to cancel): 1
 Obtaining a new certificate
 Performing the following challenges:
 http-01 challenge for websitefortesting.com
 Waiting for verification…
 Cleaning up challenges
 Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/sonarqube.conf
 Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
 
 1: No redirect - Make no further changes to the webserver configuration.
 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
 new sites, or if you're confident your site works on HTTPS. You can undo this
 change by editing your web server's configuration.
 
 Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
 Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/sonarqube.conf
 
 Congratulations! You have successfully enabled https://websitefortesting.com
 You should test your configuration at:
 https://www.ssllabs.com/ssltest/analyze.html?d=websitefortesting.com
 
 IMPORTANT NOTES:
 Congratulations! Your certificate and chain have been saved at:
 /etc/letsencrypt/live/websitefortesting.com/fullchain.pem
 Your key file has been saved at:
 /etc/letsencrypt/live/websitefortesting.com/privkey.pem
 Your cert will expire on 2021-11-27. To obtain a new or tweaked
 version of this certificate in the future, simply run certbot again
 with the "certonly" option. To non-interactively renew all of
 your certificates, run "certbot renew"
 If you like Certbot, please consider supporting our work by:
 Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 Donating to EFF:                    https://eff.org/donate-le 

Ve výchozím nastavení, pojďme zašifrovat, přidá několik řádků do souboru bloku serveru Nginx.

Měli byste mít něco takového

server {
         server_name websitefortesting.com;
         add_header Strict-Transport-Security max-age=2592000;
         #rewrite ^ https://$server_name$request_uri? permanent;
         access_log  /var/log/nginx/sonarqube.access.log;
         error_log   /var/log/nginx/sonarqube.error.log;
     proxy_buffers 16 64k;     
           proxy_buffer_size 128k;     

           location / {
             proxy_pass http://127.0.0.1:9000;            
             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;     
           } 
          listen 443 ssl; # managed by Certbot 
          ssl_certificate /etc/letsencrypt/live/websitefortesting.com/fullchain.pem; # managed by Certbot 
           ssl_certificate_key /etc/letsencrypt/live/websitefortesting.com/privkey.pem; # managed by Certbot 
          include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot 
          ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
 }
 server {
     if ($host = websitefortesting.com) {
         return 301 https://$host$request_uri;
     } # managed by Certbot
     
            listen 80;     
            server_name websitefortesting.com; return 404; # managed by Certbot

 }

Krok 10:Přístup k SonarQube pomocí HTTPS

Nyní můžete k SonarQube přistupovat bezpečně pomocí HTTPS URL nakonfigurované pomocí let's encrypt.

https://domain-name

Po přihlášení se vám zobrazí vstupní stránka.

Závěr

V tomto tutoriálu jsme se naučili, jak nainstalovat SonarQube na Ubuntu 20.04. Povolili jsme Sonarqube s SSL pomocí certifikátu Let's Encrypt pomocí Nginx jako reverzního proxy.


Ubuntu
  1. Jak nainstalovat FTP server na Ubuntu s vsftpd

  2. Jak zabezpečit Nginx pomocí Lets Encrypt na Ubuntu 20.04 / 18.04

  3. Jak nainstalovat Let’s Encrypt na Ubuntu 20.04 s Apache

  1. Jak nainstalovat Joomla s Apache na Ubuntu 18.04

  2. Jak nainstalovat Nextcloud s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  3. Jak nainstalovat Joomla s Apache2 a Lets Encrypt na Ubuntu 20.04

  1. Jak nainstalovat Webmin a zabezpečit jej pomocí Lets Encrypt SSL na Ubuntu 20.04 LTS

  2. Jak nainstalovat fórum NodeBB s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  3. Jak nainstalovat TYPO3 CMS s Lets Encrypt SSL na Ubuntu 20.04