原标题:Docker-Swarm 分布式爬虫部署-开发环境篇。
软件安装
VirtualBox虚拟机下载地址:https://www.virtualbox.org/wiki/Downloads
Vagrant下载地址:https://www.vagrantup.com/downloads.html
图形界面操作步骤可参考:http://drupalchina.cn/book/export/html/6389
官方box镜像地址:https://app.vagrantup.com/boxes/search?order=desc&page=1&sort=downloads
手动下载Box并添加
为什么要手动下载,因为在线添加网络太慢,不开心
这里提供一个centos7的镜像百度网盘分享,分享码:
2p17
下图为本地Box添加演示
添加box指令:vagrant box add [自定义名称] [box镜像路径] 查看box指令: vagrant box list 删除box指令: vagrant box remove [自定义名称] 删除虚拟机指令: vagrant destory [虚拟机名称] 关闭虚拟器指令: vagrant halt [虚拟机名称] 重启虚拟器指令: vagrant reload [虚拟机名称] vagrant box add [自定义名称] [box镜像路径] vagrant box list vagrant box remove [自定义名称] vagrant destory [虚拟机名称] vagrant halt [虚拟机名称] vagrant reload [虚拟机名称]
初始化配置与Box使用
修改虚拟机镜像安装地址(因为window上、他默认放在C盘,所以给它搬个家,选择安装到自己需要的路径下)
vagrant box 添加后如果不进行配置的话,vagrant box 镜像会默认安装到C盘,同理需要搬家
使用
vagrant init
生成文件名为vagrantfile 的初始化文件Vagrantfile
文件常用设置如下:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
ENV["LC_ALL"] = "en_US.UTF-8"
#指定vm的语言环境,缺省地,会继承host的locale配置
Vagrant.configure("2") do |config|
# 定义centos
config.vm.define :centos do |centos|
centos.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "centos", "--memory", "4096","--cpus", "2"]
end
# 使用的Box名称
centos.vm.box = "centos"
# 自定义的名称
centos.vm.hostname = "centos"
# 为虚拟机分配内网IP地址。SSH可以直接通过192.168.33.11连接
centos.vm.network :private_network, ip: "192.168.33.11"
# 需要共享的目录
centos.vm.synced_folder "G:/code", "/workspace"
end
# 定义centos
config.vm.define :centos do |centos|
centos.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "centos", "--memory", "4096","--cpus", "2"]
end
# 使用的Box名称
centos.vm.box = "centos"
# 自定义的名称
centos.vm.hostname = "centos"
# 为虚拟机分配内网IP地址。SSH可以直接通过192.168.33.11连接
centos.vm.network :private_network, ip: "192.168.33.11"
# 需要共享的目录
centos.vm.synced_folder "G:/code", "/workspace"
end
end
创建多个开发机用于后期docker 分布式部署爬虫
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
ENV["LC_ALL"] = "en_US.UTF-8"
#指定vm的语言环境,缺省地,会继承host的locale配置
Vagrant.configure("2") do |config|
# master
config.vm.define :master do |master|
master.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "master", "--memory", "2048","--cpus", "2"]
v.customize ["modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "serial_console.log")]
end
master.vm.box = "centos"
master.vm.hostname = "centos"
master.vm.network :private_network, ip: "192.168.33.11"
master.vm.synced_folder "G:/code", "/workspace"
end
# slave1
config.vm.define :slave1 do |slave1|
slave1.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "slave1", "--memory", "2048","--cpus", "2"]
v.customize ["modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "serial_console.log")]
end
slave1.vm.box = "centos"
slave1.vm.hostname = "slave1"
slave1.vm.network :private_network, ip: "192.168.33.12"
slave1.vm.synced_folder "G:/code", "/workspace"
end
# slave2
config.vm.define :slave2 do |slave2|
slave2.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "slave2", "--memory", "2048","--cpus", "2"]
v.customize ["modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "serial_console.log")]
end
slave2.vm.box = "centos"
slave2.vm.hostname = "centos"
slave2.vm.network :private_network, ip: "192.168.33.13"
slave2.vm.synced_folder "G:/code", "/workspace"
end
end
使用
vagrant up
启动 一般在Vagrantfile
文件同级生成.vagrant
的配置文件夹(如果是首次启动通常比较慢,会生成虚拟机镜像,镜像位置以我们上一步配置的路径地址为准)修改配置文件需要重启。指令:
vagrant reload
。启动成功后可通过快捷指令连接:vagrant reload
注:如果在重启或者启动过程中提示尝试登录失败一般为公钥秘钥对应不上。可通过类似这样的
ssh vagrant@192.168.33.11
ssh命令直接登录使用密码登录即可。所有账号默认密码均为:vagrant
生成后的效果图如下:
前面导入的基础镜像centos 是原始镜像,后期可以基于原始镜像自己进行配置,装好各种开发环境候后打包,然后就可以带着打包好的box 镜像,无论换了多少家公司,一次搞定,当然,如果是团队的话,可以公用一个box 镜像,绝对一模一样的环境
为什么要用vagrant,因为它是跨平台的。
下篇文章会介绍vagrant打包, vagrant配合pycharm 一起使用以及docker-swarm 分布式部署,第一次写文章,大佬们请轻喷哈。