PHP 开发环境安装配置:Win10+Docker+Laradock(上篇)

一、关于 PHP 开发环境的选择

1、操作系统的选择

​PHP 运行环境从操作系统上来说肯定是 Linux 最好,在生产环境的服务器中都是使用 Linux 系统。但是 Linux 日常使用软件不够丰富,只能做为开发使用,Linux 中的桌面版比如 Ubuntu、深度 deepin linux 做为软件开发使用时也有人称之为免费版的 MacOS,当然,反过来看用 Linux 做开发使用不能安装一些娱乐软件特别是游戏等软件,可以更好的把注意力集中在开发上,也可以算是优点吧。日常做开发 MacOS 系统软件丰富,对 PHP 支持友好,可以获得完整的开发体验,能很好的兼顾日常应用和软件开发。Windows 对 PHP 运行环境兼容性差,但是占用率高,学习成本低,软件丰富,日常办公等应用方便。

2、集成环境

(1)图形化管理界面的集成环境,常见有的 XAMPP 、phpStudy 等,推荐使用 宝塔面板(http://www.bt.cn),有Linux 版和 Windows 版,可用于线下,也可用于线上,安装成功后默认就会安装一个 apache 服务、端口888,运行 web 管理面板,可以很方便的管理 php 运行环境。

(2)集成了许多PHP相关软件包的安装脚本,在线下载编译安装,相对比较可靠,可用于生产环境。例如:OneinStack(https://oneinstack.com/),只能用于Linux 系统,安装时可自由选择各个软件及版本。

3、Laravel Homestead

Vagrant 是一个部署虚拟机环境的工具,使用Ruby开发,可以创建、配置、管理、自动安装、打包及分发虚拟机。常见的虚拟机有 VirtualBox、VMWare 以及 Micrsoft 的 Hyper-V,但是只有 VirtualBox 是开源的,并且是免费的。早期 Vagrant 只支持 VirtualBox,后来才加入了 VMWare,Parallels,Hyper-V 的支持,最常见的还是 Vagrant + VirtualBox 组合。Laravel Homestead 就是一个打包好各种 Laravel 开发所需软件和工具的 Vagrant 盒子,也是 Laravel 推荐的开发环境,具体安装见官方文档 中文文档 英文文档

4、Laradock

Laradock是 laravel + docker的缩写,最早是为 laravel 打造的,现在已成为广泛使用的一套基于 Docker 的 PHP 开发环境,提供了多个预先配置和打包的 Docker 镜像。

5、Vagrant 还是 Laradock ?

这个选择其实就是传统的虚拟机和 Docker 之间的选择,虚拟机是硬件级的,就像一台独立的计算机一样,可以实现完整的 Linux 系统体验,相比 Docker 而言兼容性较好。Docker 是服务容器,就像“沙箱”一样,是运行于操作系统之上的,系统隔离的,相对于虚拟机而言 Docker 性能损失较少。

在网络服务器中使用的那些 VPS、云主机基本都是虚拟机,在这些云主机中是可以部署 Docker 的,因此如果开发环境部署了 Docker ,很容易迁移到生产环境。

二、Win10中 Laradock 安装前的准备

1、确认软硬件环境满足要求:

  • 64位的Windows 10 Pro专业版,Enterprise企业版或Education教育版(1607周年更新,Build 14393或更高版本)
  • 在 BIOS 开启硬件虚拟化:Virtualization is enabled
  • CPU 支持 SLAT 功能
  • 4G以上的内存

官方文档见:https://docs.docker.com/docker-for-windows...

(1)在系统桌面“此电脑”上按右键,打开 属性,可以确认系统的版本、内存大小。要求系统必须是64位的 Win10,不能用家庭版,内存4G以上。如下图所示:

Thumbnail

如果是 Win10 以下版本就需要下载 Docker Toolbox工具再安装,也就不能用 Hyper-V 虚拟机,而是使用 Oracle VirtualBox 虚拟机。

(2)打开 任务管理器 ,切换到 性能 ,查看 CPU ,如果在 虚拟化 旁显示 已启用 ,则说明 CPU 主板 BIOS 都是支持虚拟化的,并且已经开启,可以使用。

Thumbnail

2、如果虚拟化未启用,进一步确认是 CPU不支持,还是主板 BIOS 中未开启。

(2.1)CPU是否支持 SLAT 功能,一般可用 CPU-Z 软件查看指令集,Intel 的 CPU 看有没有 VT-X 这个指令集,AMD 的 CPU 看有没有 AMD-V 指令集。或者 根据 CPU 型号,如果是 Intel 的访问  Intel ARK  ,如果是AMD 的 CPU 访问 desktop CPU page ,查看自己的 CUP 型号,如果 INTEL 的具有 Intel® VT-x with Extended Page Tables (EPT) 功能,AMD的具有 AMD Virtualization Technology 功能,说明此CPU是具备 SLAT 虚拟化技术的。

(2.2)进入 BIOS 查看是否有 Virtualization Technology(VT) 虚拟化技术的相关选项,不同的主板略有差异,通常在电脑启动时按 F2 ,进入 bios 菜单中 advanced(高级)—— CPU configuration(处理器配置)—— Intel(R) Virtualization teachnology (虚拟化技术),设置为 Eenabled 即可。

完成了以上两步之后,再次打开 任务管理器 ,切换到 性能 ,查看 CPU 是否已开启虚拟化。

3、确认没有安装过虚拟机软件,如VMware Workstation 、Virtual Box 等,如果安装过一定要将其卸载,否则可能会出现冲突,因为 Win10 中安装 docker 时会启用Winn10 自带的 Hyper-V 虚拟机。

4、下载 Docker 进行安装,因网络问题,下载可能比较慢。

https://download.docker.com/win/stable/Doc...

三、Win10中安装 Docker

1、运行下载的 Docker 安装程序,在如下界面中,默认会使用 Linux 容器。第二个选项是使用 windows 容器,一定不要勾选,因为我们安装 Docker的目的是为了使用 Laradock 配置 PHP 环境,Laradock需要在Linux 中安装,如果使用了 Windows 容器,那 Docker 中就只能安装 Windows 的软件了。

Thumbnail

2、在安装过程中最好退出 360安全卫士 类软件,如果出现被拦截情况,要 允许操作。

Thumbnail

Docker for win10安装

3、安装完成,点 Close and log out ,会注销系统,然后重新登录系统。

Thumbnail

4、重新进入桌面后,会出现如下提示,点击 OK ,系统重启并安装 Hyper-V 虚拟机。.................

Thumbnail

5、系统重启之后,在右下角通知栏就会出现一个 Docker 的小图标,会显示 Docker desktop is runing,说明Docker 已成功运行了。在图标上按右键,选择 Settings ,切换到 Advanced ,如下图:

Thumbnail

可以看到,Docker 实际上是启用了一个虚拟机,虚拟盘名称是:MobyLinuxVM.vhdx,宿主机CPU 一共4核,给虚拟机分配了 2核,内存分配了2G。现在打开 Hyper-V 管理器,能看到名称为 MobyLinuxVM 的虚拟机正在运行。也就是说,Docker 在 Windows 中,先运行了个定制的轻量的 Linux 虚拟机,再在这个虚拟机中运行各种功能的Docker容器。如图:

Thumbnail

6、将 Docker 设置切换到 Daemon ,在 Registry mirrors 中填入国内的 Docker 镜像加速地址:https://registry.docker-cn.com 。如果有阿里云的账号,也可以申请一个阿里云的 Docker 容器加速器。

Thumbnail

7、如下图,选择要共享的盘,挂载宿主机的目录。

image

挂载目录也可以使用 docker run -v 或 mount 命令。图中给出的 PowerShell 命令: docker run --rm -v c:/Users:/data alpine ls /data 只是示例,不明白意思的不要随便运行。

四、测试 Docker

1、在开始菜单图标上按右键,打开 Windows Shell ,输入以下命令查看Docker版本:

#查看docker版本信息
docker version

#检查Docker,Compose和Machine的版本
docker --version
docker-compose --version
docker-machine --version

2、在windows shell 中运行下面的命令,将镜像文件从仓库抓取到本地。hello-world 是官方的一个最基本的镜像,只有1.85kB

docker pull library/hello-world

#显示结果:
Using default tag: latest
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image for hello-world:latest

3、查看宿主机上的镜像

docker images

#显示结果
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        6 weeks ago         1.84kB

4、运行这个镜像,如能正常显示说明信息,表示 Docker 运行正常。

docker run hello-world

#显示结果
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

5、查看容器 ,注意容器ID

docker ps -a

#显示结果
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
f657e13f1a25        hello-world         "/hello"            13 minutes ago      Exited (0) 13 minutes ago                       brave_morse

6、删除容器(如果要删除镜像先要删除容器)

docker rm f657e13f1a25

7、删除刚下载的镜像:

docker rmi  hello-world

#显示结果:
Untagged: hello-world:latest
......

至此,测试结束,Docker 运行正常。

五、安装 Laradock

参考官方文档:https://laradock-docs.linganmin.cn/zh/gett...

1、下载或克隆 Laradock 项目到本地,例如,打开 Windows Shell ,进入C:\WWW 目录中,运行git 命令:

git clone https://github.com/laradock/laradock.git

2、进入laradock文件夹并复制 env-example 为 .env,mysql 配置 账号密码在.env中,可修改。

cd laradock
cp env-example .env

3、修改 .env 文件,启用 xDebug。默认的 .env 文件没有启用 xDebug 。

(1)现在打开 .env 文件,搜索 XDEBUG ,将 WORKSPACE_INSTALL_XDEBUG 设置为 true ,将 PHP_FPM_INSTALL_XDEBUG 设置为 true 。

(2)打开 laradock/workspace/xdebug.ini 和 laradock/php-fpm/xdebug.ini 修改以下配置:

...
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.cli_color = 1
...

这样修改配置之后,在构建环境时就会在 php-fpm 和 workspace  两个容器中安装 XDEBUG ,详见官方文档:http://laradock.io/documentation/#install-...

4、运行docker-compose来构建环境:

docker-compose up -d nginx mysql

以上命令就会构建 nginx mysql  两个容器,同时还会自动构建 php-fpm 和 workspace 两个容器。

由于网络原因,时间可能会比较长,因为 Laradock 中的 linux 软件源都是默认的,并没有为国内网络优化。在github 上也有国内做的修改版的,使用了国内的软件源。不过一般在云主机中网络条件都比较好,安装时会比本地安装要快。如果因为网络原因构建不成功,那就重新运行一次命令。我本人在本地安装时用了3个多小时。

5、构建其它可选容器

docker-compose up -d redis beanstalkd phpmyadmin

6、至此,laradoc环境已经构建完成,以后在win10系统每次开机重启后,会自动启动 docker ,只要打开 PowerShell 切换到 laradoc 目录,运行上述两条命令即可启动相应的容器服务。

本作品采用《CC 协议》,转载必须注明作者和本文链接
张龙于飞
本帖由系统于 4年前 自动加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7

win下集成环境除了 XAMPP 、phpStudy ,现在还有个laragon也不错

5年前 评论
UKNOW 4年前

windows下,还是直接 laragon 吧,简单无脑方便好用,也不会污染系统,,
linux 下用 homestead 不错,,

5年前 评论

这个就算了 搭建时间太长了

5年前 评论
LOST

奈何自己的 Win10 版本不够,懒得折腾了。

4年前 评论

安装 3 个小时,实在太久了

4年前 评论
快乐壮 4年前

楼主 在构建workspace时卡顿 以切换国内镜像 请问有没办法解决 https://user-images.githubusercontent.com/...

4年前 评论
claystone 4年前

执行docker-compose up -d nginx mysql redis,每次都卡这了。 file 你们是怎么解决的

3年前 评论
ahong9771 3年前
bing 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!