Wie installiert man Nextcloud 19 auf Debian Buster mit postgreSQL 11.5 php7.4-fpm Apache2 und HTTP/2

,

Was ist Neu
ChangeLog

Aber jetzt lassen Sie uns die neue Nextcloud installieren mit postreSQL und php7.4-fpm auf Debian 10 (Buster).

Bedarf:
– eine frische Debian 10 (Buster) installation ohne Gui
– Shell-Zugriff und entsprechende Rechte
– einen DNS A und falls vorhanden einen AAAA record für den Apache vhostStep 1: Install postgreSQL

Zuerst installieren wir postgreSQL als Database-Server:

apt install -y postgresql postgresql-contrib

Jetzt können Sie eine Verbindung zu postgreSQL herstellen mit:

root@db01:/# sudo -u postgres psql
psql (11.5 (Debian 11.5-1+deb10u1))
Type „help“ for help.

postgres=#

Sie können Informationen über die Verbindung erhalten mit:

postgres=# \conninfo
You are connected to database „postgres“ as user „postgres“ via socket in „/var/run/postgresql“ at port „5432“.

und Sitzung beenden mit:

postgres-# \q

Step 2: Install Apache2

Mit dem folgenden Befehl installieren wir den Apache-Webserver:

apt install -y apache2 apache2-utils

Step 3: Install php7.4-fpm an recommended moduls

Vor der Installation von php7.4 müssen wir Debian Buster die folgenden Repositories hinzufügen:

sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo „deb https://packages.sury.org/php/ $(lsb_release -sc) main“ | sudo tee /etc/apt/sources.list.d/sury_php.list
sudo apt update

Jetzt können wir mit dem folgenden Befehl beginnen, die benötigten Pakete zu installieren:

apt install -y php7.4-cli php7.4-common php7.4-bcmath php7.4-gmp php7.4-mbstring php7.4-gd php-imagick php7.4-intl php7.4-bz2 php7.4-xml php7.4-pgsql php7.4-zip php7.4-dev php7.4-curl php7.4-fpm php-dompdf redis-server php-redis php-smbclient php7.4-ldap

Step 4: Configure Apache2 and php7.4-fpm

Jetzt aktivieren wir die benötigten Module in Apache2 mit:

a2enmod proxy_fcgi setenvif mpm_event rewrite headers env dir mime ssl http2

und danach aktivieren wir php7.4-fpm:

a2enconf php7.4-fpm

Jetzt haben wir die apache2.conf bearbeitet, um die Verwendung von .htaccess-Dateien zu ermöglichen:

nano /etc/apache2/apache2.conf

und ändern Sie den folgenden Code:

Options Indexes FollowSymLinks
AllowOverride None
Require all granted

zu:

Options Indexes FollowSymLinks
AllowOverride All
Require all granted

Um HTTP / 2 zu aktivieren, müssen wir diese Zeile zu apache2.conf hinzufügen:

Protocols h2 h2c http/1.1

jetzt müssen wir die php.ini für die nextcloud vorbereiten:

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

mit folgenden Richtlinien erweitern:

[extend]
opcache.enabled=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

und passen Sie die folgenden Zeilen an:

max_execution_time = 300
max_input_time = 600
memory_limit = 512M
upload_max_filesize = 10240M

Danach müssen der Webserver und php7.4-fpm neu gestartet werden:

systemctl restart apache2 php7.4-fpm

Step 5: Install Certbot and other tools

Um eine SSL-Zertifikat von LetsEncrypt anzufordern, verwenden wir Certbot und das Apache-Plugin:

apt install python-certbot-apache certbot wget curl sudo unzip

Step 6: Create Database

Bevor wir die Nextcloud installieren können, müssen wir zuerst eine Datenbank in postgreSQL erstellen. Dazu führen wir folgende Befehle aus:

sudo -u postgres psql

dann Zeile für Zeile ausführen:

CREATE USER nextcloud WITH PASSWORD ‚your-password‘;
CREATE DATABASE nextclouddb TEMPLATE template0 ENCODING ‚UNICODE‘;
ALTER DATABASE nextclouddb OWNER TO nextcloud;
GRANT ALL PRIVILEGES ON DATABASE nextclouddb TO nextcloud;
\q

Step 7: Download Nextcloud and create filesystem

Jetzt ist es Zeit, die neueste Version von Nextcloud 19 von nextcloud herunterzuladen:

wget https://download.nextcloud.com/server/releases/latest-19.zip

und entpacken Sie das heruntergeladene Archiv:

unzip latest-19.zip

Danach verschieben wir den Ordner nextcloud an die richtige Stelle.

Wir verschieben den gesamten Ordner in den Pfad /var/www/html/

mv nextcloud /var/www/html/
chown -R www-data:www-data /var/www/html/nextcloud

Sie können das heruntergeladene Archiv jetzt löschen:

sudo rm latest-19.zip

Für unsere nextcloud-Dateien bereiten wir ein Verzeichnis außerhalb von /var/www/html/nextcloud vor:

mkdir /nextcloud_data

und ändern Sie den Eigentümer in www-data:

chown -R www-data:www-data /nextcloud_data

Das Dokumentenstammverzeichnis für Apache lautet jetzt /var/www/html/nextcloud

Step 8: Create Apache2 vHost and secure with SSL

Um einen Apache-vhost zu erstellen, erstellen wir einfach eine neue .conf in /etc/apache2/sites-available/:

nano /etc/apache2/sites-available/001-nextcloud.conf

Fügen Sie den folgenden Inhalt hinzu und passen Sie Ihre Namen an:

ServerName nextcloud.your-domain.tld
ServerAdmin webmaster@your-domain.tld
DocumentRoot /var/www/html/nextcloud

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Dann aktivieren wir diese Site und deaktivieren den Standard-vHost:

a2ensite 001-nextcloud.conf
a2dissite 000-default.conf
systemctl reload apache2

Da wir die Site natürlich über https erreichen möchten, erstellen wir ein LetsEncrypt-Zertifikat. Der einfachste Weg, dies zu tun, ist mit Certbot, das wir oben bereits installiert haben:

certbot –apache –rsa-key-size 4096

In der letzten Abfrage bestätigen wir mit „2“, dass eine Umleitung erfolgen soll.

Certbot erstellt dann eine zweite vhost-Konfigurationsdatei, die wir dann erneut bearbeiten:

Wir fügen den folgenden Block unter der DocumentRoot-Direktive hinzu:

Header always set Strict-Transport-Security „max-age=15768000; preload“
Header always set Referrer-Policy „strict-origin-when-cross-origin“
# Prevent MIME based attacks
Header always set X-Content-Type-Options „nosniff“
Header always set X-Frame-Options „SAMEORIGIN“

# SSL Configuration – uses strong cipher list – these might need to be downgraded if you need to support older browsers/devices
SSLEngine on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On

Require all granted
AllowOverride All
Options FollowSymLinks MultiViews

Dav off

SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
Satisfy Any

dann müssen wir den Webserver erneut laden:

systemctl reload apache2

Step 9: Configure Nextcloud

Für die endgültige Konfiguration rufen wir unsere Domain im Browser auf:

Nehmen wir nun die config.php von Nextcloud, um den empfohlenen Speichercache zu konfigurieren:

nano /var/www/html/nextcloud/config/config.php

Fügen Sie den folgenden Code hinzu:

‚memcache.local‘ => ‚\OC\Memcache\Redis‘,
‚memcache.locking‘ => ‚\\OC\\Memcache\\Redis‘,
‚redis‘ => array(
‚host‘ => ‚localhost‘,
‚port‘ => 6379,
),

Es sieht aus wie das:

und konfigurieren Sie den Cron-Job des Benutzers entsprechend www-data (passen Sie den Pfad und / oder den Benutzer an, wenn Sie einen anderen verwenden):

sudo crontab -u www-data -e

Fügen Sie am Ende die folgende Zeile hinzu:

*/5 * * * * php7.4 -f /var/www/html/nextcloud/cron.php

Neustart von Apache2 und php-fpm:

systemctl restart apache2 && sudo systemctl restart php7.4-fpm

Vergessen Sie nicht, Ihre Mail-Einstellungen zu konfigurieren.
Das wars dann auch schon.