Перейти к основному содержанию

Инициализация git репозитория проекта, экспорт проекта на хост

Шаг 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 и отправляем код.
Дополнительно:

  1. Борцы с равноправием добрались до гита. Теперь основная ветка на github называется main, а не master.
  2. Опция -u (или --set-upstream) в команде git push -u origin main устанавливает связь между локальной и удалённой веткой.
    Что это даёт: после выполнени этой команды, git запоминает, что локальная ветка main отслеживает (tracks) удалённую ветку origin/main.
    Т.е. теперь можно писать:
    git push    # вместо git push origin master
    git 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

  1. cd /var/www
    git clone /path/to/your/repo.git
    cd ваш-проект
  2. Устанавливаем зависимости.
    Опция --no-dev используется при запуске Composer и означает:
    «Не устанавливать зависимости, предназначенные только для разработки». (из секции require-dev).
    Если drush был установлен как пакет разработки, то в случае применения этой опции, drush на сервер не поставится.
    composer install --no-dev
  3. Создаем БД под проект

    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;
  4. Создаем 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$',
    ];
    */
  5. Импорт данных.
    • Через дамп базы
    • Через sync
  6. Установка прав на каталоги с файлами

    chown -R www-data web/sites/default
    chmod 775 web/sites/default
    chmod 664 web/sites/default/settings.php
  7. Копируем файлы с localhost на сервер в папку web/sites/default/files