OwnCloud es un software de servidor para la sincronización de datos y el intercambio de archivos con una interfaz web fácil de usar que está disponible bajo una licencia de código abierto. OwnCloud se puede instalar en un servidor web Linux o Windows, es fácil de configurar y tiene una documentación en línea completa. El cliente nativo está disponible para Windows, MacOS y Linux (aplicación de escritorio). También hay una aplicación móvil para Android e iOS.
En este tutorial, lo guiaré para instalar y configurar ownCloud 9.1 en un servidor CentOS 7. Le mostraré cómo configurar ownCloud con Nginx y PHP 7 (como FPM) y MariaDB como sistema de base de datos.
Requisitos
- Servidor CentOS 7
- Privilegios de raíz
Paso 1:instalar Nginx y PHP7-FPM
Antes de comenzar con la instalación de Nginx y php7-fpm, debemos agregar el repositorio EPEL que contiene software adicional que no está disponible en el repositorio base de CentOS. Instale EPEL con este comando yum.
yum -y install epel-release
Ahora instala Nginx desde el repositorio de Epel.
yum -y install nginx
Ahora tenemos que agregar otro repositorio para php7-fpm. Hay varios repositorios para PHP 7 disponibles en la red, usaré el repositorio webtatic aquí.
Agregue el repositorio webtatic:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
A continuación, instale PHP7-FPM con algunos paquetes adicionales para la instalación de ownCloud.
yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json
Verifique la versión de PHP desde la terminal del servidor para asegurarse de que la instalación se realizó correctamente.
php -v
Paso 2:configurar PHP7-FPM
En este paso, configuraremos php-fpm para que se ejecute con nginx. Php7-fpm se ejecutará bajo el usuario nginx y escuchará en el puerto 9000.
Edite la configuración predeterminada de php7-fpm con vim.
vim /etc/php-fpm.d/www.conf
En las líneas 8 y 10, cambie el usuario y el grupo a 'nginx '.
user = nginx
group = nginx
En la línea 22, asegúrese de que php-fpm se esté ejecutando en el puerto del servidor 9000.
listen = 127.0.0.1:9000
Quite el comentario de las líneas 366-370 para las variables de entorno del sistema php-fpm.
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Guarde el archivo y salga del editor
A continuación, cree un nuevo directorio para la ruta de la sesión en el directorio '/var/lib/' y cambie el propietario al usuario 'nginx'.
mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/
Inicie php-fpm y nginx, luego agréguelo para que comience en el momento del arranque.
sudo systemctl start php-fpm
sudo systemctl start nginx
sudo systemctl enable php-fpm
sudo systemctl enable nginx
La configuración de PHP7-FPM está hecha.
Paso 3:instalar y configurar MariaDB
OwnCloud es compatible con las bases de datos PostgreSQL y MySQL; en este tutorial, usaremos MariaDB para la base de datos ownCloud. Instale el paquete mariadb-server desde el repositorio de CentOS con el comando yum.
yum -y install mariadb mariadb-server
Inicie el servicio MariaDB y configure la contraseña raíz de MariaDB.
systemctl start mariadb
mysql_secure_installation
Escriba su contraseña raíz cuando se le solicite.
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
Se ha establecido la contraseña raíz de MariaDB, ahora podemos iniciar sesión en el shell de MySQL para crear una nueva base de datos y un usuario para ownCloud. Crearemos una nueva base de datos '
Crearemos una nueva base de datos 'owncloud_db ' bajo el usuario 'ownclouduser ' con contraseña '[email protected] '. ¡Elija una contraseña diferente y segura para su instalación!
mysql -u root -p
Type Password
Escriba la consulta MySQL a continuación para crear una nueva base de datos y un nuevo usuario.
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;
Se ha creado la 'base de datos owncloud_db' con el usuario 'ownclouduser'.
Paso 4:generar un certificado SSL autofirmado
En este tutorial, ejecutaremos owncloud bajo una conexión https para el cliente. Puede usar un certificado SSL gratuito como let's encrypt. En este tutorial, crearé mi propio archivo de certificado SSL con el comando OpenSSL.
Cree un nuevo directorio para el archivo SSL.
mkdir -p /etc/nginx/cert/
Luego genere un nuevo archivo de certificado SSL con el siguiente comando OpenSSL.
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/owncloud.crt -keyout /etc/nginx/cert/owncloud.key
Ingrese los detalles del certificado SSL según lo solicite el comando OpenSSL. Luego cambie el permiso de todos los archivos de certificado a 600 con chmod.
chmod 600 /etc/nginx/cert/*
Paso 5:descarga OwnCloud
Descargaremos ownCloud con el comando wget, por lo que primero debemos instalar el paquete wget. Además, necesitamos descomprimir el paquete.
yum -y install wget unzip
Vaya al directorio tmp y descargue la última versión estable de ownCloud 9.1 desde el sitio de ownCloud con wget.
cd /tmp
wget https://download.owncloud.org/community/owncloud-9.1.2.zip
Extraiga el archivo zip de ownCloud y muévalo al directorio '/usr/share/nginx/html/'.
unzip owncloud-9.1.2.zip
mv owncloud/ /usr/share/nginx/html/
A continuación, vaya al directorio raíz web de nginx y cree un nuevo directorio de 'datos' para owncloud.
cd /usr/share/nginx/html/
mkdir -p owncloud/data/
Cambie el propietario del directorio 'owncloud' al usuario y grupo 'nginx'.
chown nginx:nginx -R owncloud/
Paso 6:configurar el host virtual OwnCloud en Nginx
En el paso 5, descargamos el código fuente de ownCloud y lo configuramos para que se ejecute en el servidor web Nginx. Pero todavía tenemos que configurar el host virtual para ownCloud.
Cree un nuevo archivo de configuración de host virtual 'owncloud.conf' en el directorio 'conf.d'.
cd /etc/nginx/conf.d/
vim owncloud.conf
Pegue la configuración del host virtual ownCloud a continuación.
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;
}
}
Guarde el archivo y salga del editor.
Finalmente, pruebe la configuración de Nginx y asegúrese de que no haya ningún error, luego reinicie el servicio.
nginx -t
systemctl restart nginx
Paso 7:configurar SELinux y FirewallD
En este tutorial, dejaremos SELinux activado en modo de aplicación, por lo que necesitamos el paquete de herramientas de administración de SELinux para configurarlo.
Instale las herramientas de administración de SELinux con este comando yum.
yum -y install policycoreutils-python
Luego ejecute los siguientes comandos como root para permitir que ownCloud se ejecute bajo SELinux. Recuerde cambiar el directorio de ownCloud en caso de que use un directorio diferente para la instalación de 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/'
A continuación, habilite el servicio firewalld y abra el puerto HTTP y HTTPS para owncloud.
Inicie firewalld y configúrelo para que se inicie en el momento del arranque.
systemctl start firewalld
systemctl enable firewalld
Abra los puertos HTTP y HTTPS con el comando firewall-cmd, luego vuelva a cargar el firewall.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
La parte de configuración del servidor está terminada.
Paso 8:el asistente de instalación de OwnCloud
Ahora abra su navegador web y escriba el nombre de dominio de ownCloud en el campo URL, el mío es:data.owncloud.co, y será redirigido a la conexión HTTPS segura.
Escriba su nuevo nombre de usuario y contraseña de administrador, luego escriba las credenciales de la base de datos y haga clic en 'Finalizar configuración '.
Administrador de archivos del panel de administración.
Configuración de usuario.
Configuración de administrador.
Owncloud se instaló correctamente con Nginx, PHP7-FPM y MariaDB en un servidor CentOS 7.