【PHP】虚拟化技术

在开发和线上阶段使用不同的系统运行环境的话, 经常会遇到各种各样的 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 - 是一个完整功能虚拟机方案的轻量化替代品 - 之所以获得这样称呼是由于其“容器(container)”特性。一个容器就是一个构建模块,简单来说,就是执行一个特定的任务,例如,运行一个 web 服务器。“镜像(image)”是用来构建容器的集成包(package) - Docker 提供了一个存放所有镜像的仓库。

一个典型的 LAMP 应用包含以下三个容器:一个 Web 服务器、一个 PHP-FPM 进程(process)和 MySQL。就像 Vagrant 中的共享文件夹一样,你不需要改变你的文件的所在位置,你只需要告诉 Docker 到哪里可以找到他们即可。

你可以通过命令行来生成容器(下面有实例),或者,为了方便维护,为你的项目构建一个 docker-compose.yml 文件来配置生成容器的规则和容器的通讯方式。

Docker may help if you’re developing multiple websites and want the separation that comes from installing each on it’s own virtual machine, but don’t have the necessary disk space or the time to keep everything up to date. It’s efficient: the installation and downloads are quicker, you only need to store one copy of each image however often it’s used, containers need less RAM and share the same OS kernel, so you can have more servers running simultaneously, and it takes a matter of seconds to stop and start them, no need to wait for a full server boot.

Docker 在多网站要求不同运行环境的情况下尤其趁手,你可以在一台机器上运行多个 Docker 虚拟主机,他们将会运行在完全不同的环境中,使用不同的 Web 服务,并且不管在内存共享、硬盘空间、或者是 CPU 资源上,都能做到高效利用。这些虚拟机同时也指出秒寄重启。

实例:在 Docker 中运行 PHP 应用

在你成功 安装 Docker 后, 你只需一条命令就能启动一个 web 服务。 以下命令将下载一个功能完整的 Apache 镜像,包含的 PHP 也是最新版本的,/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

上面的命名将初始化并启动容器。-d 参数告诉容器在后台运行。 如需停止或启动它,只需执行 docker stop my-php-webserver 和 docker start my-php-webserver 命令即可(其他参数就不再需要了)。

了解更多关于 Docker 的信息

上述命令展示了快速启动服务的一种方式。Docker 还提供了很多功能等着你去发现(Docker Hub) 上更是提供了数以千计的已经构建好的镜像)。花点时间去学习一下专用术语和 Docker 用户手册会对你多有裨益,并且,不要在未经安全检查的的情况下运行从网上下载的代码 - 非官方的镜像有时候并没有最新安全更新。如果你对镜像有疑问,优先选择 官方的仓库

PHPDocker.io 网站能够自动生成你所需要的 LAMP/LEMP 服务栈的所有文件,包含你所选择的 PHP 版本和扩展模块。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注