ownCloud es una aplicación para compartir archivos OpenSource basada en el lenguaje de programación PHP. OwnCloud proporciona sincronización y uso compartido de archivos autohospedados con una interfaz web agradable y aplicaciones de sincronización para todas las principales plataformas móviles y de escritorio con funciones como dropbox, mega, etc. ownCloud facilita el acceso y la sincronización de archivos, calendarios y contactos en su dispositivos.
En este tutorial, lo guiaré para crear su propia plataforma de servidor de sincronización y uso compartido con ownCloud. Instalaremos ownCloud con Nginx como servidor web, MariaDB (una bifurcación de MySQL) como base de datos y php-fpm para manejar la solicitud de php en Linux OpenSUSE Leap 42.1.
Requisito previo
- OpenSUSE Leap 42.1
- Privilegios de raíz
- Comprender el comando zypper
Paso 1:instalar SuSEfirewall2
SuSEfirewall es un script de firewall que almacena su configuración en el archivo "/etc/sysconfig/SuSEfirewall2". Con SuSEfirewall2, puede abrir puertos editando el archivo "SuSEfirewall2".
Instale SuSEfirewall2 con el comando zypper:
zypper in SuSEfirewall2
Cuando el firewall esté instalado, vaya al directorio sysconfig y edite la configuración "SuSEfirewall2" con vim:
cd /etc/sysconfig/
vim SuSEfirewall2
Vaya a la línea 253 y agregue los puertos de todos los servicios que desea utilizar. En este paso, agregaré los puertos:ssh, http y https.
FW_SERVICES_EXT_TCP="22 80 443"
Guarde el archivo y salga del editor.
A continuación, inicie SuSEfirewall2 y permita que se ejecute en el momento del arranque:
systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2
Ahora reinicie el servicio sshd:
systemctl restart sshd
Si desea probar el puerto del servidor SSH, puede usar el comando telnet para conectarse al puerto 22:
telnet 192.168.1.101 22
Paso 2:instalar Nginx
Nginx es un servidor web liviano con poca memoria y bajo consumo de CPU. Usaremos nginx como servidor web para nuestra instalación ownCloud.
Instale nginx con el comando zypper:
zypper in nginx
Inicie nginx y permita que se ejecute en el arranque con el comando systemctl:
systemctl start nginx
systemctl enable nginx
A continuación, agregue un archivo index.html para probar si nginx funciona.
echo "This is Nginx Page OpenSUSE Leap" > /srv/www/htdocs/index.html
Ahora puede acceder al servidor web nginx desde su navegador web, o puede verificarlo con curl:
curl -I 192.168.1.101
curl 192.168.1.101
Paso 3:instalar y configurar MariaDB
MariaDB es una bifurcación basada en OpenSource RDBMS de la base de datos MySQL. En este paso, instalaremos y configuraremos MariaDB. Luego crearemos un nuevo usuario y base de datos para la instalación de ownCloud.
Instale MariaDB con el siguiente comando zypper:
zypper in mariadb mariadb-client
Ahora inicie MariaDB y agréguelo al inicio del sistema:
systemctl start mysql
systemctl enable mysql
Se ha iniciado MariaDB, ahora puede configurar la contraseña raíz para MariaDB con el siguiente comando:
mysql_secure_installation
Establezca la contraseña de 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 contraseña raíz de MariaDB ha sido configurada. Ahora podemos iniciar sesión en el shell de MariaDB/MySQL y crear una nueva base de datos y un nuevo usuario para ownCloud.
Inicie sesión en el shell de MariaDB/MySQL:
mysql -u root -p
TYPE your password
Cree una nueva base de datos "owncloud_db" y un nuevo usuario "ownclouduser" con la contraseña "[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
Se ha creado la base de datos para la instalación de ownCloud.
Paso 4:instalar y configurar PHP-FPM
PHP-FPM (FastCGI Process Manager) es una alternativa moderna de FastCGI para manejar sitios con muchos visitantes. PHP-FPM tiene una gestión de procesos avanzada y es fácil de administrar y configurar.
En este paso, instalaremos php-fpm y algunas extensiones de PHP, luego configuraremos el servidor web nginx para manejar solicitudes de archivos php a través de php-fpm.
Instale php-fpm con este comando "zypper in":
zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json
Cuando se complete la instalación, vaya al directorio php-fpm y copie el archivo de configuración predeterminado:
cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf
Edite el archivo php-fpm.conf con el editor vim o nano:
vim php-fpm.conf
Descomente la línea 32 para habilitar el registro de php-fpm. Si hay un error más adelante en sus scripts PHP, puede encontrar el archivo de registro en el directorio "/var/log/".
error_log = log/php-fpm.log
Cambie la línea 148 - 149 a "nginx" para el usuario/grupo Unix de los procesos.
user = nginx
group = nginx
Cambie el valor en la línea 159 para ejecutar php-fpm con un archivo de socket.
listen = /var/run/php-fpm.sock
Descomente y cambie el valor en las líneas 170 - 172 para establecer los permisos del socket de Unix.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Guarde el archivo y salga del editor.
A continuación, edite el archivo php.ini en el directorio cli:
cd /etc/php5/cli/
vim php.ini
Descomente y cambie el valor en la línea 758:
cgi.fix_pathinfo=0
Guardar y salir.
Copie el archivo php.ini al directorio conf.d:
cp php.ini /etc/php5/conf.d/
Ahora configure la ruta del controlador de sesión de php. En este tutorial, ejecutamos php-fpm como usuario de nginx, así que asegúrese de que el usuario de nginx pueda escribir en el directorio de sesiones. Puede ver la configuración de la ruta de la sesión en el archivo php.ini en la línea 1390.
session.save_path = "/var/lib/php5"
Cambie el propietario del directorio de la sesión "/var/lib/php5/", haga que el usuario nginx sea el propietario del directorio:
chown -R nginx:nginx /var/lib/php5/
A continuación, configure php-fpm para que funcione con el servidor web nginx. Vaya al directorio de configuración de nginx y haga una copia de seguridad del archivo nginx.conf antes de editar la configuración.
cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf
Agregue la siguiente configuración nueva en la línea 65:esta configuración manejará todas las solicitudes de archivos 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;
}
Guarde y salga, y luego pruebe la configuración de nginx para asegurarse de que no haya ningún error en la configuración:
nginx -t
Si no hay ningún error, puede ver los resultados a continuación:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ahora inicie php-fpm y agréguelo a stat en el momento del arranque, luego reinicie el servicio nginx:
systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx
Nginx y php-fpm están configurados, puede probar el archivo php creando un nuevo archivo phpinfo() en el directorio raíz web:
cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php
Abra su navegador y visite la IP del servidor:
http://192.168.1.101/info.php
o puedes usar curl:
curl -I 192.168.1.101/info.php
Paso 5 - Generar certificado SSL
Ejecutar ownCloud a través de una conexión https segura es muy importante para mantener sus archivos seguros y privados. Si ejecuta ownCloud en su propia empresa, puede comprar el certificado SSL o, si desea un certificado SSL gratuito, puede usar Let's-encrypt. Aquí crearé un certificado SSL llamado "autofirmado", el cifrado de un certificado autofirmado no es inferior al de un certificado oficial, pero deberá aceptar una advertencia de seguridad en su navegador cuando acceda al servicio por primera vez. .
Cree un nuevo directorio "ssl" y genere el certificado con el 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
A continuación, cambie los permisos de la clave:
chmod 600 example-owncloud.key
Paso 6:instalar y configurar ownCloud
En este paso, instalaremos ownCloud y configuraremos un nuevo host virtual nginx para el dominio ownCloud. Instalaremos owncloud con el nombre de dominio "example-owncloud.co", y el archivo raíz web en el directorio "/srv/www/owncloud/".
Descargar ownCloud
Vaya al directorio "/srv/www/" y descargue el código fuente de ownCloud y extráigalo:
cd /srv/www/
wget https://download.owncloud.org/community/owncloud-9.0.2.zip
unzip owncloud-9.0.2.zip
Ahora cree un nuevo directorio de datos en el directorio owncloud para almacenar todos los datos del usuario. Cambie el propietario del directorio ownCloud al usuario nginx:
mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/
Configurar un host virtual Nginx para ownCloud
Vaya al directorio nginx y cree un nuevo directorio para la configuración del archivo de host virtual:
cd /etc/nginx/
mkdir vhosts.d/
Vaya al directorio vhosts.d y cree un nuevo archivo de host virtual para owncloud "example-owncloud.conf".
cd vhosts.d/
vim example-owncloud.conf
pegue la configuración a continuación:
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;
}
}
Guarde el archivo y salga del editor.
Pruebe la configuración de nginx y no olvide reiniciar todos los servicios:
nginx -t
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql
Pruebas
Visite el dominio owncloud:
ejemplo-owncloud.co
Será redirigido a la conexión https.
A continuación, escriba su usuario y contraseña de administrador, el nombre de la base de datos, el usuario y la contraseña y haga clic en "Finalizar configuración".
Espere un segundo y verá el administrador de archivos owncloud:
La instalación de ownCloud con nginx y MariaDB en OpenSUSE Leap 42.1 ha finalizado.
Referencias
- 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/