Установка и настройка NextCloud на RockyLinux 9.5

Материал из Шпаргалка знаний
Версия от 14:41, 13 января 2025; Admin (обсуждение | вклад) (Новая страница: «После установки на сервер RockyLinux 9.5 (Minimal) (x86_64) 4Gb RAM, 4 CPU, 200Gb SSD, приступаем к подготовке сервера. === Подготовка сервера === ==== 1. Системные требования ==== С актуальными системными требованиями можно ознакомиться на сайте разработчика в разделе Administration Manual - Ins...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

После установки на сервер RockyLinux 9.5 (Minimal) (x86_64) 4Gb RAM, 4 CPU, 200Gb SSD, приступаем к подготовке сервера.

Подготовка сервера

1. Системные требования

С актуальными системными требованиями можно ознакомиться на сайте разработчика в разделе Administration Manual - Installation and server configuration - System requirements. Необходимо убедиться, что наш сервер соответствует данным требованиям.

dnf update -y
dnf upgrade -y

2. Правильное время.

Устанавливаем утилиту epel-release, chrony и nano:

dnf install epel-release nano open-vm-tools chrony -y

Запускаем ее службу:

systemctl enable chronyd --now

Выставляем нужный часовой пояс:

timedatectl set-timezone Europe/Moscow

3. Отключение SELinux.

setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

4. Установка репозиториев.

Устанавливаем репозиторий Remi (ссылка для Rocky Linux 9):

dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

5. Установка MariaDB

Подключение актуального репозитория:

В примерах выше мы установили СУБД из репозиториев операционных систем. А значит — нет гарантии, что будет установлена последняя версия MariaDB. Для решения задачи мы можем подключить официальный репозиторий самого разработчика.

Генерируем репозиторий mariadb.repo.

Скачиваем скрипт из оф.сайта для генерации репозитория mariadb.repo и даем ему право на выполнение.

cd ~
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
chmod +x mariadb_repo_setup

После предоставления необходимых прав, нужно запустить этот скрипт и он уже сгенерирует репозиторий.

./mariadb_repo_setup

Итак, после выполнения скрипта файл mariadb.repo будет сгенерирован в директории /etc/yum.repos.d.

Заходим и смотрим, что он там намутил...

nano /etc/yum.repos.d/mariadb.repo

После генерации репозитория теперь запускаем установку самой MariaDB:

dnf install mariadb mariadb-server --allowerasing

Чтобы, проверить какие пакеты установились нужно использовать команду:

yum list installed | grep mariadb

Разрешаем автозапуск и запускаем СУБД:

systemctl enable mariadb --now

Проверьте состояние службы MariaDB, выполнив следующую команду.

systemctl status mariadb

Сразу создаем пароль для учетной записи root:

mysqladmin -u root password

Обновляем кэш для всех подключённых репозиториев:

dnf makecache

Обновляем все установленные пакеты до последних версий:

dnf upgrade -y

7. PHP версии 8.3

На момент написания этой статьи версией PHP по умолчанию на RockyLinux 9.5 является PHP 8.0. Согласно системным требованиям Nexcloud по адресу https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html мы собираемся установить PHP 8.3 и использовать его для установки Nextcloud.

Выводим список модулей PHP, которые могут быть включены:

dnf module list php
[root@cloud ~]# dnf module list php
Last metadata expiration check: 0:00:32 ago on Fri Jan  3 12:16:33 2025.
Rocky Linux 9 - AppStream
Name                Stream                  Profiles                                  Summary
php                 8.1                     common [d], devel, minimal                PHP scripting language
php                 8.2                     common [d], devel, minimal                PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name                Stream                  Profiles                                  Summary
php                 remi-7.4                common [d], devel, minimal                PHP scripting language
php                 remi-8.0                common [d], devel, minimal                PHP scripting language
php                 remi-8.1                common [d], devel, minimal                PHP scripting language
php                 remi-8.2                common [d], devel, minimal                PHP scripting language
php                 remi-8.3                common [d], devel, minimal                PHP scripting language
php                 remi-8.4                common [d], devel, minimal                PHP scripting language

Как видно выше, теперь мы можем установить PHP 8.3.

Чтобы включить источник по умолчанию для установки этого пакета скриптов на нашей машине AlmaLinux, нам нужно сначала сбросить его настройки, а затем указать желаемую версию для включения.

dnf module reset php
dnf module enable php:remi-8.3 -y

Вот и все, мы перешли на PHP 8.3. Теперь, чтобы установить PHP 8.3 с необходимыми расширениями, мы можем выполнить эту команду ниже:

dnf install php -y
dnf install httpd wget zip unzip libxml2 openssl php83-php php83-php-ctype php83-php-curl php83-php-gd php83-php-iconv php83-php-json php83-php-libxml php83-php-mbstring php83-php-openssl php83-php-posix php83-php-session php83-php-xml php83-php-zip php83-php-zlib php83-php-pdo php83-php-mysqlnd php83-php-intl php83-php-bcmath php83-php-gmp php83-php-imagick php83-php-pecl-apcu php83-php-redis mod_ssl openssh -y

После завершения установки служба PHP-FPM будет запущена, но не будет включена после перезагрузки сервера. Вы можете проверить и подтвердить установленную версию PHP с помощью этой команды.

php -v

Он вернет такой вывод:

[root@cloud ~]# php -v
PHP 8.3.15 (cli) (built: Dec 17 2024 18:18:02) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.3.15, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.15, Copyright (c), by Zend Technologies




Создаём каталоги

mkdir -p /var/www/cloud.putyato.ru/html
mkdir -p /var/www/cloud.putyato.ru/data

html — в каталоге будет размещаться nextcloud;

data — в каталоге будут размещаться данные, которые пользователь помещает в облако. По умолчанию nextcloud размещает эти данные в своём каталоге, который доступен из сети интернет, но мы их вынесем из него для безопасности.

Настройка Apache

Включаем автозапуск и запускаем:

systemctl enable httpd
systemctl start httpd

Создаём каталоги, в которых будут находиться данные наших сайтов:

mkdir -p /etc/httpd/sites-available /etc/httpd/sites-enabled

В файле /etc/httpd/conf/httpd.conf в самом конце дописываем строку:

nano /etc/httpd/conf/httpd.conf
........
Include /etc/httpd/sites-enabled

Добавляем или изменяем строку раскомментировав:

.......
ServerName cloud.putyato.ru
........

Создаём файл /etc/httpd/sites-available/cloud.putyato.ru со следующим содержимым:

nano /etc/httpd/sites-available/cloud.putyato.ru
<VirtualHost *:80>
  ServerName  cloud.putyato.ru
  DocumentRoot /var/www/cloud.putyato.ru/html/
  DirectoryIndex index.php index.htm index.html

  CustomLog "/var/log/httpd/cloud.putyato.ru-access_log" combined
  ErrorLog  "/var/log/httpd/cloud.putyato.ru-error_log"

  <Directory /var/www/cloud.putyato.ru/html/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews
    <IfModule mod_dav.c>
      Dav off
    </IfModule>
  </Directory>
</VirtualHost>

Если во время настройки вы хотите отлаживать процесс и обращаться к серверу по IP, то добавляем ServerAlias. Пример:

...
ServerName  cloud.putyato.ru
ServerAlias 10.7.7.22
...

Создаём символическую ссылку на данный файл:

ln -s /etc/httpd/sites-available/cloud.putyato.ru /etc/httpd/sites-enabled/

Проверяем и перезапускаем Apache:

apachectl configtest
systemctl restart httpd

Настройка PHP

В файле /etc/opt/remi/php83/php.ini раскомментировать и изменить или добавить строки:

nano /etc/opt/remi/php83/php.ini
......
memory_limit = 1G
max_execution_time = 3600
max_input_time = 3600
upload_max_filesize = 10G
post_max_size = 10G
file_uploads = On
upload_tmp_dir = "/tmp"
max_file_uploads = 200
date.timezone = "Europe/Moscow"
........

Ряд настроек позволит без проблем загружать файлы большого размера.

date.timezone = «Europe/Moscow» — для города Москва в РФ. Указывайте вашу временную зону, которую можете найти в интернете.

Обратите внимание, что для того, чтобы все корректно работало в Nextcloud, ваш часовой пояс в файле php.ini должен совпадать с настройками часового пояса вашего компьютера. Вы можете узнать часовой пояс компьютера командой:

ls -al /etc/localtime

В этом случае у вас будет показана информация следующего вида:

/etc/localtime -> ../usr/share/zoneinfo/Europe/Moscow

В файле /etc/opt/remi/php83/php.d/40-apcu.ini раскомментировать и изменить или добавить строки:

nano /etc/opt/remi/php83/php.d/40-apcu.ini
extension = apcu.so

apc.enable_cli=1

В файле /etc/opt/remi/php83/php.d/10-opcache.ini раскомментировать и изменить или добавить строку:

nano /etc/opt/remi/php83/php.d/10-opcache.ini
opcache.interned_strings_buffer=16

Проверяем и перезапускаем Apache:

apachectl configtest
systemctl restart httpd


Настройка MariaDB

Включаем автозапуск и запускаем:

systemctl enable mariadb
systemctl restart mariadb

Настраиваем:

sudo mariadb-secure-installation

1. На вопрос «Enter current password for root (enter for none):» нажимаем Enter.

2. На вопрос «Switch to unix_socket authentication [Y/n]» вводим n и нажимаем Enter. Можете подробнее изучить эту тему и выбирать другий вариант.

3. На вопрос «Change the root password? [Y/n]» нажимаем Enter, т.е. принимаем по умолчанию ответ Y (да).

4. Далее дважды вводим новый пароль, чтобы установить пароль пользователя root базы данных (не операционной системы). При вводе пароль не отображается, поэтому будьте аккуратны.

5. Далее на вопрос «Remove anonymous users? [Y/n]» нажимаем Enter.

6. На вопрос «Disallow root login remotely? [Y/n]» нажимаем Enter.

7. На вопрос «Remove test database and access to it? [Y/n]» нажимаем Enter.

8. На вопрос «Reload privilege tables now? [Y/n]» нажимаем Enter.


Перезапускаем MariaDB:

systemctl restart mariadb

Установка и настройка Redis

Устанавливаем и запускаем:

dnf install redis -y
systemctl enable redis
systemctl start redis

Nextcloud и Redis будут работать на одном сервере. В этом случае с Redis не будут работать системы развёрнутые на других серверах и его работу лучше настроить через Unix-сокет. Откройте конфигурационный файл Redis, который обычно находится по пути /etc/redis/redis.conf, раскомментировать и изменить или добавить строки:

nano /etc/redis/redis.conf
unixsocket /run/redis/redis.sock

unixsocketperm 770

# bind 127.0.0.1 -::1 # закомментируйте эту строку

port 0

Создаём каталог и изменяем права:

mkdir -p /run/redis
chmod 770 /run/redis/
usermod -aG redis apache

Перезапускаем Redis и проверяем работу через unix-сокет:

systemctl restart redis
redis-cli -s /var/run/redis/redis.sock

Redis выведет командную строку для работы с ним следующего вида:

redis /var/run/redis/redis.sock>

Вводим exit и нажимаем Enter для выхода.

Установка Nextcloud

Переходим на официальный сайт Nextcloud и получаем ссылку на дистрибутив для «Community projects» — «Archive». Далее скачиваем дистрибутив и распаковываем его:

cd /tmp
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip

Ссылка на архив может иметь в ваше время другой вид, на момент написания статьи она имела вид указанный в команде. По итогу появится каталог /tmp/nextcloud. Копируем содержимое каталога в каталог, где будет находиться Nextcloud:

cd /tmp/nextcloud
cp -Rf . /var/www/cloud.putyato.ru/html/

Изменяем права доступа к каталогам для пользователя apache:

chown -Rf apache.apache /var/www/cloud.putyato.ru/html
chown -Rf apache.apache /var/www/cloud.putyato.ru/data
chmod 770 /var/www/cloud.putyato.ru/data/

Настройка Firewall

Открываем порты на которых будет работать Nextcloud:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

Настройка работы по HTTPS

Cгенерируйте SSL по умолчанию для localhost с помощью команды openssl ниже. Но если у вас уже есть сертификаты " /etc/pki/tls/private/localhost.key " и " /etc/pki/tls/certs/localhost.crt ", вы можете пропустить этот этап.

openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/localhost.key -x509 -days 365 -out /etc/pki/tls/certs/localhost.crt

Вы можете просто нажать Enter для ответа на все вопросы, поскольку этот сертификат будет использоваться только для локального хоста, а не для доменного имени WordPress.

Далее:

sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp apache /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt

Далее измените рабочий каталог на « /etc/httpd/conf.d/ » и создайте новую конфигурацию « well-known.conf » с помощью редактора nano.

cd /etc/httpd/conf.d/
nano well-known.conf

Добавьте следующие конфигурации.

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Проверяем и перезапускаем апачи

apachectl configtest
sudo systemctl restart httpd

В файле /etc/httpd/conf/httpd.conf добавим или изменим строку раскомментировав:

nano /etc/httpd/conf/httpd.conf
......
LoadModule ssl_module modules/mod_ssl.so

Мы установим SSL-сертификат для нашего сайта Nextcloud, используя бесплатный SSL-сертификат от Lets Encrypt.

При настройке будем использовать ключи и сертификаты, которые получили (купили) где-либо, т.е. не будет использоваться Let’s Encrypt. Я его не использую, так как облако у меня работает на нестандартных портах и развёрнуто за роутером на домашнем сервере, куда доступ для всех, включая Let’s Encrypt, закрыт.

Для использования Let’s Encrypt воспользуйтесь рекомендациями из официальной документации https://docs.rockylinux.org/guides/security/generating_ssl_keys_lets_encrypt

dnf install certbot python3-certbot-apache -y

После установки вы можете запустить эту команду для выпуска SSL-сертификата. Опять же, не забудьте заменить поддомен на ваше фактическое имя домена или поддомена; оно должно совпадать с именем в файле конфигурации блока сервера nginx, который мы создали ранее. Также убедитесь, что домен или поддомен уже указывает на IP-адрес вашего сервера.

certbot --apache

Обязательно ответьте на вопросы, и вы увидите примерно такой вывод:

[root@cloud ~]# certbot --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): admin@putyato.ru

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: cloud.putyato.ru
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Requesting a certificate for cloud.putyato.ru

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/cloud.putyato.ru/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/cloud.putyato.ru/privkey.pem
This certificate expires on 2025-04-03.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for cloud.putyato.ru to /etc/httpd/sites-available/cloud.putyato.ru-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://cloud.putyato.ru

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Вносим изменения в файл /etc/httpd/sites-available/cloud.putyato.ru заменяем его содержимое на:

nano /etc/httpd/sites-available/cloud.putyato.ru
<VirtualHost *:80>
    ServerName  cloud.putyato.ru
    ServerAdmin admin@putyato.ru
    Redirect / https://cloud.putyato.ru/
</VirtualHost>
<VirtualHost *:443>
    ServerName cloud.putyato.ru
    DocumentRoot /var/www/cloud.putyato.ru/html/
    DirectoryIndex index.php index.htm index.html

    CustomLog "/var/log/httpd/cloud.putyato.ru-access_log" combined
    ErrorLog  "/var/log/httpd/cloud.putyato.ru-error_log"

    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1
    SSLCertificateFile /etc/letsencrypt/live/cloud.putyato.ru/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/cloud.putyato.ru/privkey.pem

    # SSLCertificateChainFile не нужен в современных версиях Apache. Все промежуточные сертификаты помещаю>

    <Directory /var/www/cloud.putyato.ru/html/>
        Require all granted
        AllowOverride All
        Options FollowSymLinks
    </Directory>

    <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>
</VirtualHost>

Или измените рабочий каталог на « /etc/httpd/conf.d » и создайте новую конфигурацию « nextcloud.conf » с помощью редактора nano.

cd /etc/httpd/conf.d/ 
nano nextcloud.conf
<VirtualHost *:80>
    ServerName  cloud.putyato.ru
    ServerAdmin admin@putyato.ru
    Redirect / https://cloud.putyato.ru/
</VirtualHost>
<VirtualHost *:443>
    ServerName cloud.putyato.ru
    DocumentRoot /var/www/cloud.putyato.ru/html/
    DirectoryIndex index.php index.htm index.html

    CustomLog "/var/log/httpd/cloud.putyato.ru-access_log" combined
    ErrorLog  "/var/log/httpd/cloud.putyato.ru-error_log"

    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1
    SSLCertificateFile /etc/letsencrypt/live/cloud.putyato.ru/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/cloud.putyato.ru/privkey.pem

    # SSLCertificateChainFile не нужен в современных версиях Apache. Все промежуточные сертификаты помещаю>

    <Directory /var/www/cloud.putyato.ru/html/>
        Require all granted
        AllowOverride All
        Options FollowSymLinks
    </Directory>

    <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>
</VirtualHost>

Перезапускаем Apache:

systemctl restart httpd

Запуск и настройка Nextcloud

Настраиваем cron. Создаём файл для cron для пользователя apache:

crontab -u apache -e

Откроется консольный редактор. Вписываем следующее:

*/5  *  *  *  * /opt/remi/php83/root/usr/bin/php -f /var/www/cloud.putyato.ru/html/cron.php

Далее нажимаем клавишу Escape (ESC), чтобы выйти из режима редактирования и вводим команду:

:wq

Нажимаем клавишу Enter. Редактор сохранит данные в файле /var/spool/cron/apache и закроется.

Переходим на сайт по адресу http://cloud.putyato.ru и видим первичное окно настройки, в котором можно задавать настройки.

Продолжаем настройку:


  • Указываем логин и пароль учётной записи администратора, которую создаст Nextcloud.
  • Указываем путь к каталогу с данными. В нашем случае мы создали каталог /var/www/cloud.putyato.ru/data. В вашем случае он может быть в любом другом месте. Не размещать его в каталоге html, в котором находятся служебные файлы Nextcloud.
  • Указываем базу данных MariaDB: указываем учётную запись администратора к базе данных, имя базы данных для Nextcloud, хост базы данных оставляем по умолчанию.

Нажимаем кнопку Установить. Если вы всё правильно сделали, так как написано в данной статье, то вы увидите страницу, на которой предлагают установить рекомендованные приложения.


Создаём индексы в базе данных и проводим миграцию (команда выполняется от имени пользователя apache):

sudo -u apache /opt/remi/php83/root/usr/bin/php /var/www/cloud.putyato.ru/html/occ db:add-missing-indices

sudo -u apache /opt/remi/php83/root/usr/bin/php /var/www/cloud.putyato.ru/html/occ maintenance:repair --include-expensive

В файл /var/www/cloud.putyato.ru/html/config/config.php добавляем строки:

nano /var/www/cloud.putyato.ru/html/config/config.php
  'default_phone_region' => 'RU',
  'maintenance_window_start' => 1,
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => '/var/run/redis/redis.sock',
    'port' => 0,
    'timeout' => 0.0,
  ),

Исправляем:

nano /var/www/cloud.putyato.ru/html/config/config.php
.......
'trusted_domains' =>
  array (
   0 => 'localhost',
   1 => 'cloud.putyato.ru',
   2 => '10.7.7.22',
   ),
.......

На данном этапе система настроена и работает. Однако рекомендую настроить работу по протоколу HTTPS в целях повышения безопасности.

Удаление ненужного

Удаляем ненужные данные:

rm -f /tmp/latest.zip
rm -fR /tmp/nextcloud

Настройка виртуального хоста Apache для Nextcloud (не нужно!)

На этом этапе вы добавите новую конфигурацию виртуального хоста Apache/httpd для Nextcloud.

1. Измените рабочий каталог на « /etc/httpd/conf.d » и создайте новую конфигурацию « nextcloud.conf » с помощью редактора nano.

cd /etc/httpd/conf.d/ 
nano nextcloud.conf

Измените подробное доменное имя и путь к каталогу SSL на свои собственные и вставьте конфигурацию в файл « nextcloud.conf ».

<VirtualHost *:80>
    ServerName cloud.putyato.ru
    ServerAlias 10.7.7.24

    # auto redirect HTTP to HTTPS
    Redirect permanent / https://cloud.putyato.ru/
</VirtualHost>

<VirtualHost *:443>
    ServerName cloud.putyato.ru
    ServerAlias 10.7.7.24

    DocumentRoot /var/www/cloud.putyato.ru/html/

    Protocols h2 http/1.1

    # auto redirect www to non-www
    <If "%{HTTP_HOST} == 'www.cloud.putyato.ru'">
        Redirect permanent / https://cloud.putyato.ru/
    </If>

    # log files
    ErrorLog /var/log/httpd/cloud.putyato.ru-error.log
    CustomLog /var/log/httpd/cloud.putyato.ru-access.log combined

    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/cloud.putyato.ru/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/cloud.putyato.ru/privkey.pem

    # HSTS
    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>

    <Directory /var/www/cloud.putyato.ru/html/>
        Options +FollowSymlinks
        AllowOverride All

        <IfModule mod_dav.c>
            Dav off
        </IfModule>

        SetEnv HOME /var/www/cloud.putyato.ru/html
        SetEnv HTTP_HOME /var/www/cloud.putyato.ru/html
    </Directory>
</VirtualHost>
<pre>
Проверяем и перезапускаем апачи
<pre>
apachectl configtest
sudo systemctl restart httpd