PHP Homestead 虚拟化安装与 MongoDB 扩展安装

前言

我是 PHP 超级小白,因公司业务我需要在 Mac 下安装 PHP MySQL MongoDB 一系列整套的开发环境,说起来都是眼泪,尤其是 MongoDB 的扩展真的是。

  • 尝试了 XAMPP 环境失败 PHP 没有跑起来。
  • 同事推荐安装 MAMP 也失败了,原因是 MongoDB 扩展死活装不上去,还有一个问题 Apache 会启动系统自带的默认配置,并不受 MAMP 控制。
  • 期间也尝试使用 Mac 自带的配置,一想到 MySQL 也要自己管理就放弃了,不够自动化。
  • 另外一位同事推荐虚拟 VirtualBox 方法,冥冥之中感觉是一个好方法。

目录

  • PHP 虚拟化技术的几个关键软件介绍
  • 安装 Homestead 步骤
  • 安装 MongoDB 扩展
  • 感想

PHP 虚拟化技术的几个关键软件介绍

  • VirtualBox 是 Oracle 公司的虚拟机软件,可安装虚拟操作系统。
  • Vagrant 提供可编程可配置的自动化安装操作系统软件。
  • Homestead 就是封装一堆的配置文件。

他们的分层架构:由于有 VirtualBox,我们可以在 Mac 虚拟操作系统,然后利用 Vagrant 可以用编程的方法去控制 VirtualBox 自动安装操作系统。

Homestead 就是一堆编程方法和配置文件,可以通过 Vagrant 去操作 VirtualBox 安装生成一个虚拟操作系统里面有 PHP MySQL Apache 整套环境。

安装 Homestead 步骤

1. 安装 VirtualBoxVagrant 直接点击下载安装
2. 添加 Homestead 的 Vagrant box

$ vagrant box add laravel/homestead

有时候安装会比较慢,等吧!等不及的可以自行搜索。
3. 查看安装是否成功

$ vagrant box list
laravel/homestead (virtualbox, 5.2.0)

4. 部署 Homestead 环境
clone Git 项目到桌面。

$ git clone --branch v2.1.8 https://github.com/laravel/homestead.git Homestead

cd 刚刚拉取 Homestead 目录下,初始化。

$ bash init.sh
Homestead initialized!

5. 当前目录下有 Homestead.yaml 文件

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: /Users/ltz/Desktop/code/riot-match-management
      to: /home/vagrant/code

sites:
    - map: homestead.test
      to: /home/vagrant/code/public

databases:
    - homestead

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

folders 是他俩的公用文件。
配置 folders map 是 Mac 下的文件路径,to 是虚拟机文件路径。

配置完成以后,vagrant 虚拟环境与 Mac 主机之间默认使用 ssh 密钥对验证进行 ssh 通讯,一般来说密钥对在使用 Git 的前期准备工作中应该已经生成。

6. 运行 Homestead
配置完成后进入 Homestead 目录,然后使用 vagrant up 命令即可启动 Homestead 虚拟环境:

$ vagrant up

有时候会等好久成功后, 127.0.0.1:8000 访问你的项目。

7. vagrant 几个命令

$ vagrant up //启动
$ vagrant halt //关闭
$ vagrant suspend //暂停

$ vagrant reload //重启
$ vagrant ssh //SSH 连接
$ vagrant status //查看状态
$ vagrant destroy --force //强制删除

8. 终端链接 vagrant 与 MySQL
Homestead 环境已经集成 MySQL,默认账户为 homestead,密码为 secret

$ vagrant ssh
$ mysql -u homestead -p
Enter password: secret

9. 安装 homestead 收尾
我们现在基本 PHP 开发已经没有任何问题了,Apache PHP MySQL 都已经安装了。

安装扩展 Mongodb

1.下载安装

# 进入 vagrant
$ vagrant ssh
# 下载
$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz

# 解压
$ tar -zxvf mongodb-linux-x86_64-3.0.6.tgz

# 将解压包拷贝到指定目录
$ sudo mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb

# 修改文件夹权限
$ sudo chmod 777 /usr/local/mongodb

# 创建数据库目录
$ mkdir -p /usr/local/mongodb/data/db
# 环境变量
$ export PATH=/usr/local/mongodb/bin:$PATH

2.运行 MongoDB
在 MongoDB 安装路径下的 bin 目录执行 $ ./mongod 命令来启动 MongoDB 服务。或直接使用 $ /usr/local/mongodb/bin/mongod 命令即可直接启动 MongoDB 服务。--dbpath 参数可指定数据库存放目录,--logpath 参数可指定日志存放目录。指定参数启动 MongoDB:

$ /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --fork --logpath=/usr/local/mongodb/logs

3.安装 MongoDB 的 PHP 扩展
MongoDB 的 PHP 扩展有可能依赖 libsasl2-dev,所以我们先安装 libsasl2-dev 后即可成功安装 MongoDB 的 PHP 扩展:

$ sudo apt-get install libsasl2-dev
$ sudo pecl install mongo

4.查看 PHP 配置文件所在目录,并修改配置

$ php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /etc/php7.2.1/cli
Loaded Configuration File => /etc/php7.2.1/cli/php.ini

在 /etc/php7.2.1/cli/php.ini 和 /etc/php7.2.1/fpm/php.ini 两个配置文件中加入 extension=mongo.so 字段并保存。重启 PHP 即可开始使用 MongoDB 进行开发:

sudo kill -USR2 `cat /run/php5-fpm.pid`

MongoDB 默认端口3000,没有账号密码直接链接。别忘了 composer install。

感想

说真的挺不好弄的,我只想要一个直接往里面拖代码的就能跑起来的环境。每次配置开发环境体验算不上友好,但是大家都在向前走努力,让开发环境与硬件操作系统隔离。至此一折腾我觉得 Docker 应该算是服务器开发的必修课了,虽然我是写 Node.js 后端。

参考链接:
http://blog.csdn.net/flyfish111222/article/details/51886787
https://laravel-china.org/topics/2/laravel-deployment-of-homestead-development-environment
http://www.afox.cc/archives/437
https://laravel-china.org/docs/laravel/5.6/homestead#ac7989
https://droid4.us/tutorial-of-install-homestead-and-mongodb/

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

推荐阅读更多精彩内容

  • 简介 Laravel 致力于让你在 PHP 开发过程中更加轻松愉快,这其中也包括本地开发环境的搭建。 Vagran...
    曼巴童鞋阅读 2,375评论 0 3
  • 简介 Laravel Homestead 是一个官方预封装的 Vagrant box,它为你提供了一个完美的开发环...
    曼巴童鞋阅读 914评论 0 0
  • Homestead 可以运行在 Windows、Mac 以及 Linux 等主流操作系统上,预装的软件和工具列表如...
    guanguans阅读 3,038评论 0 5
  • 神的恩典每天都有,恩典多多,今天上午晨祷完去雷姆牧师母家开会,师母的一句话进到我的生命,他说妻子是忠诚的敌对者,我...
    恩宠爸爸阅读 480评论 0 0
  • 当我们要去选择做交易的时候?首先我们需要思考这个交易市场是什么?股市期货市场是财富再分配的场所,是列宁主义党汲取财...
    长空资本阅读 144评论 0 0