GNU/Linux >> LINUX-Kenntnisse >  >> Fedora

So installieren und konfigurieren Sie Nextcloud auf Fedora 32

Nextcloud ist eine Open-Source-Software zum Speichern und Synchronisieren Ihrer Daten auf mehreren Geräten. Sie können es als Ihren eigenen Dropbox-Klon betrachten. Aber neben dem Speichern von Dateien bietet es auch zusätzliche Funktionen wie Kalender, Kontakte, geplante Aufgaben, Medienstreaming usw.

Nextcloud bietet Apps für Windows, Linux, MacOS und mobile Apps für Android und iOS, mit denen Sie Dateien auf Ihren verschiedenen Geräten synchronisieren können.

In diesem Tutorial lernen wir, wie man Nextcloud auf einem Fedora 32-basierten Server installiert und konfiguriert. Wir werden auch den Nginx-Webserver zusammen mit PHP 7.4 und MariaDB installieren

Voraussetzungen

  • Ein Server mit Fedora 32.

  • Ein Nicht-Root-Sudo-Benutzer.

  • Stellen Sie sicher, dass alles aktualisiert ist.

    $ sudo dnf update
    
  • Grundlegende Pakete.

    $ sudo dnf install wget curl bzip2 nano unzip policycoreutils-python-utils -y
    

    Einige dieser Pakete befinden sich möglicherweise bereits auf Ihrem System.

Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Der Fedora-Server wird mit vorinstallierter Firewalld-Firewall geliefert.

Überprüfen Sie, ob die Firewall ausgeführt wird.

$ sudo firewall-cmd --state
running

Überprüfen Sie die aktuell erlaubten Dienste/Ports.

$ sudo firewall-cmd --permanent --list-services

Es sollte die folgende Ausgabe zeigen.

dhcpv6-client mdns ssh

HTTP- und HTTPS-Ports zulassen.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Überprüfen Sie den Status der Firewall erneut.

$ sudo firewall-cmd --permanent --list-services

Sie sollten eine ähnliche Ausgabe sehen.

dhcpv6-client http https mdns ssh

Laden Sie die Firewall neu.

$ sudo systemctl reload firewalld

Installieren Sie PHP

Fedora 32 wird standardmäßig mit PHP 7.4 ausgeliefert, aber um ein aktualisiertes PHP-Repository zu haben, werden wir das REMI-Repository hinzufügen.

Installieren Sie das REMI-Repository, das das offizielle Fedora-Repository zum Installieren von PHP-Paketen ist.

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-32.rpm

Aktivieren Sie remi -Repository und deaktivieren Sie remi-modular Repository. Dadurch wird das Repository aktiviert, das zum Installieren von PHP 7.4-Paketen erforderlich ist.

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-disabled remi-modular

Installieren Sie PHP 7.4 zusammen mit einigen zusätzlichen Paketen.

$ sudo dnf install php-fpm php-cli php-gd php-mbstring php-intl php-mysqlnd php-imagick php-zip php-json php-process php-xml php-bcmath php-gmp php-ftp php-smbclient php-opcache

Überprüfen Sie, ob PHP korrekt funktioniert.

$ php --version
PHP 7.4.11 (cli) (built: Sep 29 2020 10:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies

PHP konfigurieren

Öffnen Sie die Datei /etc/php-fpm.d/www.conf .

$ sudo nano /etc/php-fpm.d/www.conf

Wir müssen den Unix-Benutzer/die Gruppe von PHP-Prozessen auf nginx setzen . Suchen Sie user=apache und group=apache Zeilen in der Datei und ändern Sie 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.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Entkommentieren Sie die folgenden PHP-Umgebungsvariablen.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Entkommentieren Sie die Opcache-Konfiguration in der letzten Zeile.

php_value[opcache.file_cache] = /var/lib/php/opcache

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Bearbeiten Sie nun die PHP-Opcache-Konfiguration /etc/php.d/10-opcache.ini .

$ sudo nano /etc/php.d/10-opcache.ini

Ändern Sie die Konfiguration wie folgt.

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Führen Sie die folgenden Befehle aus, um die Datei-Upload- und Speicherlimits für PHP zu erhöhen.

$ sudo cp /etc/php.ini /etc/php.ini.bak
$ sudo sed -i "s/memory_limit = 128M/memory_limit = 512M/" /etc/php.ini
$ sudo sed -i "s/post_max_size = 8M/post_max_size = 100M/" /etc/php.ini
$ sudo sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 100M/" /etc/php.ini

Standardmäßig gibt es 3 Dateien in /var/lib/php/ Verzeichnis, dessen Gruppeneigentümer auf apache gesetzt sind , aber wir verwenden Nginx. Also müssen wir dem nginx-Benutzer mit setfacl Lese- und Schreibberechtigungen für die 3 Verzeichnisse erteilen .

$ sudo setfacl -R -m u:nginx:rwx /var/lib/php/opcache/
$ sudo setfacl -R -m u:nginx:rwx /var/lib/php/session/
$ sudo setfacl -R -m u:nginx:rwx /var/lib/php/wsdlcache/

Aktivieren und starten Sie den php-fpm-Prozess.

$ sudo systemctl enable php-fpm
$ sudo systemctl start php-fpm

Nginx installieren

Fedora 32 wird standardmäßig mit der neuesten stabilen Version von Nginx ausgeliefert.

Nginx installieren.

$ sudo dnf install nginx -y

Überprüfen Sie, ob es richtig funktioniert.

$ nginx -v
nginx version: nginx/1.18.0

Nginx starten und aktivieren.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Öffnen Sie die IP-Adresse Ihres Servers in einem Browser, um die folgende Seite anzuzeigen. Das bedeutet, dass Nginx ordnungsgemäß funktioniert.

Installieren Sie MariaDB

MariaDB ist ein Drop-in-Ersatz für MySQL, was bedeutet, dass die Befehle zum Ausführen und Betreiben von MariaDB die gleichen sind wie die für MySQL.

Fedora 32 wird standardmäßig mit MariaDB 10.4 ausgeliefert, das wir verwenden werden.

MariaDB-Server installieren.

$ sudo dnf install mariadb-server

Überprüfen Sie, ob MariaDB korrekt installiert wurde.

$ mysql --version
mysql  Ver 15.1 Distrib 10.4.14-MariaDB, for Linux (x86_64) using  EditLine wrapper

Aktivieren und starten Sie den MariaDB-Dienst.

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

Führen Sie den folgenden Befehl aus, um eine Standardkonfiguration durchzuführen, z. B. das Vergeben eines Root-Passworts, das Entfernen anonymer Benutzer, das Verbieten der Root-Anmeldung aus der Ferne und das Löschen von Testtabellen.

$ sudo mysql_secure_installation

Durch Drücken der Eingabetaste wird die Standardoption ausgewählt (in diesem Fall die großgeschriebene Option Y).

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

Das ist es. Wenn Sie sich das nächste Mal bei MySQL anmelden möchten, verwenden Sie den folgenden Befehl

$ sudo mysql

Geben Sie Ihr Root-Passwort ein, wenn Sie dazu aufgefordert werden.

MariaDB konfigurieren

Geben Sie den folgenden Befehl ein, um die MySQL-Shell aufzurufen.

$ sudo mysql

Erstellen Sie einen MySQL-Benutzer für die Verwaltung der NextCloud-Datenbank.

mysql> CREATE USER 'nextuser'@'localhost' IDENTIFIED BY 'yourpassword';

Erstellen Sie die NextCloud-Datenbank.

mysql> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Gewähren Sie dem von uns erstellten Benutzer alle Berechtigungen für die Nextcloud-Datenbank.

mysql> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextuser'@'localhost';

Beenden Sie die MySQL-Shell.

mysql> exit

Nextcloud herunterladen

Zeit zum Herunterladen und Einrichten der Nextcloud-Ordner.

$ wget https://download.nextcloud.com/server/releases/latest.tar.bz2
$ tar -jxvf latest.tar.bz2
$ sudo mv nextcloud /var/www/html/

Als nächstes müssen wir einen Datenordner erstellen.

$ sudo mkdir /var/www/html/nextcloud/data
$ sudo chown -R nginx:nginx /var/www/html/nextcloud

SSL installieren

Wir werden SSL mit dem Dienst Let’s Encrypt installieren.

Installieren Sie dazu Certbot.

$ sudo dnf install certbot

Stoppen Sie Nginx, da es den Certbot-Prozess stören wird.

$ sudo systemctl stop nginx

Generieren Sie das Zertifikat. Wir erstellen auch ein DHParams-Zertifikat.

$ export LDOMAIN="nextcloud.example.com"
$ export LEMAIL="[email protected]"
$ sudo certbot certonly --standalone -d $LDOMAIN --preferred-challenges http --agree-tos -n -m $LEMAIL --keep-until-expiring 
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Wir müssen auch einen Cron-Job einrichten, um das SSL automatisch zu erneuern. Um den Crontab-Editor zu öffnen, führen Sie den folgenden Befehl aus

$ sudo EDITOR=nano crontab -e

Der obige Befehl öffnet Crontab mit dem Nano-Editor anstelle des standardmäßigen Vim-Editors.

Fügen Sie unten die folgende Zeile ein.

25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”

Der obige Cron-Job führt certbot jeden Tag um 2:25 Uhr aus. Sie können es beliebig ändern.

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

SELinux/Berechtigungen konfigurieren

SELinux muss konfiguriert werden, damit Nextcloud auf Fedora funktioniert. Geben Sie die folgenden Befehle ein, um grundlegende SELinux-Einstellungen vorzunehmen, die für alle funktionieren sollten.

Stellen Sie sicher, dass Sie die Dateipfade anpassen, wenn sie in Ihrem Fall anders sind.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'

$ sudo restorecon -Rv '/var/www/html/nextcloud/'

Um Updates über die Weboberfläche von Nextcloud zu aktivieren, führen Sie auch den folgenden Befehl aus.

$ sudo setsebool -P httpd_unified on

Nginx für Nextcloud konfigurieren

Als nächstes müssen wir Nginx für das Hosting von Nextcloud konfigurieren.

Für unsere Zwecke wird Nextcloud unter der Domain http://nextcloud.example.com gehostet ,

Richten Sie Verzeichnisse ein, in denen die Serverblöcke leben werden.

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

Öffnen Sie die /etc/nginx/nginx.conf Datei zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf	

Fügen Sie die folgenden Zeilen nach der Zeile include /etc/nginx/conf.d/*.conf ein

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Drücken Sie Strg + X um den Editor zu schließen und drücken Sie Y wenn Sie aufgefordert werden, die Datei zu speichern.

Erstellen Sie die Datei /etc/nginx/sites-available/nextcloud.conf mit dem Nano-Editor.

$ sudo nano /etc/nginx/sites-available/nextcloud.conf

Fügen Sie den folgenden Code in den Editor ein. Stellen Sie sicher, dass Sie die Beispieldomain vor dem Einfügen durch Ihre echte Domain ersetzen.

upstream php-handler {
    #server 127.0.0.1:9000;
    server unix:/run/php-fpm/www.sock;
}

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

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name nextcloud.example.com;
	
	access_log /var/log/nginx/nextcloud.access.log;
    error_log /var/log/nginx/nextcloud.error.log;

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    # NOTE: some settings below might be redundant
    ssl_certificate /etc/letsencrypt/live/nextcloud.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nextcloud.example.com/privkey.pem;
	ssl_protocols TLSv1.2 TLSv1.3;
	ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;
	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_prefer_server_ciphers off;
	ssl_dhparam /etc/ssl/certs/dhparam.pem;

    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this
    # topic first.
    #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
    #
    # WARNING: Only add the preload option once you read about
    # the consequences in https://hstspreload.org/. This option
    # will add the domain to a hardcoded list that is shipped
    # in all major browsers and getting removed from this list
    # could take several months.
    add_header Referrer-Policy "no-referrer" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Download-Options "noopen" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header X-Robots-Tag "none" always;
    add_header X-XSS-Protection "1; mode=block" always;
	
	# Remove X-Powered-By, which is an information leak
    fastcgi_hide_header X-Powered-By;

    # Path to the root of your installation
    root /var/www/html/nextcloud;

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

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

    # The following rule is only needed for the Social app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/webfinger /public.php?service=webfinger last;

    location = /.well-known/carddav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }

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

    # Enable gzip but do not remove ETag headers
    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

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

    location / {
        rewrite ^ /index.php;
    }

    location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
        deny all;
    }
    location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy)\.php(?:$|\/) {
        fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
        set $path_info $fastcgi_path_info;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param HTTPS on;
        # Avoid sending the security headers twice
        fastcgi_param modHeadersAvailable true;
        # Enable pretty urls
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

    location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
        try_files $uri/ =404;
        index index.php;
    }

    # Adding the cache control header for js, css and map files
    # Make sure it is BELOW the PHP block
    location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
        add_header Referrer-Policy "no-referrer" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Download-Options "noopen" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Permitted-Cross-Domain-Policies "none" always;
        add_header X-Robots-Tag "none" always;
        add_header X-XSS-Protection "1; mode=block" always;

        # Optional: Don't log access to assets
        access_log off;
    }

    location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ {
        try_files $uri /index.php$request_uri;
        # Optional: Don't log access to other assets
        access_log off;
    }
}

Drücken Sie Strg + X um den Editor zu schließen und drücken Sie Y wenn Sie aufgefordert werden, die Datei zu speichern.

Aktivieren Sie diese Konfigurationsdatei, indem Sie sie mit sites-enabled verknüpfen Verzeichnis.

$ sudo ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/

Testen Sie die Nginx-Konfiguration.

$ sudo nginx -t

Laden Sie den Nginx-Dienst neu, wenn alles in Ordnung ist.

$ sudo systemctl reload nginx

Nextcloud installieren

Es gibt zwei Möglichkeiten, Nextcloud zu konfigurieren – über die Befehlszeile oder über die grafische Oberfläche. Wir entscheiden uns für die Kommandozeilenmethode.

Geben Sie das Nextcloud-Verzeichnis ein.

$ cd /var/www/html/nextcloud

Führen Sie den folgenden Befehl aus, um Nextcloud zu installieren.

$ sudo -u nginx php occ  maintenance:install --database "mysql" --database-name "nextcloud"  --database-user "nextuser" --database-pass "yourpassword" --admin-user "admin" --admin-pass "password"

Dieser Befehl wird als nginx ausgeführt Benutzer, weil er Schreibrechte für den Nextcloud-Ordner hat.

Als nächstes müssen wir unsere Domain zur Liste der vertrauenswürdigen Domains hinzufügen. Öffnen Sie die /var/www/html/nextcloud/config/config.php Datei.

$ sudo nano config/config.php

Ändern Sie den Wert von trusted_domains Variable, indem Sie Ihre Server-IP-Adresse und Ihre Nextcloud-Domain nextcloud.example.com hinzufügen damit Sie von Ihrer Domain aus auf Ihre Installation zugreifen können.

'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => '167.172.35.56',
    2 => 'nextcloud.example.com',
  ),

Drücken Sie Strg + X um den Editor zu schließen und drücken Sie Y wenn Sie aufgefordert werden, die Datei zu speichern.

Starten Sie Ihre Nextcloud-Installation, indem Sie https://nextcloud.example.com öffnen in Ihrem Browser und Sie sehen den folgenden Bildschirm.

Geben Sie Ihre Anmeldedaten für die Verwaltung ein. Scrollen Sie durch die einführenden Nextcloud-Banner, legen Sie Ihren Wetterstandort und -status fest und wählen Sie ein Hintergrundbild aus. Sobald Sie fertig sind, sollten Sie mit einem ähnlichen Bildschirm begrüßt werden.

Schlussfolgerung

Damit ist unser Tutorial zur Installation von Nextcloud auf einem Fedora 32-Server abgeschlossen. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.


Fedora
  1. So installieren Sie Phorum mit Nginx auf Fedora 30

  2. So installieren und konfigurieren Sie Redis 6 auf Fedora 34

  3. So installieren und konfigurieren Sie Ansible auf Fedora 35

  4. So installieren und konfigurieren Sie Mariadb in Fedora 35

  5. So installieren Sie PHP 8 auf Fedora 35

So installieren Sie Nginx mit PHP und MariaDB (LEMP Stack) auf Fedora 31

So installieren und konfigurieren Sie den Caddy-Webserver mit PHP unter Fedora 34 / CentOS 8

So installieren und konfigurieren Sie Drupal auf Fedora 35/34

So installieren und konfigurieren Sie Git auf Fedora 35

So installieren und verwenden Sie Telnet auf Fedora 35

So installieren Sie Redis &Configure auf Fedora 35