前言
我是 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. 安装 VirtualBox 和 Vagrant 直接点击下载安装
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/