## Инвентарь

- Операционная система: **Debian**
- Веб сервер: **Apache2**
- База данных: **MariaDB**

## Почему данный арсенал используеться?

- Операционная система используеться для удобства. Можно использовать Ubuntu, Fedora и прочие.
- С веб-сервером такая же ситуация. Можно использовать **Nginx**
- База данных почти не отличима от **MySQL**. 
    - Не рекомендеться использовать в продакшене **SQLite**.

> **Внимание!**
>
> Натстройка серверной части MariaDB в данной инструкции отсутствует.

## Настройка системы.

Не будем спешить и начнем с базовой настройки системы.

### Настройка прав учетной записи.

- Переключаемся на пользователя **root**. 
```bash
su - #Вводим пароль от учетной записи root
```

- Устанавливаем пакет sudo, не забывая обновить репозитории и пакеты.
```bash
apt update && apt upgrade
apt install sudo
```

- Добавляем вашего пользователя в группу sudo.
```bash
usermod -aG sudo <имя пользователя>
```

- Полностью выходим из сессии и заходим заного.

### Установка пакетов.

- Установка основных пакетов для работы **Nextcloud**.
```bash
sudo apt install apache2 php php-cli php-common php-curl php-gd php-mysql php-xml php-json php-intl php-pear php-imagick php-dev php-mbstring php-zip php-soap php-bz2 php-bcmath php-gmp php-apcu mariadb-client curl wget unzip
```

Проверяем версию php. Поддерживаемые версии можно найти в [документации NextCloud](https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html)

```bash
php --version
```

## Загрузка NextCloud.

- Загружаем архив сайта NextCloud по данному пути `https://download.nextcloud.com/server/releases/latest.zip`. Можно воспользоваться командой wget.
```bash
wget https://download.nextcloud.com/server/releases/latest.zip
```

- Распаковываем **latest.zip** архив.
```bash
unzip latest.zip
```
    - Должен появиться каталог nextcloud

- Переносим в каталог nextcloud в `/var/www/`
```bash
sudo mv nextcloud /var/www/
```
    - Должно появиться что то подобное. 
```bash
$ ls /var/www
html  nextcloud
```

- Замена прав доступа к каталогу и содержимому.
```bash
sudo chown www-data:www-data -R /var/www/nextcloud 
```


### Настройка Apache2.

- Отключение default сайта.
```
sudo a2dissite 000-default.conf
```

- Создаем файл **nextcloud.conf** по пути /etc/apache2/sites-available с данными параметрами.
```apache2
<VirtualHost *:80>
  DocumentRoot /var/www/nextcloud/
  ServerName  your.server.com

  <Directory /var/www/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews

    <IfModule mod_dav.c>
      Dav on
    </IfModule>
  </Directory>
</VirtualHost>
```

- Включение данного сайтаю
```
a2ensite nextcloud.conf
```

- Перезапуск службы apache2.
```bash
sudo systemctl reload apache2
```

Если все получилось, то при переходе на страницу `http://<адрес сервера>` у вас откроеться первоначальная настройка NextCloud.

![first-setup-nextcloud](/media/first-setup-nextcloud.png)


!!! info "Обратите внимание"
    В списке пакетов, которые были установлены с помощью пакетного менеджера apt, не была база sql, а так же плагин sqlite и прочие. 

    Эта инструкция нацелена на тех, кто использует отдельную и уже настроенную базу данных MariaDB или MySQL.
