JFrog Artifactory installeren op Ubuntu 20.04 LTS

JFrog Artifactory is een open-source toepassing voor repository beheer die kan worden geïntegreerd met gereedschappen voor continue integratie en levering. Het is een cross-platform hulpmiddel waarmee DevOps meerdere pakket repositories kan beheren. Het biedt hoge beschikbaarheid en replicatie op meerdere sites om je pijplijn te automatiseren en snellere releases mogelijk te maken.

In deze zelfstudie laten we je zien hoe je JFrog Artifactory installeert op Ubuntu 20.04.

Vereisten

  • Een server met Ubuntu 20.04.
  • Een geldige domeinnaam die met je server is verbonden.
  • Een root wachtwoord is geconfigureerd op je server.

Installeer JFrog Artifactory

Standaard is JFrog Artifactory niet beschikbaar in de Ubuntu 20.04 standaard repository. Je zult dus de JFrog Artifactory repository aan je systeem moeten toevoegen.

Installeer eerst het Gnupg2 pakket met het volgende commando:

apt-get install gnupg2 -y

Download vervolgens de GPG sleutel en voeg die toe met het volgende commando:

wget -qO - https://api.bintray.com/orgs/jfrog/keys/gpg/public.key | apt-key add -

Voeg vervolgens de JFrog Artifactory repository toe met het volgende commando:

echo "deb https://jfrog.bintray.com/artifactory-debs bionic main" | tee /etc/apt/sources.list.d/jfrog.list

Zodra de repository is toegevoegd, update je de repository en installeer je JFrog Artifactory met het volgende commando:

apt-get update -y
apt-get install jfrog-artifactory-oss -y

Als de installaton met succes is voltooid, zou je de volgende uitvoer moeten krijgen:

************ SUCCESS ****************
The Installation of Artifactory has completed successfully.

NOTE: It is highly recommended to use Artifactory with an external database (MySQL, Oracle, Microsoft SQL Server, PostgreSQL, MariaDB).
      For details about how to configure the database, refer to https://service.jfrog.org/installer/Configuring+the+Database

Start Artifactory with:
> systemctl start artifactory.service

Check Artifactory status with:
> systemctl status artifactory.service


Installation directory was set to /opt/jfrog/artifactory
You can find more information in the log directory /opt/jfrog/artifactory/var/log
System configuration templates can be found under /opt/jfrog/artifactory/var/etc
Copy any configuration you want to modify from the template to /opt/jfrog/artifactory/var/etc/system.yaml

Triggering migration script, this will migrate if needed ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for systemd (245.4-4ubuntu3) ...

Start vervolgens de Artifactory service en zet hem aan om te starten bij het herstarten van het systeem met het volgende commando:

systemctl start artifactory
systemctl enable artifactory

Controleer vervolgens de status van de Artifactory service met het volgende commando:

systemctl status artifactory

Je zou de volgende uitvoer moeten krijgen:

? artifactory.service - Artifactory service
     Loaded: loaded (/lib/systemd/system/artifactory.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-06-07 12:42:39 UTC; 40s ago
    Process: 15671 ExecStart=/opt/jfrog/artifactory/app/bin/artifactoryManage.sh start (code=exited, status=0/SUCCESS)
   Main PID: 17974 (java)
      Tasks: 0 (limit: 9522)
     Memory: 2.4M
     CGroup: /system.slice/artifactory.service
             ? 17974 /opt/jfrog/artifactory/app/third-party/java/bin/java -Djava.util.logging.config.file=/opt/jfrog/artifactory/app/artifacto>

Jun 07 12:42:38 ubuntu2004 su[18380]: (to artifactory) root on none
Jun 07 12:42:38 ubuntu2004 su[18380]: pam_unix(su:session): session opened for user artifactory by (uid=0)
Jun 07 12:42:38 ubuntu2004 su[18380]: pam_unix(su:session): session closed for user artifactory
Jun 07 12:42:38 ubuntu2004 su[18534]: (to artifactory) root on none
Jun 07 12:42:38 ubuntu2004 su[18534]: pam_unix(su:session): session opened for user artifactory by (uid=0)
Jun 07 12:42:39 ubuntu2004 su[18534]: pam_unix(su:session): session closed for user artifactory
Jun 07 12:42:39 ubuntu2004 su[18655]: (to artifactory) root on none
Jun 07 12:42:39 ubuntu2004 su[18655]: pam_unix(su:session): session opened for user artifactory by (uid=0)
Jun 07 12:42:39 ubuntu2004 su[18655]: pam_unix(su:session): session closed for user artifactory
Jun 07 12:42:39 ubuntu2004 systemd[1]: Started Artifactory service.

Op dit punt is Artifactory geïnstalleerd en luistert het op poort 8082. Je kunt nu verder gaan met de volgende stap.

Configureer Nginx als omgekeerde proxy

Vervolgens moet je Nginx instellen als een omgekeerde proxy voor JFrog. Installeer eerst de Nginx webserver met het volgende commando:

apt-get install nginx -y

Maak na de installatie van Nginx een nieuw Nginx virtual host configuratiebestand aan met het volgende commando:

nano /etc/nginx/sites-available/jfrog.conf

Voeg de volgende regels toe:

upstream jfrog {
  server 127.0.0.1:8082 weight=100 max_fails=5 fail_timeout=5;
}

server {
  listen          80;
  server_name     jfrog.linuxbuz.com;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://jfrog/;
  }
}

Bewaar en sluit het bestand en activeer dan de Nginx virtuele host met het volgende commando:

ln -s /etc/nginx/sites-available/jfrog.conf /etc/nginx/sites-enabled/

Controleer vervolgens de Nginx op eventuele syntaxfouten met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten zien:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Herstart tenslotte de Nginx dienst om de veranderingen door te voeren:

systemctl restart nginx

Op dit punt is Nginx geconfigureerd om de JFrog site te serveren. Je kunt nu verder gaan met de volgende stap.

Beveilig JFrog met Let’s Encrypt SSL

Het is aan te bevelen JFrog te beveiligen met Let’s Encrypt SSL. Voeg eerst de Certbot repository toe met het volgende commando:

apt-get install software-properties-common -y
add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471

Werk vervolgens de repository bij en installeer de Certbot client met het volgende commando:

apt-get update -y
apt-get install certbot python3-certbot-nginx -y

Als de Certbot client geïnstalleerd is, voer je het volgende commando uit om Let’s Encrypt SSL voor je website te downloaden en te installeren:

certbot --nginx -d jfrog.linuxbuz.com

Je wordt gevraagd je geldige e-mail op te geven en de servicevoorwaarden te accepteren zoals hieronder:

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: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for jfrog.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/jfrog.conf

Kies vervolgens of je HTTP verkeer al dan niet wilt omleiden naar HTTPS:

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

Typ 2 en druk op enter om het proces te starten. Als het certificaat geïnstalleerd is, zou je de volgende uitvoer moeten zien:

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/jfrog.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://jfrog.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=jfrog.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/jfrog.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/jfrog.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-09-07. 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"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Toegang Artifactory Web UI

Open nu je web browser en typ de URL https://jfrog.linuxbuz.com. Je wordt doorverwezen naar de volgende pagina:

JFrog Inloggen

Geef de standaard gebruikersnaam op als “admin” en het wachtwoord als “password”, en klik op de knop Login. Je zou de volgende pagina moeten zien:

Aan de slag met JFrog

Klik nu op de Get Started knop. Je zou het wachtwoord-reset scherm moeten zien:

Stel een admin wachtwoord in

Stel het nieuwe admin wachtwoord in en klik op de Next knop. Je zou het volgende scherm moeten zien:

Stel een basis URL in

Stel je basis URL in en klik op de Volgende knop. Je zou het volgende scherm moeten zien:

Repositories aanmaken in JFrog

Kies je gewenste repository en klik op de Next knop. Je zou de volgende pagina moeten zien:

Installatie geslaagd

Klik nu op de knop Finish. Je zou het Artifactory dashboard moeten zien in het volgende scherm:

JFrog Dashboard

Conclusie

In de bovenstaande gids leerden we hoe je JFrog Artifactory kunt installeren op Ubuntu 20.04. We leerden ook hoe JFrog te beveiligen met Let’s Encrypt SSL. Ik hoop dat je nu gemakkelijk JFrog in de productie omgeving kunt installeren. Voel je vrij me te vragen als je vragen hebt.