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

96
梁同桌
2018.03.17 23:12* 字数 1093

前言

我是 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/

Liunx
Gupao