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
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 „[email protected]“:
create database owncloud_db; create user [email protected] identified by '[email protected]'; grant all privileges on owncloud_db.* to [email protected] identified by '[email protected]'; flush privileges; exit
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
oder du kannst Curl verwenden:
curl -I 192.168.1.101/info.php
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“.
Warten Sie eine Sekunde und Sie sehen den eigenen Cloud-Datei-Manager:
Die Installation der eigenen Cloud mit nginx und MariaDB auf OpenSUSE Leap 42.1 ist abgeschlossen.