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

Come installare Nextcloud con Nginx e PHP 7.3 su CentOS 8

Nextcloud è un software simile a un dropbox gratuito (open source), un fork del progetto ownCloud. Nextcloud è scritto in PHP e JavaScript, supporta molti sistemi di database come MySQL/MariaDB, PostgreSQL, database Oracle e SQLite.

Per mantenere i tuoi file sincronizzati tra desktop e server, Nextcloud offre applicazioni per desktop Windows, Linux e Mac e un'applicazione mobile per Android e iOS.

In questo tutorial, ti mostriamo come installare Nextcloud 17 con il server web Nginx, PHP 7.3 e il database MariaDB su un server CentOS 8. Installeremo Nextcloud e lo proteggeremo con un certificato SSL Let's Encrypt gratuito.

Prerequisito

Per questa guida, installeremo Nextcloud sul server CentOS 8 con 2 GB di RAM, 25 GB di spazio libero e 2 CPU.

Cosa faremo:

  • Installa il server Web Nginx
  • Installa PHP-FPM 7.3
  • Configura PHP-FPM 7.3
  • Installa e configura il database MariaDB
  • Genera SSL Letsencrypt
  • Scarica Nextcloud 17
  • Configura Nginx Virtualhost per Nextcloud
  • Imposta SELinux per Nextcloud
  • Post-installazione di Nextcloud

Passaggio 1:installa Nginx

Innanzitutto, installeremo il server web Nginx sul server CentOS 8 e apriremo la porta HTTP e HTTPS sul firewalld.

Installa Nginx dal repository AppStream utilizzando il comando dnf di seguito.

sudo dnf install nginx

Una volta completata l'installazione, avvia il servizio nginx e aggiungilo all'avvio del sistema.

systemctl start nginx
systemctl enable nginx

Ora controlla lo stato del servizio nginx usando il comando seguente.

systemctl status nginx

Avrai il servizio nginx attivo e funzionante sul server CentOS 8.

Successivamente, aggiungeremo i servizi HTTP e HTTPS al firewalld.

Aggiungi i servizi HTTP e HTTPS al firewalld utilizzando il comando firewall-cmd riportato di seguito.

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

Dopodiché, ricarica i servizi firewalld.

firewall-cmd --reload

Di conseguenza, hai installato correttamente il server web Nginx e hai aperto le porte HTTP e HTTPS sul server CentOS 8.

Passaggio 2 - Installa PHP-FPM

In base ai requisiti di sistema di Nextcloud, si consiglia di utilizzare PHP 7.2 o PHP 7.3 per la sua installazione.

Per questa guida utilizzeremo PHP 7.3 che può essere installato dal repository REMI.

Prima di andare oltre, abiliteremo il repository "PowerTools" e aggiungeremo i repository EPEL e REMI per il server CentOS 8.

Esegui il comando dnf di seguito.

sudo dnf config-manager --set-enabled PowerTools
sudo dnf install epel-release
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Ora controlla tutti i repository disponibili sul sistema.

dnf repolist

E otterrai il risultato come di seguito.

Hai abilitato il repository "PowerTools" e aggiunto i repository EPEL e REMI per CentOS 8.

Successivamente, abiliteremo il repository REMI di PHP 7.3.

Controlla tutti i moduli disponibili per i pacchetti PHP.

dnf module list php

Ora abilita il modulo del repository REMI di PHP 7.3.

dnf module enable php:remi-7.3

Successivamente, installa i pacchetti PHP e PHP-FPM 7.3 per Nextcloud utilizzando il comando dnf di seguito.

sudo dnf install php-fpm php-cli php-devel php-gd php-mysqlnd php-pear php-xml php-mbstring php-pdo php-json php-pecl-apcu php-pecl-apcu-devel php-pecl-imagick-devel php-intl php-opcache php-zip

E hai installato PHP e PHP-FPM 7.3 sul sistema CentOS 8.

Passaggio 3 - Configura PHP-FPM 7.3

In questo passaggio, imposteremo PHP-FPM per la distribuzione di Nextcloud.

Modifica la configurazione 'php.ini' usando il comando seguente.

vim /etc/php.ini

Decommenta e modifica la configurazione come di seguito.

memory_limit = 512M
date.timezone = Asia/Jakarta
cgi.fixpathinfo = 0

Salva e chiudi.

Ora modifica la configurazione di PHP opcache '/etc/php.d/10-opcache.ini'.

vim /etc/php.d/10-opcache.ini

Modifica la configurazione come di seguito.

opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Salva e chiudi.

Quindi, modifica la configurazione PHP-FPM '/etc/php-fpm.d/www.conf'.

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

Cambia 'utente' e 'gruppo' in 'nginx'.

user = nginx
group = nginx

Modifica la configurazione "ascolta" nel file sock come di seguito.

listen = /run/php-fpm/www.sock

Decommenta la variabile d'ambiente PHP di seguito.

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

Decommenta la configurazione di opcache nell'ultima riga.

php_value[opcache.file_cache] = /var/lib/php/opcache

Salva e chiudi.

Ora crea una nuova directory per la sessione PHP e opcache, quindi cambia il proprietario di quelle directory in utente e gruppo 'nginx'.

mkdir -p /var/lib/php/{session,opcache}
chown -R nginx:nginx /var/lib/php/{session,opcache}

E hai completato la configurazione PHP-FPM per l'installazione di Nextcloud.

Avvia il servizio PHP-FPM e aggiungilo all'avvio del sistema.

systemctl enable php-fpm
systemctl start php-fpm

Ora controlla il file sock PHP-FPM e lo stato del servizio.

netstat -pl | grep php
systemctl status php-fpm

E otterrai il risultato come di seguito.

Di conseguenza, PHP-FPM è attivo e funzionante nel file sock '/run/php-fpm/www.sock'.

Fase 4 - Installa e configura MariaDB

In questo passaggio, installeremo il server del database MariaDB, imposteremo l'autenticazione della password di root e creeremo un nuovo database e un nuovo utente per Nextcloud.

Installa il database MariaDB utilizzando il comando dnf di seguito.

sudo dnf install mariadb mariadb-server

Una volta completata l'installazione, avvia il servizio MariaDB e aggiungilo all'avvio del sistema.

systemctl start mariadb
systemctl enable mariadb

E il servizio MariaDB è attivo e funzionante.

Successivamente, imposteremo l'autenticazione della password di root utilizzando il comando 'mysql_secure_installation' di seguito.

mysql_secure_installation

Digita la tua password di root e digita "Y" per il resto della configurazione.

Set a root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

E la password di root di MariaDB è stata configurata.

Ora accedi alla shell MySQL usando il comando mysql di seguito.

mysql -u root -p
TYPE YOUR ROOT PASSWORD

Ora crea un nuovo database "nextcloud_db" e crea un nuovo utente "nextclouduser" con la password "nextcloudpassdb" utilizzando le query seguenti.

create database nextcloud_db;
create user [email protected] identified by 'nextcloudpassdb';
grant all privileges on nextcloud_db.* to [email protected] identified by 'nextcloudpassdb';
flush privileges;

E hai creato il database e l'utente per l'installazione di Nextcloud.

Fase 4:genera SSL Letsencrypt

In questo passaggio, genereremo l'SSL Letencrypt utilizzando il 'certbot'. I certificati SSL verranno utilizzati per proteggere l'accesso a Nextcloud.

Installa certbot dal repository EPEL utilizzando il comando dnf di seguito.

sudo dnf install certbot

Una volta completata l'installazione, genera i certificati SSL per il nome di dominio Nextcloud utilizzando il comando seguente e assicurati di modificare il nome di dominio e l'indirizzo email con il tuo.

certbot certonly --webroot --webroot-path /usr/share/nginx/html --agree-tos -m [email protected] -d cloud.hakase-labs.io

Una volta completato, tutti i certificati SSL generati si trovano nella directory '/etc/letsencrypt/live/cloud.hakase-labs.io'.

Verificalo usando il comando seguente.

ls -lah /etc/letsencrypt/live/cloud.hakase-labs.io/

E hai generato SSL Letencrypt usando lo strumento certbot.

Passaggio 5:scarica e installa Nextcloud

In questo passaggio, scaricheremo l'ultima versione di Nextcloud 17.

Prima di scaricare il codice sorgente di nextcloud, installa il pacchetto zip sul sistema.

sudo dnf install unzip

Ora vai nella directory '/var/www/' e scarica il codice sorgente di Nextcloud usando il comando wget come di seguito.

cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-17.0.2.zip

Estrai il codice sorgente di Nextcloud usando il comando seguente.

unzip nextcloud-17.0.2.zip

E otterrai una nuova directory chiamata 'nextcloud'.

Ora crea una nuova directory "dati" per Nextcloud. La directory 'data' verrà utilizzata per memorizzare i dati dell'utente.

mkdir -p /var/www/nextcloud/data/

Successivamente, cambia il proprietario della directory 'nextcloud' con l'utente e il gruppo 'nginx'.

sudo chown -R nginx:nginx /var/www/nextcloud

E hai scaricato l'ultimo Nextcloud 17 nella directory '/var/www'.

Passaggio 6:configurazione dell'host virtuale Nginx per Nextcloud

Dopo aver scaricato il codice sorgente di Nextcloud, configureremo l'host virtuale Nginx per Nextcloud.

Vai alla directory '/etc/nginx/conf.d' e crea una nuova configurazione 'nextcloud.conf'.

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

Ora cambia il nome di dominio e il percorso del certificato SSL con il tuo e incollaci la seguente configurazione.

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

server {
listen 80;
listen [::]:80;
server_name cloud.hakase-labs.io;
# enforce https
return 301 https://$server_name:443$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cloud.hakase-labs.io;

# Use Mozilla's guidelines for SSL/TLS settings
# https://mozilla.github.io/server-side-tls/ssl-config-generator/
# NOTE: some settings below might be redundant
ssl_certificate /etc/ssl/nginx/fullchain.pem;
ssl_certificate_key /etc/ssl/nginx/privkey.pem;

# 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;" always;
#
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;

# Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;

# Path to the root of your installation
root /var/www/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;

# The following rule is only needed for the Social app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/webfinger /public.php?service=webfinger last;

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

# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;

# Enable gzip but do not remove ETag headers
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

# Uncomment if your server is built with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;

location / {
rewrite ^ /index.php;
}

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\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
# Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
# Enable pretty urls
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}

location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
try_files $uri/ =404;
index index.php;
}

# Adding the cache control header for js, css and map files
# Make sure it is BELOW the PHP block
location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463";
# 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;" always;
#
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;

# Optional: Don't log access to assets
access_log off;
}

location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
try_files $uri /index.php$request_uri;
# Optional: Don't log access to other assets
access_log off;
}
}

Salva e chiudi.

Successivamente, testa la configurazione di nginx e riavvia il servizio Nginx. E assicurati che non ci siano errori.

nginx -t
systemctl restart nginx

Ora il servizio Nginx aprirà una nuova porta HTTPS sul sistema, verificala usando il seguente comando.

netstat -plntu

E otterrai il risultato come di seguito.

Di conseguenza, hai aggiunto la configurazione dell'host virtuale Nginx per Nextcloud e abilitato l'HTTPS sicuro.

Passaggio 7 - Configura SELinux per Nextcloud

Per questo tutorial, useremo SELinux in modalità 'enforcing'. E configureremo SELinux per l'installazione di Nextcloud.

Installa lo strumento di gestione di SELinux usando il comando dnf di seguito.

sudo dnf install policycoreutils-python-utils

Ora esegui il seguente comando come root sul tuo server.

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/assets(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.user.ini'

restorecon -Rv '/var/www/nextcloud/'

E la configurazione di SELinux per Nextcloud è stata completata.

Passaggio 8 - Installazione guidata di Nextcloud

Ora apri il tuo browser web e digita il tuo nome di dominio Nextcloud sulla barra degli indirizzi.

https://cloud.hakase-labs.io/

Ora otterrai la pagina di installazione di Nextcloud come di seguito.

Digita l'utente e la password di amministratore, quindi scegli 'MySQL/MariaDB' come database e digita i dettagli sul database che hai creato in cima.

Ora fai clic sul pulsante "Termina configurazione" e l'installazione inizierà.

Una volta completata l'installazione, otterrai la dashboard di Nextcloud come di seguito.

Di conseguenza, hai installato correttamente l'ultimo Nextcloud 17 con il server web Nginx, PHP-FPM 7.3 e il database MariaDB sul server CentOS 8.


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

  2. Come installare WordPress con Nginx su CentOS 7

  3. Come installare phpMyAdmin con Nginx su CentOS 7

  4. Come installare e configurare OpenLiteSpeed ​​con PHP 7.4 su CentOS 8

  5. Come installare Phorum con Nginx su CentOS 7

Come installare Shopware con NGINX e Lets Encrypt su CentOS 7

Come installare Pico CMS con Nginx e Lets Encrypt su CentOS 7

Come installare DokuWiki con Nginx e Lets crittografare SSL su CentOS 8

Come installare Laravel PHP Framework con Nginx su CentOS 8

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

Come installare Laravel PHP Framework con Nginx su CentOS 8