So installierst du SuiteCRM mit Nginx und kostenlosem Let’s Encrypt SSL auf Ubuntu 22.04

SuiteCRM ist eine in PHP geschriebene Open-Source-Lösung für das Kundenbeziehungsmanagement. Sie ist ein Fork der beliebten SugarCRM-Software, nachdem SugarCRM die Veröffentlichung seiner Community-Edition eingestellt hat. Sie dient dazu, einen zentralen Speicher für alle deine Kundendaten zu schaffen, um Erkenntnisse zu gewinnen, die du zur Verbesserung und Pflege deiner Geschäftsbeziehungen nutzen kannst.

Zu den Funktionen gehören Dokumentenspeicherung, E-Mail-Marketing, Kalender, Social-Media-Integration, Gebietsverwaltung, Segmentierung, Marketing-Automatisierung, Lead-Qualifizierung, interne Chat-Integration, Kundensupport, Social CRM, Sales-Force-Automatisierung, Marketing-Kampagnen, Mobile CRM und Reporting. Es kann mit SMTP-Relay-Diensten von Drittanbietern wie Mandrill, Sendgrid, Amazon SES usw. integriert werden. Du kannst Plugins installieren, um die Funktionalität von SuiteCRM zu erweitern. Es kann mit Drittanbieter-Apps wie Mautic, Facebook, Twitter, MailChimp, Zoom, Quickbooks, DocuSign usw. integriert werden.

In diesem Beitrag erfährst du, wie du SuiteCRM mit dem Webserver Nginx und Let’s Encrypt SSL auf Ubuntu 22.04 installierst.

Voraussetzungen

  • Ein Server mit Ubuntu 20.04.
  • Ein sudo-Benutzer ohne Root-Rechte.
  • Ein Fully Qualified Domain Name (FQDN), der auf den Server zeigt, z. B. suitecrm.example.com.
  • Stelle sicher, dass alles auf dem neuesten Stand ist.
    $ sudo apt update
    $ sudo apt upgrade
    
  • Einige wenige Pakete, die dein System benötigt.
    $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
    

    Einige dieser Pakete sind vielleicht schon auf deinem System installiert.

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Ubuntu wird standardmäßig mit ufw (Uncomplicated Firewall) ausgeliefert.

Überprüfe, ob die Firewall aktiv ist.

$ sudo ufw status

Du wirst die folgende Ausgabe erhalten.

Status: inactive

Erlaube den SSH-Port, damit die Firewall die aktuelle Verbindung nicht unterbricht, wenn du sie aktivierst.

$ sudo ufw allow OpenSSH

Lasse auch HTTP- und HTTPS-Ports zu.

$ sudo ufw allow http
$ sudo ufw allow https

Aktiviere die Firewall

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Überprüfe den Status der Firewall erneut.

$ sudo ufw status

Du solltest eine ähnliche Ausgabe sehen.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Schritt 2 – Nginx installieren

Ubuntu wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.

Importiere den Signierschlüssel von Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
	| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Füge das Repository für die stabile Version von Nginx hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Aktualisiere die System-Repositories.

$ sudo apt update

Installiere Nginx.

$ sudo apt install nginx

Überprüfe die Installation.

$ nginx -v
nginx version: nginx/1.20.2

Aktiviere den Nginx-Dienst.

$ sudo systemctl enable nginx

Schritt 3 – MariaDB installieren und konfigurieren

Ubuntu 22.04 wird mit MariaDB v10.6.7 ausgeliefert. Führe den folgenden Befehl aus, um sie zu installieren.

$ sudo apt install mariadb-server

Sichere die MariaDB-Installation.

$ sudo mysql_secure_installation

Du wirst verschiedene Eingabeaufforderungen sehen. Beantworte sie wie folgt.

Enter current password for root (enter for none): Press Enter
Switch to unix_socket authentication [Y/n] Type y
Change the root password? [Y/n] Type n
Remove anonymous users? [Y/n] Type y
Disallow root login remotely? [Y/n] Type y
Remove test database and access to it? [Y/n] Type y
Reload privilege tables now? [Y/n] Type y

Verbinde dich mit der MariaDB-Shell mit folgendem Befehl.

$ sudo mysql

Erstelle eine neue Datenbank für SuiteCRM.

$ CREATE DATABASE suitecrm;

Erstelle einen neuen Datenbankbenutzer und verwende ein sicheres Passwort für t.

$ CREATE USER 'suitecrmuser'@'localhost' identified by 'yourpassword';

Erteile dem Benutzer die Berechtigungen für die Datenbank.

$ GRANT ALL PRIVILEGES ON suitecrm.* TO 'suitecrmuser'@'localhost';

Lege alle Berechtigungen ab.

$ FLUSH PRIVILEGES;

Beende die MySQL-Shell.

$ exit

Schritt 4 – Installiere PHP und Erweiterungen

Ubuntu 22.04 wird mit PHP 8.1 ausgeliefert, das von SuiteCRM noch nicht unterstützt wird. Wir müssen PHP 8.0 installieren. Dazu müssen wir das PHP-Repository von Ondrej hinzufügen.

$ sudo add-apt-repository ppa:ondrej/php

Als Nächstes installierst du PHP und die von SuiteCRM benötigten Erweiterungen.

$ sudo apt install php-imagick php8.0-fpm php8.0-mysql php8.0-common php8.0-gd php8.0-imap php8.0-curl php8.0-zip php8.0-xml php8.0-mbstring php8.0-bz2 php8.0-intl php8.0-gmp

Überprüfe die Installation.

$ php --version
PHP 8.0.18 (cli) (built: May  1 2022 04:42:09) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.18, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.18, Copyright (c), by Zend Technologies

Schritt 5 – SuiteCRM herunterladen

Lade die neueste stabile Version von SuiteCRM herunter. Den Download-Link findest du auf deroffiziellen Website von SuiteCRM.

Für unser Tutorial werden wir die Version 7 von SuiteCRM installieren, da sie noch für einen längeren Zeitraum unterstützt wird. Wenn du willst, kannst du auch die Version v8 installieren, aber diese hat zunächst einen kürzeren Supportzeitraum.

$ wget -O suitecrm.zip https://suitecrm.com/files/147/SuiteCRM-7.12/614/SuiteCRM-7.12.5.zip

Erstelle ein Web-Root-Verzeichnis, um SuiteCRM bereitzustellen. Das -p Flag erstellt die Top-Level-Verzeichnisse im Pfad, wenn sie nicht vorhanden sind.

$ sudo mkdir -p /var/www/

Entpacke das heruntergeladene Zip-Archiv.

$ sudo unzip suitecrm.zip -d /var/www/

Mit dem Flag -d gibst du das Zielverzeichnis für das Archiv an.

Es wird unter dem Verzeichnis /var/www/SuiteCRM-7.12.5/ gespeichert. Wir benennen es der Einfachheit halber um.

$ sudo mv /var/www/SuiteCRM-7.12.5/ /var/www/suitecrm

Wechsle zum Web-Root.

$ cd /var/www/suitecrm

Setze die richtigen Eigentümer und Berechtigungen für die verschiedenen Verzeichnisse.

$ sudo chown -R nginx:nginx .
$ sudo chmod -R 755 .
$ sudo chmod -R 775 cache custom modules themes data upload
$ sudo chmod 775 config_override.php 2>/dev/null

Schritt 6 – SSL installieren und konfigurieren

Bevor wir Nginx konfigurieren, müssen wir das SSL-Zertifikat einrichten.

Um ein SSL-Zertifikat mit Let’s Encrypt zu installieren, müssen wir das Tool Certbot herunterladen. Dazu verwenden wir den Snapd-Paketinstaller.

Installiere den Snap-Installer.

$ sudo apt install snapd

Vergewissere dich, dass deine Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core 
$ sudo snap refresh core

Installiere Certbot.

$ sudo snap install --classic certbot

Stelle mit dem folgenden Befehl sicher, dass der Certbot-Befehl ausgeführt wird, indem du einen symbolischen Link auf das Verzeichnis /usr/bin erstellst.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Beende den Nginx-Server, da er das Certbot-Tool behindert.

$ sudo systemctl stop nginx

Erstelle ein SSL-Zertifikat.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d suitecrm.example.com

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/suitecrm.example.com auf deinem Server heruntergeladen.

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Erstelle ein Challenge-Web-Root-Verzeichnis für die automatische Erneuerung von Let’s Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Erstelle einen Cron Job zur Erneuerung des SSL-Zertifikats. Er wird jeden Tag ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstelle dazu zunächst die Datei /etc/cron.daily/certbot-renew und öffne sie zur Bearbeitung.

$ sudo nano /etc/cron.daily/certbot-renew

Füge den folgenden Code ein.

#!/bin/sh
certbot renew --cert-name suitecrm.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Ändere die Berechtigungen für die Aufgabendatei, um sie ausführbar zu machen.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Schritt 7 – Nginx und PHP konfigurieren

PHP-FPM konfigurieren

Öffne die Datei /etc/php/8.0/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

Wir müssen den Unix-Benutzer/die Unix-Gruppe der PHP-Prozesse auf nginx setzen. Finde die Zeilen user=www-data und group=www-data in der Datei und ändere sie in nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = nginx
group = nginx
...

Finde auch die Zeilen listen.owner=www-data und listen.group=www-data in der Datei und ändere sie in nginx.

listen.owner = nginx
listen.group = nginx

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

PHP-Upload-Größe konfigurieren

PHP legt ein Limit für die Größe der hochgeladenen Datei fest. Die Standardgröße von PHP ist 2 MB. Um die Upload-Größe zu erhöhen, öffne die PHP-Konfigurationsdatei zur Bearbeitung.

$ sudo nano /etc/php/8.0/fpm/php.ini

Suche die folgende Zeile.

upload_max_filesize = 2M

Ändere den Wert wie abgebildet auf 20 MB.

upload_max_filesize = 20M

Finde die folgende Zeile.

post_max_size = 8M

Ändere den Wert auf 20 MB (siehe Abbildung).

post_max_size = 20M

Finde die folgende Zeile.

;cgi.fix_pathinfo=1

Hebe die Kommentare auf, indem du das Semikolon entfernst und den Wert in 0 änderst.

cgi.fix_pathinfo=0

Speichere die Datei durch Drücken vonStrg + X drückst und eingibst Y eingibst, wenn du dazu aufgefordert wirst.

Starte den PHP-fpm-Prozess neu.

$ sudo systemctl restart php8.0-fpm

Nginx konfigurieren

Erstelle und öffne die Datei /etc/nginx/conf.d/suitecrm.conf zum Bearbeiten.

$ sudo nano /etc/nginx/conf.d/suitecrm.conf

Füge den folgenden Code in die Datei ein.

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name suitecrm.example.com;

    root /var/www/suitecrm;
    error_log /var/log/nginx/suitecrm.error.log;
    access_log /var/log/nginx/suitecrm.access.log;
    client_max_body_size 20M;

    index index.php index.html index.htm;
    
    ssl_certificate      /etc/letsencrypt/live/suitecrm.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/suitecrm.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/suitecrm.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        # try to serve file directly, fallback to app.php
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php$ {
        # try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        #Note: If you install SuiteCRM on iRedMail server, you should use the TCP socket instead.
        #fastcgi_pass 127.0.0.1:9999
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;

        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 16k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }

    # Don't log favicon
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    # Don't log robots
    location = /robots.txt  {
        access_log off;
        log_not_found off;
    }

    # Deny all attempts to access hidden files/folders such as .htaccess, .htpasswd, .DS_Store (Mac), etc...
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

    # A long browser cache lifetime can speed up repeat visits to your page
    location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
        access_log        off;
        log_not_found     off;
        expires           360d;
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  suitecrm.example.com;
    return 301   https://$host$request_uri;
}

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Öffne die Datei /etc/nginx/nginx.conf und bearbeite sie.

$ sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; ein.

server_names_hash_bucket_size  64;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe die Syntax der Nginx-Konfigurationsdatei.

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

Starte den Nginx-Dienst neu, um die neue Konfiguration zu aktivieren.

$ sudo systemctl restart nginx

Schritt 8 – SuiteCRM installieren und konfigurieren

Öffne die Seite https://suitecrm.example.com im Browser und du wirst den Einrichtungsassistenten sehen.

SuiteCRM Einrichtungsassistent

Aktiviere das Kontrollkästchen Ich akzept iere und klicke auf die Schaltfläche Weiter, um fortzufahren. Es wird ein Bildschirm angezeigt, in dem die Voraussetzungen für die Installation geprüft werden.

SuiteCRM Vorinstallationsanforderungen

Wenn alles in Ordnung ist, klicke auf die Schaltfläche Weiter, um fortzufahren.

SuiteCRM Configuration Page

Gib die in Schritt 3 festgelegten Anmeldedaten für die Datenbank ein. Gib localhost als Hostname ein. Gib auch die Details für das Administratorkonto ein und gib https://suitecrm.example.com als Instanz-URL an.

Du kannst weitere Einstellungen wie Demodaten, SMTP-Servereinstellungen, Branding, Systemgebietsschema, Sicherheit und Datenbankeinstellungen vornehmen.

Um die SMTP-Einstellungen zu aktivieren, erweiterst du den Abschnitt SMTP-Server-Spezifikation auf der Seite und gibst die entsprechenden Werte ein. Wenn du Gmail oder Microsoft Exchange verwendest, kannst du die entsprechenden Schaltflächen verwenden, um sie zu konfigurieren.Für unser Lernprogramm verwenden wir Amazon SES.

SuiteCRM SMTP Server Einstellungen

Lege auch die Einstellungen für das Systemgebietsschema fest.

SuiteCRM Lokale Einstellungen

Wenn du fertig bist, klicke unten auf der Seite auf die Schaltfläche Weiter, um fortzufahren. Du siehst nun die Details zum Abschluss der Konfiguration von SuiteCRM.

SuiteCRM-Konfiguration abgeschlossen

Klicke auf die Schaltfläche Weiter, um fortzufahren. Du wirst auf die Anmeldeseite weitergeleitet.

SuiteCRM Login-Seite

Gib die Anmeldedaten für das Administratorkonto ein und klicke auf Anmelden, um das SuiteCRM-Dashboard zu öffnen.

SuiteCRM Dashboard

Du kannst SuiteCRM nun nutzen, um die Daten deines Unternehmens und deiner Kunden zu verwalten.

Schritt 9 – Cron-Jobs einrichten

SuiteCRM braucht Cron-Jobs, um richtig zu funktionieren. Bearbeite die crontab-Datei des Benutzers nginx.

$ sudo crontab -e -u nginx

Füge die folgende Zeile am Ende der Datei hinzu.

*    *    *    *    *     cd /var/www/suitecrm; php -f cron.php > /dev/null 2>&1

Speichere und schließe die Datei.

Fazit

Damit ist die Anleitung zur Installation von SuiteCRM unter Verwendung des Nginx-Servers mit Let’s Encrypt SSL auf Ubuntu 22.04 abgeschlossen. Wenn du Fragen hast, schreibe sie unten in die Kommentare.

Das könnte dich auch interessieren …