GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare Nextcloud con Nginx e PHP7-FPM su CentOS 7

Nextcloud è un software gratuito (Open Source) simile a Dropbox, un fork del progetto ownCloud. Nextcloud è scritto in PHP e JavaScript, supporta molti sistemi di database come MySQL/MariaDB, PostgreSQL, Oracle Database e SQLite. Per mantenere i tuoi file sincronizzati tra Desktop e il tuo server, Nextcloud fornisce applicazioni per desktop Windows, Linux e Mac e un'app mobile per Android e iOS. Nextcloud non è solo un clone di dropbox, ma fornisce funzionalità aggiuntive come Calendario, Contatti, Pianifica attività e streaming di contenuti multimediali con Ampache.

In questo tutorial, ti mostrerò come installare e configurare l'ultima versione di Nextcloud 10 su un server CentOS 7. Eseguirò Nextcloud con un server web Nginx e PHP7-FPM e userò MariaDB come sistema di database.

Prerequisito

  • CentOS 7 a 64 bit
  • Privilegi di root sul server

Passaggio 1:installa Nginx e PHP7-FPM su CentOS 7

Prima di iniziare con l'installazione di Nginx e php7-fpm, dobbiamo aggiungere il repository del pacchetto EPEL. Installalo con questo comando yum.

yum -y install epel-release

Ora installa Nginx dal repository EPEL.

yum -y install nginx

Quindi dobbiamo aggiungere un altro repository per php7-fpm. Ci sono diversi repository disponibili in rete che forniscono pacchetti PHP 7, userò webtatic qui.

Aggiungi il repository webtatic PHP7-FPM:

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

Quindi, installa PHP7-FPM e alcuni pacchetti aggiuntivi per l'installazione di 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

Infine, controlla la versione di PHP dal terminale del server per verificare che PHP sia installato correttamente.

php -v

Passaggio 2 - Configura PHP7-FPM

In questo passaggio, configureremo php-fpm per l'esecuzione con Nginx. Php7-fpm verrà eseguito sotto l'utente nginx e sarà in ascolto sulla porta 9000.

Modifica il file di configurazione php7-fpm predefinito con vim.

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

Nella riga 8 e 10, cambia utente e gruppo in "nginx '.

user = nginx
group = nginx

Nella riga 22, assicurati che php-fpm sia in esecuzione nella porta del server.

listen = 127.0.0.1:9000

Decommentare la riga 366-370 per attivare le variabili d'ambiente di sistema php-fpm.

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

Salva il file ed esci dall'editor di vim.

Quindi, crea una nuova directory per il percorso della sessione nella directory '/var/lib/' e cambia il proprietario nell'utente 'nginx'.

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

Ora avvia php-fpm e Nginx, quindi abilita l'avvio dei servizi all'avvio.

sudo systemctl start php-fpm
sudo systemctl start nginx

sudo systemctl enable php-fpm
sudo systemctl enable nginx

La configurazione di PHP7-FPM è terminata.

Fase 3 - Installa e configura MariaDB

Userò MariaDB per il database Nextcloud. Installa il pacchetto mariadb-server dal repository CentOS con yum.

yum -y install mariadb mariadb-server

Avvia il servizio MariaDB e aggiungilo per l'esecuzione all'avvio.

systemctl start mariadb
systemctl enable mariadb

Ora configura la password di root di MariaDB.

mysql_secure_installation

Digita la tua password di root quando richiesto.

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

La password di root di MariaDB è stata impostata, ora possiamo accedere alla shell mysql per creare un nuovo database e un nuovo utente per Nextcloud. Creerò un nuovo database chiamato 'nextcloud_db ' e un utente 'nextclouduser ' con password '[email protetta] '. Scegli una password sicura per la tua installazione!

mysql -u root -p
Type Password

Digita la query MySQL di seguito per creare un nuovo database e un nuovo utente.

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;

Il database nextcloud_db con l'utente 'nextclouduser' è stato creato.

Passaggio 4:genera un certificato SSL autofirmato per Nextcloud

In questo tutorial, eseguirò nextcloud con una connessione https per il client. Puoi utilizzare SSL gratuito, ad esempio crittografiamo o creiamo un certificato SSL autofirmato. Creerò il mio file di certificato SSL autofirmato con il comando OpenSSL.

Crea una nuova directory per il file SSL.

mkdir -p /etc/nginx/cert/

E genera un nuovo file di certificato SSL con il comando openssl di seguito.

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

Infine, cambia l'autorizzazione di tutti i file di certificato su 600 con chmod.

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

Passaggio 5:scarica e installa Nextcloud

Scaricheremo Nextcloud con wget direttamente sul server, quindi dobbiamo prima installare wget. Inoltre, abbiamo bisogno del programma di decompressione. Installa entrambe le applicazioni con yum.

yum -y install wget unzip

Vai alla directory /tmp e scarica l'ultima versione stabile di Nextcloud 10 dal sito Web di Nextcloud con wget.

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

Estrai il file zip di nextcloud e sposta il suo contenuto nella directory '/usr/share/nginx/html/'.

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

Quindi, vai alla directory principale web di Nginx e crea una nuova directory "dati" per Nextcloud.

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

Cambia il proprietario della directory 'nextcloud' nell'utente e nel gruppo 'nginx'.

chown nginx:nginx -R nextcloud/

Passaggio 6:configurazione dell'host virtuale Nextcloud in Nginx

Nel passaggio 5 abbiamo scaricato il codice sorgente di Nextcloud e l'abbiamo configurato per essere eseguito sul server web Nginx. Ma dobbiamo ancora configurare un host virtuale per Nextcloud. Crea un nuovo file di configurazione dell'host virtuale 'nextcloud.conf' nella directory 'conf.d' di Nginx.

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

Incolla la configurazione dell'host virtuale Nextcloud di seguito.

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

Salva il file ed esci da vim.

Ora prova la configurazione di Nginx per assicurarti che non ci siano errori,s- Quindi riavvia il servizio.

nginx -t
systemctl restart nginx

Passaggio 7 - Configura SELinux e FirewallD per Nextcloud

In questo tutorial, lasceremo SELinux in modalità enforcing, quindi abbiamo bisogno di un nuovo pacchetto di strumenti di gestione SELinux per configurare SELinux per Nextcloud.

Installa gli strumenti di gestione di SELinux con questo comando.

yum -y install policycoreutils-python-utils

Quindi esegui i comandi seguenti come utente root per consentire a Nextcloud di essere eseguito sotto SELinux. Ricordati di cambiare la directory Nextcloud nel caso utilizzi una directory diversa.

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

Successivamente, abiliteremo il servizio firewalld e apriremo le porte HTTP e HTTPS per Nextcloud.

Avvia firewalld e abilitalo all'avvio all'avvio.

systemctl start firewalld
systemctl enable firewalld

Ora apri le porte HTTP e HTTPS con il comando firewall-cmd, quindi ricarica il firewall.

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

Tutta la configurazione del server è completata.

Passaggio 8 - Installazione guidata di Nextcloud

Apri il tuo browser web e digita il tuo nome di dominio Nextcloud, il mio è:cloud.nextcloud.co. Verrai reindirizzato alla connessione https sicura.

Digita il nome utente e la password dell'amministratore desiderati, quindi digita le credenziali del database. Fai clic su "Termina configurazione '.

Viene visualizzata la dashboard di amministrazione di Nextcloud (Gestione file).

Impostazioni utente Nextcloud.

Impostazioni amministratore.

Nextcloud è stato installato con Nginx, PHP7-FPM e MariaDB su un server CentOS 7.


Cent OS
  1. Come installare e configurare Nginx su CentOS 7

  2. Come installare WordPress con Nginx su CentOS 7

  3. Come installare e configurare Nextcloud con Apache su CentOS 7

  4. Come installare phpMyAdmin con Nginx su CentOS 7

  5. Come installare Nextcloud con Nginx e PHP 7.3 su CentOS 8

Come installare Redmine 3 con Nginx su CentOS 7

Come installare Shopware 6 con NGINX e Lets Encrypt su CentOS 8

Come installare Nginx con ngx_pagespeed su CentOS

Come installare OwnCloud 8 con Nginx e PHP-FPM su CentOS 6

Come installare Nginx con PHP-FastCGI su CentOS 6

Come installare Magento con Nginx su CentOS 7