在CentOS7服务端下载Vagrant并使用Homestead

很多Laravel开发者困惑于PHP项目本地和服务端环境不统一,导致一系列的问题。解决这种问题目前的最佳实践有Docker和Vagrant两种。对于Laravel项目,Laravel-China社区的大佬们推荐使用Homestead工具进行开发,本文主要讲解该工具在CentOS的安装和基本使用。

1. 首先采取RPM包安装VirtualBox

  • 这个virtualbox的RPM包下载地址为:http://download.virtualbox.org/virtualbox/rpm/rhel/7/x86_64/VirtualBox-5.2-5.2.8_121009_el7-1.x86_64.rpm。我们在服务器用户目录上执行:
    wget http://download.virtualbox.org/virtualbox/rpm/rhel/7/x86_64/VirtualBox-5.2-5.2.8_121009_el7-1.x86_64.rpm

  • 然后安装VirtualBox:rpm -ivh VirtualBox-5.2-5.2.8_121009_el7-1.x86_64.rpm。如图,依赖库一大堆都不存在:

    依赖检测失败.jpg

  • rpm安装和源码安装时,碰到这种问题是常事。接下来我们yum安装这些缺失的依赖库:

# yum install libGL libICE libSDL libSM libXcursor libXext libXinerama libXmu libXrender libXt libfontconfig libpng15 libvpx libxcb
截图少输入了libpng15.jpg
  • 其中libSDL,libfontconfig和libpng15三个库不在yum源中,其实都只是因为包名错误,使用yum install SDL fontconfig libpng安装即可。(这里折腾了很久,最终回过头才发现走了天远的弯路,下面小部分为弯路)。
另外俩需要我们需要手动下载安装,这里我们依然使用rpm安装。
网页打开`https://pkgs.org/`。分别搜索这两个软件,找到下载地址分别为:
    - SDL和libSDL。
    - http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/i586/RPMS.classic//libpng15-1.5.28-alt2.i586.rpm。

- 试着安装png,如图报错lib.so.6,该库的软件包名称为glibc,安装:`yum install glibc`提示已经安装。
- 这个问题在Stack Overflow上有人回答过一串英文,大概意思是从`Red Hat Enterprise Linux 6`开始,默认只安装主架构所需要的包,而不安装兼容架构的包。
- 也就是说,64位系统默认只安装64位的软件包。为避免这种问题,在64位系统中,我们要手动安装32位的兼容包。
- 执行命令`yum insall glibc.i686`,expat和freetype同样的道理,未安装32位的软件包。
- 执行`yum list installed expat freetype`查看,执行`yum install expat.i686 freetype.i686`安装。
- 到了最后rpmlic中的SetVersions和PosttransFiletriggers两个模块未安装,但到底怎么安装呢?
- 国内的搜索引擎几乎没找到这类问题,我不得不上google查找,却依然没找到具体的解释。
- 到了这里我才回过头直接yum list SDL fontconfig libpng,发现可以直接安装。
  • 依赖安装完毕,直接安装VirtualBox成功如图:
    image.png
  • 图中提示你已经默认创建了vboxusers用户组(/etc/group),VM用户必须放置在该用户组中。通常情况你不能使用root用户登录服务器,我这出于学习方便考虑就把常用的root用户加入这个用户组吧,usermod -a -G vboxusers root,然后查看当前用户所在组groups root

2. 安装对应版本的Vagrant

  • 这个vagrant的RPM包下载地址为:https://releases.hashicorp.com/vagrant/2.0.4/vagrant_2.0.4_x86_64.rpm,我们同样在用户家目录下载该文件并安装试试。

  • 长的帅的人执行rpm -ivh后都是这样的:

    image.png

  • box是vagrant管理的一个个容器,现在我们需要下载一个名为homestead的box。使用命令vagrant box add laravel/homestead,安装过程需要选择你服务器上使用的虚拟机。输入3回撤即可开始漫长的等待。

  • 如果你的服务器在国内小作坊,这里的等待时间可能足够你睡个觉明天早上起来继续操作。我使用腾讯云的最低配置大概下载了15分钟,回车后洗了个澡回来就差不多了。当时在我本地mac上是无论如何进度条君都是0,于是借用宿友的windows,使用了360浏览器下载,本地搭建的话你也可以使用迅雷下载,或者使用ftp将这个1.6G的文件上传到服务器。

    image.png

  • 注意,使用迅雷或者其他方式下载这个文件的话,资源地址在你执行这条命令后会出现在终端,请手动复制粘贴下载。

上面这个操作你也可以使用另外两种方式下载,并不一定要使用
1. vagrant box add laravel/homestead
2. vagrant init laravel/homestead && vagrant up
3. vagrant box add homestead.box(本地文件)
你也可以直接访问 http://app.vagrantup.com
  • 下面几个是vagrant常用命令,以后遇到其他的也会在此添加:
vagrant box list      列出本地所有box
vagrant box remove boxName      删除某个box
homestead镜像/box下载成功

3. 安装Homestead并测试访问

  • homestead的项目托管在 www.github.com/laravel/homestead上,所以你要首先保证服务器上安装了git命令行,使用git --version查看。

    image.png

  • 如果你没有安装,请执行yum install git -y安装git-1.7。或者参考这篇文章手动安装最新版git-2.9:https://www.jianshu.com/p/3ffcd86a8412

  • 在服务器根目录克隆laravel/homestead源码,并按照顺序执行下面的操作。(应该都看得懂吧,有疑问可以留言或者私聊我)

# cd /
# git clone https://github.com/laravel/homestead.git
# cd homestead
# bash init.sh(生成项目配置文件)
  • image.png
  • 生成了Homestead.yaml这个文件后,我们以后对项目进行的一些配置都在这个文件中操作。下面简单说一下并编辑这个文件中的重点部分:

authorize是用于ssh免密码登陆虚拟机的
folders和sites是共享目录和站点代码的映射
databases是数据库名,可以有多个,数据库密码在laravel配置文件中
  • 这时候我们在/homestead/目录下启动一个vagrant环境,执行vagrant up,第一次启动速度有点慢。如果你碰到一些问题,请手动删除~/VirtualBox VMs/目录下的所有文件。

    搞定

  • 如图,虚拟机运行成功。然而vagrant ssh始终无法进入这台虚拟机进行操作。折腾了几个小时后我向腾讯云技术部门发起工单,得到的回复是虚拟机中无法创建使用新的虚拟机。

    image.png

  • 点击访问:常见安装错误

  • 凉了凉了,本来打算写下面的多站点配置。看来还是删了换Docker教程吧,容器级隔离,应该是可以在虚拟机中创建docker容器的。可腾讯云那边居然电话联系我说不知道,叫我自行测试Docker使用。

4. 域名解析和多站点测试,域名实名认证及备案中,等待Docker版本更新。后续将使用LaraDock进行教程分享,laradock几乎就是docker版的homestead。

5. 赶紧卸载vagrant和virtualbox

  • rpm -qa列出本地所有rpm安装的包,可以结合grep命令进行过滤。

  • rpm -qa | grep vagrant && rpm -e vagrant

  • image.png
  • rpm -qa | grep VirtualBox && rpm -e VirtualBox查找没问题,这样删除会出错,找不到这个包,使用全名的话提示有一个虚拟机正在运行中。

  • image.png
  • 关闭vbox虚拟机再删除。

查看是谁在运行: VboxManage list vms
关闭那个虚拟机:VBoxManage controlvm homestead-7 poweroff
卸载virtualbox:rpm -e VirtualBox-5.2-5.2.8_121009_el7-1.x86_64
  • image.png

参考文档:
rpm安装依赖问题:http://raksmart.idcspy.com/781
百度文库:https://wenku.baidu.com/view/af83dd01bfd5b9f3f90f76c66137ee06eff94ecb.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容