28. vagrant 操作 => mysql、防火墙、端口映射

1,185 阅读2分钟

原文链接: github.com/ly525/blog/…
应用场景: 本地开发机器是mac或者Linux、windows,需要模拟发布到centos服务器的流程

注意执行该命令位置(pwd) /home/someone/

  1. 已有box, 位置: /home/someone/centos.box
  2. vagrant box add --name centos_for_dev /home/someone/centos.box
  3. vagrant init centos_for_dev
  4. 会发现在 /home/someone/有一个文件 VagrantFile
  5. vagrant up && vagrant ssh 登录centos_for_dev 机器
  6. 自动登录, 用户名和密码都是 vagrant
  7. 端口映射

    1. 场景: 需要在vagrant中开启mysql,供host机器访问
    2. config.vm.network "forwarded_port", guest: 8000, host: 3306 其中host为宿主机(比如widdows或者mac机器),guest为vagrant内的虚拟机。
    3. 这样在本地访问执行mysql -u root -p的时候,访问本地3306端口的mysql,实际上访问的是vagrant中的端口为8000的mysql
      1. vagrant reload 重新加载配置文件
      2. vagrant up 启动机器,vagrant ssh登陆机器之后执行下面操作
      3. sudo vim /etc/sysconfig/iptables 编辑防火墙,开启8000端口,供外部访问
      4. -A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
      5. 重启防火墙 service iptables restart
  8. 文件映射

    1. 场景: dev环境: Mac 或 windows, production环境: centos。需要针对服务器制定一些脚本或者目录,方便部署。因此需要将dev代码目录映射到vagrant目录,实现dev改了代码之后,和production环境(vagrant,生产环境)代码保持一致,方便调试。不用再使用scp或rsync更新代码了。
    2. config.vm.synced_folder "/home/someone/code/", "/opt/code"
    3. 这样宿主机的/home/someone/code/目录下的代码修改了之后,vagrant虚拟机的/opt/code目录下的代码会同步更新,或者说二者指向同一份文件
    4. vagrant reload 重新加载配置文件
  9. scp 同步文件

     vagrant plugin install vagrant-scp
     scp -P 2222 your_file vagrant@127.0.0.1:/home/vagrant/
  10. vagrnat up 开机

  11. vagrant halt 关机
  12. 创建新用户centos
    1. 在Vagrant机器中 useradd centos 创建centos用户。
    2. 在Vagrantfile中,添加配置config.ssh.username = "centos"

更多参见官网文档 Get Started