第一章 开发环境的准备

2022-01-05  本文已影响0人  吐太阳的小葵花

重要提示:本文内容基于Hyperf2.2,由于互联网每时每刻都在更新,所以您看到本文时文中内容可能已经过时。


开发环境的选择

首先,让我们打开Hyperf的官方文档

https://hyperf.wiki/

有兴趣的话,你就把前言和版本管理都看一遍,如果没有兴趣的话,就直接点击快速入门中的“安装”(懒得找的话直接点下面这个链接)

https://hyperf.wiki/2.2/#/zh-cn/quick-start/install

可以看到HF要求你必须使用一个叫做Swoole的扩展(其实这也是HF的核心所在),那展开来说就两条路。一条路就是直接给你的PHP安装并配置一个Swoole扩展实现在本地开发,另一条路就是直接使用HF官方提供的Docker镜像来进行开发。

以我倒腾的经验告诉你,直接闭着眼睛选择使用Docker镜像才是最佳的开发方案。

毕竟在Windows上配置Swoole可并非易事(主要是Swoole不提供Windows的版本,你得装个Cygwin之类的模拟环境才行),而且现在的Windows 10提供了WSL(Windows Subsystem for Linux),简直好用到飞起,真没必要费那个劲去折腾。有这折腾的时间想来去摸摸鱼才是更好的选择。

就算你费劲千辛万苦在Windows环境下直接配置了Swoole扩展,你接下来也要为如何把项目部署上线头疼个一两天(因为服务器环境和本地环境不一致,出一些莫名其妙的问题),后面每次的更新都会是噩梦一样(因为每次要改动的时候你都不可能仅仅只修改某一个文件,时间长了这真的记不住改了哪些文件,文件一多你还会发愁他们是哪里来的)。

安装Docker

首先,打开Docker的官方网站,选择右上角的“Get Started”来到下载页面,或者直接点下面这个

https://www.docker.com/get-started

我们要安装的是Docker Desktop,根据你的电脑来选择需要下载的安装包,这里以Windows 10 21H2(22000.376) 64位专业版为例,直接点击“Download for Windows”就可以下载了。

下载以后一路下一步就可以安装了,中间可能会提示你安装一个叫做WSL2支持的东西,你只需要在弹出的网页中点击下载并安装就可以了。

到这里如果没什么问题的话,此时你应该已经装好Docker了。这里顺带解释几个Docker的名词解释。

Docker 这是一个开源的容器引擎(你可以理解容器就是一个轻量化的虚拟机)

Docker Desktop 这是一个开发环境,提供了一个完整可用的桌面UI,让你可以通过鼠标点击来完成一些基础的操作(实际也没啥用)

Dockerfile 这个文件主要是用来构造一个Docker镜像。一般开源项目里都会自带这个文件,用这个文件就可以构造一个跟开源项目开发者开发这个项目时所使用的相同环境。

镜像 Dockerfile的构造产物,可以用来创造Container(容器),你理解为系统安装盘就可以了。

容器 镜像run起来的产物,你可以理解为每个容器就是一个轻量化的虚拟机,他们使用linux的namespace技术实现,不同于传统的虚拟机,他们直接使用硬件资源而并非像传统虚拟机那样使用虚拟出来的硬件资源。

卷 即Volume,一种虚拟出来的存储设备,实际在主机上是一个目录。

安装MySQL/Redis这两个基础服务

MySQL的链接在这里

https://hub.docker.com/_/mysql

Redis的链接在这里

https://hub.docker.com/_/redis

如果你知道怎么做,你直接安装就可以了。如果你不知道怎么做,继续往下看。

MySQL的安装命令

docker run --name abcmysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 -v D:/mysql_data:/var/lib/mysql \ mysql:latest

这句命令的解释就是使用docker运行一个容器;

通过参数--name指定容器的名字是abcmysql;

通过参数-e指定了一个叫做MYSQL_ROOT_PASSWORD的环境变量(容器的)并且给它设置值为123456(也就是设置MYSQL的root密码);

通过参数-d设置这个容器在后台运行(一般常用的组合还有-itd,具体意思可以百度);

通过参数-p映射端口,参数值中前面这个3306是主机端口,后面这个3306是容器端口,意思就是将容器的3306端口绑定到主机的3306端口;

通过参数-v映射目录或者卷,和上面一样,中间的冒号之前是主机的路径(或者volume的名字),冒号之后是容器内部的路径(因为容器一旦销毁再次创建时,内部的数据不会被保存,所以你最好吧mysql的data目录映射出来,保存在本地,这样你以后可以反复映射实现数据的保存。)

并在最后写上mysql:latest,意思是告诉docker要run的这个容器,要从mysql:latest这里取镜像(一般是“[镜像名]:[版本号]”的格式,大多数情况下,公共的Docker镜像都会提供一个叫做latest的版本,这个版本一般就是最新版的意思)。

当然,我建议你在这里增加一个参数叫做--restart=always

使用这个参数可以让Docker在每次开机并运行Docker服务以后,自动启动这个容器。这个参数可以加在docker run 和mysql:latest中间的任何位置,并且参数名和参数值中间可以是等号也可以是空格(比如你写--restart always 也是可以的)

Redis的安装命令

docker run \

    -d \

    --name=redis \

    --restart=always \

    -p 6379:6379 \

    -v A:/Data/redis_data:/data \

    redis:latest

也许你会疑惑为什么到这里就变成了一行行的代码,好像和上面那个不太一样?

其实这里两条命令都是可以运行的,只是上面Mysql那条命令无论在Linux还是Windows中都是可以运行的,但是缺点就是所有参数堆叠在一起,不是很容易看。但是下面这条命令只能在Linux的终端中使用,如果你直接粘贴去Windows的话,会无法识别“ \”这个换行的意思导致执行失败。如果你不理解,请直接复制下面这个来安装redis。

docker run -d --name=redis --restart=always -p 6379:6379 -v D:/redis_data:/data redis:latest

到这里,基础环境的准备工作应该全部都结束了,下一章节将会讲述如何启动一个Hyperf项目。

上一篇下一篇

猜你喜欢

热点阅读