Оглавление
1. Установка системы
1. Чтобы установить систему на сервер, сначала нужно установить на сервер Docker. Процесс установки Docker зависит от операционной системы, которая уже установлена на сервере. Инструкции по установке можно найти по ссылке https://docs.docker.com/engine/install/.
2. Далее необходимо скопировать на сервер репозиторий, который был передан вам в Gitlab/Hub.
Если копируем через логин/пароль, то команда такая:
2. Далее необходимо скопировать на сервер репозиторий, который был передан вам в Gitlab/Hub.
Если копируем через логин/пароль, то команда такая:
git clone -b dev https://gitlab.com/username/project(название проекта) и далее вводим пароль
Если в настройка к учетной записи в Git стоит, 2-х факторная аутентификация, то необходимо создать токен (заходим в свой Git Lab, идем в Settings, идем в Access Token, создаем токен и сохраняем его) по которому будет происходить логин и копирование репозитория и команда такая:
git clone https://oauth2:PERSONAL_ACCESS_TOKEN@gitlab.com/username/project.git
Если в настройка к учетной записи в Git стоит, 2-х факторная аутентификация, то необходимо создать токен (заходим в свой Git Lab, идем в Settings, идем в Access Token, создаем токен и сохраняем его) по которому будет происходить логин и копирование репозитория и команда такая:
git clone https://oauth2:PERSONAL_ACCESS_TOKEN@gitlab.com/username/project.git
3. После копирования репозитория, необходимо на сервере перейти в корень репозитория и в нем найти файл с названием [.env.example](.env.example), далее необходимо создать копию этого файла и назвать его [.env](.env).
4. В получившемся [файле](.env) устанавливаем желаемое название базы данных и пароль `DB_DATABASE` `DB_PASSWORD` (если база данных не изменяется оставляем значение по умолчанию)
5. Устанавливаем `APP_DOMAIN` на которых будет запущен фронтенд сайта и адрес его апи: APP_DOMAIN=(ваш домен)
4. В получившемся [файле](.env) устанавливаем желаемое название базы данных и пароль `DB_DATABASE` `DB_PASSWORD` (если база данных не изменяется оставляем значение по умолчанию)
5. Устанавливаем `APP_DOMAIN` на которых будет запущен фронтенд сайта и адрес его апи: APP_DOMAIN=(ваш домен)
6. Заполняем поля для отправки почтовых сообщений
MAIL_HOST=(ваш адрес почтового сервиса), где MAIL_HOST указывает на адрес почтового сервиса, например smtp.yandex.com;
MAIL_PORT=(порт сервиса), где MAIL_PORT - порт сервиса, например 465;
MAIL_USERNAME=(ваш логин), где MAIL_USERNAME логин почтового сервиса;
MAIL_PASSWORD=(ваш пароль), где MAIL_PASSWORD пароль. Пароль может быть как от аккаунта, так и создаваться отдельно для доступа по smtp в зависимости от почтового провайдера;
MAIL_FROM_ADDRESS=(ваш логин), где MAIL_FROM_ADDRESS логин почтового сервиса;
MAIL_HOST=(ваш адрес почтового сервиса), где MAIL_HOST указывает на адрес почтового сервиса, например smtp.yandex.com;
MAIL_PORT=(порт сервиса), где MAIL_PORT - порт сервиса, например 465;
MAIL_USERNAME=(ваш логин), где MAIL_USERNAME логин почтового сервиса;
MAIL_PASSWORD=(ваш пароль), где MAIL_PASSWORD пароль. Пароль может быть как от аккаунта, так и создаваться отдельно для доступа по smtp в зависимости от почтового провайдера;
MAIL_FROM_ADDRESS=(ваш логин), где MAIL_FROM_ADDRESS логин почтового сервиса;
7. Запускаем приложение командой (Необходимо находится в корне репозитория, где расположен файл docker-compose.prod.yml):
docker compose -f docker-compose.prod.yml up -d
Первый запуск может занять некоторое время. Даже после того как все контейнеры будут запущены, некоторое время backend будет недоступен, т.к. будет происходить установка зависимостей и запуск миграций. Отслеживать статус установки можно командой:
docker compose -f docker-compose.prod.yml backend logs
8. После запуска можно войти на сайт под учетной записью администратора:
login: admin@admin.ru
password: admin@admin.ru
login: admin@admin.ru
password: admin@admin.ru
9. Если необходимо заполнить таблицу компетенций, то после установки и полной работоспособности сайта выполните команду:
docker compose -f docker-compose.prod.yml exec backend php artisan db:seed --class=CompetenceSeeder
2. Если возникли проблемы
Если что-то не работает, то запускаем команду:
docker compose ps
В списке обязательно должны работать и не перезагружаться `backend` контейнер и `nginx` контейнер,`frontend` контейнер может как работать так и быть остановлен в зависимости от будущих реализаций.
- Попробуйте перезагрузить nginx командой:
docker compose -f docker-compose.prod.yml restart nginx
- Если не установился frontend, необходимо выполнить команду:
docker compose -f docker-compose.prod.yml exec frontend npm run build
- Если перезагружается backend и cron, проверяем логи командой:
docker compose -f docker-compose.prod.yml backend logs
Если видно что не может получить доступ к файлу `entrypoint.sh`, то скорее всего не настроены права доступа к файлам. Необходимо прописать владельца папки и файлов проекта `www-data`.
Если не помогло, то как временное решение можно выполнить `chmod 777 -R ./` для папки `backend` (перейти в папку backend и выполнить команду `chmod 777 -R ./`)
Если не помогло, то как временное решение можно выполнить `chmod 777 -R ./` для папки `backend` (перейти в папку backend и выполнить команду `chmod 777 -R ./`)