GNU/Linux >> Tutoriales Linux >  >> OpenSuse

Cómo instalar ownCloud 9 con Nginx en OpenSUSE Leap 42.1

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/


OpenSuse
  1. Cómo instalar Mongodb 5 en Opensuse Leap 15.3

  2. Cómo instalar Mysql Server 8 en OpenSUSE Leap 15.3

  3. Cómo instalar y configurar Redis 6 en OpenSUSE Leap 15.3

  4. Cómo instalar Java 17 en OpenSUSE Leap 15.3

  5. Cómo instalar y configurar Nginx como proxy OpenSUSE Leap 15.3

Cómo instalar TeamViewer 12 en openSUSE Leap 42.2

Cómo instalar Dropbox en openSUSE Leap 42.2

Cómo instalar RabbitMQ en OpenSUSE Leap 15.3

Cómo instalar Google Chrome en openSUSE Leap 15

Cómo instalar PHP 8.0 en openSUSE 15 Leap

Cómo instalar el navegador Tor en openSUSE Leap 15