OwnCloud je serverový software pro synchronizaci dat a sdílení souborů se snadno použitelným webovým rozhraním, které je dostupné pod licencí open source. OwnCloud lze nainstalovat na webový server Linux nebo Windows, snadno se konfiguruje a má obsáhlou online dokumentaci. Nativní klient je dostupný pro Windows, MacOS a Linux (Desktop Application). K dispozici je také mobilní aplikace pro Android a iOS.
V tomto tutoriálu vás provedu instalací a konfigurací ownCloud 9.1 na serveru CentOS 7. Ukážu vám, jak nakonfigurovat ownCloud s Nginx a PHP 7 (jako FPM) a MariaDB jako databázový systém.
Předpoklady
- Server CentOS 7
- Kořenová oprávnění
Krok 1 – Instalace Nginx a PHP7-FPM
Než začneme s instalací Nginx a php7-fpm, musíme přidat úložiště EPEL, které obsahuje další software, který není dostupný ze základního úložiště CentOS. Nainstalujte EPEL pomocí tohoto příkazu yum.
yum -y install epel-release
Nyní nainstalujte Nginx z úložiště Epel.
yum -y install nginx
Nyní musíme přidat další úložiště pro php7-fpm. Na netu je dostupných několik repozitářů pro PHP 7, já použiji webtatic repozitář zde.
Přidejte webtatické úložiště:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Dále nainstalujte PHP7-FPM s několika dalšími balíčky pro instalaci ownCloud.
yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json
Zkontrolujte verzi PHP z terminálu serveru a ujistěte se, že instalace proběhla úspěšně.
php -v
Krok 2 – Konfigurace PHP7-FPM
V tomto kroku nakonfigurujeme php-fpm tak, aby běžel s nginx. Php7-fpm poběží pod uživatelem nginx a naslouchá na portu 9000.
Upravte výchozí konfiguraci php7-fpm pomocí vim.
vim /etc/php-fpm.d/www.conf
V řádku 8 a 10 změňte uživatele a skupinu na 'nginx '.
user = nginx
group = nginx
V řádku 22 se ujistěte, že php-fpm běží pod serverovým portem 9000.
listen = 127.0.0.1:9000
Odkomentujte řádky 366-370 pro systémové proměnné prostředí php-fpm.
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Uložte soubor a ukončete editor
Dále vytvořte nový adresář pro cestu relace v adresáři '/var/lib/' a změňte vlastníka na uživatele 'nginx'.
mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/
Spusťte php-fpm a nginx a poté je přidejte, aby se spustily při spouštění.
sudo systemctl start php-fpm
sudo systemctl start nginx
sudo systemctl enable php-fpm
sudo systemctl enable nginx
Konfigurace PHP7-FPM je hotová.
Krok 3 – Instalace a konfigurace MariaDB
OwnCloud podporuje databáze PostgreSQL a MySQL, v tomto tutoriálu použijeme MariaDB pro databázi ownCloud. Nainstalujte balíček mariadb-server z úložiště CentOS pomocí příkazu yum.
yum -y install mariadb mariadb-server
Spusťte službu MariaDB a nakonfigurujte kořenové heslo MariaDB.
systemctl start mariadb
mysql_secure_installation
Na požádání zadejte své root heslo.
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
Kořenové heslo MariaDB bylo nastaveno, nyní se můžeme přihlásit do prostředí MySQL a vytvořit novou databázi a uživatele pro ownCloud. Vytvoříme novou databázi '
Vytvoříme novou databázi 'owncloud_db ' pod uživatelem 'ownclouduser ' s heslem '[e-mail chráněn] '. Zvolte prosím pro svou instalaci jiné a bezpečné heslo!
mysql -u root -p
Type Password
Zadejte níže dotaz MySQL a vytvořte novou databázi a nového uživatele.
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;
Databáze 'owncloud_db' s uživatelem 'ownclouduser' byla vytvořena.
Krok 4 – Vygenerování certifikátu SSL s vlastním podpisem
V tomto tutoriálu spustíme pro klienta owncloud pod připojením https. Můžete použít bezplatný certifikát SSL, jako je let's encrypt. V tomto tutoriálu vytvořím svůj vlastní soubor certifikátu SSL pomocí příkazu OpenSSL.
Vytvořte nový adresář pro soubor SSL.
mkdir -p /etc/nginx/cert/
Poté pomocí příkazu OpenSSL níže vygenerujte nový soubor certifikátu SSL.
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/owncloud.crt -keyout /etc/nginx/cert/owncloud.key
Zadejte podrobnosti pro certifikát SSL, jak požaduje příkaz OpenSSL. Poté změňte oprávnění všech souborů certifikátů na 600 pomocí chmod.
chmod 600 /etc/nginx/cert/*
Krok 5 – Stáhnout OwnCloud
Stáhneme si ownCloud pomocí příkazu wget, takže musíme nejprve nainstalovat balíček wget. Dále potřebujeme balíček rozbalit.
yum -y install wget unzip
Přejděte do adresáře tmp a stáhněte si nejnovější stabilní ownCloud 9.1 ze stránky ownCloud pomocí wget.
cd /tmp
wget https://download.owncloud.org/community/owncloud-9.1.2.zip
Rozbalte soubor zip ownCloud a přesuňte jej do adresáře '/usr/share/nginx/html/'.
unzip owncloud-9.1.2.zip
mv owncloud/ /usr/share/nginx/html/
Dále přejděte do kořenového adresáře webu nginx a vytvořte nový adresář 'data' pro owncloud.
cd /usr/share/nginx/html/
mkdir -p owncloud/data/
Změňte vlastníka adresáře 'owncloud' na uživatele a skupinu 'nginx'.
chown nginx:nginx -R owncloud/
Krok 6 – Konfigurace virtuálního hostitele OwnCloud v Nginx
V kroku 5 jsme si stáhli zdrojový kód ownCloud a nakonfigurovali jej tak, aby běžel pod webovým serverem Nginx. Stále však musíme nakonfigurovat virtuálního hostitele pro ownCloud.
Vytvořte nový konfigurační soubor virtuálního hostitele 'owncloud.conf' v adresáři 'conf.d'.
cd /etc/nginx/conf.d/
vim owncloud.conf
Níže vložte konfiguraci virtuálního hostitele ownCloud.
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;
}
}
Uložte soubor a ukončete editor.
Nakonec otestujte konfiguraci Nginx a ujistěte se, že nedošlo k chybě, a poté službu restartujte.
nginx -t
systemctl restart nginx
Krok 7 – Konfigurace SELinux a FirewallD
V tomto tutoriálu ponecháme SELinux zapnutý v režimu vynucení, takže k jeho konfiguraci potřebujeme balíček nástrojů pro správu SELinuxu.
Nainstalujte nástroje pro správu SELinux pomocí tohoto příkazu yum.
yum -y install policycoreutils-python
Poté spusťte níže uvedené příkazy jako root, aby se ownCloud spustil pod SELinux. Nezapomeňte změnit adresář ownCloud v případě, že pro instalaci ownCloud používáte jiný adresář.
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/'
Dále povolte službu firewalld a otevřete port HTTP a HTTPS pro owncloud.
Spusťte firewalld a nakonfigurujte jej tak, aby se spouštěl při spouštění.
systemctl start firewalld
systemctl enable firewalld
Otevřete porty HTTP a HTTPS pomocí příkazu firewall-cmd a poté znovu načtěte bránu firewall.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Část konfigurace serveru je dokončena.
Krok 8 – Průvodce instalací OwnCloud
Nyní otevřete webový prohlížeč a do pole URL zadejte název domény ownCloud, moje je:data.owncloud.co, a budete přesměrováni na zabezpečené připojení HTTPS.
Zadejte své nové uživatelské jméno a heslo správce, poté zadejte přihlašovací údaje k databázi a klikněte na 'Dokončit nastavení '.
Správce souborů řídicího panelu správce.
Uživatelská nastavení.
Nastavení správce.
Owncloud byl úspěšně nainstalován s Nginx, PHP7-FPM a MariaDB na CentOS 7 Server.