Joywork/README.md

289 lines
8.9 KiB
Markdown
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
# Руководство по настройке проекта
Этот документ описывает процесс настройки и развертывания окружения проекта с использованием Docker.
В нем содержатся инструкции по установке, запуску контейнеров, настройке базы данных и устранению возможных ошибок.
## Предварительные требования
Убедитесь, что на вашем локальном компьютере установлены следующие компоненты:
- **Docker** (для контейнеризации)
- **Docker Compose** (для управления многоконтейнерными приложениями Docker)
- **Git** (для контроля версий и управления репозиториями)
## Шаги
### 1. Клонирование репозитория
Если репозиторий проекта размещен на Git, клонируйте его с помощью следующей команды:
```sh
git clone https://gt.joywork.ru/JW/joywork.dev.git
cd joywork.dev
```
---
### 2. Переход в каталог Docker
Перейдите в каталог, где находятся файлы конфигурации Docker (`docker-compose.yml` и другие):
```sh
cd ./docker
```
---
### 3. Сборка и запуск контейнеров Docker
Выполните следующие команды для сборки и запуска контейнеров с помощью Docker Compose:
```sh
docker-compose build
docker-compose up -d
```
- Первая команда собирает образы Docker в соответствии с конфигурацией.
- Вторая команда запускает контейнеры в фоновом режиме (`-d`).
---
### 4. Установите права доступа для файла `my.cnf`
Чтобы установить права доступа `chmod 644` для файла `my.cnf`, выполните следующую команду:
**Linux**
```sh
sudo chmod 644 ./mysql/my.cnf
```
**Windows**
Команды надо запускать в терминале Powershell
```powershell
icacls "./mysql/my.cnf" /grant "Everyone:(R)"
```
Эта команда задаст права на файл следующим образом:
- Владелец может читать и изменять файл.
- Все остальные пользователи могут только читать файл.
---
### 5. Ожидание завершения импорта базы данных
Перед открытием проекта убедитесь, что импорт базы данных завершен.
Используйте следующую команду, чтобы отслеживать статус импорта:
**Linux**
```sh
watch -n 2 "docker exec -i DataBase mysql -u root -p'root' -e 'SHOW PROCESSLIST;'"
```
**Windows**
Команды надо запускать в терминале Powershell
```powershell
while ($true) {
docker exec -i DataBase mysql -u root -p'root' -e "SHOW PROCESSLIST;"
Start-Sleep -Seconds 2
}
```
Когда процесс импорта завершится, можно продолжить настройку.
---
### 6. Важное изменение в файле `templates/new-header.php`
Для корректной работы проекта **необходимо закомментировать строки 587-591** в файле `templates/new-header.php`.
Найдите и измените код:
```php
<?php
$chat = new ChatsCianAvito();
$can_chat_cian = $chat->can_chat($user, 2);
$can_chat_avito = $chat->can_chat($user, 1);
?>
```
**Закомментируйте эти строки, добавив `//` перед каждой строкой:**
```php
<?php
// $chat = new ChatsCianAvito();
// $can_chat_cian = $chat->can_chat($user, 2);
// $can_chat_avito = $chat->can_chat($user, 1);
?>
```
Без этого изменения проект может не запуститься или работать некорректно.
---
### 7. Открытие проекта в браузере
После завершения настройки вы можете открыть проект в браузере по следующему адресу:
```
http://localhost
```
- **Логин:** `+79650964640`
- **Пароль:** `12345`
Этот URL будет служить для доступа к проекту, работающему внутри контейнера Docker.
---
## 8. Полная очистка данных перед запуском (MySQL и Sphinx) (Если прежне уже был устоновлен JW)
Если требуется сбросить все данные MySQL и Sphinx перед запуском контейнеров, выполните следующие шаги:
### **8.1. Остановите все контейнеры Docker**
```sh
docker-compose down
```
### **8.2. Полностью очистите данные MySQL**
Удалите данные MySQL, чтобы сбросить базу:
**Linux**
```sh
sudo rm -rf ./mysql/data
mkdir -p ./mysql/data
sudo chown -R 999:999 ./mysql/data
```
**Windows**
Команды надо запускать в терминале Powershell
```powershell
Remove-Item -Recurse -Force .\mysql\data
New-Item -Path .\mysql\data -ItemType Directory
icacls .\mysql\data /grant "Users:(OI)(CI)F"
```
### **8.3. Полностью очистите данные Sphinx**
Удалите старые индексы и логи:
**Linux**
```sh
sudo rm -rf sphinx/index/
sudo rm -rf sphinx/binlog/
sudo mkdir -p sphinx/index/
sudo mkdir -p sphinx/binlog/
sudo rm -rf sphinx2/index/
sudo rm -rf sphinx2/binlog/
sudo mkdir -p sphinx2/index/
sudo mkdir -p sphinx2/binlog/
```
**Windows**
Команды надо запускать в терминале Powershell
```powershell
Remove-Item -Recurse -Force .\sphinx\index\
Remove-Item -Recurse -Force .\sphinx\binlog\
New-Item -Path .\sphinx\index -ItemType Directory
New-Item -Path .\sphinx\binlog -ItemType Directory
Remove-Item -Recurse -Force .\sphinx2\index\
Remove-Item -Recurse -Force .\sphinx2\binlog\
New-Item -Path .\sphinx2\index -ItemType Directory
New-Item -Path .\sphinx2\binlog -ItemType Directory
```
### **8.4. Установите правильные права доступа**
Чтобы контейнеры могли записывать в папки, установите соответствующие права:
**Linux**
```sh
sudo chown -R 999:999 ./sphinx/index
sudo chown -R 999:999 ./sphinx/binlog
sudo chown -R 999:999 ./sphinx2/index
sudo chown -R 999:999 ./sphinx2/binlog
sudo chmod -R 777 ./sphinx/index
sudo chmod -R 777 ./sphinx/binlog
sudo chmod -R 777 ./sphinx2/index
sudo chmod -R 777 ./sphinx2/binlog
```
**Windows**
Команды надо запускать в терминале Powershell
```powershell
icacls .\sphinx\index /grant "Users:(OI)(CI)F" /T
icacls .\sphinx\binlog /grant "Users:(OI)(CI)F" /T
icacls .\sphinx2\index /grant "Users:(OI)(CI)F" /T
icacls .\sphinx2\binlog /grant "Users:(OI)(CI)F" /T
```
### **8.5. Перезапустите контейнеры**
После очистки данных снова запустите контейнеры:
```sh
docker-compose up -d
```
### **8.6. Проверьте состояние контейнеров**
Убедитесь, что все контейнеры успешно запущены:
```sh
docker ps
```
Если возникли ошибки, проверьте логи:
```sh
docker-compose logs
```
---
## Заключение
После выполнения этих шагов:
- Контейнеры Docker будут запущены и работать.
- База данных MySQL будет восстановлена из файла `/docker/dump/schema.sql`.
- Вы сможете проверить структуру и данные базы данных.
- Проект будет доступен по адресу `http://localhost`.
- MySQL будет доступен через phpMyAdmin по адресу `http://localhost:8085`.
---
## Устранение неполадок
Если во время настройки возникли ошибки:
- Проверьте логи с помощью команды:
```sh
docker-compose logs
```
- Перезапустите контейнеры при необходимости:
```sh
docker-compose down && docker-compose up -d
```
- Проверьте логи ошибок MySQL для диагностики проблем.
За дополнительной информацией обратитесь к документации проекта или свяжитесь с командой поддержки.