Windows 7使用Vagrant构建虚拟开发环境
接触过一点儿SAE的Python开发,在Windows 7下用virtualenv搭建本地开发环境,按着教程一步一步操作,最后得到的环境还是不容易正常使用,出现诸如调用脚本需要指定全路径之类的问题。看到Vagrant这个有用的工具,当然要尝试一下。
安装
需要安装最新版的VirtualBox和Vagrant,并将VirtualBox和Vagrant的目录添加到系统环境变量PATH中。
准备镜像
vagrant使用在virtualbox虚拟机基础上封装的box镜像。Vagrant在添加镜像时会自动下载镜像文件,但鉴于国内访问国外网的速度,建议事先使用下载工具单独下载镜像。
Box镜像下载站:<//www.vagrantbox.es/>
我下载Vagrant官方的Ubuntu precise 64 VirtualBox镜像,存放到某个目录下面,比如:
F:\Virtual Machine\vbox\precise64.box
创建环境
创建开发目录
作为使用vagrant的主目录,后续将自动生成配置文件Vagrantfile,并将该目录自动映射到虚拟机中的/vagrant目录下。比如,使用如下目录
D:\project\vagrant\dev
添加镜像
使用 vagrant box add [box-name] [box-url] 添加box。box名称默认为base。
在上面目录处打开命令行提示符或powershell。添加镜像F:\Virtual Machine\vbox\precise64.box到Vagrant,使用如下命令:
[shell]
vagrant box add base “file://f:\Virtual Machine\vbox\precise64.box”
[/shell]
其中base为box名称,后面是镜像文件的路径。
提示:
表示成功添加名为base的box。
初始化
在开发目录中初始化vagrant。
[shell]
vagrant init [box-name]
[/shell]
如果box是base,可以省略box-name,否则必须给出box的名字。
执行命令后显示:
表示自动生成配置文件Vagrantfile,可以使用vagrant up启动虚拟机。
修改配置文件
添加某些选项,方便后续开发。
比如网络设置采用端口映射:
[ruby]
config.vm.network :forwarded_port, guest: 80, host: 8080
[/ruby]
使用
基本操作命令
vagrant init 初始化
vagrant up 启动虚拟机
vagrant halt 关闭虚拟机
vagrant reload 重启虚拟机
vagrant ssh SSH登陆虚拟机
vagrant status 查看虚拟机运行状态
vagrant destroy 销毁当前虚拟机
启动虚拟机
[shell]
vagrant up
[/shell]
显示信息:
上面有两个端口映射(22和80)以及一个共享文件夹映射(/vagrant)。
SSH登陆
使用vagrant ssh登陆虚拟环境。但Windows的命令行提示符cmd没有ssh命令。不过由于我安装git时添加其到环境变量PATH,git内置ssh命令,可以直接在命令行中登陆。
可以使用其他ssh客户端,如Putty、Xshell等。
地址为127.0.0.1
端口见上面的映射关系,为2222
用户名为vagrant
Private key为 C:/Users/用户名/.vagrant.d/insecure_private_key
安装软件
添加中文支持
镜像为英文版,需要添加简体中文支持
[shell]
sudo apt-get install language-pack-zh-hans
[/shell]
修改默认语言为简体中文,编辑/etc/default/locale,将语言改为zh_CN.UTF8。
添加各种Python库
首先需要安装python-pip。
安装mysql-dev遇到EnvironmentError: mysql_config not found问题,找不到头文件。需要安装libmysqld-dev,和python-dev。
进一步
释放C盘空间
vagrant把box默认放在C盘的用户文件夹下,严重占用C盘空间(其实最初的box也就300多兆大小),我需要将其移动到其它位置。
将.vagrant.d文件夹移动到其它位置,并设置他的路径为环境变量VARANT_HOME即可。
参考
vagrant官网:<//www.vagrantup.com/>
virtualbox官网:https://www.virtualbox.org/
两篇博文
PyCharm中使用Vagrant的官方说明:《Configuring to work on a VM》
PS
搭建环境后,发现无法使用SAE的本地开发工具,dev_server.py运行的端口无法在宿主机访问,还需进一步研究是否是端口没有开放的原因。