У меня есть готовый Drupal 9 проект, который во время разработки поднимал с помощью docker4drupal а все устанавливал с помощью composer. В контейнере phpmyadmin сделал експорт БД и у меня на компе теперь есть файл bc.sql. Теперь я хочу залить этот проект на хостинг.
Вопрос №1:
Правильно ли будет перенести вот так:
1. Создать БД в CPanel в разделе Базы данных, там же создать пользователя БД и связать базу с пользователем дав все права, потом зайти в PHPmyadmin и импортировать дамп в базу данных (тоесть мою БД - bc.sql).
2. Через ftp залить весь проект в папку public_html и сайт будет отображаться если введу в url адрес домена.
Или вместо второго пункта нужно: скачать и установить такую же версию друпал сайта, загрузить ее на хостинг, в установочнем окне прописать БД, пароль БД, БД пользователя и установить, а потом уже заменить все файлы новоустановленого сайта на все файлы моего сайта который пока находится на компьютере?
Вопрос №2
В файле .env который принадлежит docker4drupal прописаны такие настройки:
DB_NAME=...
DB_USER=...
DB_PASSWORD=...
DB_ROOT_PASSWORD=...
DB_HOST=mariadb
DB_PORT=3306
DB_DRIVER=mysql
Эти настройки используются в файле docker.composer.yml, но я ведь не буду сайт на хостинге поднимать с помощью докера, и наверное мне не нужно вообще заливать файлы .env и docker-compose.yml. Чтобы сайт работал мне нужно где-нибудь прописывать эти настройки подключения к БД в каком-то другом файле?
Комментарии
На один вопрос могу ответить: настройки подключения Друпала к БД находятся в файле /sites/default/settings.php.
1) Да, нужно любым удобным способом создать БД и импортировать туда ваш дамп
2) Если сайт устанавливался композером, то там скорее всего папка vendor должна быть вне веб-рута. Это значит, что не всё нужно помещать в папку public_html. И нет, не нужно устанавливать чистый сайт на хостинге.
3) Забудьте про .env, в данном случае это файл с настройками для d4d и на хостинге он просто не будет работать
4) Как уже ответили выше, параметры доступа к БД нужно прописывать в файле settings.php
Да, сайт устанавливался композером. У меня сейчас вот такая структура на хостинге:

А структура проекта вот такая:

А что нужно помещать не в public_html? И куда это нужно на хостинге помещать?
Тут совсем недавно очень подробно разбиралась правильная структура папок, лень искать.
В корне аккаунта создать папку site. Именно она станет корнем веб-проекта. В нее перенести всё с локального сайта, ну или пересоздать композером.
Папку public_html удалить и создать вместо нее ссылку с таким же названием на папку site/web.
А как на хостинге в Cpanel в менеджере файлов создать ссылку? Я пересмотрел всю панель но нашел ничего такого:

Или это через терминал нужно сделать?
И что вы имели в виду под:
Ну тоесть что именно пересоздать композером?
Кстати в тех. поддержке хостинга предупредили:
Понятия не имею, я именно через терминал делал.
Все файлы Вашего сайта (за исключением Вашего собственного кастомного кода) можно воссоздать на хостинге, скопировав туда только composer.json и composer.lock и запустив команду composer install. Но кастомный код всё равно переносить отдельно, так что есть ли в таком варианте смысл - не знаю. Проще наверное все скопировать с локалки.
К слову, не все shared-хостинги предоставляют возможность создавать символические ссылки на файловые ресурсы.
Меняйте хостинг.
А что, гитом в 2к21 уже никто не пользуется?
У меня Drupal9загружен с помощью Composer. Папки и файлы, все что на картинке, заливаю на сервер:
(Исключение - папки и файлы в папке пользовательской темы.) Что здесь лишнее?
"Лишнее" то - что ставится Композером:
Т.е. на сервер это переносить не нужно (папку vendor к примеру). Нужно перенести файлы composer.lock, composer.json и запустить composer install на сервере. Потом на сервер "долить" то, что композером не ставиться:
Когда переносите файлы, не нужно переносить:
Извините если пишу, что и так знаете.
Гит - это конечно хорошо, когда переносишь постоянно сайт с тестового на продакшн, тогда вам не приходится вспоминать какие модули и патчи ставили, правки в теме делали. Но можно и без него
Я Гит для переноса не использую. Файл .gitattributes появился у меня потому, что я открываю Git Bash, на сервер его не переношу.
Я переносила все папки и файлы, кроме
файла .gitattributes
web/INSTALL.txt
web/README.txt
(Текстовый файл README.txt также удаляю из папок themes и sites).
Из папки темы удаляю папку src и всё, что связано с Gulp.
Запустить composer install на своём сервере не могу, памяти не хватает.
Хотелось бы спросить специалистов Друпала: насколько содержимое папки vendor отличается на разных серверах?
Мне казалось, что Композер под параметры сервера компоненты в vendor устанавливает.
В папку vendor устанавливаются различные php пакеты. Это зависимости ядра или контрибов. Соответственно, если на разных сайтах у тебя разные модули, то и содержимое папки vendor будет отличаться. А ещё у каждой версии ядра разные версии зависимостей. Ну и ещё от версии PHP тоже зависят версии вендоров
А какие проблемы могут быть при подходе Лалы: собирать Композером сайт у себя, а потом собранное переносить на продакшн?
Не знаю, как делает Лала, но я собираю сайты локально, а потом с помощью гита доставляю их на дев/стейдж/продакшен. Проблема тут только одна - не понимать как это работает
То есть весь контриб (и ядро?) тоже в гите? А смысл?
Нет конечно. В гите только то, что не ставится композером и всё что не скаффолдится.
Вот тут можешь посмотреть, что должно быть в гите
"С помощью гита" - это я имел в виду доставку composer.lock с изменениями
Тогда нет вопросов - просто неправильно понял.
Т.е. можно не делать composer install непосредственно на проде?
Можно не делать, но лучше делать. Не делать только в случае говнохостинга, где composer install не запускается
Вот я и спрашиваю: чем это грозит.
Это грозит тем, что тебе нужно ВРУЧНУЮ доставить на сервер все файлы, которые должен скачать composer или скопировать scaffold ядра.
Если на проде composer install не запускается, то можно же запустить его на сиайке, а потом просто весь билд запушить на продакшн. Делов то.