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
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
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;
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/*
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
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
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‚.
Admin Dashboard Datei-Manager.
Benutzereinstellungen.
Admin-Einstellungen.
Owncloud wurde erfolgreich mit Nginx, PHP7-FPM und MariaDB auf einem CentOS 7 Server installiert.