创建一个 Hypervel 项目
在创建第一个 Hypervel 项目之前,请确保你的本地机器已安装 Composer(用于依赖管理),并且已安装 Swoole PHP 扩展。通常可以通过 PECL 安装:
pecl install swoole
Mac 用户也可以通过 brew 安装 Swoole:
brew tap shivammathur/extensions
brew install shivammathur/extensions/swoole@8.3
使用 shivammathur/extensions 可以帮助你解决在 Apple M1 环境下安装 swoole 时常见的问题。请根据你所用的 PHP 版本替换公式结尾的版本号。
信息提示
你也可以使用 Box 作为你的运行环境。
小技巧
如果你打算使用全局协程助手函数(如 go、co 和 defer),建议在 php.ini
文件中将 swoole.use_shortname
设置为 Off,这样可以在协程中更好地捕获错误。否则当协程中的错误未被正确捕获时,会抛出 Uncaught RuntimeException
。
详情请参考 错误处理错误示范。
完成 PHP、Composer 和 Swoole 扩展的安装后,你可以使用 Composer 的 create-project
命令来创建一个新的 Hypervel 项目:
composer create-project hypervel/hypervel example-app
项目创建完成后,使用 serve
命令启动 Hypervel 的本地开发服务器:
cd example-app
php artisan serve
由于在运行后所有文件都会被加载到内存中,因此当你修改文件时需要重启服务器。在开发环境下,你可以使用热重载命令:
php artisan watch
当 HTTP 服务器启动后,你的应用可以通过浏览器访问:http://localhost:9501。接下来你就可以正式开始使用 Hypervel 进行开发了。
小技巧
你可以在 config/server.php
文件中自定义 host、端口及其他服务器配置项。
初始配置
Hypervel 的所有配置文件都保存在 config
目录下。每个配置项都有注释说明,你可以查看这些文件,了解所有可用选项。
你可能希望先查看 config/app.php
文件及其文档,其中包含如时区(timezone)、语言(locale)等配置项,可以根据你的应用需求进行修改。
基于环境的配置
由于 Hypervel 的许多配置值会根据运行环境(如本地开发或生产服务器)而变化,因此许多关键配置项通过应用根目录下的 .env
文件进行定义。
你的 .env
文件不应提交到版本控制系统中,因为每个开发者或服务器可能需要不同的环境配置。此外,如果有攻击者获取了源码仓库访问权限,敏感的凭据也将暴露,存在安全风险。
注意
关于 .env
文件及基于环境的配置的更多信息,请参阅完整的 配置文档。
数据库与数据迁移
当你创建了一个 Hypervel 应用后,通常你希望将数据存储到数据库中。默认情况下,应用的 .env
文件指定使用 SQLite 数据库。
在创建项目时,Laravel 会自动为你创建 database/database.sqlite
文件,并执行必要的迁移来创建数据库表。
如果你希望使用其他数据库驱动(如 MySQL),你可以修改 .env
文件中的数据库配置。例如,如果你想使用 MySQL,请修改以下变量:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_hyperf
DB_USERNAME=root
DB_PASSWORD=
如果你选择使用非 SQLite 数据库,需要先创建数据库,然后运行数据迁移命令:
php artisan migrate
使用 Docker 进行开发
如果你的系统不满足 Hypervel 的运行要求,或者你不熟悉系统环境配置,也可以使用 Docker 来开发 Hypervel 项目:
- 启动容器
下面这个示例中,宿主机的目录
/workspace/hypervel
会映射到容器中:
注意
如果你的 Docker 启动时启用了 selinux-enabled
选项,那么容器中访问宿主资源会受到限制,此时需要在启动容器时添加 --privileged -u root
参数。
docker run --name hypervel \
-v /workspace/hypervel:/data/project \
-p 9501:9501 -it \
--privileged -u root \
--entrypoint /bin/sh \
hyperf/hyperf:8.3-alpine-v3.19-swoole-v6
注意
如果 docker 启用了 selinux-enabled
,请在命令中添加 --privileged -u root
。
不兼容的扩展
由于 Hypervel 是基于 Swoole 的协程机制构建的,因此某些扩展在协程环境下不兼容。目前以下扩展(包括但不限于)不兼容:
- xhprof
- xdebug(适用于 PHP 8.1+ 和 Swoole ≥ 5.0.2)
- blackfire
- trace
- uopz