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
angegebenclient_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