GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Installieren Sie ProjectSend auf Ubuntu 20.04 mit Nginx (LEMP Stack)

Dieses Tutorial zeigt Ihnen, wie Sie ProjectSend auf Ubuntu 20.04 LTS mit Nginx-Webserver installieren.

Was ist ProjectSend?

ProjectSend ist eine kostenlose, selbst gehostete Open-Source-Dateifreigabelösung. ProjectSend-Funktionen:

  • Echtzeitstatistiken
  • Kundengruppen erstellen
  • Selbstregistrierung und Social Login
  • Benutzerdefinierte E-Mail-Vorlagen

Voraussetzungen

ProjectSend ist in der Programmiersprache PHP geschrieben. Um diesem Tutorial zu folgen, müssen Sie zuerst den LEMP-Stack auf Ubuntu 20.04 installieren . Wenn Sie dies noch nicht getan haben, sehen Sie sich bitte das folgende Tutorial an.

  • So installieren Sie LEMP Stack (Nginx, MariaDB, PHP7.4-FPM) auf Ubuntu 20.04

Sie können ProjectSend auf Ihrem Heimserver oder einem VPS (Virtual Private Server) installieren. Sie benötigen auch einen Domänennamen, damit Sie später HTTPS aktivieren können, um den HTTP-Verkehr zu verschlüsseln. Ich habe meinen Domainnamen bei NameCheap registriert, weil der Preis niedrig ist und Whois-Datenschutz lebenslang kostenlos ist. ProjectSend kann ohne Domainnamen installiert werden, aber es macht wirklich keinen Sinn, wenn Sie die HTTP-Verbindung nicht verschlüsseln, um Schnüffeln zu verhindern. Ich empfehle den Kauf eines Domainnamens, wenn Sie wirklich an Serversoftware basteln und sie voll ausschöpfen möchten.

Lassen Sie uns jetzt ProjectSend installieren.

Schritt 1:ProjectSend auf Ubuntu 20.04 herunterladen

Melden Sie sich bei Ihrem Ubuntu 20.04-Server an. Laden Sie dann das ProjectSend-Zip-Archiv auf Ihren Server herunter. Die neueste stabile Version ist zum Zeitpunkt des Schreibens dieses Artikels r1295. Möglicherweise müssen Sie die Versionsnummer ändern. Gehen Sie zu https://www.projectsend.org/#download, um die neueste Version anzuzeigen.

Sie können den folgenden Befehl ausführen, um es auf Ihren Server herunterzuladen.

wget -O projectsend.zip https://www.projectsend.org/download/387/

Entpacken Sie das Archiv nach dem Herunterladen mit unzip .

sudo apt install unzip

sudo mkdir -p /usr/share/nginx/projectsend/

sudo unzip projectsend.zip -d /usr/share/nginx/projectsend/

Das -d Option gibt das Zielverzeichnis an. ProjectSend-Webdateien werden nach /usr/share/nginx/projectsend/ extrahiert . Dann müssen wir den Eigentümer dieses Verzeichnisses auf www-data ändern damit der Webserver (Nginx) in dieses Verzeichnis schreiben kann.

sudo chown www-data:www-data /usr/share/nginx/projectsend/ -R

Schritt 2:Erstellen Sie eine Datenbank und einen Benutzer für ProjectSend im MariaDB-Datenbankserver

Melden Sie sich mit dem folgenden Befehl beim MariaDB-Datenbankserver an. Da MariaDB jetzt unix_socket verwendet Plugin für die Benutzeranmeldung zur Authentifizierung müssen Sie das MariaDB-Root-Passwort nicht eingeben. Wir müssen nur mysql voranstellen Befehl mit sudo .

sudo mysql

Erstellen Sie dann eine Datenbank für ProjectSend. Dieses Tutorial nennt die Datenbank projectsend. Sie können einen beliebigen Namen verwenden.

create database projectsend;

Erstellen Sie den Datenbankbenutzer. Auch hier können Sie Ihren bevorzugten Namen für diesen Benutzer verwenden. Ersetzen Sie your-password mit Ihrem bevorzugten Passwort.

create user projectsenduser@localhost identified by 'your-password';

Gewähren Sie diesem Benutzer alle Berechtigungen für projectsend Datenbank.

grant all privileges on projectsend.* to projectsenduser@localhost;

Berechtigungen leeren und beenden.

flush privileges;

exit;

Schritt 3:ProjectSend konfigurieren

Gehen Sie zu includes Verzeichnis.

cd /usr/share/nginx/projectsend/includes/

Kopieren Sie die Beispielkonfigurationsdatei und benennen Sie sie in sys.config.php um .

sudo cp sys.config.sample.php sys.config.php

Bearbeiten Sie nun die neue Konfigurationsdatei mit einem Befehlszeilen-Texteditor wie Nano.

sudo nano sys.config.php

Suchen Sie die folgenden Zeilen und ersetzen Sie die roten Texte durch den Datenbanknamen, den Benutzernamen und das Passwort, die Sie in Schritt 2 erstellt haben.

/** Database name */
define('DB_NAME', 'database');

/** Database host (in most cases it's localhost) */
define('DB_HOST', 'localhost');

/** Database username (must be assigned to the database) */
define('DB_USER', 'username');

/** Database password */
define('DB_PASSWORD', 'password');

Speichern und schließen Sie die Datei. Um die Datei im Nano-Texteditor zu speichern, drücken Sie Ctrl+O , und drücken Sie dann Enter bestätigen. Drücken Sie als Nächstes Ctrl+X zum Beenden.

Schritt 4:Erstellen Sie eine Nginx-Konfigurationsdatei für ProjectSend

Erstellen Sie eine projectsend.conf Datei in /etc/nginx/conf.d/ Verzeichnis, mit einem Befehlszeilen-Texteditor wie Nano.

sudo nano /etc/nginx/conf.d/projectsend.conf

Kopieren Sie den folgenden Text und fügen Sie ihn in die Datei ein. Ersetzen Sie projectsend.example.com mit Ihrer eigenen bevorzugten Subdomain. Vergessen Sie nicht, in Ihrem DNS-Zonen-Editor einen DNS-A-Eintrag für diese Subdomain zu erstellen. Wenn Sie keinen echten Domainnamen haben, empfehle ich, zu NameCheap zu gehen, um einen zu kaufen. Der Preis ist niedrig und sie bieten Whois-Datenschutz lebenslang kostenlos.

server {
    listen 80;
    listen [::]:80;
    server_name projectsend.example.com;

    # Add headers to serve security related headers
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;

    # Path to the root of your installation
    root /usr/share/nginx/projectsend/;
    index index.php index.html;

    access_log /var/log/nginx/projectsend.access;
    error_log /var/log/nginx/projectsend.error;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ /.well-known/acme-challenge {
      allow all;
    }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Disable gzip to avoid the removal of the ETag header
    gzip off;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
      try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
       include fastcgi_params;
       fastcgi_split_path_info ^(.+\.php)(/.*)$;
       try_files $fastcgi_script_name =404;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       #Avoid sending the security headers twice
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
       fastcgi_pass unix:/run/php/php7.4-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;
    }

   location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # Optional: Don't log access to other assets
        access_log off;
   }
}

Speichern und schließen Sie die Datei. (Um eine Datei im Nano-Texteditor zu speichern, drücken Sie Ctrl+O , und drücken Sie dann Enter bestätigen. Drücken Sie zum Beenden Ctrl+X .)

Testen Sie dann die Nginx-Konfiguration.

sudo nginx -t

Wenn der Test erfolgreich ist, laden Sie Nginx neu, damit die Änderungen wirksam werden.

sudo systemctl reload nginx

Schritt 5:PHP-Module installieren und aktivieren

Führen Sie die folgenden Befehle aus, um die von ProjectSend erforderlichen oder empfohlenen PHP-Module zu installieren.

sudo apt install imagemagick php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl  php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp

Schritt 6:HTTPS aktivieren

Jetzt können Sie in Ihrem Webbrowser auf den ProjectSend-Webinstallationsassistenten zugreifen, indem Sie den Domänennamen für Ihre ProjectSend-Installation eingeben.

projectsend.example.com/install/index.php

Wenn die Webseite nicht geladen werden kann, müssen Sie wahrscheinlich Port 80 in der Firewall öffnen.

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Und auch Port 443.

sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

Bevor wir sensible Informationen eingeben, sollten wir eine sichere HTTPS-Verbindung auf ProjectSend aktivieren. Wir können ein kostenloses TLS-Zertifikat von Let’s Encrypt erhalten. Installieren Sie den Let’s Encrypt-Client (certbot) aus dem Ubuntu 20.04-Repository.

sudo apt install certbot python3-certbot-nginx

Python3-certbot-nginx ist das Nginx-Plugin. Führen Sie als Nächstes den folgenden Befehl aus, um ein kostenloses TLS-Zertifikat mit dem Nginx-Plugin zu erhalten.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d projectsend.example.com

Wo:

  • –nginx :Verwenden Sie den Nginx-Authentifikator und das Installationsprogramm
  • –stimme zu :Nutzungsbedingungen von Let’s Encrypt akzeptieren
  • –Weiterleitung :Erzwingen Sie HTTPS, indem Sie eine 301-Weiterleitung hinzufügen.
  • –hsts :HTTP Strict Transport Security aktivieren. Dies schützt vor SSL/TLS-Stripping-Angriffen.
  • –staple-ocsp :OCSP-Heften aktivieren.
  • –E-Mail :E-Mail, die für die Registrierung und den Wiederherstellungskontakt verwendet wird.
  • -d Flag folgt eine durch Kommas getrennte Liste von Domänennamen. Sie können bis zu 100 Domainnamen hinzufügen.

Sie werden gefragt, ob Sie E-Mails von EFF (Electronic Frontier Foundation) erhalten möchten. Nachdem Sie J oder N ausgewählt haben, wird Ihr TLS-Zertifikat automatisch bezogen und für Sie konfiguriert, was durch die folgende Meldung angezeigt wird.

Schritt 7:Beenden Sie die Installation in Ihrem Webbrowser

Jetzt können Sie über eine HTTPS-Verbindung auf den ProjectSend-Webinstallationsassistenten zugreifen.

https://projectsend.example.com/install/index.php

Um die Installation abzuschließen, müssen Sie ihr einen Site-Namen geben und ein Administratorkonto erstellen.

Klicken Sie auf Install klicken, können Sie sich bei der ProjectSend-Webschnittstelle anmelden.

So richten Sie die ProjectSend-E-Mail-Benachrichtigung ein

Wenn Ihre ProjectSend-Instanz von mehr als einer Person verwendet wird, ist es wichtig, dass Ihr ProjectSend-Server Transaktions-E-Mails senden kann, z. B. E-Mails zum Zurücksetzen des Passworts. Gehen Sie zu Optionen -> E-Mail-Benachrichtigungen . Sie finden die E-Mail-Server-Einstellungen. Es gibt vier Sendemodi:

  • PHP-Mail (Basis)
  • SMTP
  • Gmail
  • Mail senden

Sie können den sendmail wählen -Modus, wenn auf Ihrem ProjectSend-Host ein SMTP-Server ausgeführt wird. Lassen Sie andere Felder leer.

Wenn Sie einen SMTP-Server verwenden möchten, der auf einem anderen Host läuft, wählen Sie SMTP Modus und geben Sie die Adresse des SMTP-Servers und die Anmeldedaten wie unten ein. Wählen Sie STARTTLS für die Verschlüsselung.

Wie Sie einen E-Mail-Server einrichten, erfahren Sie im folgenden Tutorial. Hinweis dass ich dringend empfehle, den iRedMail-Mailserver auf einem frischen, sauberen Betriebssystem auszuführen. Die Installation von iRedMail auf einem Betriebssystem mit anderen Webanwendungen kann fehlschlagen und wahrscheinlich vorhandene Anwendungen beschädigen.

  • So richten Sie mit iRedMail ganz einfach einen voll funktionsfähigen Mailserver unter Ubuntu 20.04 ein

Schritt 8:Erhöhen Sie das PHP-Speicherlimit

Das standardmäßige PHP-Speicherlimit beträgt 128 MB. ProjectSend empfiehlt 512 MB für eine bessere Leistung. Um das PHP-Speicherlimit zu ändern, bearbeiten Sie die php.ini Datei.

sudo nano /etc/php/7.4/fpm/php.ini

Finden Sie die folgende Zeile. (Zeile 409)

memory_limit = 128M

Ändern Sie den Wert.

memory_limit = 512M

Speichern und schließen Sie die Datei. Alternativ können Sie den folgenden Befehl ausführen, um den Wert zu ändern, ohne die Datei manuell zu öffnen.

sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/fpm/php.ini

Laden Sie dann PHP-FPM neu Dienst, damit die Änderungen wirksam werden.

sudo systemctl reload php7.4-fpm

Schritt 9:Erhöhen Sie die Größenbeschränkung für Upload-Dateien

Die von Nginx festgelegte standardmäßige maximale Upload-Dateigröße beträgt 1 MB. Um das Hochladen großer Dateien auf Ihren ProjectSend-Server zu ermöglichen, bearbeiten Sie die Nginx-Konfigurationsdatei für ProjectSend.

sudo nano /etc/nginx/conf.d/projectsend.conf

Wir haben in dieser Datei bereits die maximale Dateigröße festgelegt, wie durch

angegeben
client_max_body_size 512M;

Sie können es ändern, wenn Sie möchten, z. B. 1G.

client_max_body_size 1024M;

Speichern und schließen Sie die Datei. Laden Sie dann Nginx neu, damit die Änderungen wirksam werden.

sudo systemctl reload nginx

PHP legt auch eine Begrenzung der Upload-Dateigröße fest. Die standardmäßige maximale Dateigröße zum Hochladen beträgt 2 MB. Um die Upload-Größenbeschränkung zu erhöhen, bearbeiten Sie die PHP-Konfigurationsdatei.

sudo nano /etc/php/7.4/fpm/php.ini

Suchen Sie die folgende Zeile (Zeile 846).

upload_max_filesize = 2M

Ändern Sie den Wert wie folgt:

upload_max_filesize = 1024M

Speichern und schließen Sie die Datei. Alternativ können Sie den folgenden Befehl ausführen, um den Wert zu ändern, ohne die Datei manuell zu öffnen.

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.4/fpm/php.ini

Starten Sie dann PHP-FPM neu.

sudo systemctl restart php7.4-fpm

Lokalen DNS-Eintrag hinzufügen

Es wird empfohlen, die Datei /etc/hosts zu bearbeiten Datei auf Ihrem ProjectSend-Server und fügen Sie den folgenden Eintrag hinzu, damit ProjectSend selbst nicht das öffentliche DNS abfragen muss, was die Gesamtstabilität verbessern kann. Wenn Ihr ProjectSend-Server die Datei projectsend.example.com nicht auflösen kann hostname, dann kann es zu einem 504-Gateway-Timeout kommen Fehler.

127.0.0.1   localhost projectsend.example.com

Eine IP-Adresse in /etc/hosts Datei kann mehrere Hostnamen haben, wenn Sie also andere Anwendungen auf derselben Box installiert haben, können Sie auch andere Hostnamen oder Subdomains in derselben Zeile wie folgt hinzufügen:

127.0.0.1   localhost focal ubuntu projectsend.example.com nextcloud.example.com

Tipps zur Fehlerbehebung

Wenn Fehler auftreten, können Sie eine der folgenden Protokolldateien überprüfen, um herauszufinden, was falsch ist.

  • Nginx-Fehlerprotokoll:/var/log/nginx/error.log
  • Nginx-Fehlerprotokoll für den virtuellen ProjectSend-Host:/var/log/nginx/projectsend.error

Ubuntu
  1. So installieren Sie Nginx mit PHP und MySQL (LEMP Stack) unter Ubuntu 18.04

  2. So installieren Sie Nginx mit PHP und MySQL (LEMP Stack) unter Ubuntu 20.04 LTS

  3. So installieren Sie den Shlink-URL-Shortener mit Nginx unter Ubuntu 20.04

  4. So installieren Sie TYPO3 8.1 mit Nginx (LEMP) auf Ubuntu 16.04

  5. Installieren Sie WordPress mit LEMP Stack auf Ubuntu 20.04

Installieren Sie WordPress auf Ubuntu 20.04 mit Nginx, MariaDB, PHP7.4 (LEMP)

So installieren Sie den LEMP-Stack (Nginx, MariaDB, PHP7.1) unter Ubuntu 17.10

So installieren Sie phpMyAdmin mit Nginx (LEMP) unter Ubuntu 18.04 LTS

So installieren Sie den LEMP-Stack auf Ubuntu 20.04 Server/Desktop

So installieren Sie den LEMP-Stack mit PhpMyAdmin in Ubuntu 20.04

So installieren Sie WordPress mit Nginx in Ubuntu 20.04