289 lines
8.9 KiB
Markdown
289 lines
8.9 KiB
Markdown
|
|
# Руководство по настройке проекта
|
|||
|
|
|
|||
|
|
Этот документ описывает процесс настройки и развертывания окружения проекта с использованием 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 для диагностики проблем.
|
|||
|
|
|
|||
|
|
За дополнительной информацией обратитесь к документации проекта или свяжитесь с командой поддержки.
|