# Руководство по настройке проекта Этот документ описывает процесс настройки и развертывания окружения проекта с использованием 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 can_chat($user, 2); $can_chat_avito = $chat->can_chat($user, 1); ?> ``` **Закомментируйте эти строки, добавив `//` перед каждой строкой:** ```php 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 для диагностики проблем. За дополнительной информацией обратитесь к документации проекта или свяжитесь с командой поддержки.