Vagrant 部署python开发环境

时间:2023-03-09 09:04:23
Vagrant 部署python开发环境

Vagrant简介

Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。

在Windows下,也可以方便地使用Linux环境开发程序

官方文档 http://docs.vagrantup.com/v2/getting-started/index.html

box https://vagrantcloud.com/discover/featured

准备工作

下载安装 VirtualBox https://www.virtualbox.org/wiki/Downloads

下载安装 Vagrant http://www.vagrantup.com/downloads.html

初始化Vagrant

#进入D盘
C:\Windows\system32>d:
#创建一个虚拟机的主目录,这个目录会与虚拟机/vagrant保持同步
mkdir vagrant_getting_started
cd vagrant_getting_started
#初始化,这里需要一个centos的box,在box分享网站上可以找到chef/centos-6.5
vagrant init chef/centos-6.5
#启动虚拟机
vagrant up
#登录虚拟机
vagrant ssh

配置开发环境

su root
Password:vagrant
#更改root密码,方便SecureCRT登录 默认虚拟机22端口映射宿主机2222端口
service sshd reload
passwd root
#后续的服务器安全加固措施,可以使用key登录
#下面的操作是让虚拟机更加稳定
sudo yum update -y
sudo yum install gcc
sudo install kernel-devel

常用命令

box管理

vagrant box list #列出可用box
vagrant box add chef/centos-6.5 #添加云box上的镜像
vagrant box add chef/centos-6.5 chef/centos-6.5.box #添加本地box

虚拟机管理命令

vagrant up #启动
vagrant reload #修改Vagrantfile快速使之快速生效
vagrant halt #关闭
vagrant suspend #暂停
vagrant resume #恢复
vagrant destroy #删除

打包box

  1. 创建新的文件Vagrantfile.pkg
    Vagrant::Config.run do |config|
    #Forward apache
    config.vm.forward_port 80, 8080
    end
  2. 打包Project
    #打包完成后,会在工程根目录下生成package.box
    vagrant package --vagrantfile Vagrantfile.pkg
  3. private_network模式需要清除一下配置
    rm -f /etc/udev/rule.d/70-persistent-net.rules
    

Vagrantfile 配置

Vagrantfile 工程根目录下,虚拟机的主要配置文件,提供网络配置,共享配置,环境初始化配置

(支持shell命令及脚本,chef,puppet,salt,Docker)

网络配置

#端口映射
config.vm.network :forwarded_port, guest: 80, host: 8080
#私有网络
config.vm.network :private_network, ip: "192.168.1.104"
#DHCP接入实体网络
config.vm.network :public_network
#网卡桥接接入实体网络
config.vm.network "public_network", bridge: 'en1: Wi-Fi (AirPort)'

共享

#目录共享
config.vm.synced_folder "E:/Blog", "/home/vagrant/Blog"

环境初始化provision

执行脚本
#!/usr/bin/env bash
yum update
yum install -y apache2
rm -rf /var/www
ln -fs /vagrant /var/www
Vagrant.configure("2") do |config|
config.vm.box = "chef/centos-6.5"
config.vm.provision :shell, path: "bootstrap.sh"
end

运行Docker

异常问题

共享加载失败

Vagrant 部署python开发环境

vagrant halt
vagrant plugin install vagrant-vbguest
vagrant up