ownCloud je OpenSource aplikace pro sdílení souborů založená na programovacím jazyce PHP. OwnCloud poskytuje synchronizaci a sdílení souborů s vlastním hostitelem s pěkným webovým rozhraním a synchronizaci aplikací pro všechny hlavní mobilní a stolní platformy s funkčními funkcemi, jako je dropbox, mega atd. ownCloud usnadňuje přístup a synchronizaci souborů, kalendářů a kontaktů napříč vašimi zařízení.
V tomto tutoriálu vás provedu vytvořením vlastní platformy pro synchronizaci a sdílení serverů s ownCloud. Nainstalujeme ownCloud s Nginx jako webovým serverem, MariaDB (fork MySQL) jako databází a php-fpm pro zpracování požadavku na php v Linuxu OpenSUSE Leap 42.1.
Předpoklad
- OpenSUSE Leap 42.1
- Oprávnění uživatele root
- Porozumění příkazu Zypper
Krok 1 – Instalace SuSEfirewall2
SuSEfirewall je skript firewallu, který ukládá svou konfiguraci do souboru "/etc/sysconfig/SuSEfirewall2". Pomocí SuSEfirewall2 můžete otevřít porty úpravou souboru "SuSEfirewall2".
Nainstalujte SuSEfirewall2 pomocí příkazu zypper:
zypper in SuSEfirewall2
Když je firewall nainstalován, přejděte do adresáře sysconfig a upravte konfiguraci "SuSEfirewall2" pomocí vim:
cd /etc/sysconfig/
vim SuSEfirewall2
Přejděte na řádek 253 a přidejte porty všech služeb, které chcete používat. V tomto kroku přidám porty:ssh, http a https.
FW_SERVICES_EXT_TCP="22 80 443"
Uložte soubor a ukončete editor.
Dále spusťte SuSEfirewall2 a povolte jeho spuštění při spouštění:
systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2
Nyní restartujte službu sshd:
systemctl restart sshd
Pokud chcete otestovat port serveru SSH, můžete se pomocí příkazu telnet připojit k portu 22:
telnet 192.168.1.101 22
Krok 2 – Instalace Nginx
Nginx je lehký webový server s nízkou spotřebou paměti a procesoru. Jako webový server pro naši vlastní instalaci cloudu použijeme nginx.
Nainstalujte nginx pomocí příkazu zypper:
zypper in nginx
Spusťte nginx a povolte jeho spuštění při spouštění pomocí příkazu systemctl:
systemctl start nginx
systemctl enable nginx
Dále přidejte soubor index.html a otestujte, zda nginx funguje.
echo "This is Nginx Page OpenSUSE Leap" > /srv/www/htdocs/index.html
Nyní můžete přistupovat k webovému serveru nginx z vašeho webového prohlížeče nebo jej můžete zkontrolovat pomocí curl:
curl -I 192.168.1.101
curl 192.168.1.101
Krok 3 – Instalace a konfigurace MariaDB
MariaDB je vidlice databáze MySQL založená na OpenSource RDBMS. V tomto kroku nainstalujeme a nakonfigurujeme MariaDB. Poté vytvoříme nového uživatele a databázi pro instalaci ownCloud.
Nainstalujte MariaDB pomocí příkazu zypper níže:
zypper in mariadb mariadb-client
Nyní spusťte MariaDB a přidejte ji do spuštění systému:
systemctl start mysql
systemctl enable mysql
MariaDB byla spuštěna, nyní můžete nakonfigurovat heslo uživatele root pro MariaDB pomocí příkazu níže:
mysql_secure_installation
Nastavte heslo MariaDB/MySQL:
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
Kořenové heslo MariaDB bylo nakonfigurováno. Nyní se můžeme přihlásit do prostředí MariaDB/MySQL a vytvořit novou databázi a nového uživatele pro ownCloud.
Přihlaste se do prostředí MariaDB/MySQL:
mysql -u root -p
TYPE your password
Vytvořte novou databázi „owncloud_db“ a nového uživatele „ownclouduser“ s heslem „[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
Databáze pro instalaci ownCloud byla vytvořena.
Krok 4 – Instalace a konfigurace PHP-FPM
PHP-FPM (FastCGI Process Manager) je moderní FastCGI alternativa pro práci s weby s velkým počtem návštěvníků. PHP-FPM má pokročilou správu procesů a snadno se spravuje a konfiguruje.
V tomto kroku nainstalujeme php-fpm a některá rozšíření PHP a poté nakonfigurujeme webový server nginx tak, aby zpracovával požadavky na soubory php prostřednictvím php-fpm.
Nainstalujte php-fpm pomocí tohoto příkazu "zypper in":
zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json
Po dokončení instalace přejděte do adresáře php-fpm a zkopírujte výchozí konfigurační soubor:
cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf
Upravte soubor php-fpm.conf pomocí editoru vim nebo nano:
vim php-fpm.conf
Odkomentujte řádek 32, abyste povolili protokol php-fpm. Pokud se později ve vašich skriptech PHP objeví chyba, můžete soubor protokolu najít v adresáři "/var/log/".
error_log = log/php-fpm.log
Změňte řádek 148–149 na „nginx“ pro unixového uživatele/skupinu procesů.
user = nginx
group = nginx
Změňte hodnotu na řádku 159, aby se spustil php-fpm se souborem soketu.
listen = /var/run/php-fpm.sock
Odkomentujte a změňte hodnotu na řádcích 170 - 172, abyste nastavili oprávnění unixového socketu.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Uložte soubor a ukončete editor.
Dále upravte soubor php.ini v adresáři cli:
cd /etc/php5/cli/
vim php.ini
Odkomentujte a změňte hodnotu na řádku 758:
cgi.fix_pathinfo=0
Uložte a ukončete.
Zkopírujte soubor php.ini do adresáře conf.d:
cp php.ini /etc/php5/conf.d/
Nyní nakonfigurujte cestu obsluhy relace php. V tomto tutoriálu spouštíme php-fpm jako uživatel nginx, takže se ujistěte, že uživatel nginx může zapisovat do adresáře sessions. Konfiguraci cesty relace můžete vidět v souboru php.ini na řádku 1390.
session.save_path = "/var/lib/php5"
Změňte vlastníka adresáře relace „/var/lib/php5/“, udělejte z uživatele nginx vlastníka adresáře:
chown -R nginx:nginx /var/lib/php5/
Dále nakonfigurujte php-fpm tak, aby fungoval s webovým serverem nginx. Před úpravou konfigurace přejděte do konfiguračního adresáře nginx a zálohujte soubor nginx.conf.
cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf
Přidejte následující novou konfiguraci na řádek 65 – tato konfigurace zpracuje všechny požadavky na soubory PHP.
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;
}
Uložte a ukončete a poté otestujte konfiguraci nginx, abyste se ujistili, že v konfiguraci není žádná chyba:
nginx -t
Pokud nedojde k žádné chybě, můžete vidět výsledky níže:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nyní spusťte php-fpm a přidejte jej do statu při spouštění, poté restartujte službu nginx:
systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx
Nginx a php-fpm jsou nakonfigurovány, soubor php můžete otestovat vytvořením nového souboru phpinfo() v kořenovém adresáři webu:
cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php
Otevřete prohlížeč a navštivte server IP:
http://192.168.1.101/info.php
nebo můžete použít curl:
curl -I 192.168.1.101/info.php
Krok 5 – Vygenerování certifikátu SSL
Spuštění ownCloud přes zabezpečené připojení https je velmi důležité, aby byly vaše soubory v bezpečí a soukromé. Pokud provozujete ownCloud ve vlastní společnosti, můžete si zakoupit SSL certifikát, nebo pokud chcete SSL certifikát zdarma, můžete použít Let's-encrypt. Zde vytvořím tzv. „self-signed“ SSL certifikát, šifrování self-signed certifikátu není nižší než u oficiálního certifikátu, ale při prvním přístupu ke službě budete muset přijmout bezpečnostní varování ve vašem prohlížeči .
Vytvořte nový adresář „ssl“ a vygenerujte certifikát pomocí příkazu 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
Dále změňte oprávnění klíče:
chmod 600 example-owncloud.key
Krok 6 – Instalace a konfigurace ownCloud
V tomto kroku nainstalujeme ownCloud a nakonfigurujeme nového virtuálního hostitele nginx pro doménu ownCloud. Nainstalujeme owncloud s názvem domény „example-owncloud.co“ a kořenovým souborem webu v adresáři „/srv/www/owncloud/“.
Stáhnout ownCloud
Přejděte do adresáře "/srv/www/" a stáhněte si zdroj ownCloud a rozbalte jej:
cd /srv/www/
wget https://download.owncloud.org/community/owncloud-9.0.2.zip
unzip owncloud-9.0.2.zip
Nyní vytvořte nový datový adresář v adresáři owncloud pro uložení všech uživatelských dat. Změňte vlastníka adresáře ownCloud na uživatele nginx:
mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/
Nakonfigurujte virtuálního hostitele Nginx pro ownCloud
Přejděte do adresáře nginx a vytvořte nový adresář pro konfiguraci souboru virtuálního hostitele:
cd /etc/nginx/
mkdir vhosts.d/
Přejděte do adresáře vhosts.d a vytvořte nový soubor virtuálního hostitele pro owncloud "example-owncloud.conf".
cd vhosts.d/
vim example-owncloud.conf
vložte konfiguraci níže:
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;
}
}
Uložte soubor a ukončete editor.
Otestujte konfiguraci nginx a nezapomeňte restartovat všechny služby:
nginx -t
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql
Testování
Navštivte doménu owncloud:
example-owncloud.co
Budete přesměrováni na připojení https.
Dále zadejte uživatele a heslo správce, název databáze, uživatele a heslo a klikněte na „Dokončit nastavení“.
Počkejte sekundu a uvidíte správce souborů owncloud:
Instalace ownCloud s nginx a MariaDB na OpenSUSE Leap 42.1 je dokončena.
Odkazy
- 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/