首先承认自己爱折腾,原因就是laravel的homestead.box下载速度超慢,不仅它慢,其他所有box都慢,慢到再也无法忍受。所以不得不建立一个自己DIY的Laravel开发环境。

1、准备工作及需要安装的软件

主机:windows 10
POSIX运行环境:Cygwin
虚拟机:VirtualBox
虚拟机OS:FreeBSD
虚拟机辅助命令:Vagrant
PHP管理工具:Composer

2、Vagrant命令行的运行环境【强烈】推荐Cygwin,因为MinGW自己的首页上就说明了,POSIX模拟环境推荐Cygwin,当时我不信,但我以N次失败经验为教训,终于确定Cygwin的王牌地位。接下来说说经过:

虚拟机我最先安装的是freebsd 11,没有安装X环境,但是装了OpenSSH Server,这是主机与虚拟机通信的首选。

host: freebsd
username: vagrant
group: vagrant + wheel
password: vagrant

wheel组很重要,不加入它就不能su root

安装完后进入系统

root#pkg
然后自动安装pkg,之后设置freebsd的pkg源,经测试pkg.tw.freebsd.org速度还行
root#mkdir -P /usr/local/etc/pkg/repos
root#cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf
root#vi /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: {
url: "pkg+http://pkg.tw.freebsd.org/${ABI}/latest",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes

}

root#pkg update
root#pkg upgrade

pkg更新完列表和软件后,安装vbox支持

root#pkg install virtualbox-ose-additions-nox11
root#vi /etc/rc.conf
...
sendmail_enable="NONE"
vboxguest_enable="YES"
vboxservice_enable="YES"

安装ssh公共密钥

root#su vagrant
vagrant#cd ~
vagrant#mkdir .ssh
vagrant#cd .ssh
vagrant#wget -c -O authorized_keys http://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pub
vagrant#exit

安装sudo,这个很重要,文件共享的时候需要这个命令,freebsd需要自己安装

root#pkg install sudo
root#vi /usr/local/etc/sudoers
....
%wheel ALL=(ALL) NOPASSWD:ALL
%sudo ALL=(ALL) ALL

安装rsync文件同步服务,因为freebsd不支持vbox文件系统,所以需要用rsync来同步共享文件夹

root#pkg install rsync
root#vi /etc/rc.conf
...
rsyncd_enable="YES"

安装apache,php,mysql

root#pkg install apache24
root#pkg install mysql57-server
root#pkg install php71 php71-extensions php71-gd php71-mysqli mod_php71

apache服务器启用rewrite模块,设置站点目录

root#vi /usr/local/etc/apache24/httpd.conf
...
ServerName localhost:80
DocumentRoot "/vagrant/public"
#文档根目录如此设置是与vagrant的synced_folder相关的
#config.vm.synced_folder "E:/www/blog", "/vagrant", type: "rsync"
#将主机的laravel工程E:/www/blog目录映射到客户机的/vagrant目录
#因此laravel的E:/www/blog/public目录就映射到/vagrant/public
<Directory "/vagrant/public">
Options FollowSymLinks MultiViews #MultiViews必须要设置,只有它才能使用站点根目录下的.htaccess的rewrite规则文件
AllowOverride All
Require all granted
</Directory>
#找到rewrite的module设置,将注释字符#删除,保存文件退出

设置apache,mysql自启动

root#vi /etc/rc.conf
...
apache24_enable="YES"
mysql_enable="YES"

3、主机上安装Cygwin、Vagrant,系统PATH加入Cygwin的bin、Vagrant的bin。

打开Cygwin,安装apt-cyg,从https://github.com/transcode-open/apt-cyg下载,下载完后将apt-cyg解压放到Cygwin的bin目录下

composer是一个*.phar文件,需要用php来运行,因此先安装php。
#apt-cyg install php php-json php-mbstring php-phar php-zip php-posix
#apt-cyg install php-xmlwriter php-tokenizer php-ctype php-zlib

再安装composer
#php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
#php composer-setup.php
#php -r "unlink('composer-setup.php');"
#chmod +x ./composer.phar
#mv ./composer.phar /usr/bin/composer
#composer -v
设置composer的中国镜像
#composer config -g repo.packagist composer https://packagist.phpcomposer.com

进入E:/www目录,建立laravel工程blog
#cd e:/www
#composer create-project --prefer-dist laravel/laravel blog
#ls -la blog

然后E:/www目录下就出现了一个blog文件夹,子目录中有个public文件夹就是站点根目录,接着返回用户主目录创建vagrant虚拟机,并安装rsync支持

#cd ~
#apt-cyg install rsync
#vagrant package --output freebsd.box --base freebsd
#vagrant box add laravel/freebsd freebsd.box
#vagrant init
init后,在当前目录下会自动产生一个Vagrantfile文件
#vi Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.define "freebsd" do |config|
    config.vm.box = "laravel/freebsd"
    config.vm.network "forwarded_port", guest: 80, host: 8000, id: "apache"
    config.vm.network "forwarded_port", guest: 8080, host: 8080, id: "tomcat"
    config.vm.network "forwarded_port", guest: 3306, host: 3366, id: "mysql"
    config.vm.synced_folder "E:/www/blog", "/vagrant", type: "rsync"
    config.vm.provider "virtualbox" do |vb|
      #vb.gui = true
      vb.name = "laravel-freebsd"
    end
    config.ssh.shell = "sh"
  end
end

4,现在可以启动vbox了,打开Cygwin

#cd ~
#vagrant up freebsd
#vagrant ssh freebsd

进入ssh后

vagrant#ls /vagrant

就能看到/vagrant目录下的文件与E:/www/blog文件夹下的文件一致,于是在主机用可视化Editor更改E:/www/blog下的文件,就能在虚拟机中的/vagrant同步显示。当然,同步需要在主机中使用命令

#vagrant rsync

如果觉得麻烦就用rsync-auto,它会挂起操作,监听主机共享文件夹,当有文件变更,就会同步到虚拟机中

#vagrant rsync-auto

上面如此多的步骤,在主机中我首先使用msys,虽然vagrant识别为msys,但是它用的是Cygwin的获取文件路径命令:cygpath,现在的msys-cygutils扩展里没有cygpath了,我不知道百度多少次,都没有找到答案

首先它抛出的错误是zlib比较新,需要用-zz命令替换-z命令,但是结果无效
接着在Vagrantfile里更改ENV["VAGRANT_DETECTED_OS"] = "Cygwin",也没有用
最终,我将Cygwin的bin加入到系统PATH中,于是vagrant就能which cygpath了,而且vagrant up freebsd成功

但接下来的vagrant ssh freebsd就让人无语,它不进入ssh,而且直接返回命令行,没有错误提示,没有错误日志

于是我又安装了msys2,这个模拟器更过分,它不知道被识别为什么os了,于是rsync不成功,而且它与Cygwin相排斥,无法共存到系统PATH中,因此也用不了cygpath

最终Cygwin运行vagrant up freebsd正确,vagrant ssh freebsd正确,vagrant halt freebsd正确,好吧,就只剩下它了

终极备注:文章写完后到现在,历时20天左右,间歇性的调试和网络搜索,终于在某大神的博客找到相关文章。地址:流水理鱼

原来只要安装一个名为(vagrant_winnfsd)的插件就能解决nfs共享的问题,如果你找不到方法,再怎么搞也搞不好。于是vagrant plugin install vagrant_winnfsd就一切搞定。

2017/10/28,再备注一次,不知道会备注多少次。

上头说的Git和msys2不支持cygdrive是非常错误的想法,git-scm.com下载的posix模拟器自带了cygpath了,而msys2需要用pacman安装cygrunsrv,这个包里面就有cygpath,git-bash和msys2都是posix模拟器,需要cygpath生效,就修改安装目录下的/etc/fstab文件,这个文件确定了cygpath -u -a [path]输出的格式,当windows文件夹格式转换为cygwin格式,vagrant的rsync共享文件夹才能使用了,而没有所谓的No such file or directory错误。

一般git-bash和msys2的/etc/fstab是这样配置的:

none / cygdrive binary,posix=0,noacl,user 0 0

需要cygpath带上cygdrive这样的头,就将配置这样修改

none /cygdrive cygdrive binary,posix=0,user 0 0

于是cygpath -u -a [path]就变成了/cygdrive/[path]这样的格式,这个格式才能正常应用在vagrant中

使用VirtualBox+Vagrant搭建自己的Laravel开发环境相关推荐

  1. Laragon 在 Windows 中搭建 Laravel 开发环境

    简介 之前学院君陆续写了三篇介绍 Laravel 开发环境的教程:Homestead.Valet 和 LaraDock, 我都是在 Mac 系统中安装使用的,相当流畅,没有任何梗,但是对于那些使用 W ...

  2. [ Laravel 5.5 文档 ] 快速入门 —— 使用 Laragon 在 Windows 中搭建 Laravel 开发环境

    简介 之前学院君陆续写了三篇介绍 Laravel 开发环境的教程:Homestead.Valet 和 LaraDock,我都是在 Mac 系统中安装使用的,相当流畅,没有任何梗,但是对于那些使用 Wi ...

  3. VirtualBox+vagrant 搭建LNMP环境

    VirtualBox+vagrant 搭建LNMP环境 1.安装VirtualBox和vagrant 去各自的官网下载最新的版本就OK了,win7用户需要注意一下,win7下不支持很高版本的vagra ...

  4. 搭建Hadoop的Eclipse开发环境

    引语:为了搭建eclipse的hadoop开发环境我尝试了网上的不止一种方法,可是我遇到的情况和网上的问题都不太一样,于是我自己总结了一下安装方法以及用到的软件,因为我的版本是2.6.4所以软件也都统 ...

  5. geany配置python_Linux系统下搭建基于Geany+Python开发环境

    Linux系统下搭建基于Geany+Python开发环境 一.升级python mkdir /usr/local/python3 # tar xvf Python-3.6.1.tar.xz # 解压文 ...

  6. 搭建Cocos Code IDE开发环境

    搭建Cocos Code IDE开发环境 Cocos Code IDE是Cocos2d-x团队开发的,用于开发Cocos2d-JS和Cocos2d-x Lua绑定的游戏工具,它是基于Eclipse[ ...

  7. MyEclipse搭建java Web项目开发环境

    MyEclipse搭建java Web项目开发环境 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭 ...

  8. python编程中文版百度百科_1.2 搭建python+pycharm编程开发环境

    工欲善其事必先利其器,很多小伙伴在学习编程的道路上,第一步就被编程环境搭建劝退.今天就让我们起来快速搭建一个python的开发环境,开启征服python的第一步. 一.Python安装 1.1pyth ...

  9. win7下搭建nginx+php的开发环境

    win7下搭建nginx+php的开发环境,需要的朋友可以参考下 一.下载相关软件 nginx下载:http://nginx.org/en/download.html nginx常见异常:http:/ ...

最新文章

  1. playbook 实例
  2. 虚幻4 ue4 学习笔记pwan篇 1.4 pawn结合UPawnMovementComponent类 移动组件实现 移动球体添加物理碰撞...
  3. 《BeagleBone开发指南》——1.7 小结
  4. java为什么全是乱码_java一切乱码的解释 以及源头
  5. long类型20位示例_Java Long类lowerOneBit()方法与示例
  6. FPGA资源平民化的新晋- F3 技术解析
  7. 【Python】time内置模块处理时间信息
  8. 前端当前是否处在一个糟糕的时代?
  9. DLL的Export和Import及extern
  10. 计算机 A类会议论文,一篇论文被CCF A类会议SIGIR 2021录用!
  11. 教你怎么录制电脑内部发出的声音
  12. VirtualBox-5.2.44的安装
  13. 象棋(Xiangqi, ACM/ICPC Fuzhou 2011, UVa1589)C++超详细解题
  14. 如何修改植物大战僵尸文档
  15. optaplanner学习笔记(二)OptPlanner求解步骤及配置
  16. 柳 to 杨 (转)
  17. Win10家庭版升级至专业版
  18. 关于打码机色带应用及其调整方法
  19. ThoughtWorks给你不一样的入职之旅
  20. 煤炭企业内部调拨物资称重问题如何管理(二)

热门文章

  1. VXLAN基本概念及静态VXLAN隧道配置
  2. c语言学生选课系统word,Linux环境下C语言《学生选课管理系统》全源代码,含流程图...
  3. 让Unraid 也装上黑苹果MAC OS系统
  4. Python 七夕告白特技:隐藏在聊天记录里的珍贵礼物
  5. 【23考研】计算机择校信息库—湖南高校计算机相关专业22专业目录分类汇总(按专业课分类汇总)
  6. 新版犀牛书该不该入手?来一次开箱评测!
  7. Pytest参数化-详解
  8. 如何在微信中点击链接或者扫码自动调用手机默认浏览器打开
  9. 计算机视觉和图像处理常用的一些标准图片
  10. docker 容器之间通信_还不清楚docker容器间是如何通信的?看这篇文章就够了