GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer Nextcloud avec Nginx et PHP7-FPM sur CentOS 7

Nextcloud est un logiciel gratuit (Open Source) de type Dropbox, un fork du projet ownCloud. Nextcloud est écrit en PHP et JavaScript, il prend en charge de nombreux systèmes de bases de données tels que MySQL/MariaDB, PostgreSQL, Oracle Database et SQLite. Afin de garder vos fichiers synchronisés entre Desktop et votre propre serveur, Nextcloud fournit des applications pour les ordinateurs de bureau Windows, Linux et Mac et une application mobile pour Android et iOS. Nextcloud n'est pas seulement un clone de boîte de dépôt, il fournit des fonctionnalités supplémentaires telles que le calendrier, les contacts, la planification de tâches et le streaming multimédia avec Ampache.

Dans ce tutoriel, je vais vous montrer comment installer et configurer la dernière version de Nextcloud 10 sur un serveur CentOS 7. Je vais exécuter Nextcloud avec un serveur Web Nginx et PHP7-FPM et utiliser MariaDB comme système de base de données.

Prérequis

  • CentOS 7 64 bits
  • Privilèges root sur le serveur

Étape 1 - Installer Nginx et PHP7-FPM sur CentOS 7

Avant de commencer l'installation de Nginx et php7-fpm, nous devons ajouter le référentiel de packages EPEL. Installez-le avec cette commande yum.

yum -y install epel-release

Installez maintenant Nginx à partir du référentiel EPEL.

yum -y installer nginx

Ensuite, nous devons ajouter un autre référentiel pour php7-fpm. Il existe plusieurs référentiels disponibles sur le net qui fournissent des packages PHP 7, j'utiliserai webtatic ici.

Ajoutez le référentiel webtatic PHP7-FPM :

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

Ensuite, installez PHP7-FPM et quelques packages supplémentaires pour l'installation 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 

Enfin, vérifiez la version de PHP à partir du terminal du serveur pour vérifier que PHP est correctement installé.

php-v

Étape 2 - Configurer PHP7-FPM

Dans cette étape, nous allons configurer php-fpm pour qu'il s'exécute avec Nginx. Php7-fpm fonctionnera sous l'utilisateur nginx et écoutera sur le port 9000.

Modifiez le fichier de configuration par défaut de php7-fpm avec vim.

vim /etc/php-fpm.d/www.conf

Aux lignes 8 et 10, remplacez l'utilisateur et le groupe par 'nginx '.

utilisateur =nginx
groupe =nginx

À la ligne 22, assurez-vous que php-fpm s'exécute sous le port du serveur.

écouter =127.0.0.1:9000

Décommentez les lignes 366-370 pour activer les variables d'environnement système php-fpm.

env[HOSTNAME] =$HOSTNAME
env[PATH] =/usr/local/bin:/usr/bin:/bin
env[TMP] =/tmp
env[ TMPDIR] =/tmp
env[TEMP] =/tmp

Enregistrez le fichier et quittez l'éditeur vim.

Ensuite, créez un nouveau répertoire pour le chemin de la session dans le répertoire '/var/lib/' et changez le propriétaire en utilisateur 'nginx'.

mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/

Démarrez maintenant php-fpm et Nginx, puis activez les services pour qu'ils démarrent au démarrage.

sudo systemctl start php-fpm
sudo systemctl start nginx

sudo systemctl enable php-fpm
sudo systemctl enable nginx

La configuration de PHP7-FPM est terminée.

Étape 3 - Installer et configurer MariaDB

J'utiliserai MariaDB pour la base de données Nextcloud. Installez le package mariadb-server à partir du référentiel CentOS avec yum.

yum -y install mariadb mariadb-server

Démarrez le service MariaDB et ajoutez-le pour qu'il s'exécute au démarrage.

systemctl start mariadb
systemctl enable mariadb

Configurez maintenant le mot de passe root de MariaDB.

mysql_secure_installation

Tapez votre mot de passe root lorsque vous y êtes invité.

Définir le mot de passe root ? [O/n] O
Nouveau mot de passe :
Saisir à nouveau le nouveau mot de passe :

Supprimer les utilisateurs anonymes ? [O/n] O
Interdire la connexion root à distance ? [O/n] O
Supprimer la base de données de test et y accéder ? [O/n] O
Recharger les tables de privilèges maintenant ? [O/n] O

Le mot de passe root MariaDB a été défini, nous pouvons maintenant nous connecter au shell mysql pour créer une nouvelle base de données et un nouvel utilisateur pour Nextcloud. Je vais créer une nouvelle base de données nommée 'nextcloud_db ' et un utilisateur 'nextclouduser ' avec le mot de passe '[email protected] '. Choisissez un mot de passe sécurisé pour votre installation !

mysql -u root -p
Tapez le mot de passe

Tapez la requête mysql ci-dessous pour créer une nouvelle base de données et un nouvel utilisateur.

créer la base de données nextcloud_db ;
créer l'utilisateur [email protected] identifié par '[email protected]' ;
accorder tous les privilèges sur nextcloud_db.* à [email protected] identifié par '[email protected]';
flush privilèges ;

La base de données nextcloud_db avec l'utilisateur 'nextclouduser' a été créée.

Étape 4 - Générer un certificat SSL auto-signé pour Nextcloud

Dans ce tutoriel, je vais exécuter nextcloud avec une connexion https pour le client. Vous pouvez utiliser un protocole SSL gratuit tel que let's encrypt ou créer un certificat SSL auto-signé. Je vais créer mon propre fichier de certificat SSL auto-signé avec la commande OpenSSL.

Créez un nouveau répertoire pour le fichier SSL.

mkdir -p /etc/nginx/cert/

Et générez un nouveau fichier de certificat SSL avec la commande openssl ci-dessous.

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

Enfin, changez l'autorisation de tous les fichiers de certificat en 600 avec chmod.

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

Étape 5 - Télécharger et installer Nextcloud

Nous allons télécharger Nextcloud avec wget directement sur le serveur, nous devons donc d'abord installer wget. De plus, nous avons besoin du programme de décompression. Installez les deux applications avec yum.

yum -y install wget unzip

Accédez au répertoire /tmp et téléchargez la dernière version stable de Nextcloud 10 à partir du site Web Nextcloud avec wget.

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

Extrayez le fichier zip nextcloud et déplacez son contenu dans le répertoire '/usr/share/nginx/html/'.

décompressez nextcloud-10.0.2.zip
mv nextcloud/ /usr/share/nginx/html/

Ensuite, accédez au répertoire racine Web de Nginx et créez un nouveau répertoire "data" pour Nextcloud.

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

Remplacez le propriétaire du répertoire 'nextcloud' par l'utilisateur et le groupe 'nginx'.

chown nginx:nginx -R nextcloud/

Étape 6 - Configurer l'hôte virtuel Nextcloud dans Nginx

À l'étape 5, nous avons téléchargé le code source de Nextcloud et l'avons configuré pour qu'il s'exécute sous le serveur Web Nginx. Mais nous devons encore configurer un hôte virtuel pour Nextcloud. Créez un nouveau fichier de configuration d'hôte virtuel 'nextcloud.conf' dans le répertoire Nginx 'conf.d'.

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

Collez la configuration de l'hôte virtuel Nextcloud ci-dessous.

gestionnaire php en amont {
    serveur 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}

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

serveur {
    écouter 443 ssl ;
    nom_serveur cloud.nextcloud.co ;

    certificat_ssl /etc/nginx/cert/nextcloud.crt ;
    ssl_certificate_key /etc/nginx/cert/nextcloud.key ;

    # Ajoutez des en-têtes pour servir les en-têtes liés à la sécurité
    # Avant d'activer les en-têtes Strict-Transport-Security, veuillez lire ceci
# sujet en premier.
    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;

    # Chemin vers la racine de votre installation
    root /usr/share/nginx/html/nextcloud/;

    location =/robots.txt {
        tout autoriser ;
        log_not_found off ;
        access_log off ;
    }

# Les 2 règles suivantes ne sont nécessaires que pour l'application user_webfinger.
    # Décommentez-la si vous prévoyez d'utiliser cette application.
    #rewrite ^/.well-known/host-meta /public.php ?service=host-meta dernier ;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
    # dernier ;

    location =/.well-known/carddav {
      return 301 $scheme://$host/remote.php/dav;
    }
    location =/.well-known/ caldav {
      return 301 $scheme://$host/remote.php/dav ;
    }

    # définir la taille de téléchargement maximale
    client_max_body_size 512M ;
    fastcgi_buffers 64 4K ;

    # Désactivez gzip pour éviter e suppression de l'en-tête ETag
    gzip off ;

    # Décommentez si votre serveur est construit avec le module ngx_pagespeed
    # Ce module n'est actuellement pas pris en charge.
    #pagespeed désactivé ;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
        réécrire ^ /index.php$uri;
    }

    emplacement ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
tout refuser ;
    }
    emplacement ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        tout refuser ;
    }

    emplacement ~ ^/(?: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 activé ;
        #Évitez d'envoyer deux fois les en-têtes de sécurité
        fastcgi_param modHeadersAvailable true ;
        fastcgi_param front_controller_active true ;
        fastcgi_pass php-handler ;
        fastcgi_intercept_ /errors on ;
        fastcgi_intercept_ /errors on ;>        fastcgi_request_buffering désactivé ;
    }

    emplacement ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri/ =404 ;
        index index.php;
    }

    # Ajout de l'en-tête de contrôle du cache pour les fichiers js et css
    # Assurez-vous qu'il se trouve EN DESSOUS du bloc PHP
    emplacement ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        # Ajoutez des en-têtes pour servir les en-têtes liés à la sécurité (il est prévu de
        # ceux dupliqués avec ceux ci-dessus)
        # Avant d'activer les en-têtes Strict-Transport-Security, veuillez lire
        # ce sujet en premier.
        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 ;
        # Facultatif :ne pas enregistrer l'accès aux ressources
        access_log off ;
    }

    emplacement ~* \.(?:svg|gif|png|html|ttf|woff|ico |jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args ;
        # Facultatif :Ne pas enregistrer l'accès aux autres ressources
        access_log off ;
    }
}

Enregistrez le fichier et quittez vim.

Testez maintenant la configuration de Nginx pour vous assurer qu'il n'y a pas d'erreur, puis redémarrez le service.

nginx -t
systemctl redémarre nginx

Étape 7 - Configurer SELinux et FirewallD pour Nextcloud

Dans ce didacticiel, nous laisserons SELinux en mode d'application, nous avons donc besoin d'un nouveau package d'outils de gestion SELinux pour configurer SELinux pour Nextcloud.

Installez les outils de gestion SELinux avec cette commande.

yum -y install policycoreutils-python-utils

Exécutez ensuite les commandes ci-dessous en tant qu'utilisateur root pour permettre à Nextcloud de s'exécuter sous SELinux. N'oubliez pas de changer le répertoire Nextcloud au cas où vous utiliseriez un autre répertoire.

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/ '

Ensuite, nous allons activer le service firewalld et ouvrir les ports HTTP et HTTPS pour Nextcloud.

Démarrez firewalld et activez-le pour qu'il démarre au démarrage.

systemctl start firewalld
systemctl enable firewalld

Ouvrez maintenant les ports HTTP et HTTPS avec la commande firewall-cmd, puis rechargez le pare-feu.

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Toute la configuration du serveur est terminée.

Étape 8 - Assistant d'installation de Nextcloud

Ouvrez votre navigateur Web et saisissez votre nom de domaine Nextcloud, le mien est :cloud.nextcloud.co. Vous serez redirigé vers la connexion https sécurisée.

Saisissez le nom d'utilisateur et le mot de passe de votre choix, puis saisissez les informations d'identification de votre base de données. Cliquez sur 'Terminer la configuration '.

Le tableau de bord d'administration Nextcloud (gestionnaire de fichiers) apparaît.

Paramètres utilisateur Nextcloud.

Paramètres d'administration.

Nextcloud a été installé avec Nginx, PHP7-FPM et MariaDB sur un serveur CentOS 7.


Cent OS
  1. Comment installer et configurer Nginx sur CentOS 7

  2. Comment installer WordPress avec Nginx sur CentOS 7

  3. Comment installer et configurer Nextcloud avec Apache sur CentOS 7

  4. Comment installer phpMyAdmin avec Nginx sur CentOS 7

  5. Comment installer Nextcloud avec Nginx et PHP 7.3 sur CentOS 8

Comment installer Redmine 3 avec Nginx sur CentOS 7

Comment installer Shopware 6 avec NGINX et Lets Encrypt sur CentOS 8

Comment installer Nginx avec ngx_pagespeed sur CentOS

Comment installer OwnCloud 8 avec Nginx et PHP-FPM sur CentOS 6

Comment installer Nginx avec PHP-FastCGI sur CentOS 6

Comment installer Magento avec Nginx sur CentOS 7