Vagrant+virtualbox搭建虚拟开发

2017-11-24  本文已影响0人  萧格

1、软件下载

2、安装

下载好如上软件后,分别安装vagrant和virtualbox。

cd E:/workflow-project
vagrant box add centos7 virtualbox.box
vagrant box list
图1
vagrant init centos7

3、配置

用编辑器打开Vagrantfile文件,进行简单配置。

config.vm.hostname = "my_hostname"
config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: "true"
config.vm.network "forwarded_port", guest: 22, host: 2200

如上操作:表示映射本机的2200端口到虚拟机的22端口

config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "E:/wxf/html","/data/www",:mount_options => ["dmode=777","fmode=666"]
config.vm.provider "virtualbox" do |v|
  v.name = "xf-dev"  #虚拟机名称
  v.memory = "1024"  #内存大小
  v.cups = 2         #cup个数
end

4、启动

进入目录E:\workflow-project执行命令:

vagrant up

虚拟机启动之后则可以通过 vagrant ssh 联入虚拟机进行进一步的环境配置,在Windows系统下,并不能直接通过 vagrant ssh 连到虚拟机,需要使用 Putty,Xshell 等第三方工具进行连接。连接地址127.0.0.1,端口2200。登录的帐号 vagrant 的密码为 vagrant

sudo vim /etc/ssh/sshd_config

修改PasswordAuthentication no为yes,重启vagrant reload。如图4

图4

PS:vagrant up 后出现如下错误信息;

development: Warning: Authentication failure. Retrying...

在配置文件中(vagrantFile)添加

config.ssh.username = "vagrant"
config.ssh.password = "vagrant"

5、导出

vagrant package --base xf-dev --output my_box.box

完成后会在当前目录就会生成my_box.box,之后新建虚拟机则可使用这个box。如果事先在你的虚拟机里建立好了各种开发环境,那么你直接把这个box给你的团队其他成员用命令 vagrant box add my_box.box 进行安装,这样就可以省去一台台电脑部署的时间,还可以保持开发环境一致。很方便有木有。

6、其他命令

下面列举出一些常用的cmd操作命令

vagrant up   #(启动虚拟机)
vagrant halt   #(关闭虚拟机——对应就是关机)
vagrant suspend    #(暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用)
vagrant resume    #(恢复虚拟机 —— 与前面的暂停相对应)
vagrant box remove centos7    #(移除box,其中centos7是box名)
vagrant destroy    #(删除虚拟机,删除后在当前虚拟机所做进行的除了Vagrantfile中的配置都不会保留)

7、附件

图5

解决方案:

  1. 在本地主机执行:vagrant plugin install vagrant-vbguest , 再运行 vagrant reload重启即可
  2. 在虚拟机中执行:sudo yum install gcc kernel kernel-devel -y

8、开发环境搭建过程的坑及解决方案

sudo systemctl enable httpd
原因是:Apache或Nginx缓存造成。
sudo vim /etc/httpd/conf/httpd.conf
EnableSendfile off
sudo vim /etc/nginx/nginx.conf
sendfile off
[E:\test]$ vagrant reload
==> default: Clearing any previously set network interfaces...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: E_FAIL
VBoxManage.exe: error: Failed to create the host-only adapter
VBoxManage.exe: error: Could not find Host Interface Networking driver! Please reinstall
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCreate(struct HandlerArg *)" at line 94 of file VBoxManageHostonly.cpp

百度谷歌了一通,在virtualbox 管理 - > 全局设定 -> 网络 - > tab 仅主机网络 - > 添加。但是报如下错误:

Could not find Host Interface Networking driver!Please reinstall

这是因为没有虚拟网卡的驱动。
可以在安装virtualbox目录../Oracle VM VirtualBox中的 drivers\ network\ netadp6目录下看到VBoxNetAdp6.inf文件,右击安装即可。

9、虚拟主机配置

<VirtualHost *:80>
        DocumentRoot /data/www/kaifa
        ServerName kaifa.test.com
        ServerAlias kaifa.test.com
        ErrorLog /data/www/logs/kaifa-error_log
        CustomLog /data/www/logs/kaifa-access_log common
        <Directory /data/www/>
                Options FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>
上一篇下一篇

猜你喜欢

热点阅读