🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余10个优惠名额) →

在服务器上运行 Drupal:使用 drush

drush,它允许我们使用命令去操纵 Drupal,你可以使用命令行工具,配合对应的 drush 命令,去做不同的事情。比如 drush dl pathauto ,会去安装一个叫 pathauto 的模块,执行 drush cc ,可以清空 Drupal 的缓存,drush cron 可以运行 Drupal 的维护任务,最让人头疼的升级 Drupal,使用 drush ,一条命令就可以,drush up drupal 。drush 会让我们的日常管理工作变得轻松很多。

drush 并不是一个用在 Drupal 上的模块,你不能直接把它安装在 Drupal 上,它是单独的一套东西,drush 项目放在了 github 上面管理,你可以在 github 上下载到 drush。目前最新版是 drush 7,可以用它来操作 Drupal 6,7,8。不过这个版本需要用到 Composer,我在测试的时候,没能成功使用 Composer 安装 Drush,或者用 Composer 去安装 drush 所依赖的东西,我猜应该是国内网络的问题(或者是阿里云的网络问题?),在 DigitalOcean 上测试安装 Composer 没有任何问题。在本地测试,也是可以正常安装 Composer,只是特别慢。

所以,我们现在只能用 drush 6 ,按说使用 Composer,一条命令就可以安装 drush,不过由于我们不能正常使用 Composer,所以只能使用手工安装的方式,并且安装的是 drush 6,因为 drush 7 即便使用手工安装的方式,最后也会要用到 Composer 去安装 drush 所依赖的东西。下面我们就在使用 CentOS 系统的阿里云搭建的 LNMP 环境下面去安装使用 Drush。

手工安装 drush

  1. 打开 drush 在 github  上的页面,然后选择 6.x 分支(branch)。
  2. 复制下面链接,在页面右边栏,右键点击 Download Zip,选择 复制链接地址(Chrome 浏览器)。
  3. 用 ssh 登录到服务器,进入到目录 /usr/local/bin ,可以使用 cd 命令:cd /usr/local/bin
  4. 下载 Drush,用 wget 命令,后面加上刚刚复制的 drush 的下载地址:wget https://github.com/drush-ops/drush/archive/6.x.zip
  5. 下载以后解压一下,用 ls 命令查看一下目前里的东西,你应该会找到 6.x (zip 扩展名哪去了?),然后解压一下这个 6.x,使用 unzip 命令:unzip 6.x
  6. 重命名,解压后你会得到一个名为 drush-6.x 的目录,使用 mv 命令重命名一下它:mv drush-6.x drush
  7. 让系统可以执行 drush 命令,需要编辑一下 .bash_profile,使用 vim 命令:vim ~/.bash_profile,然后输入一行代码:export PATH="$PATH:/usr/local/bin/drush:/usr/local/bin" ,保存 .bash_profile 文件。
  8. 重新登录一下,或者使用 source 命令:source ~/.bash_profile
  9. 输入 drush,你应该可以看到一大堆帮助信息,说明已经可以用 drush 了。

常用的 drush 命令

输入 drush 回车,你会看到所有可以使用的 drush 命令。然后进入到 Drupal 网站所在的目录,使用 drush 再加上具体的命令,就可以操作它了。比如查看 Drupal 网站的相关信息:

drush status

上面这条命令会告诉你当前这个 Drupal 的版本,使用的数据库,网站根目录,文件系统,临时目录的位置等等。

管理模块

使用 drush 可以很容易去下载,启用或禁用模块, drush dl 模块名,可以下载模块,模块的名字你可以在 Drupal 的官方网站查看到,一般模块的页面是 https://drupal.org/project/模块名,project 后面的东西就是模块的名称,使用这个名称,配合 drush 命令,你就可以去下载它了。 像这样:

drush dl module_filter

上面这行 drush 命令,会去下载一个叫 module_filter 的模块,drush 会根据当前 Drupal 的版本去下载合适的模块版本,你也可以自己去选择要下载的模块版本,后面要加上一个 --select 参数,注意这里是两个横线:

drush dl module_filter --select

返回:

Choose one of the available releases for module_filter:
 [0]  :  Cancel                                                    
 [1]  :  7.x-2.0-alpha2  -  2013-Dec-06  -  Supported, Recommended 
 [2]  :  7.x-2.x-dev     -  2013-Dec-06  -  Development            
 [3]  :  7.x-1.x-dev     -  2013-Oct-27  -  Development            
 [4]  :  7.x-1.8         -  2013-Aug-08  -  Supported

这个可选的模块列表会按更新的时间顺序排列,输入序号,按下回车,可以去下载所选择的版本的模块。想要启用这个模块可以用 drush en 模块名

drush en module_filter

这会提示你,是否要启用这个 module_filter 模块,在启用模块的时候,你也可以加上一个 --yes 参数,这样就会直接启用模块了,不会再询问你是否要启用。

drush en module_filter --yes

要禁用模块,可以使用 drush dis 模块名,比如禁用 module_filter 模块:

drush dis module_filter --yes

升级 Drupal 或模块

Drupal 会定期检查是否有更新,如果有会发送邮件提醒你,一般的更新可以忽略,不过安全更新一定要执行,升级 Drupal 和模块让很多人头疼,使用 drush 命令来升级会非常的简单。虽然 drush 在升级的时候会帮我们备份一下要升级的东西,不过最好是自己先备份一下,特别是数据库。升级 Drupal 的核心可以这样:

drush up drupal

是的,就这样一行命令。它会为我们去检查是否有更新,如果有就会询问你是否要升级。更新 Drupal 的模块,同样使用 drush up,后面再加上要更新的模块的名称。比如要更新 module_filter 这个模块:

drush up module_filter

一般的维护工作

清空 Drupal 的缓存,还有运行 cron ,是我们经常要做的事情。使用 drush 去做这些事会更容易,要执行 cron:

drush cron

清空缓存:

drush cc

使用 drush cc 清空缓存的好处是,你可以选择要清空哪种类型的缓存,命令会返回提示:

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

输入对应的序号,然后回车,就可以清空对应的缓存了。

Drupal drush

评论

很不错哦,皓哥细心人~~写的这么详细~~~

试下看看,有没有问题。

太棒了

太棒了,刚刚试了试,的确很方便,接着我又想到wordpress有没有类似工具,还真又,wp-cli

嘿,发现了啊。我刚好想介绍一下呢。

macos 可以用吗。

ERROR: can't find php.

出现错误

# drush status
The following restricted PHP modes have non-empty values: [error]
disable_functions. This configuration is incompatible with drush.
Please check your configuration settings in
/usr/local/php/etc/php.ini or in your drush.ini file; see
examples/example.drush.ini for details.

王兄,看了你的《dupal日常维护》。现在drush 在vagrant 上面一切正常。
我今天在我的阿里云上用drush就出现问题了

rockts ,如果你的服务器上还没有东西的话,可以给我一个管理权限。这样很难判断是什么问题。

好的,你帮我看看。什么时候?

这个目测是你装中文版出现的问题,进度在使用translations 模块的时候连接不上翻译服务器,超时后出现这个故障,使用英文原版可以避免此问题

mac os 如何安安装drush!!!!

Project drupal was updated successfully. Installed version is now 8.3.5.
用drush更新durpal至8.3.5,但是在网站检查仍是8.2.1,模块也更新不了,提示文件已存在不能删除。

请问皓哥,装完执行drush 提示
[preflight] The following restricted PHP modes have non-empty values: {disable_functions}. This configuration is incompatible with drush. {Please check your configuration settings in /www/server/php/72/etc/php.ini or in your drush.ini file; see examples/example.drush.ini for details.}
是啥原因?

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点