1、软件下载
- 下载vagrant:访问官网 http://www.vagrantup.com/downloads.html
- 下载virtualbox:访问官网 https://www.virtualbox.org/wiki/Downloads
- 下载虚拟镜像:访问官网 http://www.vagrantbox.es/
2、安装
下载好如上软件后,分别安装vagrant和virtualbox。
- 在主机上新建一个目录:E:\workflow-project
打开cmd命令提示符,进入新目录,以我上面的目录为例,输入
cd E:/workflow-project
- 添加box,把下载的镜像文件virtualbox.box复制到本目录E:\workflow-project下,执行
vagrant box add centos7 virtualbox.box
- 检查是否导入成功(出现图1说明已导入成功)
vagrant box list
图1
- 输入初始化命令(ps:在目录E:\workflow-project下会生成Vagrantfile的配置文件)
vagrant init centos7
3、配置
用编辑器打开Vagrantfile文件,进行简单配置。
- 虚拟主机名称
config.vm.hostname = "my_hostname"
- 端口映射(指定ssh转发端口方法:禁用默认的ssh转发,再添加自定义转发)
config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh", disabled: "true"
config.vm.network "forwarded_port", guest: 22, host: 2200
如上操作:表示映射本机的2200端口到虚拟机的22端口
- 如果需要自己自由的访问虚拟机,但是别人不需要访问虚拟机,可以使用private_network,并为虚拟机设置IP
config.vm.network "private_network", ip: "192.168.33.10"
- 目录映射(映射不成功,参考附件1)
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
-
首次登入可能会出现如下图2界面
图2
此时密码Password选项不可点击,则可以用 Public Key 方式登入系统,具体操作参照图3(点击浏览 - 文件 - 选择私钥)即可登录
图3 - 如需使用password方式登录则可以进入系统后执行命令
sudo vim /etc/ssh/sshd_config
修改PasswordAuthentication no为yes,重启vagrant reload。如图4
图4PS:vagrant up
后出现如下错误信息;
development: Warning: Authentication failure. Retrying...
在配置文件中(vagrantFile)添加
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"
5、导出
- 执行命令(xf-dev:虚拟机名称,my_box.box:导出的box文件名称)
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的错误
解决方案:
- 在本地主机执行:
vagrant plugin install vagrant-vbguest
, 再运行vagrant reload
重启即可 - 在虚拟机中执行:
sudo yum install gcc kernel kernel-devel -y
8、开发环境搭建过程的坑及解决方案
- 设置apache开机启动
sudo systemctl enable httpd
- 配置好开发环境缓存问题
问题描述:配置好共享目录和开发环境后,可以正常访问网站,但是编辑主机静态文件(js/jpg/png等)时刷新页面不同步改变。
当你尝试修改一个js,刷新页面js文件不会改变,是的,就算重启VM上任何服务,甚至重启VM,依旧没有用,当然,比起其他资源文件,浏览器的反应会强烈一些,因为浏览器会提示未知错误,而你通过浏览器查看你修改的JS文件,会看到文件尾巴有下面奇怪的随机字符:
�����������������
原因是:Apache或Nginx缓存造成。
- Apache 处理方式
sudo vim /etc/httpd/conf/httpd.conf
EnableSendfile off
- Nginx 处理方式
sudo vim /etc/nginx/nginx.conf
sendfile off
- 配置apache虚拟主机后,只能进入欢迎页面(默认欢迎页面),不能进入虚拟主机目录页面
解决方案:关闭SELinux,然后重新启动apache服务器- 查看SELinux状态:
/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态 SELinux status: enabled getenforce ##也可以用这个命令检查
- 关闭SELinux:
- 临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式 ##setenforce 1 设置SELinux 成为enforcing模式
- 永久关闭(修改配置文件需要重启机器):
sudo vim /etc/selinux/config SELINUX=disabled #重启机器即可
- 配置私有网络报错
修改vagrant的配置文件config.vm.network "private_network", ip: "192.168.33.10"
后vagrant up
启动虚拟机报如下错误:
[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、虚拟主机配置
- apache下配置虚拟主机
<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>
网友评论