使用vagrant box 搭建属于自己的linux开发环境
- 准备工作
版本选择:
centOS 5.6 64bit
MySQL 5.6
redis 3.2
nginx 1.10.2
先决条件:
Host 机上装好 vagrant, virtualBox
下载好 centOS 虚拟镜像
-
安装virtualBox
自行百度, 安装很简单, 确保网络配置中的使用网线连接勾上就好了 不然会遇到启动sandbox的时间连接不上 -
配置账号
配置 vagrant 账号, 使其 sudo 时无需密码:
确认已安装 sudo
sudo 到 root 账号 sudo su -
运行 visudo, 会打开 sudo 的配置文件
在最后一行增加 vagrant ALL=(ALL) NOPASSWD: ALL, 保存
配置 vagrant 账户, 以在 Host 机直接 vagrant ssh 到虚拟机
复制 这里 的内容到 ~vagrant/.ssh/authorized_keys 里
运行 sudo chmod 0700 ~vagrant/.ssh/
运行 sudo chmod 0600 ~vagrant/.ssh/authorized_keys -
安装 virtualBox guest addition
打开 vBox 窗口, 选择 Devices->Insert Guest Additions CD Image
运行 sudo yum groupinstall “Developer Tools” 安装编译工具
运行 sudo mount /dev/cdrom /media/cdrom 挂载 guest addition 光盘
运行 sudo sh /media/cdrom/VBoxLinuxAdditions.run 安装 guest addition
以上便是 vagrant box 的标准操作流程, 可以参考这里和这里
接下来, 就要根据自己的需求安装特定软件以及进行相应配置了 -
安装定制软件
5.1 Nginx
运行 sudo yum install nginx 安装 nginx
配置 /etc/nginx/nginx.conf, 把 user 配置为 vagrant
5.2 MySQL/Redis
运行 sudo yum install mysql-server mysql redis 安装数据库
开启系统自动运行服务运行以下命令以开机启动服务:
sudo chkconfig nginx
sudo chkconfig mysqld
sudo chkconfig redis
##这里并不推荐使用这种方式安装软件
newtonsandbox.vm.provision :shell, path: “scripts/vagrant/provision.sh”
可以在vagrant file 配置bash 脚本, 通过bash脚本去下载软件和初始化环境及启动相关服务。同时还可以在vagrantfile里定义f服务的端口, 确保端口不会冲突
testbox.vm.network :forwarded_port, guest: 9200, host: 9200 # Elastic Search port
testbox.vm.network :forwarded_port, guest: 9300, host: 9300 # Elastic Search port
其他
安装并配置完这些软件之后, 因为 centOS 的一些安全策略, 并不能保证能从 Host 访问到虚拟机中的网站, 因此需要额外进行些配置:
运行 sudo chmod o+x /home/vagrant 以使 nginx 能访问 vagrant 家目录中的项目代码
打开 /etc/sysconfig/selinux, 找到 SELINUX 项, 配置为 disabled. 保存
运行 sudo service iptables stop 停用防火墙
打包
至此, 预想中的虚拟机算是弄完了. 现在要做的就是把这个虚拟机打包成 vagrant box, 以便在任何地方重用
在 Host 机运行 vagrant package --base --output 即可将 vBox 中对应的虚拟机打包输出为
如果在打包过程中报 error: cannot load such file – vagrant-share/helper/api 这样的错误, 尝试运行 vagrant plugin install vagrant-share --plugin-version 1.1.8 之后重试一遍