Рейтинг:0

CSS, JS, ... не созданы сайтом drush: установить

флаг gq

Установка Drupal завершается сбоем после следующих шагов в системе Debian (база данных уже создана и привилегии предоставлены конкретному пользователю):

(пользователь) $ composer create-project drupal/recommended-project myproject
# ... спросите, можно ли установить composer/installers, drupal/core-composer-scaffold и drupal/core-project-message, ответьте Yes 
# ... выдает 2 предупреждения о том, что доктрина/рефлексия и webmozart/path-util устарели
(пользователь) $ cd мой проект
(пользователь) $ composer composer require drush/drush
(пользователь) $ drush site:install --locale=fr
# ... запрашивает учетные данные MySql
# ... отображает учетные данные администратора.

Все работает гладко, без сообщений об ошибках, только 3 вопроса и 2 предупреждения, упомянутые выше.

Тем не менее, после запуска этих команд, согласно документации по установке Drupal (https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies#s-install-drupal-using-the-command-line) сайт должен быть доступен через Интернет. Тем не менее, когда я просматриваю настроенный путь (DocumentRoot установлен в «веб-каталог»), я получаю нестилизованную страницу (тот же внешний вид, что и CSS не применяется на сайте drupal 8 , но таблицы стилей href установлен в "/").

Если я выберу путь установки через Интернет вместо запуска Drush, все будет работать нормально, за исключением незначительных неприятностей с настройками разрешений в разделе «веб/сайты/по умолчанию».

Сравнение обоих "веб-каталогов" показывает, что (помимо незначительных различий из-за разных хэшей) нет каталогов «css», «js», «languages» или «php». создан и заполнен в установленном Drush "web/sites/default/files" каталог.

Что я делаю не так? Я не смог найти помощи ни в документации Drupal, ни в погуглить.

  • Друпал: 9.3.9
  • Композитор: 2.2.9
  • Друш: 11.0.7

заранее спасибо

флаг cn
Скорее всего, это разрешения. Вы устанавливаете с одним пользователем, а затем обслуживаете через Интернет с другим пользователем, который не может записывать в папки, созданные первым пользователем в ходе установки. Убедитесь, что `www-data` или эквивалент могут записывать в папки файлов и папку tmp.
phep avatar
флаг gq
@Clive спасибо за ваш комментарий, но, как указано в моем вопросе, проблема возникает только тогда, когда вся установка запускается из командной строки, очевидно, с одним и тем же пользователем, поэтому никакая проблема с разрешениями не может быть связана. Общая проблема, которую вы описываете, связана с установкой через Интернет, но в моем случае эта проблема работает нормально.
флаг cn
Как вы получили «страницу без стилей» через командную строку? То, что вы описали, по-прежнему указывает на проблему с разрешением. Запустите sudo -u www-data touch docroot/sites/default/files/test.txt, чтобы убедиться. Если вы получаете ошибку разрешения на эту операцию, вы, вероятно, нашли проблему
phep avatar
флаг gq
@Clive Я отредактировал вопрос, чтобы попытаться прояснить, что проблема возникает, когда установка выполняется с помощью вызова Drush, а не через «core/install.php». Как уже говорилось, если я устанавливаю с помощью веб-интерфейса, я не сталкиваюсь с существенными проблемами. Это происходит, когда я вместо этого использую `drush site:install`. Согласно документации, запуск этой команды должен приравниваться к обычному веб-процессу (я имею в виду просмотр core/install.php, ... Теперь стало понятнее?
флаг ru
Drush не создает ни JS, ни CSS, ни кеш-файлов, это происходит по запросу при посещении страниц в браузере. И если они не создаются по запросу, то почти наверняка из-за разрешений. И даже веб-установка * работает нормально, за исключением незначительных ** неприятностей с настройками разрешений в разделе «веб / сайты / по умолчанию» ***
флаг cn
Да, я сталкиваюсь с этими настройками изо дня в день, они мне очень знакомы :) Думаю, я вижу, в чем путаница - папки css/js/php не генерируются установкой сайта, они генерируются последующий веб-запрос. Таким образом, вы устанавливаете через Интернет, папка «files» принадлежит «www-data», и в последующем веб-запросе «www-data» может писать в эту папку. Когда вы устанавливаете через интерфейс командной строки, `files` принадлежит `foo_user`, затем, когда выполняется последующий веб-запрос, `www-data` не может записывать в эту папку, потому что она принадлежит `foo_user`
phep avatar
флаг gq
Спасибо @Clive и @Hudri за то, что нашли время ответить, но не могли бы вы сказать мне тогда, какой смысл вообще запускать `drush site:install`, если вам все еще нужно пройти путь `core/install.php` после . Я думал, что drush точно позволит нам установить и настроить сайт Drupal с помощью сценариев и воспроизводимым способом.
флаг cn
Вы справились, это именно то, что делает `site:install` - вам не нужно после этого посещать core/install.php (на самом деле вы не можете, он сообщит вам, что сайт уже установлен). Если это не пограничный случай, основанный на чем-то, что пока не видно в контексте, стили почти наверняка отсутствуют, потому что веб-сервер не может записывать на сайты/по умолчанию/файлы. Я только что опубликовал ответ с подробным описанием обоих процессов, надеюсь, это поможет его прояснить.
leymannx avatar
флаг ne
Просто для полноты: в обоих случаях файл .htaccess существует в web/ и раскомментирован ли RewriteBase?
Рейтинг:0
флаг cn

Упомянутые вами папки не генерируются в процессе установки сайта, они генерируются запросом страницы к самому получившемуся сайту Drupal.

При установке через UI происходит следующее:

  • Друпал устанавливается
  • сайты/по умолчанию/файлы создаются и принадлежат веб-серверу (обычно www-данные)
  • Вы перенаправляетесь на внешний интерфейс сайта, Drupal генерирует ресурсы и пытается сохранить их на сайтах/по умолчанию/файлах.
  • Запрос выполняется как www-данные, папка принадлежит www-данные, так что все хорошо - файлы создаются.

При установке через CLI все немного по-другому:

  • Друпал устанавливается
  • сайты/по умолчанию/файлы созданы и принадлежат пользователю, которого вы запустили толкотня как, что обычно не было бы www-данные (если это так, у вас не должно быть этих проблем).
  • Вы посещаете сайт в браузере, Drupal генерирует ресурсы и пытается сохранить их на сайтах/по умолчанию/файлах.
  • Запрос выполняется как www-данные, но папка принадлежит вашему пользователю, поэтому никаких плашек - файлы не создаются.

Высокий уровень, ответ заключается в том, чтобы убедиться www-данные может писать в папку sites/default/files после установки через CLI. Защита прав доступа и владельцев файлов docs есть некоторые предложения о том, как вы можете это сделать.

phep avatar
флаг gq
Не могли бы вы сказать мне, что именно вы имеете в виду в 3-м шаге процесса установки CLI, который вы описываете, когда говорите: «Вы посещаете сайт в браузере»? Вы имеете в виду любой URL-адрес (связанный с сайтом) или какой-то конкретный _конец URL-адреса установки_? И в этом случае я повторяю свой вопрос: какая польза от пути Друша? В любом случае спасибо, я ценю вашу помощь.
флаг cn
Я имею в виду буквально любой URL-адрес в интерфейсе сайта, а не конкретный. Когда агрегация CSS/JS включена (как это делается по умолчанию после установки), агрегированные файлы генерируются по запросу при посещении страницы и с этого момента кэшируются. Ваша текущая проблема, похоже, заключается в том, что агрегированные файлы не могут быть записаны, и шаги, которые вы наметили, чтобы добраться до этого момента, поддерживают эту идею.
phep avatar
флаг gq
Спасибо за терпеливость. Жаль, что такая базовая подсказка отсутствует в документации Drupal. Я должен признать, что до сих пор я никогда не пересекал путь веб-приложения, которое ждет самого первого нецелевого/неаутентифицированного соединения для завершения процесса установки ;-).
флаг cn
Это сходит с рук, потому что генерация ресурсов должна быть динамической, а не частью процесса установки. Но я понимаю, что вы имеете в виду, это сбивает с толку, если вы не делали этого сто раз раньше

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.