ownCloud è un'applicazione di condivisione file OpenSource basata sul linguaggio di programmazione PHP. OwnCloud fornisce la sincronizzazione e la condivisione di file self-hosted con una bella interfaccia web e la sincronizzazione di app per tutte le principali piattaforme mobili e desktop con funzionalità come dropbox, mega, ecc. ownCloud semplifica l'accesso e la sincronizzazione di file, calendari e contatti tra i tuoi dispositivi.
In questo tutorial, ti guiderò a creare la tua piattaforma server di sincronizzazione e condivisione con ownCloud. Installeremo ownCloud con Nginx come web server, MariaDB (un fork di MySQL) come database e php-fpm per gestire la richiesta di php su Linux OpenSUSE Leap 42.1.
Prerequisito
- OpenSUSE Leap 42.1
- Privilegi di root
- Comprendere il comando zypper
Passaggio 1:installazione di SuSEfirewall2
SuSEfirewall è uno script firewall che memorizza la sua configurazione nel file "/etc/sysconfig/SuSEfirewall2". Con SuSEfirewall2 puoi aprire le porte modificando il file "SuSEfirewall2".
Installa SuSEfirewall2 con il comando zypper:
zypper in SuSEfirewall2
Quando il firewall è installato, vai nella directory sysconfig e modifica la configurazione "SuSEfirewall2" con vim:
cd /etc/sysconfig/
vim SuSEfirewall2
Vai alla riga 253 e aggiungi le porte di tutti i servizi che desideri utilizzare. In questo passaggio, aggiungerò le porte:ssh, http e https.
FW_SERVICES_EXT_TCP="22 80 443"
Salva il file ed esci dall'editor.
Quindi, avvia SuSEfirewall2 e abilitalo all'esecuzione all'avvio:
systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2
Ora riavvia il servizio sshd:
systemctl restart sshd
Se vuoi testare la porta del server SSH, puoi usare il comando telnet per connetterti alla porta 22:
telnet 192.168.1.101 22
Passaggio 2:installa Nginx
Nginx è un server web leggero con memoria e consumo di CPU ridotti. Useremo nginx come server web per la nostra installazione di cloud.
Installa nginx con il comando zypper:
zypper in nginx
Avvia nginx e abilitalo all'esecuzione all'avvio con il comando systemctl:
systemctl start nginx
systemctl enable nginx
Quindi, aggiungi un file index.html per verificare se nginx funziona.
echo "This is Nginx Page OpenSUSE Leap" > /srv/www/htdocs/index.html
Ora puoi accedere al server web nginx dal tuo browser web, oppure puoi verificarlo con curl:
curl -I 192.168.1.101
curl 192.168.1.101
Fase 3 - Installa e configura MariaDB
MariaDB è un fork del database MySQL basato su RDBMS OpenSource. In questo passaggio installeremo e configureremo MariaDB. Quindi creeremo un nuovo utente e database per l'installazione di ownCloud.
Installa MariaDB con il comando zypper di seguito:
zypper in mariadb mariadb-client
Ora avvia MariaDB e aggiungilo all'avvio del sistema:
systemctl start mysql
systemctl enable mysql
MariaDB è stato avviato, ora puoi configurare la password di root per MariaDB con il comando seguente:
mysql_secure_installation
Imposta la password 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
La password di root di MariaDB è stata configurata. Ora possiamo accedere alla shell MariaDB/MySQL e creare un nuovo database e un nuovo utente per ownCloud.
Accedi alla shell MariaDB/MySQL:
mysql -u root -p
TYPE your password
Crea un nuovo database "owncloud_db" e un nuovo utente "ownclouduser" con password "[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
Il database per l'installazione di ownCloud è stato creato.
Fase 4 - Installa e configura PHP-FPM
PHP-FPM (FastCGI Process Manager) è una moderna alternativa FastCGI per gestire siti con molti visitatori. PHP-FPM ha una gestione avanzata dei processi ed è facile da gestire e configurare.
In questo passaggio, installeremo php-fpm e alcune estensioni PHP, quindi configureremo il server web nginx per gestire le richieste di file php tramite php-fpm.
Installa php-fpm con questo comando "zypper in":
zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json
Al termine dell'installazione, vai nella directory php-fpm e copia il file di configurazione predefinito:
cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf
Modifica il file php-fpm.conf con l'editor vim o nano:
vim php-fpm.conf
Decommentare la riga 32 per abilitare il log php-fpm. Se si verifica un errore in seguito nei tuoi script PHP, puoi trovare il file di registro nella directory "/var/log/".
error_log = log/php-fpm.log
Cambia la riga 148 - 149 in "nginx" per l'utente/gruppo unix dei processi.
user = nginx
group = nginx
Modificare il valore nella riga 159 per eseguire php-fpm con un file socket.
listen = /var/run/php-fpm.sock
Decommenta e cambia il valore sulle righe 170 - 172 per impostare i permessi del socket unix.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Salva il file ed esci dall'editor.
Quindi, modifica il file php.ini nella directory cli:
cd /etc/php5/cli/
vim php.ini
Decommenta e modifica il valore alla riga 758:
cgi.fix_pathinfo=0
Salva ed esci.
Copia il file php.ini nella directory conf.d:
cp php.ini /etc/php5/conf.d/
Ora configura il percorso del gestore di sessione php. In questo tutorial, eseguiamo php-fpm come utente nginx, quindi assicurati che l'utente nginx possa scrivere nella directory delle sessioni. Puoi vedere la configurazione del percorso della sessione nel file php.ini alla riga 1390.
session.save_path = "/var/lib/php5"
Cambia il proprietario della directory di sessione "/var/lib/php5/", imposta l'utente nginx come proprietario della directory:
chown -R nginx:nginx /var/lib/php5/
Quindi, configura php-fpm per funzionare con il server web nginx. Vai alla directory di configurazione di nginx ed esegui il backup del file nginx.conf prima di modificare la configurazione.
cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf
Aggiungi la seguente nuova configurazione alla riga 65:questa configurazione gestirà tutte le richieste di file 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;
}
Salva ed esci, quindi prova la configurazione di nginx per assicurarti che non ci siano errori nella configurazione:
nginx -t
Se non ci sono errori, puoi vedere i risultati di seguito:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ora avvia php-fpm e aggiungilo a stat all'avvio, quindi riavvia il servizio nginx:
systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx
Nginx e php-fpm sono configurati, puoi testare il file php creando un nuovo file phpinfo() nella directory principale web:
cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php
Apri il tuo browser e visita l'IP del server:
http://192.168.1.101/info.php
oppure puoi usare curl:
curl -I 192.168.1.101/info.php
Fase 5 - Genera certificato SSL
L'esecuzione di ownCloud su una connessione https sicura è molto importante per mantenere i tuoi file protetti e privati. Se stai utilizzando ownCloud sulla tua azienda, puoi acquistare il certificato SSL, oppure se desideri un certificato SSL gratuito puoi utilizzare Let's-encrypt. Qui creerò un certificato SSL cosiddetto "autofirmato", la crittografia di un certificato autofirmato non è inferiore a un certificato ufficiale ma dovrai accettare un avviso di sicurezza nel tuo browser quando accedi al servizio la prima volta .
Crea una nuova directory "ssl" e genera il certificato con il comando 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
Quindi, modifica i permessi della chiave:
chmod 600 example-owncloud.key
Fase 6 - Installa e configura ownCloud
In questo passaggio, installeremo ownCloud e configureremo un nuovo host virtuale nginx per il dominio ownCloud. Installeremo owncloud con il nome di dominio "example-owncloud.co" e il file web root nella directory "/srv/www/owncloud/".
Scarica ownCloud
Vai nella directory "/srv/www/" e scarica il sorgente ownCloud ed estrailo:
cd /srv/www/
wget https://download.owncloud.org/community/owncloud-9.0.2.zip
unzip owncloud-9.0.2.zip
Ora crea una nuova directory di dati nella directory owncloud per memorizzare tutti i dati utente. Cambia il proprietario della directory ownCloud nell'utente nginx:
mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/
Configura un host virtuale Nginx per ownCloud
Vai alla directory nginx e crea una nuova directory per la configurazione del file host virtuale:
cd /etc/nginx/
mkdir vhosts.d/
Vai alla directory vhosts.d e crea un nuovo file host virtuale per owncloud "example-owncloud.conf".
cd vhosts.d/
vim example-owncloud.conf
incolla la configurazione qui sotto:
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;
}
}
Salva il file ed esci dall'editor.
Testa la configurazione di nginx e non dimenticare di riavviare tutti i servizi:
nginx -t
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql
Test
Visita il dominio owncloud:
esempio-propriocloud.co
Verrai reindirizzato alla connessione https.
Quindi, digita l'utente e la password di amministratore, il nome del database, l'utente e la password e fai clic su "Termina configurazione".
Aspetta un secondo e vedrai il file manager di owncloud:
L'installazione di ownCloud con nginx e MariaDB su OpenSUSE Leap 42.1 è terminata.
Riferimenti
- 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/