zoukankan      html  css  js  c++  java
  • vagrant搭建centos环境

    vagrant搭建centos环境

    前言

    macos作为开发环境已经相当方便,有很丰富的工具,如homebrew类似于ubuntu的apt-get和centos的yum,很方便地安装各种开发工具。但终究与线上生产环境不同,即便安装的是相同的软件,安装目录,管理方式都有所不同。当项目很复杂,或者有多个项目时,很容易将mac本地环境弄得乱七八糟。

    为了能与线上生产环境一致,尝试过用docker, 并没有想象中的方便,可能是我对dokcer的了解太少。且觉得docker的门槛较高。

    衡量各种方案后,最终选择用vagrant与virtualBox搭建一个完整的linux系统,这样能够与线上生产环境一致,也能很方便地进行移植。

    环境准备

    我选择的是 centos7.2 的镜像

    安装

    新建目录centos,作为vagrant的根目录

    • 导入下载的镜像
    ☁  centos  vagrant box add centos ~/Downloads/vagrant-centos-7.2.box
    # 将box命名为centos
    
    • 初始化
    ☁  centos  vagrant init
    

    会自动生成Vagrantfile配置文件

    修改配置文件

    设置box名称

    box名称须与上面命令指定的box名一致

    config.vm.box = "centos"
    

    端口转发

    config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
    

    macos不允许将本机的80端口转发, 解决方案参照: mac设置端口转发

    开启nfs

    默认的virtualBox共享文件速度太慢,需要启用nfs默认

    Vagrantfile 设置:

    config.vm.network "private_network", type: "dhcp"
    config.vm.synced_folder "/Users/airmb/Downloads/work", "/home/wwwroot/work", :nfs => true, :mount_options => ['actimeo=2']
    

    设置内存

    内存大小根据物理机内存设置,我的mac物理机是8G内存,分配了3G给虚拟机

    如果要安装mysql5.7,内存不能低于2G

    config.vm.provider "virtualbox" do |vb|
      vb.memory = "3072"
    end
    

    启动与连接

    连接vagrant虚拟机有两种方式:

    • 账号密码,两者均为 vagrant
    • ssh key, 可通过 ssh-config 查看私钥的路径

    img

    查看ssh-config

    可以用vagrant默认生成的key,也可以将自己的私钥替换到 IdentityFile 指定的文件,连接虚拟机后再将公钥放到虚拟机中的 ~/.ssh/authorized_keys

    启动虚拟机

    ☁  centos  vagrant up
    

    连接进入虚拟机

    ☁  centos  vagrant ssh
    

    默认的共享挂载目录:/home/vagrant

    常用vagrant命令

    • vagrant up 启动
    • vagrant ssh 进入虚拟机
    • vagrant halt 关机
    • vagrant reload 重启
    • 导出与导入
    ☁  centos  vagrant package --base centos_default_1533259579120_24934 --out centos7.2.box # 导出box
    ☁  centos  vagrant box add centos ./centos7.2.box # 导入box
    

    清空重新导入镜像

    当需要重新导入镜像时,为避免出现各种奇奇怪怪的问题,清空以下内容:

    # 将现有的box删除
    ☁  centos  vagrant box list
    centos (virtualbox, 0)
    ☁  centos  vagrant box remove centos
    
    ☁  centos  vagrant global-status --prune
    
    ☁  centos  rm -rf .vagrant
    
    ☁  centos  rm -rf Vagrantfile
    
    ☁  centos  cd ~/VirtualBox VMs
    ☁  VirtualBox VMs  ls
    centos_default_1534145188471_82398
    ☁  VirtualBox VMs  rm -rf ./*
    

    配置文件 Vagrantfile

    端口转发

    config.vm.network "forwarded_port", guest: 80, host: 8080
    

    内存分配

    config.vm.provider "virtualbox" do |vb|
    #   # Display the VirtualBox GUI when booting the machine
    #   vb.gui = true
    #
    #   # Customize the amount of memory on the VM:
        vb.memory = "3072"
    end
    

    目录挂载

    config.vm.synced_folder "~/code", "/home/wwwroot/code", :owner=> 'vagrant', :group=>'www', :mount_options => ['dmode=775', 'fmode=775']
    

    填坑记录

    nginx不同步本地修改的静态文件

    同一个文件,本地修改后,centos虚拟机能看到同步的修改,但怎么刷新都看不到变化,只有在centos里面再修改文件才有效。而动态文件,如php文件修改后实时能看到变化

    解决:

    将nginx.conf的配置修改:

    sendfile off;
    

    apache也有相同问题,修改配置:

    EnableSendfile off
    
  • 相关阅读:
    011. Python中*args, **kwargs 和 pass 和self 解释
    010. windows10下安装kivy 1.9.1版
    013. MVC5过滤器
    制作ubuntu16.04 自动安装iso镜像 二
    Nexus安装
    使用docker-compose 大杀器来部署服务 上
    Docker-Compose入门
    nvidia-docker命令详解
    安装使用NVIDIA-Docker-- 可使用GPU的Docker容器
    frp实现内网穿透
  • 原文地址:https://www.cnblogs.com/wzz2500/p/11434429.html
Copyright © 2011-2022 走看看