Instale y configure ownCloud 9.1.4 en openSUSE Leap 42.2
Introducción
ownCloud es un software de código abierto para sincronizar y compartir archivos, al igual que Dropbox. Con solo colocar los archivos en un directorio compartido local, esos archivos se sincronizarán inmediatamente con el servidor y con otros dispositivos utilizando el cliente de sincronización de escritorio ownCloud, la aplicación de Android o la aplicación de iOS.
Este tutorial explica cómo instalar y configurar el lado del servidor de ownCloud en openSUSE 42.2.
Empezando
En primer lugar, instale SuSEfirewall2. Este es un script que genera reglas de iptables a partir de configuraciones almacenadas en
/etc/sysconfig/SuSEfirewall2
. Instálalo con zypper:
zypper in SuSEfirewall2
También hay un módulo de configuración de YaST, pero no le permite configurar todos los ajustes del firewall, por lo que es necesario editar manualmente el archivo de configuración:
$EDITOR /etc/sysconfig/SuSEfirewall2
Allí busca
FW_SERVICES_EXT_TCP
línea y cambiar de la siguiente manera:
FW_SERVICES_EXT_TCP="22 80 443"
Estos son: puertos ssh, http y https.
Guardar y Salir.
A continuación, inícielo y habilítelo para que se inicie en el momento del arranque:
systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2
Reanudar
sshd
:
systemctl restart sshd
Instalar NGINX
NGINX también está disponible en los repositorios de openSUSE, por lo que:
zypper in nginx
Inicie y habilítelo:
systemct start nginx
systemctl enable nginx
Instalación de MariaDB
En cuanto a NGINX, MariaDB también está disponible como paquete openSUSE, por lo que:
zypper in mariadb mariadb-client
Próximo :
systemctl start mysqld
systemctl enable mysqld
Configure su cuenta raíz:
mysql_secure_installation
Enter current password for root (enter for none):
Set root password? [Y/n]
New password:
Re-enter new password:
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Reload privilege tables now? [Y/n]
Ahora es posible iniciar sesión en el shell MariaDB y crear una nueva base de datos y un usuario que se utilizará para ownCloud:
mysql -u root -p
En el shell del sistema de base de datos:
mysql> CREATE DATABASE myownclouddb;
mysql> CREATE USER 'ocuser'@'localhost' IDENTIFIED BY 'user_strong_password';
mysql> GRANT ALL PRIVILEGES ON 'myownclouddb.*' TO 'ocuser'@'localhost' IDENTIFIED BY 'user_strong_password';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
Ahora MariaDB está configurada correctamente para ownCloud.
Instalar PHP-FPM
ownCloud requiere PHP 5.4+. Instale PHP-FPM, que es una alternativa a FastCGI útil cuando se manejan sitios con muchos visitantes. En esta guía usaremos PHP7.
A través de zypper:
zypper in php7-fpm php7-gd php7-mysql php7-mcrypt php7-curl php7-pear php7-zip php7-json php7-ldap
A continuación, copie el archivo de configuración predeterminado php-fpm, ejecutando los siguientes comandos:
cd /etc/php7/fpm
cp php-fpm.conf.default php-fpm.conf
Abra ese archivo con un editor de texto:
$EDITOR php-fpm.conf
Allí, busque (y modifique de la siguiente manera) las siguientes líneas:
error_log = log/php-fpm.log
user = nginx
group = nginx
listen = /var/run/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Guardar y salir.
Ahora modifica
php.ini
:
$EDITOR /etc/php7/cli/php.ini
Descomente la línea 761 y cambie su valor:
cgi.fix_pathinfo=0
Guarde, salga y copie este archivo a
conf.d
:
cp php.ini /etc/php7/conf.d/
El directorio de sesión de PHP7 es
/var/lib/php7
. Cambie su propietario a usuario nginx:
chown -R nginx:nginx /var/lib/php7/
Configure NGINX para que funcione con PHP-FPM
Cree un nuevo archivo de configuración de NGINX, haciendo una copia de seguridad del anterior:
cd /etc/nginx
cp nginx.conf nginx.conf.bk
$EDITOR nginx.conf
En la línea 65, agregue la siguiente configuración:
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;
}
Guarde, salga y pruebe nginx:
nginx -t
Deberías leer las siguientes líneas:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Al final:
systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx
Instalar ownCloud
Vaya al directorio raíz web, que es
/srv/www
, y allí descarga ownCloud:
wget https://download.owncloud.org/community/owncloud-9.1.4.tar.bz2
Extrae el archivo:
tar xf owncloud-9.1.4.tar.bz2
En el
owncloud
carpeta extraída, cree un nuevo directorio de datos y cambie su propietario al usuario nginx:
mkdir owncloud/data
chown -R nginx:nginx owncloud/
Configurar un host virtual para ownCloud
El siguiente paso es configurar un Host virtual en NGINX para ownCloud.
mkdir /etc/nginx/vhosts.d && cd /etc/nginx/vhosts.d
Allí, crea un nuevo archivo:
$EDITOR owncloud.conf
Pegue el siguiente contenido en ese archivo:
upstream php-handler {
#server 127.0.0.1:9000;
server unix:/var/run/php-fpm.sock;
}
server {
listen 80; # If you have a SSL certificate (Recommended), change this line with "listen 443 ssl;" and add certificate lines;
server_name storage.mydomain.com;
# 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;
}
}
Guardar, salir y reiniciar servicios:
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql
Conclusiones
El lado del servidor ahora está bien configurado. El último paso es ir con un navegador web a: http://almacenamiento.midominio.com y finalizar una configuración gráfica. ¡Al final de este proceso, tu panel de control ownCloud estará completamente disponible!