发布于 2015-03-14 15:50:11 | 671 次阅读 | 评论: 0 | 来源: PHPERZ
这里有新鲜出炉的精品教程,程序狗速度看过来!
Vagrant 创建虚拟化开发环境
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。
测试使用环境
MacOS 10.9.3
Windows,Linux,大同小异
准备
下载安装 VirtualBox
下载安装 Vagrant
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。
Homestead 环境
Ubuntu 14.04
PHP 5.5
Nginx
MySQL
Postgres
Node (With Bower, Grunt, and Gulp)
Redis
Memcached
Beanstalkd
Laravel Envoy
Fabric + HipChat Extension
步骤
- 命令:
vagrant box add laravel/homestead
,这句会去下载一个box,需要一段时间,看网速
- 命令:
git clone https://github.com/laravel/homestead.git Homestead
,找一个目录用来存放虚拟机配置的去执行这句命令
- 编辑git clone后文件目录中的
Homestead.yaml
文件,一看就懂,懒得说
Homestead.yaml
ip: "192.168.10.10"
memory: 2048
cpus: 1
authorize: /Users/me/.ssh/id_rsa.pub
keys:
- /Users/me/.ssh/id_rsa
folders:
- map: /Users/me/Code
to: /home/vagrant/Code
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
增加站点
- Homestead 中新增一个domain的步骤是
- 在homestead.ymal 文件里面编辑好sites和folders这两个项目
- (此步骤貌似可选)执行 vagrant destroy,vagrant provision
- 进入vm ssh ,执行serve domain.app /home/vagrant/Code/path/to/public/directory
虚拟机操作
- 开机:
vagrant up
- 关机:
vagrant halt
- 销毁:
vagrant destroy
- 以上命令需在Homestead目录下执行
访问网站
地址:http://homestead.app:8000
域名需要在本机绑定hosts,127.0.0.1 homestead.app
连接虚拟机ssh
命令:vagrant ssh
连接虚拟机Mysql
地址:127.0.0.1:33060
,用户名:homestead
,密码:secret
关键的端口映射列表
SSH: 2222 -> Forwards To 22
HTTP: 8000 -> Forwards To 80
MySQL: 33060 -> Forwards To 3306
Postgres: 54320 -> Forwards To 5432
经验
如果因为网络问题运行 vagrant box add laravel/homestead
的时候太慢了无法下载,就到 VagrantCloud下载下来,再运行 vagrant box add laravel/homestead ./DownloadPath/BoxHaveDownloadedPath.box
导入就可以了
啃爹的坑记录:
- homestead 的yaml 配置文件是不能用 tab 的,必须用空格,这是记录 <http://stackoverflow.com/questions/24189128/cant-start-vagrant-after-laravel-homestead-installation-vagrant-up>
- 经过长达18个小时的调试,终于找出了为什么
default: Warning: Connection timeout. Retrying...
一直卡住的原因,在我关闭wifi的时候一切都是正常的,startServer
alias运行也很快,但是一旦接上光企光猫的时候就不行了,奇慢无比。回到住的地方又一切正常,为这件事我折腾了一整天睡不好,结果想到了可能不是我的 系统问题,而是网络问题,又想不清楚到底是网络哪个问题,闭眼想了好久,猜有可能是dns的问题,因为我本地的hosts改了之后解析到我本机很慢很慢, 我猜这个包会去路由那里卡住很久,所以可能是dns的问题,因为dns是写着网关地址的,于是我改成了上海的电信dns,然后就好了!!!装了一天的系 统,结果是因为这样一个问题!!!无语!!!电信的设备不知道做了什么手脚,里面肯定有问题!
开发经验
- 从laracasts上这一集https://laracasts.com/lessons/testing-email-in-laravel看到了mailercatcher
- 记录一些笔记
- 在mac上的安装,参考地址 http://mailcatcher.me/
gem install mailcatcher
mailcatcher
Go to http://localhost:1080/
Send mail through smtp://localhost:1025
在homestead上安装(推荐,方便调试开发),参考地址:http://blog.enge.me/post/installing-mailcatcher-in-laravel-homestead
// Install MailCatcher
$ sudo apt-get install ruby1.9.1-dev libsqlite3-dev
$ sudo gem install mailcatcher
$ mailcatcher --ip 192.168.10.10 #这个IP是根据Homestead.yaml 文件中的设置来看的
杀死进程,好像没办法正常结束,可能可以 mailcatcher –foreground 跑在控制台下,然后可以用 controll + c 来控制中断,但是我没有实验,直接 kill 掉,参考链接:http://stackoverflow.com/questions/24830534/killing-mailcatcher- somethings-using-port-1025
Linux:
ps aux | grep mialcatcher
sudo kill -9 对应pid
sudo lsof -nP -iTCP:1025 -sTCP:LISTEN #查看进程是否还活着
MacOs:
sudo lsof -nP -iTCP:1025 -sTCP:LISTEN
sudo kill -9 对应pid