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.
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.
Wenn alles in Ordnung ist, klicke auf die Schaltfläche Weiter, um fortzufahren.
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.
Lege auch die Einstellungen für das Systemgebietsschema fest.
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.
Klicke auf die Schaltfläche Weiter, um fortzufahren. Du wirst auf die Anmeldeseite weitergeleitet.
Gib die Anmeldedaten für das Administratorkonto ein und klicke auf Anmelden, um das SuiteCRM-Dashboard zu öffnen.
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.