Как правильно перенести проект на хостинг?

Главные вкладки

Аватар пользователя towi towi 15 декабря 2021 в 20:00

У меня есть готовый 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. Чтобы сайт работал мне нужно где-нибудь прописывать эти настройки подключения к БД в каком-то другом файле?

Лучший ответ

Аватар пользователя ivnish ivnish 15 декабря 2021 в 21:46
1

1) Да, нужно любым удобным способом создать БД и импортировать туда ваш дамп
2) Если сайт устанавливался композером, то там скорее всего папка vendor должна быть вне веб-рута. Это значит, что не всё нужно помещать в папку public_html. И нет, не нужно устанавливать чистый сайт на хостинге.
3) Забудьте про .env, в данном случае это файл с настройками для d4d и на хостинге он просто не будет работать
4) Как уже ответили выше, параметры доступа к БД нужно прописывать в файле settings.php

Комментарии

Аватар пользователя marassa marassa 15 декабря 2021 в 21:13
1

На один вопрос могу ответить: настройки подключения Друпала к БД находятся в файле /sites/default/settings.php.

Аватар пользователя ivnish ivnish 15 декабря 2021 в 21:46
1

1) Да, нужно любым удобным способом создать БД и импортировать туда ваш дамп
2) Если сайт устанавливался композером, то там скорее всего папка vendor должна быть вне веб-рута. Это значит, что не всё нужно помещать в папку public_html. И нет, не нужно устанавливать чистый сайт на хостинге.
3) Забудьте про .env, в данном случае это файл с настройками для d4d и на хостинге он просто не будет работать
4) Как уже ответили выше, параметры доступа к БД нужно прописывать в файле settings.php

Аватар пользователя towi towi 15 декабря 2021 в 22:09

Да, сайт устанавливался композером. У меня сейчас вот такая структура на хостинге:

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

что не всё нужно помещать в папку public_html

А что нужно помещать не в public_html? И куда это нужно на хостинге помещать?

Аватар пользователя marassa marassa 15 декабря 2021 в 22:14

Тут совсем недавно очень подробно разбиралась правильная структура папок, лень искать.
В корне аккаунта создать папку site. Именно она станет корнем веб-проекта. В нее перенести всё с локального сайта, ну или пересоздать композером.
Папку public_html удалить и создать вместо нее ссылку с таким же названием на папку site/web.

Аватар пользователя towi towi 15 декабря 2021 в 22:43

А как на хостинге в Cpanel в менеджере файлов создать ссылку? Я пересмотрел всю панель но нашел ничего такого:

Или это через терминал нужно сделать?

И что вы имели в виду под:

ну или пересоздать композером

Ну тоесть что именно пересоздать композером?

Аватар пользователя towi towi 15 декабря 2021 в 22:50

Кстати в тех. поддержке хостинга предупредили:

Не в коем случае нельзя удалять папку public_html, это папка основного домена, удалите ее и ничего работать не будет.

если что то нужно поместить перед сайтом то не проблема, папку vendor вы можете разместить в корне аккаунта.,т.е. до папки public_html

Аватар пользователя marassa marassa 15 декабря 2021 в 22:55

towi wrote: А как на хостинге в Cpanel в менеджере файлов создать ссылку?

Понятия не имею, я именно через терминал делал.

towi wrote: что именно пересоздать композером?

Все файлы Вашего сайта (за исключением Вашего собственного кастомного кода) можно воссоздать на хостинге, скопировав туда только composer.json и composer.lock и запустив команду composer install. Но кастомный код всё равно переносить отдельно, так что есть ли в таком варианте смысл - не знаю. Проще наверное все скопировать с локалки.

Аватар пользователя OldWarrior OldWarrior 16 декабря 2021 в 3:07

marassa wrote: Понятия не имею, я именно через терминал делал.

К слову, не все shared-хостинги предоставляют возможность создавать символические ссылки на файловые ресурсы.

Аватар пользователя Лала Лала 20 декабря 2021 в 3:00

У меня Drupal9загружен с помощью Composer. Папки и файлы, все что на картинке, заливаю на сервер:

(Исключение - папки и файлы в папке пользовательской темы.) Что здесь лишнее?

Аватар пользователя VasyOK VasyOK 20 декабря 2021 в 7:13

"Лишнее" то - что ставится Композером:

  • ядро
  • модули и темы с орга
  • libraries у продвинутых друпалистов типа colorbox, slick и т.п.

Т.е. на сервер это переносить не нужно (папку vendor к примеру). Нужно перенести файлы composer.lock, composer.json и запустить composer install на сервере. Потом на сервер "долить" то, что композером не ставиться:

  • кастомную тему и модули
  • libraries - если впадло ставить их Комозером
  • файлы сайта - oбычно из sites/default/files
  • патчи (если они в виде файлов их надо залить до composer install)
  • файлы дампа БД
  • файлы конфигруций полученных через drush cex

Когда переносите файлы, не нужно переносить:

  • папки php , js, css
  • папку styles
  • папку config_абракадабра, если вы не знаете зачем это. А если знаете эта папка не должна быть в files.
  • .htaccess

Извините если пишу, что и так знаете.
Гит - это конечно хорошо, когда переносишь постоянно сайт с тестового на продакшн, тогда вам не приходится вспоминать какие модули и патчи ставили, правки в теме делали. Но можно и без него Smile

Аватар пользователя Лала Лала 20 декабря 2021 в 20:29

Я Гит для переноса не использую. Файл .gitattributes появился у меня потому, что я открываю Git Bash, на сервер его не переношу.
Я переносила все папки и файлы, кроме
файла .gitattributes
web/INSTALL.txt
web/README.txt
(Текстовый файл README.txt также удаляю из папок themes и sites).

Из папки темы удаляю папку src и всё, что связано с Gulp.

Запустить composer install на своём сервере не могу, памяти не хватает.

Аватар пользователя VasyOK VasyOK 20 декабря 2021 в 22:43

Хотелось бы спросить специалистов Друпала: насколько содержимое папки vendor отличается на разных серверах?
Мне казалось, что Композер под параметры сервера компоненты в vendor устанавливает.

Аватар пользователя ivnish ivnish 21 декабря 2021 в 7:20

В папку vendor устанавливаются различные php пакеты. Это зависимости ядра или контрибов. Соответственно, если на разных сайтах у тебя разные модули, то и содержимое папки vendor будет отличаться. А ещё у каждой версии ядра разные версии зависимостей. Ну и ещё от версии PHP тоже зависят версии вендоров

Аватар пользователя VasyOK VasyOK 21 декабря 2021 в 9:07

А какие проблемы могут быть при подходе Лалы: собирать Композером сайт у себя, а потом собранное переносить на продакшн?

Аватар пользователя ivnish ivnish 21 декабря 2021 в 9:12

Не знаю, как делает Лала, но я собираю сайты локально, а потом с помощью гита доставляю их на дев/стейдж/продакшен. Проблема тут только одна - не понимать как это работает

Аватар пользователя ivnish ivnish 21 декабря 2021 в 9:34

Нет конечно. В гите только то, что не ставится композером и всё что не скаффолдится.

Вот тут можешь посмотреть, что должно быть в гите

"С помощью гита" - это я имел в виду доставку composer.lock с изменениями Smile

Аватар пользователя ivnish ivnish 21 декабря 2021 в 9:53

Можно не делать, но лучше делать. Не делать только в случае говнохостинга, где composer install не запускается

Аватар пользователя ivnish ivnish 21 декабря 2021 в 10:05

Это грозит тем, что тебе нужно ВРУЧНУЮ доставить на сервер все файлы, которые должен скачать composer или скопировать scaffold ядра.

Аватар пользователя gun_dose gun_dose 21 декабря 2021 в 13:19

Если на проде composer install не запускается, то можно же запустить его на сиайке, а потом просто весь билд запушить на продакшн. Делов то.