Skip to content

uwang/vagrant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vagrant

Vagrant CentOS7 开发环境

Windows 一定要开启 VT-x/AMD-V 硬件加速。开机进入BIOS选项 ,依次选Config->CPU->Intel Virtualization Technology,里面有个Intel VT-d Feature ,改成Enabled ,保存退出,关机,然后启动机器。

相关概念:

  • provision - 字面意思是准备,实现的功能是在原生镜像的基础上,进行一些附加的操作,以改变虚拟机的环境,比如安装应用,发布程序等。

  • Host - 安装 VirtualBox 和 Vagrant 的物理机,通常是系统为 Windows、MacOS。

  • Guest - 被 Vagrant 维护的虚拟机。

provision 的字面意思是准备。

通常情况下Box只做最基本的设置,而不是设置好所有的环境,因此Vagrant通常使用Chef或者- PuPHPet来做进一步的环境搭建。 那么Chef或者Puppet称为provisioning,而该命令就是指定开启相应的provisioning。

provisioner 在三种情况下运行:

  • 第一次 vagrant up
  • vagrant provision
  • vagrant reload --provision

开始

Minimum required Vagrant version is 2.0

Minimum suggested Virtualbox version is 5.0

在满足上述基本条件的前提下,尽量选用最新的版本。

首先,下载安装 VirtualBox 然后,下载安装 Vagrant

首先安装插件:

# Windows 下使用 Sublime 打开目录 C:\HashiCorp\Vagrant\embedded\gems
# MacOS   下使用 Sublime 打开目录
# 全局替换文件夹中的 https://rubygems.org 为 https://gems.ruby-china.com
vagrant plugin install vagrant-vbguest

然后初始化:

vagrant up

等出现下载地址后,Ctrl+C 终止掉,复制 url 下载。下载完成后,将 virtualbox.box 重名后移动到指定目录下,并创建对应的文件 metadata.json,内容如下:

Windows 下:

{
    "name": "centos/7",
    "versions": [{
        "version": "1804.02",
        "providers": [{
            "name": "virtualbox",
            "url": "file:///d:/path/to/file.box"
        }]
    }]
}

MacOS homestead v6.1.0 下的样例:

{
    "name": "laravel/homestead",
    "versions": [{
        "version": "6.1.0",
        "providers": [{
            "name": "virtualbox",
            "url": "file:///Users/用户名/Downloads/file.box"
        }]
    }]
}

手动将 box 导入到系统:

vagrant box add metadata.json
vagrant box list

Shared Folder Type

NFS is highly recommended for MacOS and Linux! Make sure to install the vagrant-bindfs plugin with:

vagrant plugin install vagrant-bindfs

网络有时不好会安装是被,可以多试几次,正常情况下:

Installing the 'vagrant-bindfs' plugin. This can take a few minutes... Fetching: vagrant-bindfs-1.1.0.gem (100%) Installed the plugin 'vagrant-bindfs (1.1.0)'!

以上命令实在 Host 上执行,简单说就是 MacOS、Windows 下。而 Vagrant 的虚拟机称作 Guset。

Windows 下会忽略 NFS 类型的同步方式,建议使用 RSync

默认类型

drwxr-xr-x.   4 vagrant vagrant   136 3月  20 01:28 default
drwxr-xr-x.  29 vagrant vagrant   986 3月  20 02:16 drupal
drwxr-xr-x.  24 vagrant vagrant   816 3月  20 04:13 laravel

Nginx 和 PHP-FPM 的运行身份都应该改为 vagrant。否则 Nignx 恒为 404,PHP-FPM 恒为 403。

Mac/Linux 上使用 nfs

drwxr-xr-x.   4 501 games   136 3月  20 01:28 default
drwxr-xr-x.  29 501 games   986 3月  20 02:16 drupal
drwxr-xr-x.  24 501 games   816 3月  20 04:13 laravel

用户名 501 ,用户组 games。这是因为 NFS 表示的是 Network Files Share,网络文件共享,这就相当于,您自己的电脑变成了一台共享文件的服务器,与运行的虚拟机共享一些文件,所以,你看到的文件或目录的拥有者与用户组,应该属于你的本机系统。在虚拟机上运行的服务,比如 PHP-FPM、NGINX 对共享目录不存在权限问题。

Ubuntu 可能符合上述原则。但是,实测 CentOS 依然需要将 Nignx 和 PHP-FPM 的运行用户改为 vagrant!

系统配置

sudo yum install git -y
git clone https://github.com/haobingwang/scripts.git

CentOS7 常用脚本

连接数据库

Mac 下 Datagrip 使用 SSH tunnel ,密钥 ~/vagrant/.vagrant/machines/default/virtualbox/private_key

  • 用户:root
  • 密码:secret

Releases

No releases published

Packages

No packages published