So installieren Sie die ownCloud 9.1 mit Nginx und MariaDB auf CentOS 7

OwnCloud ist eine Serversoftware zur Datensynchronisation und Dateifreigabe mit einem einfach zu bedienenden webbasierten Frontend, das unter einer Open-Source-Lizenz verfügbar ist. OwnCloud kann auf einem Linux- oder Windows-Webserver installiert werden, ist einfach zu konfigurieren und verfügt über eine umfassende Online-Dokumentation. Der native Client ist für Windows, MacOS und Linux (Desktop Application) verfügbar. Es gibt auch eine mobile App für Android und iOS.

In diesem Tutorial führe ich Sie durch die Installation und Konfiguration von ownCloud 9.1 auf einem CentOS 7-Server. Ich zeige Ihnen, wie Sie die ownCloud mit Nginx und PHP 7 (als FPM) und MariaDB als Datenbanksystem konfigurieren.

Voraussetzungen

  • CentOS 7 Server
  • Wurzel Privleges

Schritt 1 – Nginx und PHP7-FPM installieren

Bevor wir mit der Installation von Nginx und php7-fpm beginnen, müssen wir das EPEL-Repository hinzufügen, das zusätzliche Software enthält, die nicht aus dem CentOS-Basis-Repository verfügbar ist. Installieren Sie EPEL mit diesem yum-Befehl.

yum -y install epel-release

Installieren Sie nun Nginx aus dem Epel-Repository.

yum -y install nginx

Jetzt müssen wir ein weiteres Repository für php7-fpm hinzufügen. Es gibt mehrere Repositories für PHP 7 im Netz, ich werde das webtatische Repository hier verwenden.

Fügen Sie das webtatische Repository hinzu:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Als nächstes installieren Sie PHP7-FPM mit einigen zusätzlichen Paketen für die eigene Cloud-Installation.

yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json

Überprüfen Sie die PHP-Version vom Serverterminal aus, um sicherzustellen, dass die Installation erfolgreich war.

php -v

Überprüfen Sie die PHP-Version

Schritt 2 – PHP7-FPM konfigurieren

In diesem Schritt werden wir php-fpm so konfigurieren, dass es mit nginx läuft. Php7-fpm läuft unter dem Benutzer nginx und hört auf Port 9000.

Bearbeiten Sie die Standardkonfiguration von php7-fpm mit vim.

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

Ändern Sie in Zeile 8 und 10 Benutzer und Gruppe auf‘nginx‚.

user = nginx
group = nginx

Stellen Sie in Zeile 22 sicher, dass php-fpm unter dem Serverport 9000 läuft.

listen = 127.0.0.1:9000

Entkommentieren Sie die Zeilen 366-370 für die php-fpm Systemumgebungsvariablen.

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

Speichern Sie die Datei und verlassen Sie den Editor.

Erstellen Sie anschließend ein neues Verzeichnis für den Sitzungspfad im Verzeichnis’/var/lib/‘ und wechseln Sie den Besitzer zum Benutzer’nginx‘.

mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/

Starten Sie php-fpm und nginx, dann fügen Sie es hinzu, um beim Booten zu starten.

sudo systemctl start php-fpm
sudo systemctl start nginx

sudo systemctl enable php-fpm
sudo systemctl enable nginx

PHP-FPM auf CentOS konfigurieren

Die PHP7-FPM-Konfiguration ist abgeschlossen.

Schritt 3 – MariaDB installieren und konfigurieren

OwnCloud unterstützt PostgreSQL und MySQL Datenbanken, in diesem Tutorial werden wir MariaDB für die eigene Cloud-Datenbank verwenden. Installieren Sie das mariadb-Serverpaket aus dem CentOS-Repository mit dem Befehl yum.

yum -y install mariadb mariadb-server

Starten Sie den MariaDB-Dienst und konfigurieren Sie das MariaDB-Root-Passwort.

systemctl start mariadb
mysql_secure_installation

Geben Sie bei Bedarf Ihr Root-Passwort ein.

Set root password? [Y/n] Y
New password:
Re-enter new password:

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Das MariaDB Root-Passwort wurde festgelegt, jetzt können wir uns in die MySQL-Shell einloggen, um eine neue Datenbank und einen neuen Benutzer für ownCloud zu erstellen.

Wir werden eine neue Datenbank ‚owncloud_db‚ unter dem Benutzer ‚ownclouduser‚ mit dem Passwort ‚ownclouduser@‚ erstellen. Bitte wählen Sie für Ihre Installation ein anderes und sicheres Passwort!

mysql -u root -p
Type Password

Geben Sie die MySQL-Abfrage unten ein, um eine neue Datenbank und einen neuen Benutzer zu erstellen.

create database owncloud_db;
create user ownclouduser@localhost identified by 'ownclouduser@';
grant all privileges on owncloud_db.* to ownclouduser@localhost identified by 'ownclouduser@';
flush privileges;

Erstellen einer neuen MySQL-Datenbank für die ownCloud

Die Datenbank’owncloud_db‘ mit dem Benutzer’ownclouduser‘ wurde angelegt.

Schritt 4 – Erstellen eines selbstsignierten SSL-Zertifikats

In diesem Tutorial werden wir die owncloud unter einer https-Verbindung für den Client betreiben. Du kannst einen kostenlosen SSL-Zertifikat verwenden, wie z.B. Let’s encrypt. In diesem Tutorial werde ich meine eigene SSL-Zertifikatsdatei mit dem Befehl OpenSSL erstellen.

Erstellen Sie ein neues Verzeichnis für die SSL-Datei.

mkdir -p /etc/nginx/cert/

Erzeugen Sie dann eine neue SSL-Zertifikatsdatei mit dem Befehl OpenSSL unten.

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/owncloud.crt -keyout /etc/nginx/cert/owncloud.key

Geben Sie die Details für das SSL-Zertifikat ein, wie vom Befehl OpenSSL gefordert. Ändern Sie dann die Berechtigung aller Zertifikatsdateien mit chmod auf 600.

chmod 600 /etc/nginx/cert/*

Erstellen eines selbstsignierten SSL-Zertifikats

Schritt 5 – OwnCloud herunterladen

Wir werden ownCloud mit dem wget Befehl herunterladen, also müssen wir zuerst das wget Paket installieren. Zusätzlich benötigen wir das Paket unzip.

yum -y install wget unzip

Gehen Sie in das Verzeichnis tmp und laden Sie die neueste stabile ownCloud 9.1 von der ownCloud-Seite mit wget herunter.

cd /tmp
wget https://download.owncloud.org/community/owncloud-9.1.2.zip

Entpacken Sie die eigene Cloud Zip-Datei und verschieben Sie sie in das Verzeichnis’/usr/share/nginx/html/‘.

unzip owncloud-9.1.2.zip
mv owncloud/ /usr/share/nginx/html/

Als nächstes gehen Sie in das nginx Web-Root-Verzeichnis und erstellen ein neues’data‘-Verzeichnis für die owncloud.

cd /usr/share/nginx/html/
mkdir -p owncloud/data/

Ändern Sie den Besitzer des Verzeichnisses „owncloud“ auf den Benutzer und die Gruppe „nginx“.

chown nginx:nginx -R owncloud/

Schritt 6 – Konfigurieren des OwnCloud Virtual Hosts in Nginx

In Schritt 5 haben wir den eigenen Cloud-Quellcode heruntergeladen und für den Betrieb unter dem Nginx-Webserver konfiguriert. Aber wir müssen noch den virtuellen Host für die ownCloud konfigurieren.

Erstellen Sie eine neue Konfigurationsdatei für den virtuellen Host ‚owncloud.conf‘ im Verzeichnis ‚conf.d‘.

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

Fügen Sie die eigene Konfiguration des virtuellen Cloud-Hosts unten ein.

upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name data.owncloud.co;
# enforce https
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl;
server_name data.owncloud.co;

ssl_certificate /etc/nginx/cert/owncloud.crt;
ssl_certificate_key /etc/nginx/cert/owncloud.key;

# 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=15552000; includeSubDomains";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
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;

# Path to the root of your installation
root /usr/share/nginx/html/owncloud/;

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;

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

location /.well-known/acme-challenge { }

# 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 / {
rewrite ^ /index.php$uri;
}

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

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

location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri $uri/ =404;
index index.php;
}

# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~* \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
# 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=15552000; includeSubDomains";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
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;
# Optional: Don't log access to assets
access_log 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 Sie die Datei und verlassen Sie den Editor.

Testen Sie abschließend die Nginx-Konfiguration und stellen Sie sicher, dass kein Fehler vorliegt, und starten Sie dann den Dienst neu.

nginx -t
systemctl restart nginx

Testen der ownClod Nginx Konfiguration

Schritt 7 – SELinux und FirewallD konfigurieren

In diesem Tutorial werden wir SELinux im Erzwingungsmodus eingeschaltet lassen, daher benötigen wir das Paket der SELinux-Verwaltungstools, um es zu konfigurieren.

Installieren Sie SELinux-Verwaltungstools mit diesem yum-Befehl.

yum -y install policycoreutils-python

Führen Sie dann die folgenden Befehle als root aus, damit die ownCloud unter SELinux laufen kann. Denken Sie daran, das ownCloud-Verzeichnis zu ändern, falls Sie ein anderes Verzeichnis für die ownCloud-Installation verwenden.

semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/assets(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/.user.ini'

restorecon -Rv ‚/usr/share/nginx/html/owncloud/‘

Als nächstes aktivieren Sie den Firewalldienst und öffnen den HTTP- und HTTPS-Port für die Owncloud.

Starten Sie die Firewall und konfigurieren Sie sie so, dass sie beim Booten startet.

systemctl start firewalld
systemctl enable firewalld

Öffnen Sie die HTTP- und HTTPS-Ports mit dem Befehl firewall-cmd und laden Sie die Firewall neu.

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

Öffnen Sie den HTTP- und HTTPS-Port in der Firewall.

Der Teil der Serverkonfiguration ist abgeschlossen.

Schritt 8 – Der OwnCloud Installationsassistent

Öffnen Sie nun Ihren Webbrowser und geben Sie den eigenen Cloud-Domainnamen in das URL-Feld ein, meiner lautet: data.owncloud.co, und Sie werden auf die sichere HTTPS-Verbindung umgeleitet.

Geben Sie Ihren neuen Admin-Benutzernamen und Ihr Passwort ein, geben Sie dann die Datenbank-Anmeldeinformationen ein und klicken Sie auf‘Setup beenden‚.

OwnCloud Installationsassistent

Admin Dashboard Datei-Manager.

ownCloud Installationsassistent

Benutzereinstellungen.

Admin Dashboard und Dateimanager

Admin-Einstellungen.

Eigener Cloud-Administrator

Owncloud wurde erfolgreich mit Nginx, PHP7-FPM und MariaDB auf einem CentOS 7 Server installiert.

Referenz

Das könnte Dich auch interessieren …