# Установка и системные требования

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

Для корректной работы JohnCMS, на хостинге, который вы используете, должно быть установлено следующее программное обеспечение

* Nginx + php-fpm или Apache
* PHP 8.0 и выше
* MySQL 5.7 и выше или MariaDB 10.2 или выше
* Для работы с MуSQL должен использоваться встроенный драйвер [MySQL Native Driver (mysqlnd)](https://www.php.net/manual/ru/book.mysqlnd.php)

Для работы системы требуются следующие расширения php:&#x20;

* imagick или gd
* mbstring
* pdo
* simplexml

Хостинг должен позволять указать в качестве корневой директории папку **public**. Обычно хостинги позволяют это сделать. Уточните этот момент у вашего хостинг-провайдера.

### Установка

* Скачиваем архив
* Распаковываем архив в папку выше уровня корневой. Таким образом, чтобы корневой папкой была папка public. Как это сделать уточните в поддержке вашего хостинг-провайдера или же на нашем форуме.
* Перейдите на главную страницу вашего сайта (вы будете переадресованы на страницу установки).
* Следуйте инструкциям описанным на странице установки

{% hint style="info" %}
Обязательно указывайте существующий e-mail адрес при установке т.к. он будет использоваться для отправки e-mail.
{% endhint %}

### Установка для разработки

Данный метод подойдет если вы хотите использовать последнюю версию системы из репозитория не дожидаясь полных релизов.\
Данный не рекомендуется использовать для рабочих проектов т.к. версия в репозитории может иметь ошибки и незавершенные доработки.

Есть несколько вариантов установки системы локально.

1. Установка и настройка локального окружения
2. Установка в Docker (рекомендуется)

#### Установка и настройка локального окружения

Данный способ подойдет если вы устанавливаете все окружение самостоятельно.\
Помимо описанного в системных требованиях программного обеспечения вам потребуется [Nodejs](https://nodejs.org/en/), [GIT](https://git-scm.com/), [composer](https://getcomposer.org/).

Склонируйте или скачайте репозиторий в нужную папку.\
Например так:

```bash
git clone https://github.com/johncms/johncms.git johncms
cd johncms
```

Установите и настройте окружение так, чтобы корневой папкой домена была папка public в корне проекта, который вы склонировали.

Установите зависимости выполнив поочередно следующие команды в консоли.

```bash
composer install
npm install
npm run build
```

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

{% hint style="info" %}
Если вы используете операционную систему linux или macos, можете выполнить команду **make cms-install** вместо описанных выше команд.
{% endhint %}

#### Установка в Docker (рекомендуется)

Установка с помощью Docker не требует от вас специальных знаний по настройке окружения.\
Все что вам потребуется, это [Docker](https://www.docker.com/) и [GIT](https://git-scm.com/).

Склонируйте или скачайте репозиторий.

```bash
git clone https://github.com/johncms/johncms.git johncms
cd johncms
```

Запустите контейнер (при первом запуске произойдет скачивание и сборка контейнера, а последующие запуски будут происходить быстрее).

{% tabs %}
{% tab title="MacOS/Linux" %}

```bash
make up
```

{% endtab %}

{% tab title="Windows" %}

```bash
docker-compose up -d
```

{% endtab %}
{% endtabs %}

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

{% tabs %}
{% tab title="MacOS/Linux" %}

```bash
make shell
```

{% endtab %}

{% tab title="Windows" %}

```bash
docker exec -it $(docker ps -q -f name=ubuntu) bash
```

{% endtab %}
{% endtabs %}

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

```bash
npm install && composer install && npm run build
```

Откройте браузер и установите систему.

Ваш сайт будет доступен по адресу <http://localhost:8000>

При установке вам потребуются данные для подключения к БД. Используйте следующие данные:

DB Host: **mariadb**\
DB Name: **johncms**\
DB User: **johncms**\
DB Password: **password**

Больше никаких настроек выполнять не требуется.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.johncms.com/10.0/nachalo-raboty/ustanovka-i-sistemnye-trebovaniya.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
