GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat Nextcloud s Nginx a PHP 7.3 na CentOS 8

Nextcloud je bezplatný (open source) software podobný dropboxu, větev projektu ownCloud. Nextcloud je napsán v PHP a JavaScriptu, podporuje mnoho databázových systémů jako MySQL/MariaDB, PostgreSQL, databáze Oracle a SQLite.

Aby byly vaše soubory synchronizované mezi počítačem a serverem, Nextcloud nabízí aplikace pro stolní počítače Windows, Linux a Mac a mobilní aplikaci pro Android a iOS.

V tomto tutoriálu vám ukážeme, jak nainstalovat Nextcloud 17 s webovým serverem Nginx, PHP 7.3 a databází MariaDB na server CentOS 8. Nainstalujeme Nextcloud a zabezpečíme jej pomocí bezplatného certifikátu Let's Encrypt SSL.

Předpoklad

Pro tuto příručku nainstalujeme Nextcloud na server CentOS 8 s 2 GB RAM, 25 GB volného místa a 2 CPU.

Co uděláme:

  • Nainstalujte webový server Nginx
  • Nainstalujte PHP-FPM 7.3
  • Nakonfigurujte PHP-FPM 7.3
  • Nainstalujte a nakonfigurujte databázi MariaDB
  • Vygenerujte SSL Letsencrypt
  • Stáhněte si Nextcloud 17
  • Nastavení virtuálního hostitele Nginx pro Nextcloud
  • Nastavte SELinux pro Nextcloud
  • Po instalaci Nextcloud

Krok 1 – Instalace Nginx

Nejprve nainstalujeme webový server Nginx na server CentOS 8 a otevřeme port HTTP a HTTPS na firewallu.

Nainstalujte Nginx z úložiště AppStream pomocí příkazu dnf níže.

sudo dnf install nginx

Po dokončení instalace spusťte službu nginx a přidejte ji do spouštění systému.

systemctl start nginx
systemctl enable nginx

Nyní zkontrolujte stav služby nginx pomocí příkazu níže.

systemctl status nginx

Získáte, že služba nginx je spuštěna a spuštěna na serveru CentOS 8.

Dále do firewallu přidáme služby HTTP a HTTPS.

Přidejte služby HTTP a HTTPS do brány firewall pomocí příkazu firewall-cmd níže.

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

Poté znovu načtěte služby brány firewall.

firewall-cmd --reload

Výsledkem je, že jste úspěšně nainstalovali webový server Nginx a otevřeli porty HTTP a HTTPS na serveru CentOS 8.

Krok 2 – Instalace PHP-FPM

Podle systémových požadavků Nextcloud se pro jeho instalaci doporučuje použít PHP 7.2 nebo PHP 7.3.

V této příručce budeme používat PHP 7.3, které lze nainstalovat z úložiště REMI.

Než půjdeme dále, povolíme úložiště 'PowerTools' a přidáme úložiště EPEL a REMI pro server CentOS 8.

Spusťte níže uvedený příkaz dnf.

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

Nyní zkontrolujte všechna dostupná úložiště v systému.

dnf repolist

A dostanete výsledek, jak je uvedeno níže.

Povolili jste úložiště 'PowerTools' a přidali úložiště EPEL a REMI pro CentOS 8.

Dále povolíme úložiště PHP 7.3 REMI.

Zkontrolujte všechny dostupné moduly pro balíčky PHP.

dnf module list php

Nyní povolte modul úložiště PHP 7.3 REMI.

dnf module enable php:remi-7.3

Poté nainstalujte balíčky PHP a PHP-FPM 7.3 pro Nextcloud pomocí příkazu dnf níže.

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

A nainstalovali jste PHP a PHP-FPM 7.3 do systému CentOS 8.

Krok 3 – Konfigurace PHP-FPM 7.3

V tomto kroku nastavíme PHP-FPM pro nasazení Nextcloud.

Upravte konfiguraci 'php.ini' pomocí následujícího příkazu.

vim /etc/php.ini

Odkomentujte a změňte konfiguraci, jak je uvedeno níže.

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

Uložit a zavřít.

Nyní upravte konfiguraci PHP opcache '/etc/php.d/10-opcache.ini'.

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

Změňte konfiguraci, jak je uvedeno níže.

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

Uložit a zavřít.

Dále upravte konfiguraci PHP-FPM '/etc/php-fpm.d/www.conf'.

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

Změňte 'user' a 'group' na 'nginx'.

user = nginx
group = nginx

Změňte konfiguraci 'naslouchání' na soubor ponožky, jak je uvedeno níže.

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

Níže odkomentujte proměnnou prostředí PHP.

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

Odkomentujte konfiguraci opcache na posledním řádku.

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

Uložit a zavřít.

Nyní vytvořte nový adresář pro PHP session a opcache a poté změňte vlastníka těchto adresářů na uživatele a skupinu 'nginx'.

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

A dokončili jste konfiguraci PHP-FPM pro instalaci Nextcloud.

Spusťte službu PHP-FPM a přidejte ji do spouštění systému.

systemctl enable php-fpm
systemctl start php-fpm

Nyní zkontrolujte soubor sock PHP-FPM a stav služby.

netstat -pl | grep php
systemctl status php-fpm

A dostanete výsledek, jak je uvedeno níže.

Výsledkem je, že PHP-FPM běží pod souborem ponožky '/run/php-fpm/www.sock'.

Krok 4 – Instalace a konfigurace MariaDB

V tomto kroku nainstalujeme databázový server MariaDB, nastavíme ověřování heslem uživatele root a vytvoříme novou databázi a uživatele pro Nextcloud.

Nainstalujte databázi MariaDB pomocí příkazu dnf níže.

sudo dnf install mariadb mariadb-server

Po dokončení instalace spusťte službu MariaDB a přidejte ji do spouštění systému.

systemctl start mariadb
systemctl enable mariadb

A služba MariaDB je v provozu.

Dále nastavíme ověřování heslem uživatele root pomocí příkazu 'mysql_secure_installation' níže.

mysql_secure_installation

Zadejte heslo uživatele root a zadejte „Y“ pro zbývající konfiguraci.

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

A kořenové heslo MariaDB bylo nakonfigurováno.

Nyní se přihlaste do prostředí MySQL pomocí příkazu mysql níže.

mysql -u root -p
TYPE YOUR ROOT PASSWORD

Nyní vytvořte novou databázi 'nextcloud_db' a pomocí níže uvedených dotazů vytvořte nového uživatele 'nextclouduser' s heslem 'nextcloudpassdb'.

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;

A vytvořili jste databázi a uživatele pro instalaci Nextcloud.

Krok 4 – Vygenerování SSL Letsencrypt

V tomto kroku vygenerujeme SSL letsencrypt pomocí 'certbot'. Certifikáty SSL budou použity k zabezpečení přístupu Nextcloud.

Nainstalujte certbota z úložiště EPEL pomocí příkazu dnf níže.

sudo dnf install certbot

Po dokončení instalace vygenerujte certifikáty SSL pro název domény Nextcloud pomocí příkazu níže a nezapomeňte změnit název domény a e-mailovou adresu na vlastní.

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

Po dokončení se všechny vygenerované certifikáty SSL nacházejí v adresáři '/etc/letsencrypt/live/cloud.hakase-labs.io'.

Zkontrolujte to pomocí následujícího příkazu.

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

A vygenerovali jste SSL letsencrypt pomocí nástroje certbot.

Krok 5 – Stažení a instalace Nextcloud

V tomto kroku si stáhneme nejnovější verzi Nextcloud 17.

Před stažením zdrojového kódu nextcloud nainstalujte do systému balíček zip.

sudo dnf install unzip

Nyní přejděte do adresáře '/var/www/' a stáhněte si zdrojový kód Nextcloud pomocí příkazu wget, jak je uvedeno níže.

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

Extrahujte zdrojový kód Nextcloud pomocí příkazu níže.

unzip nextcloud-17.0.2.zip

A získáte nový adresář s názvem 'nextcloud'.

Nyní vytvořte nový adresář „data“ pro Nextcloud. K uložení uživatelských dat bude použit adresář 'data'.

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

Poté změňte vlastníka adresáře 'nextcloud' na uživatele a skupinu 'nginx'.

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

A stáhli jste si nejnovější Nextcloud 17 do adresáře '/var/www'.

Krok 6 – Nastavení virtuálního hostitele Nginx pro Nextcloud

Po stažení zdrojového kódu Nextcloud nastavíme virtuálního hostitele Nginx pro Nextcloud.

Přejděte do adresáře '/etc/nginx/conf.d' a vytvořte novou konfiguraci 'nextcloud.conf'.

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

Nyní změňte název domény a cestu certifikátu SSL za vlastní a vložte do něj následující konfiguraci.

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

Uložit a zavřít.

Poté otestujte konfiguraci nginx a restartujte službu Nginx. A ujistěte se, že nedošlo k žádné chybě.

nginx -t
systemctl restart nginx

Nyní služba Nginx otevře v systému nový port HTTPS, zkontrolujte jej pomocí následujícího příkazu.

netstat -plntu

A dostanete výsledek, jak je uvedeno níže.

V důsledku toho jste přidali konfiguraci virtuálního hostitele Nginx pro Nextcloud a povolili nad ní zabezpečený HTTPS.

Krok 7 – Nastavení SELinux pro Nextcloud

V tomto tutoriálu budeme používat SELinux v režimu „vynucování“. A nastavíme SELinux pro instalaci Nextcloud.

Nainstalujte nástroj pro správu SELinux pomocí příkazu dnf níže.

sudo dnf install policycoreutils-python-utils

Nyní spusťte následující příkaz jako root na vašem serveru.

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

A konfigurace SELinuxu pro Nextcloud byla dokončena.

Krok 8 – Průvodce instalací Nextcloud

Nyní otevřete webový prohlížeč a do adresního řádku zadejte název své domény Nextcloud.

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

Nyní získáte instalační stránku Nextcloud, jak je uvedeno níže.

Zadejte svého administrátora a heslo, poté jako databázi zvolte 'MySQL/MariaDB' a navrch napište podrobnosti o databázi, kterou jste vytvořili.

Nyní klikněte na tlačítko 'Finish Setup' a instalace začne.

Po dokončení instalace získáte řídicí panel Nextcloud, jak je uvedeno níže.

V důsledku toho jste úspěšně nainstalovali nejnovější Nextcloud 17 s webovým serverem Nginx, PHP-FPM 7.3 a databází MariaDB na server CentOS 8.


Cent OS
  1. Jak nainstalovat a nakonfigurovat Nginx na CentOS 7

  2. Jak nainstalovat WordPress s Nginx na CentOS 7

  3. Jak nainstalovat Phorum s Nginx na CentOS 7

  1. Jak nainstalovat phpMyAdmin s Nginx na CentOS 7

  2. Jak nainstalovat a nakonfigurovat OpenLiteSpeed ​​s PHP 7.4 na CentOS 8

  3. Jak nainstalovat ownCloud 9.1 s Nginx a MariaDB na CentOS 7

  1. Jak nainstalovat Nextcloud s Nginx a PHP7-FPM na CentOS 7

  2. Jak nainstalovat SuiteCRM s Nginx na CentOS 7

  3. Jak nainstalovat MediaWiki s Nginx na CentOS 7