原文链接: github.com/ly525/blog/…
应用场景: 本地开发机器是mac或者Linux、windows,需要模拟发布到centos服务器的流程
注意执行该命令位置(pwd) /home/someone/
- 已有box, 位置: /home/someone/centos.box
vagrant box add --name centos_for_dev /home/someone/centos.box
vagrant init centos_for_dev
- 会发现在 /home/someone/有一个文件 VagrantFile
vagrant up && vagrant ssh
登录centos_for_dev 机器- 自动登录, 用户名和密码都是 vagrant
端口映射
- 场景: 需要在vagrant中开启mysql,供host机器访问
config.vm.network "forwarded_port", guest: 8000, host: 3306
其中host为宿主机(比如widdows或者mac机器),guest为vagrant内的虚拟机。- 这样在本地访问执行
mysql -u root -p
的时候,访问本地3306端口的mysql,实际上访问的是vagrant中的端口为8000的mysql- vagrant reload 重新加载配置文件
- vagrant up 启动机器,vagrant ssh登陆机器之后执行下面操作
sudo vim /etc/sysconfig/iptables
编辑防火墙,开启8000端口,供外部访问-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
- 重启防火墙
service iptables restart
文件映射
- 场景: dev环境: Mac 或 windows, production环境: centos。需要针对服务器制定一些脚本或者目录,方便部署。因此需要将dev代码目录映射到vagrant目录,实现dev改了代码之后,和production环境(vagrant,生产环境)代码保持一致,方便调试。不用再使用scp或rsync更新代码了。
config.vm.synced_folder "/home/someone/code/", "/opt/code"
- 这样宿主机的
/home/someone/code/
目录下的代码修改了之后,vagrant虚拟机的/opt/code
目录下的代码会同步更新,或者说二者指向同一份文件 - vagrant reload 重新加载配置文件
scp 同步文件
vagrant plugin install vagrant-scp scp -P 2222 your_file vagrant@127.0.0.1:/home/vagrant/
vagrnat up 开机
- vagrant halt 关机
- 创建新用户centos
- 在Vagrant机器中
useradd centos
创建centos用户。 - 在Vagrantfile中,添加配置
config.ssh.username = "centos"
- 在Vagrant机器中