欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Drush的安装配置和应用

shiping1 的头像

 

Drush的安装

这里只介绍linux系统的安装方法,Drush有两种安装方式,最简单的方式是使用PEAR库。

首先确定系统中安装了PHP的PEAR库,然后在命令行执行:

pear upgrade
pear channel-discover pear.drush.org
pear install drush/drush

会自动下载Drush并安装完成,在命令行输入which drush,可以检查drush是否安装成功。

如果需要手动安装,按照以下步骤:

1.先到:http://drupal.org/project/drush#downloads 下载Drush,解压到除了Drupal网站目录的其它路径下。

2.设置drush脚本的权限为可执行:

$ chmod u+x /path/to/drush/drush
3.设置系统通过drush命令调用,编辑用户home目录下的.bashrc文件,在里面加入:
export PATH="$PATH:/path/to/drush:/usr/local/bin"

然后重新登录当前用户就可以正常使用drush了。

Drush的使用

Drush通过命令行命令的方式执行,可以用drush help显示所有的命令。

要对某个drupal站点进行操作,一个方式是用cd命令进入到Drupal站点的根目录或者子目录,然后执行drush命令,默认的操作对象就是当前所在Drupal站点。

另一个方式使用drush aliases,也就是drupal站点的别名,首先需要在drush的配置文件中定义要管理的drush站点别名:

1.把Drush目下的examples目录下的example.aliases.drushrc.php文件拷贝到Drush根目录,或者~/.drush目录中,这里的example为Drupal网站项目名称,可以更改为自定义的别名。

2.编辑*.aliases.drushrc.php文件,里面有详细的帮助说明,这里只介绍基本的语法。

  $aliases['dev'] = array(
    'root' => '/path/to/drupal',
    'uri' => 'dev.mydrupalsite.com',
  );

每定义一个$aliases数组值代表了一个Drupal站点,一个站点即Drupal目录中sites目录定义的一个子站,由于Drupal支持多站点,所以每个Drupal安装可以定义多个域名,每个域名可以共享数据库和设置,又可以拥有独立的数据和文件系统。

$aliases数组的键”dev”是站点的自定义名称,root是站点的根目录,uri是多站的域名,通常只有一个站点的情况下就是default。

$aliases定义的站点还可以使用远程站点,只需要拥有ssh权限即可以在本地对远程站点进行所有操作,还可以在远程和本地站点间进行同步操作,这点也非常的方便,具体配置请参见注释。

定义好Drupal站点后,在任何位置调用drush命令都可以直接指定操作的站点对象,格式为:drush @alias 命令。alias就是配置文件中定义的站点别名。比如要清除上面定义的站点dev的全部缓存,在命令行中执行:

drush @example.dev cache-clear

如果没有命名冲突也可以省略网站项目名,直接使用@dev。

详细的命令列表请参见drush help,还可以用“drush help 命令”的格式查看命令具体参数。

Drush多站点同步

对于开发者来说,Drush还有一个特别的应用,可以在多个Drupal站点间同步文件和数据库。比如我们在本地安装两份Drupal,然后在drush的aliases.drushrc.php配置文件中分别定义两个站点@dev和@live,然后就可以使用drush命令在两个站点间同步文件和数据库:

drush @dev @live rysnc
drush @dev @live sql-sysnc

第一个命令表示把@dev站点的所有的文件同步到@live站点,第二个命令表示把@dev站点的所有数据库同步到@live站点。@dev和@live的顺序表示同步的顺序,所有目标站点的原有数据会被清除,如果只希望有选择性的同步,要在站点的$aliases定义数组里添加相应的参数,具体请参见example.aliases.drushrc.php文件里的注释。

http://blog.ykfan.cn/blackhole/2011/11/11/drush%E7%9A%84%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE%E5%92%8C%E5%BA%94%E7%94%A8/

 

 

Drush 原理与应用

于志成@Zinch
vipzhicheng@gmail.com
http://www.drupal001.com
 

大纲

Drush概述
Drush原理
Drush安装
Drush应用
Drush未来
演示

 

Drush概述

什么是Drush?
Drush能做什么?
谁需要用Drush?
Drush相关资源
 

什么是Drush?

Drush = Drupal + shell

Drupal <-> Drush <-> Linux

 

$ drush cc
Enter a number to choose which cache to clear.
 [0]  :  Cancel
 [1]  :  all
 [2]  :  theme registry
 [3]  :  menu
 [4]  :  css+js
 [5]  :  block
 [6]  :  module list
 [7]  :  theme list
 [8]  :  registry
 

什么是Drush

开始于
2006 by Arto
第一个版本基于drupal4.7
思路来自于当年的DrupalCon
目前
稳定版:drush 4.5,最低版本php5.2
开发版: 5.x-dev, 同上,但已经有最低要求5.3的命令
支持
5,6,7
4, 不支持Windows

 

Drush 能做什么

网站管理(安装,升级)
项目管理(模块,主题,解决方案配置包,翻译)
核心管理(缓存,计划任务,用户,变量表)
数据库管理(查询,更新,备份,迁移)
编写脚本程序
可扩展性,使得Drush可以做的更多
Drush改变了网站的开发方式和维护方式
对Drush了解越多,用Drush能做的事情就越多。

 

谁需要用Drush

程序员
网站管理员
项目经理
架构师
任何人
 

 

谁需要用Drush

http://drush.ws
Drush官方网站
http://drupal.org/project/drush
Drush在Drupal的项目地址
http://drupal.org/documentation/modules/drush
Drush在Drupal的文档
http://drupal.org/taxonomy/term/4654
与Drush有关的模块

Google.com
与Drush有关的文章非常非常的多

 

Drush 原理

Drush命令执行路径
drush_main()
drush_dispatch()
drush_command();
drush_invoke()
_drush_invoke_args
自定义命令写法
命令文件,可以放在很多地方
MODULE.drush.inc
hook
MODULE_drush_command
MODULE_drush_help
MODULE_drush_init
MODULE_drush_load

 

Drush 原理

执行流程
hook_drush_init()
drush_COMMAND_init()
drush_hook_COMMAND_validate()
drush_hook_pre_COMMAND()
drush_hook_COMMAND()
drush_hook_post_COMMAND()
drush_hook_post_COMMAND_rollback()
drush_hook_COMMAND_rollback()
drush_hook_pre_COMMAND_rollback()
drush_hook_COMMAND_validate_rollback()
hook_drush_exit()

 

Drush 原理

BOOTSTRAP流程
define('DRUSH_BOOTSTRAP_DRUSH', 0);
define('DRUSH_BOOTSTRAP_DRUPAL_ROOT',  1);
define('DRUSH_BOOTSTRAP_DRUPAL_SITE', 2);
define('DRUSH_BOOTSTRAP_DRUPAL_CONFIGURATION', 3);
define('DRUSH_BOOTSTRAP_DRUPAL_DATABASE', 4);
define('DRUSH_BOOTSTRAP_DRUPAL_FULL', 5);
define('DRUSH_BOOTSTRAP_DRUPAL_LOGIN', 6);
 

Drush 原理

配置文件
~/.drush/drushrc.php
别名机制
~/.drush/aliases.drushrc.php
$aliases['dev'] = array(
     'root' => '/path/to/drupal',
     'uri' => 'dev.mydrupalsite.com',
 );
$ drush @dev cc
作为选项
作为参数
policy机制

 

Drush 应用

执行命令
$ drush [OPTIONS] command [ARGUMENTS]
写PHP脚本
#! /usr/bin/env drush
#! /path/to drush @d6.dev –user=1 php-script
 

Drush 应用

构建开发和测试环境
dev<->staging<->www
$ svn up / git pull
$ drush sql-sync --structure-tables-key=custom --no-cache @live @dev  --sanitize
$ drush rsync @staging:%files/ @live:%files
$ drush updatedb
$ drush features-rever t
构建网站开发解决方案
drush make
构建可重用功能特性
drush + features
 

Drush 应用

集成第三方扩展命令
backup_migrate
drush_make
node_export
devel
features
dbtng_migrator
drush_extras
module_builder
drush_views

 

Drush makefile 示例

api = 2
core = 6.x

projects[drupal][version] = "6.22"

; Modules
projects[views][subdir] = "contrib"
projects[views][version] = "2.11"

projects[cck][subdir] = "contrib"
projects[cck][version] = "2.8

 

Drush makefile 示例

; CKEditor
libraries[ckeditor][download][type]= "get"
libraries[ckeditor][download][url] = "http://download.cksource.com/CKEditor/CKEditor/CKEditor%203.4/ckeditor_3.4.zip"
libraries[ckeditor][directory_name] = "ckeditor"
libraries[ckeditor][destination] = "libraries"

 

Drush未来

drush5
runserver
site-ssh
Issue queue commands
$ drush iq-info 1070558
$ drush iq-apply-patch 1070558
Node commands
$ drush entity-show 1
$ drush entity-show 1 --json
$ drush entity-edit 1
$ drush entity-show 1 --json | drush entity-create
Parallelization

普通分类: