En esta entrada veremos cómo instalar ownCloud en CentOS 7 paso a paso, una magnífica alternativa como nube doméstica e incluso empresarial, y un servicio que no debería faltar en tu servidor o VPS CentOS.
Contenido
Antes de instalar ownCloud en CentOS 7
Para poder completar esta guía de instalación de ownCloud en CentOS 7 necesitas satisfacer una serie de requisitos mínimos:
- Un sistema CentOS 7 actualizado.
- Una pila tipo LAMP (servidor web con PHP y bases de datos).
- Acceso con un usuario con privilegios de sudo o el mismo root.
- Conexión a Internet.
Si aún no tienes el entorno necesario, puedes consultar la guía de instalación LAMP en CentOS 7 o la guía de instalación de PostgreSQL en CentOS 7.
También necesitamos algunas herramientas del sistema, así que actualizamos la información de los repositorios:
~$ sudo yum update
E instalamos los paquetes necesarios:
~$ sudo yum install -y policycoreutils-python yum-utils
Cómo instalar ownCloud en CentOS 7
Para instalar ownCloud en CentOS 7 necesitamos instalar el repositorio oficial de ownCloud, lo que haremos con el comando yum-config-manager en consola:
~$ sudo yum-config-manager --add-repo http://download.owncloud.org/download/repositories/production/CentOS_7/ce:stable.repo
Acto seguido actualizamos la información de los repositorios para incluir los nuevos paquetes disponibles:
~$ sudo yum update -y
El paquete que buscamos es owncloud-files, así que lo descargaremos e instalaremos con yum:
~$ sudo yum install -y owncloud
En unos instantes se habrá descargado y desempaquetado el paquete en la ubicación /var/www/html/, donde existirá una nueva carpeta llamada owncloud/ con los archivos de la aplicación web.
Antes de iniciar el instalador web debemos realizar una serie de preparativos.
Preparación de SELinux
Puesto que SELinux suele estar activado en CentOS 7, aunque los permisos convencionales de los archivos de ownCloud están ajustados correctamente, será necesario definir un contexto de lectura/escritura para que la aplicación pueda crear y modificar archivos a través del servidor web:
~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/owncloud(/.*)?"
Haremos permanentes estos cambios con el comando semanage:
~$ sudo restorecon -R /var/www/html/owncloud/
En el caso de trabajar con bases de datos como PostgreSQL habrá que permitir la conexión entre la aplicación y el servicio de bases de datos:
~$ sudo setsebool -P httpd_can_network_connect_db on
Preparativos de PHP
En cuanto a PHP, ownCloud requiere la presencia de ciertas extensiones en CentOS 7, por lo que nos aseguraremos de que estén instaladas:
~$ sudo yum install -y php-gd php-intl php-mbstring php-pecl-apcu php-pecl-zip php-process php-xml
Es importante también instalar la extensión que conecte con el motor de bases de datos que vayamos a usar, en el caso de MariaDB/MySQL:
~$ sudo yum install -y php-mysqlnd
O para PostgreSQL:
~$ sudo yum install -y php-pgsql
Tras instalar estas extensiones y sus dependencias será necesario recargar la configuración del servidor web. En el caso de Apache:
~$ sudo systemctl reload httpd
Preparación de la base de datos
Como muchas otras aplicaciones web complejas, ownCloud necesita como parte de su estructura una base de datos que crearemos en el servicio que tengamos instalado en CentOS 7, con el correspondiente usuario encargado de trabajar con ella. Veremos los motores de bases de datos más usados en CentOS 7 y ownCloud.
MariaDB/MySQL
Conectamos al servicio de bases de datos con el cliente mysql y un usuario administrador:
~$ mysql -u root -p
Creamos la base de datos:
> create database owncloud charset utf8mb4 collate utf8mb4_unicode_ci;
Y creamos el usuario encargado de manejar esta nueva base. Para MariaDB o MySQL 5.x lo creamos directamente:
> create user owncloud@localhost identified by 'XXXXXXXX';
Pero para MySQL 8 conviene especificar el plugin de autenticación:
> create user owncloud@localhost identified with mysql_native_password by 'XXXXXXXX';
En cualquier caso, concedemos los permisos sobre la base al usuario:
> grant all privileges on owncloud.* to owncloud@localhost;
Ya podemos cerrar el cliente mysql:
> exit
Mantén a mano estos datos, porque los necesitaremos posteriormente durante la instalación web.
PostgreSQL
Creamos un rol con contraseña para administrar la base de datos de ownCloud:
~$ sudo -iu postgres createuser -P owncloud
Y creamos la base de datos asociada al rol anterior:
~$ sudo -iu postgres createdb owncloud -O owncloud
Preparación del servidor web
La aplicación ownCloud en CentOS 7 puede hacer uso del módulo Rewrite de Apache, que suele estar activado por defecto, y de las configuraciones al vuelo mediante archivos .htaccess, ajuste que sí suele estar desactivado en la configuración por defecto. Para activar el uso de los archivos .htaccess crearemos una configuración especial para ownCloud:
~$ sudo nano /etc/httpd/conf.d/owncloud.conf
El contenido será una directiva AllowOverride aplicada al directorio de instalación de ownCloud en CentOS 7:
<Directory /var/www/html/owncloud> AllowOverride all </Directory>
Guardados los cambios y cerrado el archivo, habrá que recargar la configuración del servicio web para aplicar esta nueva configuración:
~$ sudo systemctl reload httpd
Instalación vía web de ownCloud en CentOS 7
Con todos los pre-requisitos satisfechos, es hora de iniciar el instalador web. La instalación por defecto ha instalado ownCloud en la carpeta de la página web por defecto de CentOS 7, es decir, en /var/www/html/owncloud/. Por tanto, construiremos la URL añadiendo el sufijo /owncloud/ a la dirección IP o dominio de la máquina CentOS 7.
En este ejemplo, siendo centos7.local.local el dominio de la máquina CentOS 7, la URL http://centos7.local.lan/owncloud sería válida:
En primer lugar estableceremos un nombre y contraseña para el administrador de nuestro ownCloud. Hecho esto, abrimos el desplegable «Almacenamiento y base de datos«:
Por defecto viene seleccionado SQLite como sistema de bases de datos, pero pulsaremos en el motor de bases de datos que hemos preparado anteriormente y se nos mostrarán los campos con los datos que debemos facilitar: usuario, contraseña y base de datos.
Pulsamos en «Completar la instalación» y tras unos instantes en que el instalador prepara todos los datos inciales, aparecerá la pantalla de login en ownCloud:
Al iniciar sesión por primera vez, un aviso nos hará saber que existen clientes para prácticamente todos los sistemas operativos y dispositivos:
Al cerrar este aviso, nos encontraremos ante la típica interfaz web en la que podremos organizar los archivos y carpetas, borrar, descargar, subir, etc.
Además de poder acceder a la interfaz web de ownCloud podemos instalar un cliente en cualquier dispositivo, configurar la conexión e iniciar la sincronización de archivos.
Cómo configurar ownCloud en CentOS 7
Para configurar ownCloud en CentOS 7 editaremos su archivo config.php:
~$ sudo nano /var/www/html/owncloud/config/config.php
Y añadiremos estas 3 líneas justo antes del paréntesis de cierre al final del archivo:
... 'filelocking.enabled' => true, 'memcache.local' => '\OC\Memcache\APCu', 'memcache.locking' => '\OC\Memcache\APCu', );
Guardamos los cambios y cerramos el archivo. No será necesario hacer nada más, ownCloud usará a partir de este momento la caché y el bloqueo de archivos basado en APCu.
Mantenimiento en segundo plano de ownCloud
La plataforma necesita realizar tareas de mantenimiento en segundo plano, en principio realizadas cada vez que se visita una página de la aplicación. Pero lo recomendable es crear una tarea programada usando el servicio Cron de CentOS 7:
~$ sudo nano /etc/cron.d/owncloud
El contenido será esta única línea:
*/15 * * * * apache /usr/bin/php /var/www/html/owncloud/occ system:cron
Una vez guardados los cambios la tarea se ejecuta a intervalos regulares, pero es necesario acceder al menú de ajustes del usuario y en la sección «General» activar el mantenimiento a través del servicio Cron:
Conclusión
Ya has visto que instalar ownCloud en CentOS 7 es relativamente sencillo, al menos si desactivas SELinux. Una buena forma de tener tu propio servicio de nube.
En caso de dudas, preguntas, sugerencias, etc. puedes dejar un comentario.
¡Apoya este sitio!
Si te ha servido esta guía de instalación de ownCloud en CentOS 7 y quieres agradecérnoslo, cualquier mínima contribución para el mantenimiento de este sitio es bienvenida, y puedes hacerlo invitándonos a un café:
O dejando 1 $ de propina desde PayPal:
¡Gracias!
Qué tal, buenos días. Tengo un problema, el archivo index.php esta incompleto, por lo tanto al abrirlo en el navegador me aparece puro codigo.
Espero me puedan ayudar.
saludos
¿Qué versión de PHP estás usando? ¿Has comprobado que PHP funciona correctamente antes de intentar instalar ownCloud en CentOS 7?
Hola Instalador, gracias por la respuesta.
Estos son los permisos de la carpeta config y owncloud.
drwxrwxrwx. 2 apache apache 119 dic 31 14:59 config
El selinux está en esta situación 🙁
sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
Gracias por la info, muy bien explicada, el problema que tengo es que me aparece el siguiente error:
«Internal Server Error
The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times and include the technical details below in your report.
More details can be found in the server log.
Technical details
Remote Address: 192.168.100.238
Request ID: XgouJpL5zCfjByOQyi0OwgAAAAE
«
El LOG muestra lo siguiente:
{«reqId»:»Xgok-tOrd2H9Qe9Iv7NwAQAAAAM»,»level»:3,»time»:»2019-12-30T16:25:35+00:00″,»remoteAddr»:»192.168.100.238″,»user»:»–«,»app»:»PHP»,»method»:»GET»,»url»:»\/owncloud\/index.php»,»message»:»touch(): Unable to create file \/var\/www\/html\/owncloud\/config\/config.php because Permission denied at \/var\/www\/html\/owncloud\/lib\/private\/Config.php#280″}
Si alguien pueda orientarme en este error se los agradecería mucho!!
Parece ser un problema de permisos a la hora de querer escribir el archivo /var/www/html/owncloud/config/config.php. ¿Has desactivado SELinux?
¿Qué permisos tiene la carpeta config/ y el archivo config.php si existe? Si no hay problemas con SELinux, el usuario que corre el servidor web debería tener permisos de escritura.