Шаг 1. Подготовка репозитория на локалке.
Инициализация Git-репозитория.
cd /путь/к/вашему/проекту
git initДобаление исключений .gitignore
# Скачиваем актуальный .gitignore для Drupal + Composer
curl -o .gitignore https://raw.githubusercontent.com/github/gitignore/main/Drupal.gitignore
echo "recipes/" >> .gitignore
echo "web/profiles/" >> .gitignore
# эти 4 библиотеки ставятся с помощью composer и установочных файлов модулей drupal
# (как вариант можно закинуть в игнор всю папку libraries)
echo "web/libraries/klaro/" >> .gitignore
echo "web/libraries/nouislider/" >> .gitignore
echo "web/libraries/rtseo.js/" >> .gitignore
echo "web/libraries/friendly-challenge/" >> .gitignoreДобавление файлов в репозиторий.
git add composer.json composer.lock .gitignore .gitattributes README.md LICENSE.txt
# Добавьте кастомные модули и темы (только свои!)
git add web/modules/custom/
git add web/themes/custom/
# добавление папки - экспорта конфигурации Drupal
# путь к папке у меня прописан в settings.php
# $settings['config_sync_directory'] = '../config/sync';
git add config/syncКомит
git commit -m "Add project config and ignore unnecessary files"
Шаг 2. Создание удалённого репозитория.
ssh user@your-server
mkdir -p /path/to/your/repo.git
cd /path/to/your/repo.git
git init --bare # --bare создаёт репозиторий без рабочей директории — это стандарт для удалённых репозиториев.Шаг 3. Пуш изменений на удаленный репозиторий
На локальной машине добавляем сервер как remote и отправляем код.
Дополнительно:
- Борцы с равноправием добрались до гита. Теперь основная ветка на
githubназываетсяmain, а неmaster. - Опция
-u(или--set-upstream) в командеgit push -u origin mainустанавливает связь между локальной и удалённой веткой.
Что это даёт: после выполнени этой команды,gitзапоминает, что локальная веткаmainотслеживает (tracks) удалённую веткуorigin/main.
Т.е. теперь можно писать:git push # вместо git push origin mastergit pull # вместо git pull origin master-u— это удобство. Один раз указали при первом пуше → дальше работает короткая форма.
git remote add origin user@your-server:/path/to/your/repo.git
git push -u origin masterШаг 4. Разворачивание репозитория в /var/www
-
cd /var/www git clone /path/to/your/repo.git cd ваш-проект - Устанавливаем зависимости.
Опция--no-devиспользуется при запускеComposerи означает:
«Не устанавливать зависимости, предназначенные только для разработки». (из секцииrequire-dev).
Еслиdrushбыл установлен как пакет разработки, то в случае применения этой опции,drushна сервер не поставится.composer install --no-dev -
Создаем БД под проект
CREATE USER '{db_user}'@'localhost' IDENTIFIED BY '{db_user_pass}'; CREATE DATABASE {db_name} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON {db_name}.* TO '{db_user}'@'localhost'; FLUSH PRIVILEGES; EXIT; -
Создаем settings.php вручную (на основе примера default.setting.php).
Заполняем настройки БД, хостинг и т.д.$settings['hash_salt'] = '{your_salt_key_string}'; # скопировать с localhost, сгенерировать или придумать самому $databases['default']['default'] = array ( 'database' => 'db_name', # заполнить своим значением 'username' => 'db_user', # заполнить своим значением 'password' => 'db_user_pass', # заполнить своим значением 'prefix' => '', 'host' => 'localhost', 'port' => '3306', 'isolation_level' => 'READ COMMITTED', 'driver' => 'mysql', 'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql', 'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/', ); // Папка импорта/экспорта конфигурации // Configuration → Development → Configuration synchronization → Export → Entire site $settings['config_sync_directory'] = '../config/sync'; // настройка trusted_host_patterns в Drupal — обязательна, // если включена защита от HTTP Host Header атак (включена по умолчанию в Drupal 8+) // заменить happyblitz.ru на нужный адрес URL $settings['trusted_host_patterns'] = [ '^happyblitz\.ru$', '^www\.happyblitz\.ru$', ]; /* // для localost // Защита от HTTP Host Header атак — разрешённые хосты $settings['trusted_host_patterns'] = [ '^localhost$', '^127\.0\.0\.1$', // Если используется PHP-сервер: http://localhost:8000 '^localhost:8000$', // Если используется кастомный домен, в моем случае happyblitz.local '^happyblitz\.local$', // Для IPv6 localhost (редко, но бывает) '^::1$', ]; */ - Импорт данных.
- Через дамп базы
- Через sync
-
Установка прав на каталоги с файлами
chown -R www-data web/sites/default chmod 775 web/sites/default chmod 664 web/sites/default/settings.php - Копируем файлы с
localhostна сервер в папкуweb/sites/default/files