composer create-project drupal/drupal my_site_name_dir
cd my_site_name_dir/web
../vendor/bin/drush site-install --db-url=mysql://{username}:{password}@Localhost/{database}
После этих действий у меня структура сайта отличается от структуры при обычной установке
в папке my_site_name_dir:
-config
-drush
-scripts
-vendor
-web
в веб лежит ядро. Так и должно быть?
Спасибо. файл config пока не нашел, жду ответ от хостера. В настройках isp manager если у этого домена указать индексную страницу '/web' то все работает, но алиас тогда у гдавной и других страниц соответственно site/web, что тоже не подходит.
Я скопировал из папки web в папку проекта .htaccess и в нем изменил строку
DirectoryIndex /web/index.php /web/index.html /web/index.htm
Все заработало. Скажите пожалуйста это решение корректное или лучшу сделать так, как вы сказали?
Короче это специальная такая тема для бОльшей безопасности.
Я у себя на шареде для решения вопроса прописал симлинк на /веб, и работает нормально)
Здесь описано подробнее https://github.com/drupal-composer/drupal-project
Когда из веба доступна только директория web. То можно быть спокойным, что никто не будет смотреть ваши конфигурационные файлы, composer.json и т.д.
Чтобы корень проекта не был доступен из веба, достаточно, чтобы он не фигурировал в качестве корневой директории какого-либо из сайтов на вашем сервере. Т.е. в конфигах nginx или apache надо указывать в качестве директории сайта что-то вроде /блаблабла/кореньпроекта/web
На хостинге доступ к конфигурации сервера не дают. Перенаправить можно в пользовательском интерфейсе на папку web, но тогда алиас главной site.ru/web.
Интересно было бы услышать мнение насчёт копирования .htaccess и изменения DirectoryIndex - так у меня заработало, но не знаю правильно ли так делать.
Перенаправить можно в пользовательском интерфейсе на папку web, но тогда алиас главной site.ru/web.
Ну... если перенаправление сработает - то не будет site.ru/web, а будет site.ru.
С .htaccess играться тоже пытался по началу. У меня не получилось (но я и не особо старался)...
Зачем городить костыли, когда система работает хорошо без них?
Комментарии
Неверно указана директория сайта в настройках сервера.
у меня после команд
cd my_site_name_dir/web
../vendor/bin/drush site-install --db-url=mysql://{username}:{password}@Localhost/{database}
После этих действий у меня структура сайта отличается от структуры при обычной установке
в папке my_site_name_dir:
-config
-drush
-scripts
-vendor
-web
в веб лежит ядро. Так и должно быть?
подскажите пожалуйста где указать верную директорию
В настройках сервера уж. Apache или nginx?
nginx
Ну и пропишите в конфиге для сайта
root /var/www/example.com/web;
Спасибо. файл config пока не нашел, жду ответ от хостера. В настройках isp manager если у этого домена указать индексную страницу '/web' то все работает, но алиас тогда у гдавной и других страниц соответственно site/web, что тоже не подходит.
Я скопировал из папки web в папку проекта .htaccess и в нем изменил строку
DirectoryIndex /web/index.php /web/index.html /web/index.htm
Все заработало. Скажите пожалуйста это решение корректное или лучшу сделать так, как вы сказали?
пути меняешь в composer.json, удаляешь оттуда web.
Ну или ключ какой-то вроде бы был
не помогло.. при запуске "../vendor/bin/drush site-install --db-url=mysql://{username}:{password}@Localhost/{database} " выдает ошибку
Короче это специальная такая тема для бОльшей безопасности.
Я у себя на шареде для решения вопроса прописал симлинк на /веб, и работает нормально)
Здесь описано подробнее https://github.com/drupal-composer/drupal-project
Да, симлинк на web - очень удобно. Но главное, чтобы корень проекта не был доступен из веба, как у автора было изначально.
А как сделать его недоступным из веба! И на что влияет, если он доступен?
Когда из веба доступна только директория web. То можно быть спокойным, что никто не будет смотреть ваши конфигурационные файлы, composer.json и т.д.
Чтобы корень проекта не был доступен из веба, достаточно, чтобы он не фигурировал в качестве корневой директории какого-либо из сайтов на вашем сервере. Т.е. в конфигах nginx или apache надо указывать в качестве директории сайта что-то вроде /блаблабла/кореньпроекта/web
Спасибо
Данная структура уже более обычна.
Правильный путь, как уже указали в комментариях - натравить сервер на директорию web, а не на корневую.
На хостинге доступ к конфигурации сервера не дают. Перенаправить можно в пользовательском интерфейсе на папку web, но тогда алиас главной site.ru/web.
Интересно было бы услышать мнение насчёт копирования .htaccess и изменения DirectoryIndex - так у меня заработало, но не знаю правильно ли так делать.
Ну... если перенаправление сработает - то не будет site.ru/web, а будет site.ru.
С .htaccess играться тоже пытался по началу. У меня не получилось (но я и не особо старался)...
Зачем городить костыли, когда система работает хорошо без них?
Проверил сейчас ещё раз перенаправление - действительно адрес site.ru, а не site.ru/web. так тогда и оставлю. Спасибо всем за советы!
Прошу изменить комментарий решения на этот, т.к. я лишь "поддакивал", когда решение было посоветованно другим участником.
Хорошо) но все равно спасибо)