GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar Nextcloud con Nginx y PHP7-FPM en CentOS 7

Nextcloud es un software gratuito (de código abierto) similar a Dropbox, una bifurcación del proyecto ownCloud. Nextcloud está escrito en PHP y JavaScript, es compatible con muchos sistemas de bases de datos como MySQL/MariaDB, PostgreSQL, Oracle Database y SQLite. Para mantener sus archivos sincronizados entre el escritorio y su propio servidor, Nextcloud proporciona aplicaciones para escritorios de Windows, Linux y Mac y una aplicación móvil para Android e iOS. Nextcloud no es solo un clon de Dropbox, ofrece funciones adicionales como Calendario, Contactos, Programar tareas y transmisión de medios con Ampache.

En este tutorial, le mostraré cómo instalar y configurar la última versión de Nextcloud 10 en un servidor CentOS 7. Ejecutaré Nextcloud con un servidor web Nginx y PHP7-FPM y usaré MariaDB como sistema de base de datos.

Requisito previo

  • CentOS 7 de 64 bits
  • Privilegios de raíz en el servidor

Paso 1:instale Nginx y PHP7-FPM en CentOS 7

Antes de comenzar con la instalación de Nginx y php7-fpm, debemos agregar el repositorio de paquetes EPEL. Instálelo con este comando yum.

yum -y install epel-release

Ahora instale Nginx desde el repositorio de EPEL.

yum -y install nginx

Luego tenemos que agregar otro repositorio para php7-fpm. Hay varios repositorios disponibles en la red que proporcionan paquetes de PHP 7, usaré webtatic aquí.

Agregue el repositorio webtatic PHP7-FPM:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

A continuación, instale PHP7-FPM y algunos paquetes adicionales para la instalación de Nextcloud.

yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json php70w-pecl-apcu php70w-pecl-apcu-devel

Finalmente, verifique la versión de PHP desde la terminal del servidor para verificar que PHP se instaló 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 el archivo de configuración predeterminado 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.

listen = 127.0.0.1:9000

Descomente la línea 366-370 para activar 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 vim.

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/

Ahora inicie php-fpm y Nginx, luego habilite los servicios para que se inicien 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

Usaré MariaDB para la base de datos de Nextcloud. Instale el paquete mariadb-server desde el repositorio de CentOS con yum.

yum -y install mariadb mariadb-server

Inicie el servicio MariaDB y agréguelo para que se ejecute en el momento del arranque.

systemctl start mariadb
systemctl enable mariadb

Ahora configure la contraseña raíz de 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 mysql shell para crear una nueva base de datos y un nuevo usuario para Nextcloud. Crearé una nueva base de datos llamada 'nextcloud_db ' y un usuario 'nextclouduser ' con contraseña '[email protected] '. ¡Elige una contraseña segura para tu 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 nextcloud_db;
create user [email protected] identified by '[email protected]';
grant all privileges on nextcloud_db.* to [email protected] identified by '[email protected]';
flush privileges;

Se ha creado la base de datos nextcloud_db con el usuario 'nextclouduser'.

Paso 4:generar un certificado SSL autofirmado para Nextcloud

En este tutorial, ejecutaré nextcloud con una conexión https para el cliente. Puede usar SSL gratuito como let's encrypt o crear un certificado SSL autofirmado. Crearé mi propio archivo de certificado SSL autofirmado con el comando OpenSSL.

Cree un nuevo directorio para el archivo SSL.

mkdir -p /etc/nginx/cert/

Y genere un nuevo archivo de certificado SSL con el comando openssl a continuación.

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/nextcloud.crt -keyout /etc/nginx/cert/nextcloud.key

Finalmente, cambie el permiso de todos los archivos de certificado a 600 con chmod.

chmod 700 /etc/nginx/cert
chmod 600 /etc/nginx/cert/*

Paso 5:descarga e instalación de Nextcloud

Descargaremos Nextcloud con wget directamente al servidor, por lo que primero debemos instalar wget. Además, necesitamos el programa de descompresión. Instale ambas aplicaciones con yum.

yum -y install wget unzip

Vaya al directorio /tmp y descargue la última versión estable de Nextcloud 10 del sitio web de Nextcloud con wget.

cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-10.0.2.zip

Extrae el archivo zip de nextcloud y mueve su contenido al directorio '/usr/share/nginx/html/'.

unzip nextcloud-10.0.2.zip
mv nextcloud/ /usr/share/nginx/html/

A continuación, vaya al directorio raíz web de Nginx y cree un nuevo directorio de 'datos' para Nextcloud.

cd /usr/share/nginx/html/
mkdir -p nextcloud/data/

Cambie el propietario del directorio 'nextcloud' al usuario y grupo 'nginx'.

chown nginx:nginx -R nextcloud/

Paso 6:configurar el host virtual de Nextcloud en Nginx

En el paso 5, descargamos el código fuente de Nextcloud y lo configuramos para que se ejecute en el servidor web Nginx. Pero aún necesitamos configurar un host virtual para Nextcloud. Cree un nuevo archivo de configuración de host virtual 'nextcloud.conf' en el directorio 'conf.d' de Nginx.

cd /etc/nginx/conf.d/
vim nextcloud.conf

Pegue la configuración del host virtual de Nextcloud a continuación.

upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}

server {
    listen 80;
    server_name cloud.nextcloud.co;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name cloud.nextcloud.co;

    ssl_certificate /etc/nginx/cert/nextcloud.crt;
    ssl_certificate_key /etc/nginx/cert/nextcloud.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=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;
    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/nextcloud/;

    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;
    }

    # 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)/ {
        deny all;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        #Avoid sending the security headers twice
        fastcgi_param modHeadersAvailable true;
        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/ =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=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;
        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 de vim.

Ahora pruebe la configuración de Nginx para asegurarse de que no haya ningún error, luego reinicie el servicio.

nginx -t
systemctl restart nginx

Paso 7:configurar SELinux y FirewallD para Nextcloud

En este tutorial, dejaremos SELinux activado en modo de aplicación, por lo que necesitamos un nuevo paquete de herramientas de administración de SELinux para configurar SELinux para Nextcloud.

Instale las herramientas de administración de SELinux con este comando.

yum -y install policycoreutils-python-utils

Luego ejecute los siguientes comandos como usuario root para permitir que Nextcloud se ejecute bajo SELinux. Recuerde cambiar el directorio de Nextcloud en caso de que use un directorio diferente.

semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/assets(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/.user.ini'

restorecon -Rv '/usr/share/nginx/html/nextcloud/'

A continuación, habilitaremos el servicio de firewalld y abriremos los puertos HTTP y HTTPS para Nextcloud.

Inicie firewalld y habilítelo para que se inicie en el momento del arranque.

systemctl start firewalld
systemctl enable firewalld

Ahora 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

Toda la configuración del servidor está hecha.

Paso 8:asistente de instalación de Nextcloud

Abra su navegador web y escriba su nombre de dominio Nextcloud, el mío es:cloud.nextcloud.co. Será redirigido a la conexión https segura.

Escriba el nombre de usuario y la contraseña de administrador que desee y, a continuación, escriba las credenciales de su base de datos. Haga clic en 'Finalizar configuración '.

Aparece el Panel de administración de Nextcloud (Administrador de archivos).

Configuración de usuario de Nextcloud.

Configuración de administrador.

Nextcloud se instaló con Nginx, PHP7-FPM y MariaDB en un servidor CentOS 7.


Cent OS
  1. Cómo instalar y configurar Nginx en CentOS 7

  2. Cómo instalar WordPress con Nginx en CentOS 7

  3. Cómo instalar y configurar Nextcloud con Apache en CentOS 7

  4. Cómo instalar phpMyAdmin con Nginx en CentOS 7

  5. Cómo instalar Nextcloud con Nginx y PHP 7.3 en CentOS 8

Cómo instalar Redmine 3 con Nginx en CentOS 7

Cómo instalar Shopware 6 con NGINX y Lets Encrypt en CentOS 8

Cómo instalar Nginx con ngx_pagespeed en CentOS

Cómo instalar OwnCloud 8 con Nginx y PHP-FPM en CentOS 6

Cómo instalar Nginx con PHP-FastCGI en CentOS 6

Cómo instalar Magento con Nginx en CentOS 7