在开发和线上阶段使用不同的系统运行环境的话, 经常会遇到各种各样的 BUG, 并且在团队开发的时候, 让所有成员都保持使用最新版本的软件和类库, 也是一件很让人头痛的事情.
如果你是在 Windows 下开发, 线上环境是 Linux (或者别的非 Windows 系统) 的话, 或者团队协同开发的时候, 建议使用虚拟机.
除了大家熟知的 VMware 和 VirtualBox 外, 还有很多工具可以让你快速, 轻松的用上虚拟环境.
Vagrant 简介
Vagrant 可以让你使用单一的配置信息来部署一套虚拟环境, 最后打包为一个所谓的 box (就是已经部署好环境的虚拟机器). 你可以手动来安装和配置 box, 也可以使用自动部署工具, 如 Puppet 或者 Chef .
自动部署工具可以让你快速部署一套一模一样的环境, 避免了一大堆的手动的命令输入, 并且允许你随时删除和重建一个全新的 box, 虚拟机的管理变得更加简单.
Vagrant 还可以在虚拟机和主机上分享文件夹, 意味着你可以在主机里面编辑代码, 然后在虚拟机里面运行.
下面是一些其他的软件, 可以帮助你更好的使用 Vagrant:
Rove: 使用 Chef 自动化安装一些常用的软件, PHP 包含在内.
Puphpet: 简单的 Web 图形界面用来生成部署 PHP 环境的 Puppet 脚本, 此项目不仅可以用在开发上, 也可以在生产环境中使用.
Protobox: 是一个基于 vagrant 的一个层, 还有 Web 图形界面, 允许你使用一个 YAML 文件来安装和配置虚拟机里面的软件.
Phansible: 提供了一个简单的 Web 图形界面, 用来创建 Ansible 自动化部署脚本, 专门为 PHP 项目定制.
Docker 简介
Docker - 一个轻量级的虚拟化解决方案。Docker 为各种应用程序提供了 Linux 容器。 A container is a building block which, in the simplest case, does one specific job, e.g. running a web server. An “image” is the package you use to build the container - Docker has a repository full of them.
通常情况下,一个 LAMP 应用汇包含以下三个容器:一个 Web 服务器,一个 PHP-FPM 线程和 MySQL。在 Vagrant 的共享文件夹中,你不需要改变你应用文件路径,你只需要告诉 Docker 到哪里可以找到他们即可。
你可以通过命令行来生成容器,或者,为了更好的维护,为你的项目构建一个 docker-compose.yml 文件来配置生成容器的规则和容器的通讯规则。
Docker 在多网站要求不同运行环境的情况下尤其趁手,你可以在一台机器上运行多个 Docker 虚拟主机,他们将会运行在完全不同的环境中,使用不同的 Web 服务,并且不管在内存共享、硬盘空间、或者是 CPU 资源上,都能做到高效利用。这些虚拟机同时也指出秒寄重启。
例子: 在 Docker 里面运行 PHP 应用
在你成功 安装 Docker 后, 你只需要一步就可以安装 Apache + PHP.
下面的命令, 会下载一个功能齐全的 Apache 和 最新版本的 PHP, 并会设置 WEB 目录 /path/to/your/php/files 运行在 http://localhost:8080:
docker run -d --name my-php-webserver -p 8080:80 -v /path/to/your/php/files:/var/www/html/ php:apache
This will initialize and launch your container. -d makes it runs in the background. To stop and start it, simply run docker stop my-php-webserver and docker start my-php-webserver (the other parameters are not needed again).
END
最后,如果你也喜欢以上文章教程
就关注一波吧
关注下方微信号
获得更多学习与交流
领取专属 10元无门槛券
私享最新 技术干货