首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vagrant搭建centos环境前言环境准备安装修改配置文件启动与连接常用vagrant命令清空重新导入镜像配置文件 Vagrantfile填坑记录

vagrant搭建centos环境前言环境准备安装修改配置文件启动与连接常用vagrant命令清空重新导入镜像配置文件 Vagrantfile填坑记录

作者头像
章鱼喵
发布2018-12-28 14:44:03
1.1K0
发布2018-12-28 14:44:03
举报
文章被收录于专栏:codingcoding

前言

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 查看私钥的路径

查看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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 环境准备
  • 安装
  • 修改配置文件
    • 设置box名称
      • 端口转发
        • 开启nfs
          • 设置内存
          • 启动与连接
          • 常用vagrant命令
          • 清空重新导入镜像
          • 配置文件 Vagrantfile
            • 端口转发
              • 内存分配
                • 目录挂载
                • 填坑记录
                  • nginx不同步本地修改的静态文件
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档