一 安装Vagrant并启动Centos7
这里我使用的是virtualbox作为vagrant的支持,首先自行安装virtualbox,Windows下安装很方便,就不讲了,
接下来是安装vagrant vagrant下载 根据提示安装。
https://atlas.hashicorp.com/boxes/search 这里可以搜到vagrant的各种镜像及其使用方法,我在下面找到centos7,即来到这个页面https://atlas.hashicorp.com/centos/boxes/7 你会看到对应的virtualbox下vagrant使用该镜像的方法
我们新建一个目录,在该目录下我们打开cmd 输入命令vagrant init centos/7 ,
本来下一步应该是直接执行vagrant up --provider virtualbox,但由于需要去国外下载box文件,国内直接使用命令访问下载经常龟速或者直接无法访问,我们直接使用迅雷等工具下载这个链接(无需FQ)
https://atlas.hashicorp.com/centos/boxes/7/versions/1609.01/providers/virtualbox.box
(其实就是上面提到的https://atlas.hashicorp.com/centos/boxes/7连接 加上版本和更改提供者provider为virtualbox)
将下载到的virtualbox.box文件复制到我们的目录下来
你会看到当前目录有一个Vagrantfile文件出现,这是刚才执行vagrant init之后生成的,打开编辑这个文件,
将config.vm.box = "centos/7" 改为config.vm.box = "./virtualbox.box" ,表示使用我们下载好的这个文件进行加载centos系统
去掉config.vm.network "forwarded_port", guest: 80, host: 8080前的#号,这样我们在宿主机也就是本机的localhost:8080就可以访问到vagrant里的centos的80端口。
使用vagrant ssh命令 在Linux下可直接连接我们的虚拟centos,Windows则不行,但我们在该命令后可以看到我们连接的privatekey的秘钥地址
之后通过Windows的ssh连接,使用刚才提到的秘钥,通过xshell 等工具连接127.0.0.1(即localhost)的2222端口即可,默认用户为vagrant 密码为空 ,连接成功后就可以再xshell里操作我们通过vagrant搭建的虚拟centos系统了
安装过程中我遇到的一些坑:
本博客是我搭建完环境后重新的整理 当时报的错我在Google的历史记录找到 大概是有这两个
一.vagrant was unable to mount virtualbox shared folders. this is usually because the filesystem vboxsf is not available
参考链接 :
http://stackoverflow.com/questions/22717428/vagrant-error-failed-to-mount-folders-in-linux-guest
需加装插件
$ vagrant plugin install vagrant-vbguest
二. "rsync" could not be found on your PATH. Make sure that rsync is properly installed on your system and available on the PATH.
参考链接:
http://stackoverflow.com/questions/34176041/vagrant-with-virtualbox-on-windows10-rsync-could-not-be-found-on-your-path
将对应文件内容改为
config.vm.synced_folder ".", "/vagrant", type: "virtualbox"end就解决了
二 在Centos7上安装LAMP环境
安装时我主要参考的链接http://www.cnblogs.com/zutbaz/p/4420791.html
这里是我安装过程中的一些补充
1 安装php后需重启Apache,php脚本才会生效,否则会输出php源代码
2 启动Mariadb时出现Failed to start mariadb.service: Unit mariadb.service failed to load: No such file or directory.
解决方法 根据链接的yum安装后 需再
$sudo yum -y install mariadb-server
参考链接 http://stackoverflow.com/questions/31067135/in-centos7-can-not-start-mysql
3 安装过程中测试Apache等的报错 可在/var/log/httpd/error_log处查看Apache的错误提示
4 安装完php-mysql后 我试了重启Apache还是提示mysql_connect()未定义 后面重启虚拟机就好了
5 将php升级为5.6 参考链接http://blog.bensonwu.cn/2016/08/09/Centos7%E4%B8%8A%E6%90%AD%E5%BB%BALAMP%E7%8E%AF%E5%A2%83/
如果rpm源无法直接安装 可以试试先wget下载下来,再添加
6 修改MySQL 默认字符集 参考链接:
http://www.centoscn.com/mysql/2014/0728/3367.html
我的my.cnf默认是没有client和mysql字段的 需要根据他的写法 照着写进去 最后的重启mysql 使用这一句命令
sudo systemctl restart mariadb.service
三 将配好环境的Centos系统打包成box文件,以供复用
使用vagrant halt命令关闭当前centos系统后 使用vagrant package ,在当前目录下会生成package.box文件,这就是我们将centos7环境打包后的镜像了。
接下来我们新建一个目录来使用这个package.box
同样输入vagrant init centos/7 将package.box拷贝到当前目录下 修改Vagrantfile
将config.vm.box = "centos/7" 改为config.vm.box = "./package.box" 并同样去掉config.vm.network "forwarded_port", guest: 80, host: 8080前的#号
输入vagrant up命令启动新的vagrant 输入vagrant ssh看到秘钥的保存地址,在Windows的ssh工具下再一次连接
进入打包号的centos系统 进入后发现一切和原来一模一样,localhost:8080同样可以访问成功,那么我们就完成了。
最后再将config.vm.synced_folder一项的注释去掉并改为config.vm.synced_folder "./workspace", "/var/www/html/syns"
即可将当前目录的workspace文件夹内容同步到虚拟centos系统的/var/www/html/syns目录下达到本地编辑,虚拟机测试的效果
然而我就在这里遇到了巨坑,同步到syns目录后,访问一直提示403 forbidden,一开始不知道什么原因查了好久 后面发现,只需要
sudo vim /etc/selinux/config
然后将SELINUX这项改为disabled,就成功了 至于seLinux的作用,我还需要继续学习