So installieren Sie die ownCloud 9 mit Nginx unter OpenSUSE Leap 42.1

ownCloud ist eine OpenSource File-Sharing-Anwendung, die auf der Programmiersprache PHP basiert. OwnCloud bietet selbst gehostete Dateisynchronisierung und -freigabe mit einer netten Webschnittstelle und Synchronisierungsanwendungen für alle wichtigen mobilen und Desktop-Plattformen mit einer Funktionalität wie Dropbox, Mega, etc. ownCloud macht es einfach, auf Dateien, Kalender und Kontakte über Ihre Geräte hinweg zuzugreifen und zu synchronisieren.

In diesem Tutorial werde ich Sie bei der Erstellung Ihrer eigenen Sync- und Share-Server-Plattform mit ownCloud unterstützen. Wir werden ownCloud mit Nginx als Webserver, MariaDB (eine MySQL-Gabel) als Datenbank und php-fpm installieren, um die Anfrage nach php unter Linux OpenSUSE Leap 42.1 zu bearbeiten.

Voraussetzung

  • OpenSUSE Sprung 42.1
  • Root-Rechte
  • Verstehen des Zypper-Befehls

Schritt 1 – SuSEfirewall2 installieren

SuSEfirewall ist ein Firewall-Skript, das seine Konfiguration in der Datei „/etc/sysconfig/SuSEfirewall2“ speichert. Mit SuSEfirewall2 können Sie Ports öffnen, indem Sie die Datei „SuSEfirewall2“ bearbeiten.

Installieren Sie SuSEfirewall2 mit dem Befehl zypper:

zypper in SuSEfirewall2

Wenn die Firewall installiert ist, gehen Sie in das Verzeichnis sysconfig und bearbeiten Sie die Konfiguration „SuSEfirewall2“ mit vim:

cd /etc/sysconfig/
vim SuSEfirewall2

Gehen Sie zu Zeile 253 und fügen Sie die Ports aller Dienste hinzu, die Sie verwenden möchten. In diesem Schritt werde ich die Ports: ssh, http und https hinzufügen.

FW_SERVICES_EXT_TCP="22 80 443"

Speichern Sie die Datei und verlassen Sie den Editor.

Als nächstes starten Sie SuSEfirewall2 und aktivieren Sie es beim Booten:

systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2

Starten Sie nun den sshd-Dienst neu:

systemctl restart sshd

Wenn Sie den SSH-Serverport testen möchten, können Sie den Befehl telnet verwenden, um sich mit Port 22 zu verbinden:

telnet 192.168.1.101 22

Schritt 2 – Nginx installieren

Nginx ist ein leichter Webserver mit geringem Speicher- und CPU-Verbrauch. Wir werden nginx als Webserver für unsere eigene Cloud-Installation verwenden.

Installiere nginx mit dem Befehl zypper:

zypper in nginx

Starten Sie nginx und aktivieren Sie es beim Booten mit dem Befehl systemctl:

systemctl start nginx
systemctl enable nginx

Als nächstes fügen Sie eine index.html-Datei hinzu, um zu testen, ob nginx funktioniert.

echo "This is Nginx Page OpenSUSE Leap" > /srv/www/htdocs/index.html

Jetzt können Sie über Ihren Webbrowser auf den nginx-Webserver zugreifen oder ihn mit curl überprüfen:

curl -I 192.168.1.101
curl 192.168.1.101

Testen Sie nginx mit curl

Schritt 3 – MariaDB installieren und konfigurieren

MariaDB ist ein OpenSource RDBMS-basierter Fork der MySQL-Datenbank. In diesem Schritt werden wir MariaDB installieren und konfigurieren. Dann erstellen wir einen neuen Benutzer und eine neue Datenbank für die eigene Cloud-Installation.

Installieren Sie MariaDB mit dem Befehl zypper unten:

zypper in mariadb mariadb-client

Starten Sie nun MariaDB und fügen Sie es dem Systemstart hinzu:

systemctl start mysql
systemctl enable mysql

MariaDB wurde gestartet, jetzt können Sie das Root-Passwort für MariaDB mit dem folgenden Befehl konfigurieren:

mysql_secure_installation

Legen Sie das MariaDB/MySQL-Passwort fest:

Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: TYPE YOUR PASSWORD
Re-enter new password: REPEAT PASSWORD
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Das MariaDB-Root-Passwort wurde konfiguriert. Jetzt können wir uns in die MariaDB/MySQL-Shell einloggen und eine neue Datenbank und einen neuen Benutzer für die ownCloud erstellen.

Melden Sie sich in der MariaDB/MySQL-Shell an:

mysql -u root -p
TYPE your password

Erstellen Sie eine neue Datenbank „owncloud_db“ und einen neuen Benutzer „ownclouduser“ mit dem Passwort „ownclouduser@“:

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;
exit

Eigene Cloud-Datenbank und Benutzer erstellen

Die Datenbank für die eigene Cloud-Installation wurde erstellt.

Schritt 4 – Installation und Konfiguration von PHP-FPM

PHP-FPM (FastCGI Process Manager) ist eine moderne FastCGI-Alternative zur Verwaltung von Websites mit vielen Besuchern. PHP-FPM verfügt über ein fortschrittliches Prozessmanagement und ist einfach zu verwalten und zu konfigurieren.

In diesem Schritt werden wir php-fpm und einige PHP-Erweiterungen installieren, dann werden wir den nginx Webserver so konfigurieren, dass er php-Dateianfragen über php-fpm verarbeitet.

Installiere php-fpm mit diesem Befehl „zypper in“:

zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json

Wenn die Installation abgeschlossen ist, gehen Sie in das Verzeichnis php-fpm und kopieren Sie die Standardkonfigurationsdatei:

cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf

Bearbeiten Sie die Datei php-fpm.conf mit dem vim- oder nano-Editor:

vim php-fpm.conf

Entkommentieren Sie die Zeile 32, um das php-fpm-Protokoll zu aktivieren. Wenn später ein Fehler in Ihren PHP-Skripten auftritt, dann finden Sie die Protokolldatei im Verzeichnis „/var/log/“.

error_log = log/php-fpm.log

Ändern Sie die Zeile 148 – 149 in „nginx“ für den Unix-Benutzer/Gruppe der Prozesse.

user = nginx
group = nginx

Ändern Sie den Wert in Zeile 159, um php-fpm mit einer Socket-Datei auszuführen.

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

Entkommentieren und ändern Sie den Wert auf den Zeilen 170 – 172, um die Berechtigungen des Unix-Sockets einzustellen.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Speichern Sie die Datei und verlassen Sie den Editor.

Bearbeiten Sie anschließend die Datei php.ini im Verzeichnis cli:

cd /etc/php5/cli/
vim php.ini

Entkommentieren und ändern Sie den Wert in Zeile 758:

cgi.fix_pathinfo=0

Speichern und beenden.

Kopieren Sie die Datei php.ini in das Verzeichnis conf.d:

cp php.ini /etc/php5/conf.d/

Konfigurieren Sie nun den php session handleer path. In diesem Tutorial führen wir php-fpm als nginx-Benutzer aus, also stellen Sie sicher, dass der nginx-Benutzer in das Session-Verzeichnis schreiben kann. Sie können die Konfiguration des Sitzungspfades in der Datei php.ini auf Zeile 1390 sehen.

session.save_path = "/var/lib/php5"

Ändere den Besitzer des Session-Verzeichnisses „/var/lib/php5/“, mache den nginx-Benutzer zum Besitzer des Verzeichnisses:

chown -R nginx:nginx /var/lib/php5/

Als nächstes konfigurieren Sie php-fpm so, dass es mit dem nginx Webserver funktioniert. Gehen Sie in das nginx-Konfigurationsverzeichnis und sichern Sie die Datei nginx.conf, bevor Sie die Konfiguration bearbeiten.

cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf

Fügen Sie die folgende neue Konfiguration in Zeile 65 hinzu – diese Konfiguration wird alle Anfragen nach PHP-Dateien bearbeiten.

       location ~ \.php$ {
                root /srv/www/htdocs;
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }

Speichern und beenden Sie die Konfiguration und testen Sie dann die nginx-Konfiguration, um sicherzustellen, dass kein Fehler in der Konfiguration vorliegt:

nginx -t

Wenn kein Fehler vorliegt, sehen Sie unten die Ergebnisse:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie nun php-fpm und fügen Sie es beim Booten zu stat hinzu, und starten Sie dann den nginx-Dienst neu:

systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx

Nginx und php-fpm konfiguriert sind, können Sie die php-Datei testen, indem Sie eine neue phpinfo()-Datei im Web-Stammverzeichnis erstellen:

cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php

Öffnen Sie Ihren Browser und besuchen Sie die Server-IP:

http://192.168.1.101/info.php

Die phpinfo() Ausgabe

oder du kannst Curl verwenden:

curl -I 192.168.1.101/info.php

Testen Sie PHP mit curl.

Schritt 5 – SSL-Zertifikat generieren

Der Betrieb der ownCloud über eine sichere https-Verbindung ist sehr wichtig, um Ihre Dateien sicher und privat zu halten. Wenn Sie die ownCloud in Ihrem eigenen Unternehmen betreiben, können Sie das SSL-Zertifikat kaufen, oder wenn Sie ein kostenloses SSL-Zertifikat wünschen, können Sie Let’s-encrypt verwenden. Hier werde ich ein sogenanntes „selbstsigniertes“ SSL-Zertifikat erstellen, die Verschlüsselung eines selbstsignierten Zertifikats ist nicht niedriger als bei einem offiziellen Zertifikat, aber Sie müssen eine Sicherheitswarnung in Ihrem Browser akzeptieren, wenn Sie den Service das erste Mal nutzen.

Erstellen Sie ein neues „ssl“-Verzeichnis und generieren Sie das Zertifikat mit dem Befehl openssl:

cd /etc/nginx/
mkdir ssl; cd ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/example-owncloud.crt -keyout /etc/nginx/ssl/example-owncloud.key

Als nächstes ändern Sie die Berechtigungen des Schlüssels:

chmod 600 example-owncloud.key

Schritt 6 – Eigene Cloud installieren und konfigurieren

In diesem Schritt installieren wir die ownCloud und konfigurieren einen neuen virtuellen nginx-Host für die ownCloud-Domain. Wir werden owncloud mit dem Domainnamen „example-owncloud.co“ und der Web-Root-Datei im Verzeichnis „/srv/wwww/owncloud/“ installieren.

 

Eigene Cloud herunterladen

Gehen Sie in das Verzeichnis „/srv/wwww/“ und laden Sie die eigene Cloud-Source herunter und entpacken Sie sie:

cd /srv/www/
wget https://download.owncloud.org/community/owncloud-9.0.2.zip
unzip owncloud-9.0.2.zip

Erstellen Sie nun ein neues Datenverzeichnis unter dem eigenen Cloud-Verzeichnis, um alle Benutzerdaten zu speichern. Ändern Sie den Besitzer des eigenen Cloud-Verzeichnisses auf den nginx-Benutzer:

mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/

 

Konfigurieren eines Nginx Virtual Hosts für die eigene Cloud

Gehen Sie in das Verzeichnis nginx und erstellen Sie ein neues Verzeichnis für die Konfiguration der virtuellen Hostdatei:

cd /etc/nginx/
mkdir vhosts.d/

Gehen Sie in das Verzeichnis vhosts.d und erstellen Sie eine neue virtuelle Hostdatei für die owncloud „example-owncloud.conf“.

cd vhosts.d/
vim example-owncloud.conf

fügen Sie die folgende Konfiguration ein:

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

server {
listen 443 ssl;
server_name example-owncloud.co;

ssl_certificate /etc/nginx/ssl/example-owncloud.crt;
ssl_certificate_key /etc/nginx/ssl/example-owncloud.key;

# Path to the root of your installation
root /srv/www/owncloud/;
# set max upload size
client_max_body_size 10G;
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;

rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;

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

location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){
deny all;
}

location / {
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

try_files $uri $uri/ =404;
}

location ~ \.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_pass php-handler;
fastcgi_intercept_errors on;
}

# Adding the cache control header for js and css files
# Make sure it is BELOW the location ~ \.php(?:$|/) { block
location ~* \.(?:css|js)$ {
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
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;
# Optional: Don't log access to assets
access_log off;
}

# Optional: Don't log access to other assets
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
access_log off;
}
}

Speichern Sie die Datei und verlassen Sie den Editor.

Testen Sie die nginx-Konfiguration und vergessen Sie nicht, alle Dienste neu zu starten:

nginx -t
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql

 

Prüfung

Besuchen Sie die eigene Cloud-Domain:

example-owncloud.co

Sie werden zur https-Verbindung weitergeleitet.

Geben Sie anschließend Ihren Admin-Benutzer und Ihr Passwort, den Datenbanknamen, den Benutzer und das Passwort ein und klicken Sie auf „Setup beenden“.

Konfiguration der OwnCloud-Datenbank.

Warten Sie eine Sekunde und Sie sehen den eigenen Cloud-Datei-Manager:

Eigene Cloud

Die Installation der eigenen Cloud mit nginx und MariaDB auf OpenSUSE Leap 42.1 ist abgeschlossen.

Das könnte Dich auch interessieren …