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

作者: 小小奶狗 | 来源:发表于2018-04-27 08:55 被阅读60次

    很多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

    相关文章

      网友评论

      • 香蕉你个不拿拿_b689:都已经是centos环境了,何必再在里面装虚拟机呢。不如laradock这种轻量级的。个人认为homestead也就适合win使用
        小小奶狗:@香蕉你个不拿拿_b689 事实上也确实这样哈哈哈哈,我也认为homestead不应该跑在服务器上。我只不过无聊到各种尝试各种瞎玩罢了
      • IT人故事会:你的思路可以借鉴来用!
        小小奶狗:@IT人故事会 嗯嗯,能帮到你就行哈哈哈

      本文标题:在CentOS7服务端下载Vagrant并使用Homestead

      本文链接:https://www.haomeiwen.com/subject/jyavlftx.html