OwnCloud è un software server per la sincronizzazione dei dati e la condivisione di file con un frontend basato sul Web facile da usare disponibile con una licenza open source. OwnCloud può essere installato su un server Web Linux o Windows, è facile da configurare e dispone di una documentazione online completa. Il client nativo è disponibile per Windows, MacOS e Linux (applicazione desktop). C'è anche un'app mobile per Android e iOS.
In questo tutorial, ti guiderò a installare e configurare ownCloud 9.1 su un server CentOS 7. Ti mostrerò come configurare ownCloud con Nginx e PHP 7 (come FPM) e MariaDB come sistema di database.
Prerequisiti
- Server CentOS 7
- Privilegi di root
Passaggio 1 - Installa Nginx e PHP7-FPM
Prima di iniziare con l'installazione di Nginx e php7-fpm, dobbiamo aggiungere il repository EPEL che contiene software aggiuntivo che non è disponibile dal repository di base CentOS. Installa EPEL con questo comando yum.
yum -y install epel-release
Ora installa Nginx dal repository Epel.
yum -y install nginx
Ora dobbiamo aggiungere un altro repository per php7-fpm. Ci sono diversi repository per PHP 7 disponibili in rete, userò il repository webtatic qui.
Aggiungi il repository webtatic:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Quindi, installa PHP7-FPM con alcuni pacchetti aggiuntivi per l'installazione di ownCloud.
yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json
Controlla la versione PHP dal terminale del server per assicurarti che l'installazione sia riuscita.
php -v
Passaggio 2 - Configura PHP7-FPM
In questo passaggio, configureremo php-fpm per l'esecuzione con nginx. Php7-fpm verrà eseguito sotto l'utente nginx e sarà in ascolto sulla porta 9000.
Modifica la configurazione predefinita di php7-fpm con vim.
vim /etc/php-fpm.d/www.conf
Nella riga 8 e 10, cambia utente e gruppo in "nginx '.
user = nginx
group = nginx
Nella riga 22, assicurati che php-fpm sia in esecuzione sulla porta del server 9000.
listen = 127.0.0.1:9000
Decommentare le righe 366-370 per le variabili di ambiente di sistema php-fpm.
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Salva il file ed esci dall'editor
Quindi, crea una nuova directory per il percorso della sessione nella directory '/var/lib/' e cambia il proprietario nell'utente 'nginx'.
mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/
Avvia php-fpm e nginx, quindi aggiungilo all'avvio all'avvio.
sudo systemctl start php-fpm
sudo systemctl start nginx
sudo systemctl enable php-fpm
sudo systemctl enable nginx
La configurazione di PHP7-FPM è terminata.
Fase 3 - Installa e configura MariaDB
OwnCloud supporta i database PostgreSQL e MySQL, in questo tutorial utilizzeremo MariaDB per il database ownCloud. Installa il pacchetto mariadb-server dal repository CentOS con il comando yum.
yum -y install mariadb mariadb-server
Avvia il servizio MariaDB e configura la password root di MariaDB.
systemctl start mariadb
mysql_secure_installation
Digita la tua password di root quando richiesto.
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
La password di root di MariaDB è stata impostata, ora possiamo accedere alla shell MySQL per creare un nuovo database e un nuovo utente per ownCloud. Creeremo un nuovo database '
Creeremo un nuovo database 'owncloud_db ' sotto l'utente 'ownclouduser ' con password '[email protetta] '. Scegli una password diversa e sicura per la tua installazione!
mysql -u root -p
Type Password
Digita la query MySQL di seguito per creare un nuovo database e un nuovo utente.
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;
Il 'databaseowncloud_db' con l'utente 'ownclouduser' è stato creato.
Fase 4:genera un certificato SSL autofirmato
In questo tutorial, eseguiremo owncloud con una connessione https per il client. Puoi utilizzare un certificato SSL gratuito come Let's encrypt. In questo tutorial creerò il mio file di certificato SSL con il comando OpenSSL.
Crea una nuova directory per il file SSL.
mkdir -p /etc/nginx/cert/
Quindi genera un nuovo file di certificato SSL con il comando OpenSSL di seguito.
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/owncloud.crt -keyout /etc/nginx/cert/owncloud.key
Immettere i dettagli per il certificato SSL come richiesto dal comando OpenSSL. Quindi cambia l'autorizzazione di tutti i file di certificato su 600 con chmod.
chmod 600 /etc/nginx/cert/*
Fase 5:scarica OwnCloud
Scaricheremo ownCloud con il comando wget, quindi dobbiamo prima installare il pacchetto wget. Inoltre, è necessario decomprimere il pacchetto.
yum -y install wget unzip
Vai alla directory tmp e scarica l'ultima versione stabile di ownCloud 9.1 dal sito ownCloud con wget.
cd /tmp
wget https://download.owncloud.org/community/owncloud-9.1.2.zip
Estrai il file zip di ownCloud e spostalo nella directory '/usr/share/nginx/html/'.
unzip owncloud-9.1.2.zip
mv owncloud/ /usr/share/nginx/html/
Quindi, vai alla directory principale web di nginx e crea una nuova directory 'data' per owncloud.
cd /usr/share/nginx/html/
mkdir -p owncloud/data/
Cambia il proprietario della directory 'owncloud' nell'utente e nel gruppo 'nginx'.
chown nginx:nginx -R owncloud/
Passaggio 6:configurazione dell'host virtuale OwnCloud in Nginx
Al passaggio 5, abbiamo scaricato il codice sorgente di ownCloud e l'abbiamo configurato per l'esecuzione nel server Web Nginx. Ma dobbiamo ancora configurare l'host virtuale per ownCloud.
Crea un nuovo file di configurazione dell'host virtuale 'owncloud.conf' nella directory 'conf.d'.
cd /etc/nginx/conf.d/
vim owncloud.conf
Incolla la configurazione dell'host virtuale ownCloud di seguito.
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;
}
}
Salva il file ed esci dall'editor.
Infine, verifica la configurazione di Nginx e assicurati che non ci siano errori, quindi riavvia il servizio.
nginx -t
systemctl restart nginx
Fase 7 - Configura SELinux e FirewallD
In questo tutorial, lasceremo SELinux in modalità enforcing, quindi abbiamo bisogno del pacchetto degli strumenti di gestione di SELinux per configurarlo.
Installa gli strumenti di gestione di SELinux con questo comando yum.
yum -y install policycoreutils-python
Quindi esegui i comandi seguenti come root per consentire a ownCloud di funzionare sotto SELinux. Ricordarsi di cambiare la directory di ownCloud nel caso in cui si utilizzi una directory diversa per l'installazione di ownCloud.
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/'
Quindi, abilita il servizio firewalld e apri la porta HTTP e HTTPS per owncloud.
Avvia firewalld e configuralo per l'avvio all'avvio.
systemctl start firewalld
systemctl enable firewalld
Apri le porte HTTP e HTTPS con il comando firewall-cmd, quindi ricarica il firewall.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
La parte di configurazione del server è terminata.
Fase 8 - Installazione guidata di OwnCloud
Ora apri il tuo browser web e digita il nome di dominio ownCloud nel campo URL, il mio è:data.owncloud.co e verrai reindirizzato alla connessione HTTPS sicura.
Digita il tuo nuovo nome utente e password di amministratore, quindi digita le credenziali del database e fai clic su 'Termina configurazione '.
Admin Dashboard File Manager.
Impostazioni utente.
Impostazioni amministratore.
Owncloud è stato installato con successo con Nginx, PHP7-FPM e MariaDB su un server CentOS 7.