起因:数周前本打算用 drupal做一个新站,在测试新站主题的时候。不小心把管理员账号锁死了。找了很多解决方法,其中一个最简单有效的方法,引起了我浓厚的兴趣。也就有了后面我所要写的这些内容,那这个简单有效的方法就是用drush里的一条命令就能搞定账号锁死的问题,
drush user-unblock 1
,由此引出了我对drush的向往。
在准备 drush 一下的时候,有朋友推荐先从 vagrant 学习。本文就从这里开始了。
首先说说我对 drush 对理解:drush就是用命令行输入简单的命令就可以达到管理和维护drupal网站的目的。这样做的唯一好处就是方便、快捷、高效。
那么说到用命令行就不得不说 linux,对于 Linux 由于是开源的。下属版本分支众多。大家最常用的linux三个版本:Ubuntu、Debian、Centos,而我选择的是Centos。因为工作室网站的服务器就用的这个系统,比较熟悉。至于原因自行百度,但凡事都有利弊。
本机PC用的windows7,由于前面我一直用WAMP或者WNMP搭建本地PHP环境的。这种windows 平台的PHP一键环境包类型也比较多。国内成熟的PHP程序都是自己一键包。但经过测试,国内的好些一键包对drupal以及其他国外开源PHP程序支持不够理想,好些一键包的web服务,php,mysql版本过低。软件更新不及时等一些因素。所以对外国好些开源PHP程序的支持体验并不理想。在众多一键安装环境中我觉得XAMPP的表现还不错。XAMPP也是Drupal,WordPress,Joomla!官方推荐的一键包。
但不知道为什么,可能是最近本人个人PC所致。我觉但XAMPP在我本地web开发中的表现也不尽人意。页面打开速度比较慢,也可能是程序自身的问题。为了追求drupal更好的性能体验和表现。我决定用linux,因为对于PHP程序用Linux做服务器比windows服务器更有优势。
这也是我选择用Centos做本地测试环境的一个主要原因,虚拟机就是为此而生。vagrant就是为虚拟机而生的。关于虚拟机,我之前一直用VMware Workstation,为了满足好奇心体验不同的操作系统。但是VMware建的虚拟机对于我8G内存的PC,运行速度有些不尽人意。也可能是由于VMware本身功能过于强大的原因,相比Oracle VM VirtualBox软件本身体积比VMware小很多,VirtualBox的大小只有VMware的1/4。所以相对于VMware虚拟机运行速度也提高不少。再加上用Vagrant做虚拟机的管理,如虎添翼。
也有很多人直接用虚拟机安装操作系统,在用虚拟机窗口进虚拟机配置环境。
但为什么还会出现vagrant这样管理虚拟机的程序呢?为什么还有那么多使用呢?关于用vagrant 管理虚拟机的好处,大家可以自行百度或者谷歌。在这里我只说下我个人感受,我个人觉得主要还是因为用vagrant高效快捷。对内存消耗不高,这样可以保证你在做开发测试的时候环境性能的最佳化。从所需软件安装完成后,后续过程可以全部用命令行完成。包括创建虚拟机,配置服务器环境都可以通过命令行工具完成。
这就是命令行在高效快捷上强于界面操作系统的最主要的原因。
关于Vagrant使用说明,网上有很多详细的教程。我在这里也不详细说明。我只说下,在我刚开始使用vagrant时所出现的问题。及一些问题的解决方法。
问题一:在我第一次使用Vagrant就出问题了。
问题描述: 网上的好多教程都是让你安装最新版的vagrant和最新版的VirtualBox,但我安装了最新版的vagrant和VirtualBox后,首次启动虚拟机的时候就出现了启动虚拟机失败的错误。
解决办法: 把最新版的VirtualBox的降至4.3.12版问题解决。
问题二:启动vagrant时候加载共享文件夹出错。
问题描述: 出现这个错误后,依然可以用ssh登录你的虚拟机建的服务器。但是你服务器里的vagrant文件夹不能本机的文件夹同步。
解决办法:
- 不用ssh登录你的虚拟机,在你的命令行执行就可以。windows可以amd或者win7以后自带的Windows PowerShell都可以。
vagrant plugin install vagrant-vbguest
vagrant reload
- 这种方法需要你在命令行vagrant up,启动你的虚拟机后。用ssh登录你的虚拟机后。在虚拟机的centos系统里运行。
yum update
yum install gcc
yum install gcc make
yum install kernel
yum install kernel-devel
然后,重启Centos。
问题三:连接不上网络或者网络连接失败。
问题描述: 一般用在官方新下的box的时候不会出现在这个错误。但是自己配置好环境后在打包成box的时候。在用自己的box安装虚拟机时出此问题的可能性较大。
解决办法:
- 打包box前先执行下面的命令,需要清除一下private_network的设置,避免不必要的错误
sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules
- 修改你工作目录下Vagrantfile这个配置文件
# config.vm.network "private_network", ip: "192.168.33.10"
# config.vm.network "public_network"
如果用private_network的注意ip和本机ip是否冲突,不可在同一网段。
————补充————–
如果已经安装了设置过网络box的出这个问题的话。那此时依然可以vagrant ssh 登录你的虚拟机,
登录进去后用下面这个命令删除70-persistent-net.rules这个文件
sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
exit /退出虚拟机
vagrant reload /重启你刚建的虚拟机就可以了
问题四:认证失败
问题描述: 启动 vagrant 或者重启 vagrant 的时候一直不听报错
default: Warning: Authentication failure. Retrying…
解决办法:
在 Vagrantfile 这个文件里面添加了这两行,然后关掉关掉虚拟机。
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"
注释掉这两行代码
vagrant reload
重启虚拟机,问题解决。
补充问题:配置好服务器重新制作box,加载新box时出错。
问题描述: 打包配置好的服务器的后,删除本地的vagrant和VirtualBox后,又重新安装了最新版的vagrant和irtualBox后。出现问题
问题1:

尝试各种解决办法后,无奈删除最新版VirtualBox,降至4.3.12后。删除vagrant配置文件Vagrantfile和.vagrant的文件夹,重新vagrant init, vagrant up 后出错。原因没有重启电脑。
重启电脑进项目文件夹vagrant up,出错网卡错误。
问题2

然后用上面问题三的办法解决。删除虚拟机系统网络配置文件后,vagrant reload。
问题解决