GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren Sie Nextcloud mit Nginx und PHP 7.3 auf CentOS 8

Nextcloud ist eine kostenlose (Open Source) Dropbox-ähnliche Software, eine Abspaltung des ownCloud-Projekts. Nextcloud ist in PHP und JavaScript geschrieben und unterstützt viele Datenbanksysteme wie MySQL/MariaDB, PostgreSQL, Oracle-Datenbank und SQLite.

Um Ihre Dateien zwischen Desktop und Server synchron zu halten, bietet Nextcloud Anwendungen für Windows-, Linux- und Mac-Desktops sowie eine mobile Anwendung für Android und iOS.

In diesem Tutorial zeigen wir Ihnen, wie Sie Nextcloud 17 mit dem Nginx-Webserver, PHP 7.3 und der MariaDB-Datenbank auf einem CentOS 8-Server installieren. Wir installieren Nextcloud und sichern es mit einem kostenlosen SSL-Zertifikat von Let's Encrypt.

Voraussetzung

Für diese Anleitung installieren wir Nextcloud auf dem CentOS 8-Server mit 2 GB RAM, 25 GB freiem Speicherplatz und 2 CPUs.

Was wir tun werden:

  • Nginx-Webserver installieren
  • Installieren Sie PHP-FPM 7.3
  • Konfigurieren Sie PHP-FPM 7.3
  • Installieren und konfigurieren Sie die MariaDB-Datenbank
  • SSL Letsencrypt generieren
  • Nextcloud 17 herunterladen
  • Nginx Virtualhost für Nextcloud einrichten
  • SELinux für Nextcloud einrichten
  • Nextcloud-Nachinstallation

Schritt 1 – Nginx installieren

Zuerst installieren wir den Nginx-Webserver auf dem CentOS 8-Server und öffnen den HTTP- und HTTPS-Port auf der Firewalld.

Installieren Sie Nginx aus dem AppStream-Repository mit dem folgenden dnf-Befehl.

sudo dnf install nginx

Starten Sie nach Abschluss der Installation den nginx-Dienst und fügen Sie ihn zum Systemstart hinzu.

systemctl start nginx
systemctl enable nginx

Überprüfen Sie nun den Status des nginx-Dienstes mit dem folgenden Befehl.

systemctl status nginx

Sie erhalten, dass der nginx-Dienst auf dem CentOS 8-Server ausgeführt wird.

Als Nächstes fügen wir die HTTP- und HTTPS-Dienste zur Firewall hinzu.

Fügen Sie die HTTP- und HTTPS-Dienste mithilfe des Befehls firewall-cmd unten zu firewalld hinzu.

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

Laden Sie danach die Firewalld-Dienste neu.

firewall-cmd --reload

Als Ergebnis haben Sie den Nginx-Webserver erfolgreich installiert und die HTTP- und HTTPS-Ports auf dem CentOS 8-Server geöffnet.

Schritt 2 – PHP-FPM installieren

Gemäß den Nextcloud-Systemanforderungen wird empfohlen, PHP 7.2 oder PHP 7.3 für die Installation zu verwenden.

Für diese Anleitung verwenden wir PHP 7.3, das aus dem REMI-Repository installiert werden kann.

Bevor wir fortfahren, aktivieren wir das „PowerTools“-Repository und fügen die EPEL- und REMI-Repositorys für den CentOS 8-Server hinzu.

Führen Sie den folgenden dnf-Befehl aus.

sudo dnf config-manager --set-enabled PowerTools
sudo dnf install epel-release
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Überprüfen Sie nun alle verfügbaren Repositorys auf dem System.

dnf repolist

Und Sie erhalten das Ergebnis wie folgt.

Sie haben das „PowerTools“-Repository aktiviert und die EPEL- und REMI-Repositorys für CentOS 8 hinzugefügt.

Als Nächstes aktivieren wir das PHP 7.3 REMI-Repository.

Überprüfen Sie alle verfügbaren Module für PHP-Pakete.

dnf module list php

Aktivieren Sie nun das Modul des PHP 7.3 REMI-Repositorys.

dnf module enable php:remi-7.3

Installieren Sie danach die PHP- und PHP-FPM 7.3-Pakete für Nextcloud mit dem folgenden dnf-Befehl.

sudo dnf install php-fpm php-cli php-devel php-gd php-mysqlnd php-pear php-xml php-mbstring php-pdo php-json php-pecl-apcu php-pecl-apcu-devel php-pecl-imagick-devel php-intl php-opcache php-zip

Und Sie haben PHP und PHP-FPM 7.3 auf dem CentOS 8-System installiert.

Schritt 3 – PHP-FPM 7.3 konfigurieren

In diesem Schritt richten wir das PHP-FPM für die Nextcloud-Bereitstellung ein.

Bearbeiten Sie die 'php.ini'-Konfiguration mit dem folgenden Befehl.

vim /etc/php.ini

Entkommentieren Sie die Konfiguration und ändern Sie sie wie unten beschrieben.

memory_limit = 512M
date.timezone = Asia/Jakarta
cgi.fixpathinfo = 0

Speichern und schließen.

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

vim /etc/php.d/10-opcache.ini

Ändern Sie die Konfiguration wie folgt.

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

Speichern und schließen.

Als nächstes bearbeiten Sie die PHP-FPM-Konfiguration ‚/etc/php-fpm.d/www.conf‘.

vim /etc/php-fpm.d/www.conf

Ändern Sie den „Benutzer“ und die „Gruppe“ in „nginx“.

user = nginx
group = nginx

Ändern Sie die „Listen“-Konfiguration wie unten beschrieben in die SOCKET-Datei.

listen = /run/php-fpm/www.sock

Entkommentieren Sie die PHP-Umgebungsvariable unten.

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 und schließen.

Erstellen Sie nun ein neues Verzeichnis für die PHP-Sitzung und den Opcache und ändern Sie dann den Eigentümer dieser Verzeichnisse in „nginx“-Benutzer und -Gruppe.

mkdir -p /var/lib/php/{session,opcache}
chown -R nginx:nginx /var/lib/php/{session,opcache}

Und Sie haben die PHP-FPM-Konfiguration für die Nextcloud-Installation abgeschlossen.

Starten Sie den PHP-FPM-Dienst und fügen Sie ihn zum Systemstart hinzu.

systemctl enable php-fpm
systemctl start php-fpm

Überprüfen Sie nun die PHP-FPM-Sock-Datei und den Dienststatus.

netstat -pl | grep php
systemctl status php-fpm

Und Sie erhalten das Ergebnis wie folgt.

Als Ergebnis läuft das PHP-FPM unter der Sock-Datei '/run/php-fpm/www.sock'.

Schritt 4 – MariaDB installieren und konfigurieren

In diesem Schritt installieren wir den MariaDB-Datenbankserver, richten die Root-Passwort-Authentifizierung ein und erstellen eine neue Datenbank und einen neuen Benutzer für Nextcloud.

Installieren Sie die MariaDB-Datenbank mit dem folgenden dnf-Befehl.

sudo dnf install mariadb mariadb-server

Starten Sie nach Abschluss der Installation den MariaDB-Dienst und fügen Sie ihn zum Systemstart hinzu.

systemctl start mariadb
systemctl enable mariadb

Und der MariaDB-Dienst ist in Betrieb.

Als Nächstes richten wir die Root-Passwort-Authentifizierung mit dem Befehl „mysql_secure_installation“ unten ein.

mysql_secure_installation

Geben Sie Ihr Root-Passwort ein und geben Sie 'Y' für die restliche Konfiguration ein.

Set a root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Und das MariaDB-Root-Passwort wurde konfiguriert.

Melden Sie sich nun mit dem folgenden mysql-Befehl bei der MySQL-Shell an.

mysql -u root -p
TYPE YOUR ROOT PASSWORD

Erstellen Sie nun eine neue Datenbank „nextcloud_db“ und erstellen Sie einen neuen Benutzer „nextclouduser“ mit dem Passwort „nextcloudpassdb“, indem Sie die folgenden Abfragen verwenden.

create database nextcloud_db;
create user [email protected] identified by 'nextcloudpassdb';
grant all privileges on nextcloud_db.* to [email protected] identified by 'nextcloudpassdb';
flush privileges;

Und Sie haben die Datenbank und den Benutzer für die Nextcloud-Installation erstellt.

Schritt 4 - Generieren Sie SSL Letsencrypt

In diesem Schritt generieren wir die SSL-Letsencrypt mit dem „certbot“. Die SSL-Zertifikate werden verwendet, um den Zugriff auf Nextcloud zu sichern.

Installieren Sie certbot aus dem EPEL-Repository mit dem folgenden dnf-Befehl.

sudo dnf install certbot

Generieren Sie nach Abschluss der Installation die SSL-Zertifikate für den Nextcloud-Domainnamen mit dem folgenden Befehl und stellen Sie sicher, dass Sie den Domainnamen und die E-Mail-Adresse durch Ihre eigenen ersetzen.

certbot certonly --webroot --webroot-path /usr/share/nginx/html --agree-tos -m [email protected] -d cloud.hakase-labs.io

Sobald dies abgeschlossen ist, befinden sich alle generierten SSL-Zertifikate im Verzeichnis „/etc/letsencrypt/live/cloud.hakase-labs.io“.

Überprüfen Sie es mit dem folgenden Befehl.

ls -lah /etc/letsencrypt/live/cloud.hakase-labs.io/

Und Sie haben das SSL-letsencrypt mit dem certbot-Tool generiert.

Schritt 5 – Nextcloud herunterladen und installieren

In diesem Schritt werden wir die neueste Version von Nextcloud 17 herunterladen.

Installieren Sie vor dem Herunterladen des Nextcloud-Quellcodes das ZIP-Paket auf dem System.

sudo dnf install unzip

Gehen Sie nun in das Verzeichnis ‚/var/www/‘ und laden Sie den Nextcloud-Quellcode mit dem wget-Befehl wie unten beschrieben herunter.

cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-17.0.2.zip

Extrahieren Sie den Nextcloud-Quellcode mit dem folgenden Befehl.

unzip nextcloud-17.0.2.zip

Und Sie erhalten ein neues Verzeichnis namens ‚nextcloud‘.

Erstellen Sie nun ein neues ‚data‘-Verzeichnis für Nextcloud. Das Verzeichnis „data“ wird zum Speichern von Benutzerdaten verwendet.

mkdir -p /var/www/nextcloud/data/

Ändern Sie danach den Eigentümer des Verzeichnisses „nextcloud“ in den Benutzer und die Gruppe „nginx“.

sudo chown -R nginx:nginx /var/www/nextcloud

Und Sie haben die neueste Nextcloud 17 in das Verzeichnis „/var/www“ heruntergeladen.

Schritt 6 – Richten Sie den virtuellen Nginx-Host für Nextcloud ein

Nach dem Herunterladen des Nextcloud-Quellcodes richten wir den virtuellen Nginx-Host für Nextcloud ein.

Gehen Sie in das Verzeichnis ‚/etc/nginx/conf.d‘ und erstellen Sie eine neue Konfiguration ‚nextcloud.conf‘.

cd /etc/nginx/conf.d/
vim nextcloud.conf

Ändern Sie nun den Domänennamen und den Pfad des SSL-Zertifikats mit Ihrem eigenen und fügen Sie die folgende Konfiguration darin ein.

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

server {
listen 80;
listen [::]:80;
server_name cloud.hakase-labs.io;
# enforce https
return 301 https://$server_name:443$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cloud.hakase-labs.io;

# 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/ssl/nginx/fullchain.pem;
ssl_certificate_key /etc/ssl/nginx/privkey.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/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 512M;
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 built 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\/.+)\.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 headers to serve security related headers (It is intended to
# have those duplicated to the ones above)
# 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;

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

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

Speichern und schließen.

Testen Sie danach die Nginx-Konfiguration und starten Sie den Nginx-Dienst neu. Und stellen Sie sicher, dass kein Fehler vorliegt.

nginx -t
systemctl restart nginx

Jetzt öffnet der Nginx-Dienst einen neuen HTTPS-Port auf dem System, überprüfen Sie ihn mit dem folgenden Befehl.

netstat -plntu

Und Sie erhalten das Ergebnis wie folgt.

Als Ergebnis haben Sie die Konfiguration des virtuellen Nginx-Hosts für Nextcloud hinzugefügt und das sichere HTTPS darüber aktiviert.

Schritt 7 – SELinux für Nextcloud einrichten

Für dieses Tutorial verwenden wir SELinux im „enforcing“-Modus. Und wir werden SELinux für die Nextcloud-Installation einrichten.

Installieren Sie das SELinux-Verwaltungstool mit dem folgenden dnf-Befehl.

sudo dnf install policycoreutils-python-utils

Führen Sie nun folgenden Befehl als root auf Ihrem Server aus.

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/assets(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.user.ini'

restorecon -Rv '/var/www/nextcloud/'

Und die SELinux-Konfiguration für Nextcloud ist abgeschlossen.

Schritt 8 - Nextcloud-Installationsassistent

Öffnen Sie nun Ihren Webbrowser und geben Sie Ihren Nextcloud-Domainnamen in die Adressleiste ein.

https://cloud.hakase-labs.io/

Jetzt erhalten Sie die Nextcloud-Installationsseite wie unten gezeigt.

Geben Sie Ihren Admin-Benutzer und Ihr Passwort ein, wählen Sie dann „MySQL/MariaDB“ als Ihre Datenbank und geben Sie Details über die Datenbank ein, die Sie oben erstellt haben.

Klicken Sie nun auf die Schaltfläche „Setup beenden“ und die Installation beginnt.

Sobald die Installation abgeschlossen ist, erhalten Sie das Nextcloud-Dashboard wie unten gezeigt.

Als Ergebnis haben Sie erfolgreich das neueste Nextcloud 17 mit dem Nginx-Webserver, PHP-FPM 7.3 und der MariaDB-Datenbank auf dem CentOS 8-Server installiert.


Cent OS
  1. So installieren und konfigurieren Sie Nginx unter CentOS 7

  2. So installieren Sie WordPress mit Nginx unter CentOS 7

  3. So installieren Sie phpMyAdmin mit Nginx unter CentOS 7

  4. So installieren und konfigurieren Sie OpenLiteSpeed ​​mit PHP 7.4 unter CentOS 8

  5. So installieren Sie Phorum mit Nginx unter CentOS 7

So installieren Sie Shopware mit NGINX und Lets Encrypt unter CentOS 7

So installieren Sie Pico CMS mit Nginx und Lets Encrypt unter CentOS 7

So installieren Sie DokuWiki mit Nginx und Lets encrypt SSL auf CentOS 8

So installieren Sie Laravel PHP Framework mit Nginx unter CentOS 8

So installieren Sie OwnCloud 8 mit Nginx und PHP-FPM auf CentOS 6

So installieren Sie Laravel PHP Framework mit Nginx unter CentOS 8