GNU/Linux >> Znalost Linux >  >> Fedora

Jak nainstalovat a nakonfigurovat Nextcloud na Fedoře 32

Nextcloud je opensource software pro ukládání a synchronizaci vašich dat na více zařízeních. Můžete to považovat za svůj vlastní klon Dropboxu. Ale kromě ukládání souborů poskytuje také další funkce, jako je Kalendář, Kontakty, Naplánované úkoly, streamování médií atd.

Nextcloud poskytuje aplikace pro Windows, Linux, MacOS a mobilní aplikace pro Android a iOS, které můžete použít k synchronizaci souborů mezi různými zařízeními.

V tomto tutoriálu se naučíme, jak nainstalovat a nakonfigurovat Nextcloud na serveru založeném na Fedora 32. Budeme také instalovat webový server Nginx spolu s PHP 7.4 a MariaDB

Předpoklady

  • Server se systémem Fedora 32.

  • Uživatel sudo bez oprávnění root.

  • Ujistěte se, že je vše aktualizováno.

    $ sudo dnf update
    
  • Základní balíčky.

    $ sudo dnf install wget curl bzip2 nano unzip policycoreutils-python-utils -y
    

    Některé z těchto balíčků již mohou být ve vašem systému.

Konfigurovat bránu firewall

Prvním krokem je konfigurace firewallu. Server Fedora je dodáván s předinstalovaným firewallem Firewalld.

Zkontrolujte, zda je spuštěna brána firewall.

$ sudo firewall-cmd --state
running

Zkontrolujte aktuální povolené služby/porty.

$ sudo firewall-cmd --permanent --list-services

Měl by ukazovat následující výstup.

dhcpv6-client mdns ssh

Povolit porty HTTP a HTTPS.

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

Znovu zkontrolujte stav brány firewall.

$ sudo firewall-cmd --permanent --list-services

Měli byste vidět podobný výstup.

dhcpv6-client http https mdns ssh

Znovu načtěte bránu firewall.

$ sudo systemctl reload firewalld

Instalovat PHP

Fedora 32 se standardně dodává s PHP 7.4, ale abychom měli aktualizované úložiště PHP, přidáme úložiště REMI.

Nainstalujte si úložiště REMI, což je oficiální úložiště Fedory pro instalaci balíčků PHP.

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-32.rpm

Povolte remi úložiště a deaktivujte remi-modular úložiště. To umožňuje úložiště potřebné k instalaci balíčků PHP 7.4.

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-disabled remi-modular

Nainstalujte PHP 7.4 spolu s některými dalšími balíčky.

$ sudo dnf install php-fpm php-cli php-gd php-mbstring php-intl php-mysqlnd php-imagick php-zip php-json php-process php-xml php-bcmath php-gmp php-ftp php-smbclient php-opcache

Zkontrolujte, zda PHP funguje správně.

$ php --version
PHP 7.4.11 (cli) (built: Sep 29 2020 10:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies

Konfigurace PHP

Otevřete soubor /etc/php-fpm.d/www.conf .

$ sudo nano /etc/php-fpm.d/www.conf

Musíme nastavit unixového uživatele/skupinu PHP procesů na nginx . Najděte user=apache a group=apache řádků v souboru a změňte je na nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Níže odkomentujte proměnné 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žte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

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

$ sudo nano /etc/php.d/10-opcache.ini

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

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

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Spuštěním následujících příkazů zvýšíte limity nahrávání souborů a paměti pro PHP.

$ sudo cp /etc/php.ini /etc/php.ini.bak
$ sudo sed -i "s/memory_limit = 128M/memory_limit = 512M/" /etc/php.ini
$ sudo sed -i "s/post_max_size = 8M/post_max_size = 100M/" /etc/php.ini
$ sudo sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 100M/" /etc/php.ini

Ve výchozím nastavení jsou v /var/lib/php/ 3 soubory adresář, jehož vlastník skupiny je nastaven na apache , ale používáme Nginx. Takže musíme dát uživateli nginx oprávnění ke čtení a zápisu do 3 adresářů pomocí setfacl .

$ sudo setfacl -R -m u:nginx:rwx /var/lib/php/opcache/
$ sudo setfacl -R -m u:nginx:rwx /var/lib/php/session/
$ sudo setfacl -R -m u:nginx:rwx /var/lib/php/wsdlcache/

Povolte a spusťte proces php-fpm.

$ sudo systemctl enable php-fpm
$ sudo systemctl start php-fpm

Instalovat Nginx

Fedora 32 se standardně dodává s nejnovější stabilní verzí Nginx.

Nainstalujte Nginx.

$ sudo dnf install nginx -y

Zkontrolujte, zda funguje správně.

$ nginx -v
nginx version: nginx/1.18.0

Spusťte a povolte Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Otevřete IP adresu svého serveru v prohlížeči a zobrazí se následující stránka. Znamená to, že Nginx funguje správně.

Instalovat MariaDB

MariaDB je náhradní náhrada za MySQL, což znamená, že příkazy ke spuštění a ovládání MariaDB jsou stejné jako příkazy pro MySQL.

Fedora 32 se standardně dodává s MariaDB 10.4, kterou budeme používat.

Nainstalujte server MariaDB.

$ sudo dnf install mariadb-server

Zkontrolujte, zda je MariaDB správně nainstalována.

$ mysql --version
mysql  Ver 15.1 Distrib 10.4.14-MariaDB, for Linux (x86_64) using  EditLine wrapper

Povolte a spusťte službu MariaDB.

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

Spuštěním následujícího příkazu provedete výchozí konfiguraci, jako je zadání hesla uživatele root, odebrání anonymních uživatelů, zakázání vzdáleného přihlášení uživatele root a zrušení testovacích tabulek.

$ sudo mysql_secure_installation

Stisknutím klávesy Enter vyberete výchozí možnost (ta, která je velká, v tomto případě Y).

Enter current password for root (enter for none): [PRESS ENTER]
Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Change the root password? [Y/n] [ANSWER n]
Remove anonymous users? [Y/n] [PRESS ENTER]
Disallow root login remotely? [Y/n] [PRESS ENTER]
Remove test database and access to it? [Y/n] [PRESS ENTER]
Reload privilege tables now? [Y/n] [PRESS ENTER]

A je to. Až se příště budete chtít přihlásit do MySQL, použijte následující příkaz

$ sudo mysql

Po zobrazení výzvy zadejte heslo uživatele root.

Nakonfigurujte MariaDB

Zadejte následující příkaz pro vstup do prostředí MySQL.

$ sudo mysql

Vytvořte uživatele MySQL pro správu NextCloud Database.

mysql> CREATE USER 'nextuser'@'localhost' IDENTIFIED BY 'yourpassword';

Vytvořte databázi NextCloud.

mysql> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Udělte všechna oprávnění k databázi Nextcloud uživateli, kterého jsme vytvořili.

mysql> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextuser'@'localhost';

Ukončete prostředí MySQL.

mysql> exit

Stáhnout Nextcloud

Je čas stáhnout a nastavit složky Nextcloud.

$ wget https://download.nextcloud.com/server/releases/latest.tar.bz2
$ tar -jxvf latest.tar.bz2
$ sudo mv nextcloud /var/www/html/

Dále musíme vytvořit datovou složku.

$ sudo mkdir /var/www/html/nextcloud/data
$ sudo chown -R nginx:nginx /var/www/html/nextcloud

Instalovat SSL

Nainstalujeme SSL pomocí služby Let’s Encrypt.

Za tímto účelem si nainstalujte Certbot.

$ sudo dnf install certbot

Zastavte Nginx, protože to bude narušovat proces Certbot.

$ sudo systemctl stop nginx

Vygenerujte certifikát. Vytváříme také certifikát DHParams.

$ export LDOMAIN="nextcloud.example.com"
$ export LEMAIL="[email protected]"
$ sudo certbot certonly --standalone -d $LDOMAIN --preferred-challenges http --agree-tos -n -m $LEMAIL --keep-until-expiring 
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Musíme také nastavit úlohu cron pro automatické obnovení SSL. Chcete-li otevřít editor crontab, spusťte následující příkaz

$ sudo EDITOR=nano crontab -e

Výše uvedený příkaz otevře Crontab s editorem Nano namísto výchozího editoru Vim.

Vložte následující řádek do spodní části.

25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”

Výše uvedená úloha cron spustí certbot každý den ve 2:25. Můžete jej změnit na cokoli chcete.

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Konfigurace SELinux/oprávnění

SELinux musí být nakonfigurován, aby Nextcloud fungoval na Fedoře. Zadejte následující příkazy až pro základní nastavení SELinuxu, která by měla fungovat všem.

Ujistěte se, že jste upravili cesty k souborům, pokud se ve vašem případě liší.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'

$ sudo restorecon -Rv '/var/www/html/nextcloud/'

Chcete-li povolit aktualizace prostřednictvím webového rozhraní Nextcloud, spusťte také následující příkaz.

$ sudo setsebool -P httpd_unified on

Konfigurovat Nginx pro Nextcloud

Dále musíme nakonfigurovat Nginx pro hostování Nextcloud.

Pro naše účely bude Nextcloud hostován v doméně http://nextcloud.example.com ,

Nastavte adresáře, ve kterých budou serverové bloky sídlit.

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

Otevřete /etc/nginx/nginx.conf soubor pro úpravy.

$ sudo nano /etc/nginx/nginx.conf	

Vložte následující řádky za řádek include /etc/nginx/conf.d/*.conf

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.

Vytvořte soubor /etc/nginx/sites-available/nextcloud.conf pomocí Nano editoru.

$ sudo nano /etc/nginx/sites-available/nextcloud.conf

Vložte následující kód do editoru. Před vložením nezapomeňte nahradit ukázkovou doménu svou skutečnou doménou.

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

server {
    listen 80;
    listen [::]:80;
    server_name nextcloud.example.com;
    # enforce https
    return 301 https://$server_name:443$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name nextcloud.example.com;
	
	access_log /var/log/nginx/nextcloud.access.log;
    error_log /var/log/nginx/nextcloud.error.log;

    # 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/letsencrypt/live/nextcloud.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nextcloud.example.com/privkey.pem;
	ssl_protocols TLSv1.2 TLSv1.3;
	ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;
	ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
	ssl_dhparam /etc/ssl/certs/dhparam.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/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;

    # 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 100M;
    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 build 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\/.+|.+\/richdocumentscode\/proxy)\.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_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|mp4|webm)$ {
        try_files $uri /index.php$request_uri;
        # Optional: Don't log access to other assets
        access_log off;
    }
}

Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.

Tento konfigurační soubor aktivujte jeho propojením s sites-enabled adresář.

$ sudo ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/

Otestujte konfiguraci Nginx.

$ sudo nginx -t

Pokud je vše v pořádku, znovu načtěte službu Nginx.

$ sudo systemctl reload nginx

Instalovat Nextcloud

Existují dva způsoby, jak nakonfigurovat Nextcloud - pomocí příkazového řádku nebo prostřednictvím grafického rozhraní. Zvolíme metodu příkazového řádku.

Vstupte do adresáře Nextcloud.

$ cd /var/www/html/nextcloud

Spusťte následující příkaz a nainstalujte Nextcloud.

$ sudo -u nginx php occ  maintenance:install --database "mysql" --database-name "nextcloud"  --database-user "nextuser" --database-pass "yourpassword" --admin-user "admin" --admin-pass "password"

Tento příkaz se spouští jako nginx uživatel, protože má oprávnění k zápisu do složky Nextcloud.

Dále musíme přidat naši doménu do seznamu důvěryhodných domén. Otevřete /var/www/html/nextcloud/config/config.php soubor.

$ sudo nano config/config.php

Změňte hodnotu trusted_domains proměnnou přidáním vaší IP adresy serveru a vaší domény Nextcloud nextcloud.example.com na něj, abyste měli přístup k instalaci ze své domény.

'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => '167.172.35.56',
    2 => 'nextcloud.example.com',
  ),

Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.

Spusťte instalaci Nextcloud otevřením https://nextcloud.example.com ve vašem prohlížeči a uvidíte následující obrazovku.

Zadejte své přihlašovací údaje pro administraci. Procházejte úvodní bannery Nextcloud, nastavte polohu a stav počasí a vyberte tapetu. Jakmile budete hotovi, měli byste být uvítáni podobnou obrazovkou.

Závěr

Tímto končí náš návod k instalaci Nextcloud na server Fedora 32. Pokud máte nějaké dotazy, napište je do komentářů níže.


Fedora
  1. Jak nainstalovat Phorum s Nginx na Fedora 30

  2. Jak nainstalovat a nakonfigurovat Mariadb ve Fedoře 35

  3. Jak nainstalovat PHP 8 na Fedoru 35

  1. Jak nainstalovat a nakonfigurovat Nextcloud s Apache na Ubuntu 18.04

  2. Jak nainstalovat a nakonfigurovat Redis 6 na Fedoře 34

  3. Jak nainstalovat a nakonfigurovat Ansible na Fedoře 35

  1. Jak nainstalovat a nakonfigurovat Nextcloud s Apache na CentOS 7

  2. Jak nainstalovat Bolt CMS na Fedoru 29

  3. Jak nainstalovat Anchor CMS na Fedoru 29