win10搭建 Hyperf框架

一、在系统下创建本地项目文件夹

我创建的目录为 D:\workspace ,你们可以按照自己的习惯来创建目录结构

二、创建docker容器并搭建Hyperf

1.打开win+R 输入:PowerShell 进入命令页

PS C:\Windows\system32> docker run -d --name hyperf -v D:/workspace/skeleton:/hyperf-skeleton -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh hyperf/hyperf:8.1-alpine-v3.18-swoole
  1. -d 将以分离模式运行此容器,以便它在后台运行。

  2. --name 将名称“hyperf ”分配给您的容器实例。

  3. -p会将 hyperf 容器端口 9501绑定到主机上的相同端口。

  4. -v选项将容器卷 (/hyperf-skeleton)内的数据文件夹绑定到本地 宿主机共享目录 (D:/workspace/skeleton )。

冷暖自知一抹茶ck出现这个就代表创建成功了


2.进入刚刚创建的容器

PS C:\Windows\system32> docker exec -it hyperf /bin/bash
5b50ce9c9e68:/#

3.将 Composer 镜像设置为阿里云镜像

5b50ce9c9e68:/# composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
5b50ce9c9e68:/# ls
bin              home             lib              opt              run              sys              var
dev              hyperf-skeleton  media            proc             sbin             tmp
etc              init.php         mnt              root             srv              usr

4.使用composer安装hyperf(然后一路n+回车进行安装)

5b50ce9c9e68:/# composer create-project hyperf/hyperf-skeleton
Creating a "hyperf/hyperf-skeleton" project at "./hyperf-skeleton"
Installing hyperf/hyperf-skeleton (v3.1.1)
  - Downloading hyperf/hyperf-skeleton (v3.1.1)
  - Installing hyperf/hyperf-skeleton (v3.1.1): Extracting archive
Created project in //hyperf-skeleton
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
> Installer\Script::install
....

5.在win10的目标下查看composer下来的文件

如:我的是D:/workspace/skeleton

冷暖自知一抹茶ck

三、启动Hyperf项目

5b50ce9c9e68:/# cd hyperf-skeleton/
5b50ce9c9e68:/hyperf-skeleton# ls
Dockerfile          app                 composer.lock       docker-compose.yml  runtime
LICENSE             bin                 config              phpstan.neon        test
README.md           composer.json       deploy.test.yml     phpunit.xml         vendor

5b50ce9c9e68:/hyperf-skeleton# php bin/hyperf.php start
[DEBUG] [command] Commands registered by Hyperf\Command\Listener\RegisterCommandListener
[DEBUG] Event Hyperf\Framework\Event\BootApplication handled by Hyperf\Command\Listener\RegisterCommandListener listener.
[DEBUG] Event Hyperf\Framework\Event\BootApplication handled by Hyperf\Config\Listener\RegisterPropertyHandlerListener listener.
[DEBUG] Event Hyperf\Framework\Event\BootApplication handled by Hyperf\DbConnection\Listener\RegisterConnectionResolverListener listener.
[DEBUG] Event Hyperf\Framework\Event\BootApplication handled by Hyperf\ExceptionHandler\Listener\ExceptionHandlerListener listener.
[DEBUG] Event Hyperf\Framework\Event\BootApplication handled by Hyperf\ExceptionHandler\Listener\ErrorExceptionHandler listener.
[DEBUG] Event Hyperf\Framework\Event\BeforeMainServerStart handled by Hyperf\Process\Listener\BootProcessListener listener.
[DEBUG] Event Hyperf\Framework\Event\OnManagerStart handled by Hyperf\Server\Listener\InitProcessTitleListener listener.
[DEBUG] Event Hyperf\Framework\Event\OnStart handled by Hyperf\Server\Listener\InitProcessTitleListener listener.
[INFO] Worker#10 started.
[INFO] Worker#7 started.
[INFO] Worker#4 started.
[INFO] Worker#3 started.
...

冷暖自知一抹茶ck

四、修改本地代码测试

由于 Hyperf 是持久化的 CLI 框架,当您修改完您的代码后, 通过 CTRL + C 终止当前启动的进程实例,并重新执行 php bin/hyperf.php start 启动命令即可。

1.IndexController 下新建一个test方法

冷暖自知一抹茶ck

2.在config下的routes下添加

Router::addRoute(['GET', 'POST', 'HEAD'], '/test', 'App\Controller\IndexController@test');

3.重新执行 php bin/hyperf.php start 启动命令

PS C:\Windows\system32> docker exec -it hyperf /bin/bash
5b50ce9c9e68:/# cd hyperf-skeleton/
5b50ce9c9e68:/hyperf-skeleton# php bin/hyperf.php start

冷暖自知一抹茶ck


4.在浏览器输入http://127.0.0.1:9501/test

冷暖自知一抹茶ck

到这里一个简单的使用Hyperf过程就完成了,更详情的内容请查看https://hyperf.wiki/3.0/ 开发文档。

五、Hyperf 热加载与守护进程的方式运行

用 php bin/hyperf.php start 启动命令,使用过程中一不小心把终端给关闭,再重新去启动时就会显示以下问题:

冷暖自知一抹茶ck


问题原因:就由于上次已经启动过了,导致端口被占用了
解决办法:
1.先查看端口对应的进程

5b50ce9c9e68:/hyperf-skeleton# netstat -tulp|grep 9501
tcp        0      0 0.0.0.0:9501            0.0.0.0:*               LISTEN      466/skeleton.Master

2.使用kill 杀掉进程ID

5b50ce9c9e68:/hyperf-skeleton# kill -9 466

1、以守护进程的方式运行

在运行的时候可以在后边加一个**&**号,这样就会以守护进程的方式运行,这样就算不小心关闭终端也没事了。

2、使用 Watcher 热加载

1.到项目中安装 hyperf/watcher

5b50ce9c9e68:/hyperf-skeleton#  composer require hyperf/watcher --dev

2.生成配置文件 watcher.php

5b50ce9c9e68:/hyperf-skeleton# php bin/hyperf.php vendor:publish hyperf/watcher

冷暖自知一抹茶ck


3、启动热加载

5b50ce9c9e68:/hyperf-skeleton# php bin/hyperf.php server:watch

在你修改代码后间每到隔时间就会扫描文件,然后就会自动重载服务。

冷暖自知一抹茶ck

##获取容器地址

PS C:\Windows\system32> docker ps
CONTAINER ID   IMAGE                                   COMMAND     CREATED         STATUS         PORTS                    NAMES
5b50ce9c9e68   hyperf/hyperf:8.1-alpine-v3.18-swoole   "/bin/sh"   9 minutes ago   Up 9 minutes   0.0.0.0:9501->9501/tcp   hyperf
PS C:\Windows\system32> docker inspect --format='{{.Name}} - {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
/hyperf - 172.17.0.2
PS C:\Windows\system32>



附:

    1、更改镜像存储位置、替换国内源
https://blog.csdn.net/moluzhui/article/details/132287258
    2、win10环境下使用Docker-Toolbox 搭建 Hyperf框架过程
https://blog.csdn.net/Kai_Wai/article/details/132797910

冷暖自知一抹茶ck
请先登录后发表评论
  • 最新评论
  • 总共0条评论