ownCloud ist eine OpenSource File-Sharing-Anwendung, die auf der Programmiersprache PHP basiert. OwnCloud bietet selbst gehostete Dateisynchronisierung und -freigabe mit einer netten Weboberfläche und Synchronisierungs-Apps für alle wichtigen Mobil- und Desktop-Plattformen mit Funktionen wie Dropbox, Mega usw. ownCloud macht es einfach, auf Dateien, Kalender und Kontakte zuzugreifen und sie überall zu synchronisieren Geräte.
In diesem Tutorial werde ich Sie anleiten, Ihre eigene Sync-and-Share-Serverplattform mit ownCloud zu erstellen. Wir werden ownCloud mit Nginx als Webserver, MariaDB (ein MySQL-Fork) als Datenbank und php-fpm installieren, um die Anfrage für php unter Linux OpenSUSE Leap 42.1 zu verarbeiten.
Voraussetzung
- OpenSUSE Leap 42.1
- Root-Rechte
- Zypper-Befehl verstehen
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 zypper-Befehl:
zypper in SuSEfirewall2
Wenn die Firewall installiert ist, gehen Sie in das sysconfig-Verzeichnis und bearbeiten Sie die „SuSEfirewall2“-Konfiguration 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 füge ich die Ports ssh, http und https hinzu.
FW_SERVICES_EXT_TCP="22 80 443"
Speichern Sie die Datei und verlassen Sie den Editor.
Starten Sie als nächstes SuSEfirewall2 und aktivieren Sie es, um beim Booten ausgeführt zu werden:
systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2
Starten Sie jetzt den sshd-Dienst neu:
systemctl restart sshd
Wenn Sie den SSH-Serverport testen möchten, können Sie den Telnet-Befehl verwenden, um eine Verbindung zu Port 22 herzustellen:
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 ownCloud-Installation verwenden.
Installieren Sie nginx mit dem zypper-Befehl:
zypper in nginx
Starten Sie nginx und aktivieren Sie es beim Booten mit dem Befehl systemctl:
systemctl start nginx
systemctl enable nginx
Fügen Sie als Nächstes 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 ownCloud-Installation.
Installieren Sie MariaDB mit dem folgenden Zypper-Befehl:
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 bei der MariaDB/MySQL-Shell anmelden und eine neue Datenbank und einen neuen Benutzer für ownCloud erstellen.
Melden Sie sich bei 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 ownCloud-Installation wurde erstellt.
Schritt 4 – PHP-FPM installieren und konfigurieren
PHP-FPM (FastCGI Process Manager) ist eine moderne FastCGI-Alternative, um Websites mit vielen Besuchern zu verwalten. PHP-FPM verfügt über ein fortschrittliches Prozessmanagement und ist einfach zu verwalten und zu konfigurieren.
In diesem Schritt installieren wir php-fpm und einige PHP-Erweiterungen, dann konfigurieren wir den nginx-Webserver so, dass er php-Dateianfragen über php-fpm verarbeitet.
Installieren Sie php-fpm mit diesem "zypper in"-Befehl:
zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json
Wechseln Sie nach Abschluss der Installation 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
Kommentieren Sie Zeile 32 aus, um das php-fpm-Protokoll zu aktivieren. Wenn später Fehler in Ihren PHP-Skripten auftreten, finden Sie die Protokolldatei im Verzeichnis "/var/log/".
error_log = log/php-fpm.log
Ändern Sie Zeile 148 - 149 in "nginx" für den Unix-Benutzer/die Unix-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
Kommentieren Sie den Wert in den Zeilen 170 - 172 aus und ändern Sie ihn, um die Berechtigungen des Unix-Sockets festzulegen.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Speichern Sie die Datei und verlassen Sie den Editor.
Bearbeiten Sie als Nächstes die Datei php.ini im cli-Verzeichnis:
cd /etc/php5/cli/
vim php.ini
Kommentieren Sie den Wert in Zeile 758 aus und ändern Sie ihn:
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-Handler-Pfad. In diesem Tutorial führen wir php-fpm als nginx-Benutzer aus, stellen Sie also sicher, dass der nginx-Benutzer in das Sitzungsverzeichnis schreiben kann. Sie können die Konfiguration des Sitzungspfads in der php.ini-Datei in Zeile 1390 sehen.
session.save_path = "/var/lib/php5"
Ändern Sie den Eigentümer des Sitzungsverzeichnisses „/var/lib/php5/“, machen Sie den nginx-Benutzer zum Eigentümer des Verzeichnisses:
chown -R nginx:nginx /var/lib/php5/
Konfigurieren Sie als Nächstes php-fpm so, dass es mit dem nginx-Webserver funktioniert. Wechseln Sie zum nginx-Konfigurationsverzeichnis und sichern Sie die nginx.conf-Datei, 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 behandelt alle PHP-Dateianfragen.
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 und testen Sie dann die nginx-Konfiguration, um sicherzustellen, dass kein Fehler in der Konfiguration vorliegt:
nginx -t
Wenn kein Fehler auftritt, können Sie die Ergebnisse unten sehen:
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, starten Sie dann den nginx-Dienst neu:
systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx
Nginx und php-fpm sind konfiguriert, Sie können die php-Datei testen, indem Sie eine neue phpinfo()-Datei im Web-Root-Verzeichnis 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 Sie können curl:
verwendencurl -I 192.168.1.101/info.php
Schritt 5 – SSL-Zertifikat generieren
Das Ausführen von ownCloud über eine sichere https-Verbindung ist sehr wichtig, um Ihre Dateien sicher und privat zu halten. Wenn Sie 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 Dienst zum ersten Mal aufrufen .
Erstellen Sie ein neues „ssl“-Verzeichnis und generieren Sie das Zertifikat mit dem openssl-Befehl:
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 - Installieren und konfigurieren Sie ownCloud
In diesem Schritt werden wir ownCloud installieren und einen neuen virtuellen nginx-Host für die ownCloud-Domain konfigurieren. Wir werden owncloud mit dem Domainnamen „example-owncloud.co“ und der Web-Root-Datei im Verzeichnis „/srv/www/owncloud/“ installieren.
ownCloud herunterladen
Gehen Sie in das Verzeichnis „/srv/www/“ und laden Sie die ownCloud-Quelle herunter und extrahieren 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 owncloud-Verzeichnis, um alle Benutzerdaten zu speichern. Ändern Sie den Eigentümer des ownCloud-Verzeichnisses in den nginx-Benutzer:
mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/
Konfigurieren Sie einen virtuellen Nginx-Host für ownCloud
Wechseln Sie in das nginx-Verzeichnis und erstellen Sie ein neues Verzeichnis für die Dateikonfiguration des virtuellen Hosts:
cd /etc/nginx/
mkdir vhosts.d/
Gehen Sie in das vhosts.d-Verzeichnis und erstellen Sie eine neue virtuelle Hostdatei für owncloud „example-owncloud.conf“.
cd vhosts.d/
vim example-owncloud.conf
Fügen Sie die Konfiguration unten 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
Testen
Besuchen Sie die owncloud-Domain:
example-owncloud.co
Sie werden auf die https-Verbindung umgeleitet.
Geben Sie als Nächstes Ihren Admin-Benutzer und das Passwort, den Datenbanknamen, den Benutzer und das Passwort ein und klicken Sie auf „Setup abschließen“.
Warten Sie eine Sekunde und Sie sehen den owncloud-Dateimanager:
Die Installation von ownCloud mit nginx und MariaDB auf OpenSUSE Leap 42.1 ist abgeschlossen.
Referenzen
- https://doc.owncloud.org/
- https://www.howtoforge.com/tutorial/install-nginx-php-and-mysql-lemp-stack-on-opensuse-leap-42.1/
- https://www.howtoforge.com/tutorial/how-to-install-owncloud-8-with-nginx-and-mariadb-on-centos-7/