#permissions #windows-subsystem-for-linux #wsl-2 #ddev
#разрешения #windows-subsystem-for-linux #wsl-2 #ddev
Вопрос:
Я хочу использовать DDEV в качестве локальной среды разработки. Установка прошла успешно, и веб-сайт (WordPress) запущен.
В настоящее время наша команда использует XAMPP, и чтобы избежать загрузки больших файлов на каждом локальном компьютере, мы создаем символические ссылки (например, в папке «uploads» в WordPress). Целью является сетевой диск. Таким образом, у всех в нашей команде есть доступ к одним и тем же файлам.
Теперь я хочу сделать то же самое с DDEV. В WSL я смонтировал сетевой диск и создал символическую ссылку. Внутри консоли у меня есть полный доступ к смонтированному каталогу, я могу создавать, редактировать и удалять файлы.
Но когда я получаю доступ к файлу с помощью браузера, я получаю следующее сообщение об ошибке:
403 Запрещено. У вас нет разрешения на доступ к этому ресурсу.
Та же ошибка возникает, когда я пытаюсь загрузить новый файл в WordPress.
Есть ли какой-либо способ предоставить веб-серверу разрешение на просмотр и изменение файлов на сетевом диске?
Веб-сервер — это Apache / 2.4.38.
Комментарии:
1. Помните, что файловая система на хосте (в данном случае WSL2) отличается от файловой системы в контейнере. Итак, вам нужно будет 1) смонтировать внешнюю файловую систему в контейнер, возможно, с помощью docker-compose.*.yaml, а затем 2) Внутри веб-контейнера создать символическую ссылку, которая работает с ним. Вы можете изучить это внутри веб-контейнера
ddev ssh
, и когда символическая ссылка там работает, все в порядке. Рад помочь вам разобраться в этом, если у вас есть точный пример. Ключевым моментом является то, что вы должны смонтировать его в контейнер .2. Вам понадобится docker-compose.mountuploads . yaml на основе ddev.readthedocs.io/en/stable/users/extend/custom-compose-files /… и добавьте
volumes
раздел в веб-службу с элементом, который работает, например- /host/path/to/uploads:/mnt/uploads
, а затем вы можете добавить символическую ссылку на /mnt/uploads по мере необходимости. Имейте в виду, что docker может вообще не иметь возможности монтировать сетевые диски таким образом.3. Еще одно замечание: именно для этой ситуации в Drupal есть хороший модуль под названием stage_file_proxy, который устраняет необходимость даже удалять файлы этого типа. Если в WP есть что-то подобное … drupal.org/project/stage_file_proxy
4. @rfay Я создал файл docker-composer. Теперь я могу получить доступ к папке uploads в ddev ssh. Но когда я пытаюсь создавать файлы (например, с
touch
помощью), возвращается следующее сообщение об ошибке:touch: cannot touch 'test.txt': Permission denied
В моем тестовом примере мне нужны другие учетные данные для доступа к сетевому диску. Может ли это быть причиной? Это мой docker-compose-file:volumes: - /var/www/html/web/app/uploads:/mnt/t/ddev-test/uploads
5. Я переключил обе части, и теперь это работает, также с сетевым диском! Я не уверен, что именно решило основную проблему, потому что тем временем привилегии были обновлены на сетевом диске. Большое спасибо за вашу помощь!
Ответ №1:
Как упоминал @rfay, мне пришлось добавить сетевой диск в качестве тома, чтобы он был доступен через веб-контейнер. Поэтому я создал новый docker-compose-file в каталоге .ddev (см. Также В документах: https://ddev.readthedocs.io/en/stable/users/extend/custom-compose-files/#docker-compose42yaml-examples).
Кроме того, разрешения на сетевом диске были неверными.