GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu20.04にLetsEncryptを使用してSonarQubeをインストールする方法

ステージング環境や本番環境に簡単にデプロイできる、クリーンで問題のないコードを用意することは、すべての開発者の夢です。これを実現するのに役立つツールの1つは、CI/CDパイプラインにあるSonarQubeです。 SonarQube は、ソースコードの継続的な検査に使用されるクロスプラットフォームのWebベースのツールです。 Javaで書かれています。 SonarQubeを使用すると、コードを検査し、バグやその他の不整合を検出することで、よりクリーンで安全なコードを記述できます。

SonarQubeは、GitHub、Gitlab、BitBucket、Azure DevOpsなどのプラットフォームに統合して、いくつかのプラットフォームに言及することができます。 Community、Developer、Enterprise、Datacenterの各エディションを含むさまざまなエディションがあります。

このチュートリアルでは、SonarQubeをインストールする方法を学びます。 Ubuntu 20.04 SSL証明書を無料でダウンロードして有効にすることができるため、Communityエディションをインストールします。 (https) Let's Encrypt Nginxをリバースプロキシとして設定します。

前提条件

始める前に、次の要件を満たしていることを確認してください。

  1. sudoユーザーが構成されたUbuntu20.04LTS。
  2. システムに最低4GBのRAMと2vCPUコアがあることを確認してください

いくつかのツールをインストールする必要があります

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

また、仮想メモリカーネルを増やす必要があります

$ sudo sysctl -w vm.max_map_count=262144

開いているファイルの最大数

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

およびリソース制限

$ ulimit -n 65536
$ ulimit -u 4096

/etc/sysctl.conf 構成ファイル

$ sudo vim /etc/sysctl.conf

次の行を追加します。

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

保存して終了。その後、 limits.confを開きます ファイル

$ sudo vim /etc/security/limits.conf

一番下に、次の行を追加します

sonarqube - nofile 65536
sonarqube - nproc 4096

保存して終了。変更を有効にするには、サーバーを再起動します。

ステップ1:OpenJDKをインストールする

Javaで記述されているため、SonarQubeはJavaに依存して機能します。 Javaを提供するOpenJDK11をインストールします。

$ sudo apt install openjdk-11-jdk

インストールすると、Javaのバージョンを確認できます。

$ java -version

ステップ2:PostgreSQLデータベースをインストールする

2016年から、SonarQubeはMySQLのサポートを終了し、PostgreSQLのみをサポートするようになりました。そのため、PostgreSQLデータベースをインストールする必要があります。

まず、PostgreSQLGPGキーをダウンロードして追加します。

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

その後、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'

次に、パッケージインデックスを更新して、新しいリポジトリを同期します。

$ sudo apt update

パッケージリストの更新が完了したら、PostgreSQLデータベースとその依存関係をインストールします。

$ sudo apt install postgresql postgresql-contrib

デフォルトでは、PostgreSQLサービスはインストール後に開始されます。開始されていない場合は、次のコマンドを実行します。

$ sudo systemctl start postgresql

すべてが期待どおりに実行されていることを確認するために、実行ステータスを確認します。

$ sudo systemctl status postgresql

リッスンしているポートを確認することもできます:

$ 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    

起動時にPostgreSQLが自動的に起動するようにします:

$ sudo systemctl enable postgresql

これまでのところ、PostgreSQLは問題なく稼働しています。

ステップ3:PostgreSQLを構成する

次に、PostgreSQLのインストール時に通常デフォルトで提供されるPostgresユーザーのパスワードを設定します。これを行うには、次のコマンドを実行します:

$ sudo passwd postgres

パスワードを入力して確認します。次に、Postgresユーザーに切り替えます。

$ su - postgres

次に、次に進み、新しいデータベースユーザーを作成します。

$ createuser sonar

完了したら、次のコマンドを使用してPostgreSQLプロンプトに切り替えます。

$ psql

PostgreSQLシェルにアクセスして、作成したばかりのユーザーのパスワードを作成します。

 ALTER USER sonar WITH ENCRYPTED PASSWORD 'strong_password';

次に、作成したユーザーを所有者としてSonarQubeデータベースを作成します

CREATE DATABASE sonarqube OWNER sonar;

次に、データベースを変更するためのすべての権限を持つように、データベースの使用にすべての権限を割り当てるか付与します。

GRANT ALL PRIVILEGES ON DATABASE sonarqube to sonar;

次にデータベースを終了します。

\q

ステップ4:SonarQubeをダウンロードして構成する

次に、最新のSonarQubeバイナリzipファイルをダウンロードします。現時点では、Long Term Service(LTS)リリースである最新のCommunity Editionリリースは、SonarQubeバージョン9.0.1です。最新のダウンロードについては、SonarQubeダウンロードページにアクセスしてください。

zipファイルをダウンロードするには、次のコマンドを発行します。

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

次に、zipファイルを解凍します。

$ unzip sonarqube-9.0.1.46107.zip

そして、それを/opt/パスに移動します。

$ sudo mv sonarqube-9.0.1.46107 /opt/sonarqube

ステップ5:新しいユーザーとグループを作成する

次に、SonarQubeサービスを実行する新しいユーザーとグループを作成します。したがって、グループを作成します。

$ sudo groupadd sonar

次に、新しく作成したグループにユーザーを追加するときに、ホームディレクトリを/ opt/sonarqubeに設定してユーザーを作成します。

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

次に、所有権を/ opt/sonarqubeディレクトリに設定します。

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

ステップ6:SonarQubeを構成する

それでは、SonarQubeを設定しましょう。 SonarQube構成ファイルを開きます。

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

次の行を見つけてコメントを外します

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

これらは、PostgreSQLデータベースサーバーで作成したSonarQubeデータベースのユーザーとパスワードを表しています。したがって、それに応じて値を入力してください。

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

次に、これらの行を変更して、提供されているもののように見せます

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

その後、次の行を変更して、見た目どおりに表示します。

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

次に、表示されているファイルを編集して、SonarQubeサービスを実行するユーザーを変更します。

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

下にスクロールして、下の行が次のように表示されることを確認します。

RUN_AS_USER=sonar

ステップ7: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
User=sonar
Group=sonar
Restart=always
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

変更を保存してファイルを終了します。

起動時にSonarQubeサービスを開始できるようにする

$ sudo systemctl enable sonarqube

そして、SonarQubeサービスを開始します。

$ sudo systemctl start sonarqube

SonarQubeサービスが実行されていることを確認するには、次のコマンドを実行します。

$ sudo systemctl status sonarqube

また、ポート9000が開いていることを確認してください

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

サービスがポート9000でリッスンしているかどうかを確認します

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

これで、サーバーのパブリックIPとブラウザからのポート番号(http://<server-ip>:9000/)を入力して、ログインページにアクセスできるかどうかを確認できます。 。デフォルトの管理者ユーザー名は「admin」で、パスワードは「admin」です。

Sonarqubeは、デフォルトのパスワードを変更するためにパスワードを更新するように要求します。

ステップ8:SSLを使用したNginxのインストールと構成(オプション)

SSLが有効なドメイン名でSonarqubeにアクセスするには、Nginxなどのリバースプロキシをインストールする必要があります。ウェブサーバーはSonarQubeへの接続をプロキシし、開発者がセキュリティで保護されたドメイン名からアクセスできるようにします。

Nginxのインストールはシンプルで簡単で、1つのコマンドで実行できます。

$ sudo apt install nginx

インストール後、Nginxウェブサーバーが起動時に起動できるようにします。

$ sudo systemctl enable nginx

そしてサービスを開始します

$ sudo systemctl start nginx

WebサーバーがSonarQubeを認識できるように、表示されている構成ファイルを作成します。

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

次に、提供されたコンテンツを貼り付けます。

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;
}
}

保存して終了。次に、Sonarqubeサイトを有効にします:

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

構成が正しいかどうかを確認します

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

次に、変更を適用するためにNginxWebサーバーを再起動します。

$ sudo systemctl restart nginx

次に、nginxを許可するようにUFWファイアウォールを構成する必要があります。これを行うには、コマンドを実行します

$ sudo ufw allow 'Nginx Full'

次に、ファイアウォールをリロードして変更を有効にします。

$ sudo ufw --reload

これで、ドメイン名を使用してSonarQubeにアクセスできます

ここでは、無料の証明書を暗号化しましょうを使用します。 Nginx用にcerbotを実行する必要があることを構成するには:

$ 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 

デフォルトでは、暗号化してNginxサーバーブロックファイルにいくつかの行を追加します。

このようなものが必要です

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

 }

ステップ10:HTTPSを使用してSonarQubeにアクセスする

これで、Let'sEncryptで構成されたHTTPSURLを使用してSonarQubeに安全にアクセスできます。

https://domain-name

ログインすると、ランディングページが表示されます。

結論

このチュートリアルでは、Ubuntu20.04にSonarQubeをインストールする方法を学びました。リバースプロキシとしてNginxを使用してLet'sEncrypt証明書を使用し、SSLでSonarqubeを有効にしました。


Ubuntu
  1. vsftpdを使用してUbuntuにFTPサーバーをインストールする方法

  2. Ubuntu 20.04/18.04でLetsEncryptを使用してNginxを保護する方法

  3. Apacheを使用してUbuntu20.04にLet’sEncryptをインストールする方法

  1. Ubuntu18.04にApacheを使用してJoomlaをインストールする方法

  2. Nginxを使用してNextcloudをインストールし、Ubuntu20.04LTSでSSLを暗号化する方法

  3. Apache2でJoomlaをインストールし、Ubuntu20.04で暗号化する方法

  1. Webminをインストールし、Ubuntu20.04LTSでLetsEncryptSSLを使用して保護する方法

  2. Nginxを使用してNodeBBフォーラムをインストールし、Ubuntu20.04LTSでSSLを暗号化する方法

  3. Ubuntu20.04でSSLを暗号化することでTYPO3CMSをインストールする方法