蓝鲸智云统一开发环境搭建指南

导出PDF

背景

蓝鲸智云开发需要依赖 Django,celery,mysql-client 等第三方库,而像 celery 又依赖其他多个库,新手在搭建本地开发环境时,过程繁琐,问题百出。

不同开发者,开发环境不同, 有 Window,有 mac。Window 版本也不完全一致,开发者需要一个统一开发环境,方便调试。 蓝鲸智云提供的统一开发环境和线上使用的系统、库版本一致。

想要在多平台下开发,必须依赖于虚拟环境,蓝鲸智云提供统一开发环境使用 virtualbox 做 hypervisor,使用 Vagrant 做管理工具,下面对使用方法做详细介绍。

Vagrant安装配置

下面以 Windows 版本为例子,假设安装目录为 D:\Program Files。

1.安装 Vagrant,添加 D:\Program Files\Vagrant\bin 到PATH环境变量

下载地址

图一

2.安装 virtualbox

根据提示一步一步安装完成后,添加 D:\Program Files\VirtualBox 到 PATH 环境变量。

下载地址

3.安装 ssh客户端(如果本地已经有,请跳过这一步)

Vagrant 使用 ssh 命令需要本地装 ssh 命令行客户端(注意 XShell, SecureCRT 等 GUI 不能被使用)。

下载完成后,解压到任意目录,如 D:\Program Files\OpenSSH-Win32,添加到 PATH 环境变量。

下载地址

运行以下命令,能正常返回版本号,说明安装成功。

vagrant --version
VBoxManage --version #Virtualbox管理工具
ssh -V

图二

添加蓝鲸镜像到Vagrant

Vagrant 需要基础镜像才能使用,蓝鲸已经制作好了应用开发镜像,里面包含了 Mysql、 Rabbit-MQ、django 等应用开发所需的环境,即开即用。

下载地址

使用命令添加镜像到 Vagrant

vagrant box add bk bk-django1.8.box

bk-django1.8.box 是下载的镜像名称,bk是添加的镜像名称,注意这个后面会需要用到。

初始化环境

Vagrant 第一次使用需要初始化环境,如开发环境为 D:\WorkStation\vagrant\django18,切换到工作目录,下文所有命令都是在工作目录下执行。

cd D:\WorkStation\vagrant\django18 #切换到工作目录
vagrant init bk #初始vagrant,bk为上面添加的名字
vagrant up #启动环境
vagrant ssh #登录环境

Vagrant 会在当前目录新建 .vagrant 目录并生成 Vagrantfile 配置文件,修改 Vagrantfile ,可以定制化 Vagrant,如端口映射,同步目录等 。

注意:

1)默认 Vagrant 会把当前目录做共享文件夹,挂载到 /vagrant 下

2)蓝鲸镜像 root 和 vagrant 用户的密码都是 vagrant

1.创建数据库

蓝鲸统一开发环境已经安装 mariadb 5.5(兼容mysql5.5),新的应用使用需要先创建数据库。

vagrant ssh #登录环境
mysql -u root #登录mysql
created database 'app_code' default character set utf8 collate utf8_general_ci; #创建数据库

2.APP 代码获取,切换工作目录

Vagrant 默认会当前目录挂着到 /vagrant 目录下,把应用的代码拷贝到 D:\Work Station\vagrant\django18(初始化工作目录),在虚拟环境中即可看到应用的代码,假设应用为 test-bk1, 切换到应用的工作目录 /vagrant/test-bk1/ 。

cd /vargrant/test-bk1 #切换工作目录

3.创建表结构&升级表结构(默认仅支持 Django1.8)

新的 APP 或者 APP 有数据库变更时,需要 migrate 到数据库中才能使用(Django migrate请查看)。

python manage.py migrate #Django1.8已经集成migrate

运行环境,应用开发

切换到应用的工作目录 /vagrant/test-bk1/。

cd /vagrant/test-bk1/ #切换到应用工作目录
python manage.py runserver 0.0.0.0:8000 #运行 Django 注意添加0.0.0.0,否则本地不能访问
python manage.py celery worker -l info #启动另外一个 cmd 窗口,运行 celery 后台任务

在本地浏览器即可,访问8000端口即可。

Vagrant常用命令

$ vagrant init #初始化虚拟机
$ vagrant up #启动虚拟机
$ vagrant halt #关闭虚拟机
$ vagrant reload #重启虚拟机
$ vagrant ssh #SSH至虚拟机
$ vagrant status #查看虚拟机运行状态
$ vagrant destory #销毁当前虚拟机

Vagrantfile 配置文件详解

在开发目录下有一个文件 Vagrantfile,里面包含有大量的配置信息,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置。Vagrant 是使用 Ruby 开发的,所以它的配置语法也是 Ruby 的,但是我们没有学过 Ruby 的人还是可以跟着它的注释知道怎么配置一些基本项的配置。

1.网络设置

Vagrant 有两种方式来进行网络连接,一种是 host-only(主机模式),意思是主机和虚拟机之间的网络互访,而不是虚拟机访问 internet 的技术,也就是只有你一個人能使用,其他人访问不到你的虚拟机。另一种是 Bridge(桥接模式),该模式下的 VM 就像是局域网中的一台独立的主机,也就是说需要 VM 到你的路由器要 IP,这样的话局域网里面其他机器就可以访问它了,一般我们设置虚拟机都是自己使用为主,所以我们的设置一般如下:

config.vm.network :private_network, ip: “11.11.11.11”

这里我们虚拟机设置为 hostonly,并且指定了一个 IP,IP 的话建议最好不要用 192.168.X.X 这个网段,因为很有可能和你局域网里面的其它机器 IP 冲突,所以最好使用类似 11.11.X.X 这样的 IP 地址。

2.同步目录

我们上面介绍过 /vagrant 目录默认就是当前的开发目录,这是在虚拟机开启的时候默认挂载同步的。我们还可以通过配置来设置额外的同步目录:

config.vm.synced_folder “/Users/astaxie/data”, “/vagrant_data”

上面这个设定,第一个参数是主机的目录,第二个参数是虚拟机挂载的目录。

3.端口转发

config.vm.network :forwarded_port, guest: 8000, host: 8000

这一行的意思是把对 host 机器上8000端口的访问请求 forward 到虚拟机的8000端口的服务上,例如你在你的虚拟机上使用 nginx 跑了一个Go应用,那么你在 host 机器上的浏览器中打开 http://localhost:8000 时,Vagrant 就会把这个请求转发到 VM 里面跑在8000端口的 nginx 服务上,因此我们可以通过这个设置来帮助我们去设定 host 和 VM 之间,或是 VM 和 VM 之间的信息交互。

修改完 Vagrantfile 的配置后,记得要用 vagrant reload 命令来重启 VM 之后才能使用 VM 更新后的配置

更多内容请查阅官方文档

注意: Virtualbox 虚拟化需要 BIOS 开启虚拟化支持,详细请点击

本文档是否对您有帮助?