使用 drush 和 ssh 更新远程站点

Updating remote site with drush and ssh

我对 drush 很陌生。我们有一个 drupal 站点的 git 存储库,我想使用 drush 将其推送到远程服务器。我可以轻松地对 drupal 文件进行 scp 或在运行 git pull 的远程设备上设置 cron,但我仍然想学习如何推送代码并将远程 drupal 站点与本地 drupal 同步。

目前,我在本地有 drupal 运行,我使用 git 来更新存储库。 ssh 已经配置好,我可以使用密钥通过 ssh 连接到远程 drupal 服务器。我还创建了 .drush/aliases.drushrc.php 文件,并通过 运行 drush @dev status 对其进行了测试。效果不错

<?php

    $aliases['dev'] = array(
        'root' => '/var/www/html',
        'uri' => 'dev.example.com',
        'remote-host' => '192.168.1.50'
    );

?>

现在,我希望我的本地 drupal 站点与我们在 192.168.1.50 服务器上的服务器同步。本地 drupal 文件在我的 /home/ubuntu/drupal_site.

我有几个问题:

  1. 更新远程 drupal 服务器的 drush command/parameters 是什么?

  2. 如果远程服务器还没有 drupal 文件,那么 drush command/parameters 会怎样?

Drush 和 Git 工作流程在某种程度上有所不同,因为 Drush 可以单独提取包 - 您可能会使用 Git 推送到服务器。请务必检查 /files 目录,该目录通常位于 .gitignore 文件中——一种可能的方法是直接从实时站点镜像文件目录。

同时更新和检查 2 个或多个站点(本地站点和远程站点)的一种常见方法是在您计算机上的脚本上为您的站点使用 Drush 别名。

Articles like this one 是一个很好的起点。

同步drush arddrush @dev ard 或合适的别名之前的备份。可以在别名设置里设置备份路径

我认为您将远程服务器命名为 dev。这就是为什么我在下面保留它并使用本地 drupal 站点的别名 local

为您的本地 drupal 站点添加别名。然后就可以使用下面的命令来同步文件了:

drush rsync @local @dev

@local 是源,@dev 是目标。有关如何使用命令 rsync 的更多详细信息可以显示为:

drush help rsync

您还需要同步数据库以获取远程站点运行。为此,将数据库帐户数据添加到@local 和@dev 的别名数据中。它看起来像这样:

'databases' => array(
  'default' => array(
    'default' => array(
      'driver' => 'mysql',
      'username' => 'USERNAME',
      'password' => 'PASSWORD',
      'port' => '',
      'host' => 'localhost',
      'database' => 'DATABASE',
    )
  )
)

用您的数据替换 space 持有者。然后数据库可以同步:

drush sql-sync @local @dev

@local 是源,@dev 是目标。


最初同步将发生在一个方向。此后,最好将文件从开发或测试站点同步到生产站点。数据库以相反的方式从生产站点同步到开发或测试站点。