【PHP】Hyperf:接入 Nacos
【PHP】Hyperf:接入 Nacos
- 一、安装 Java
- 二、安装 Nacos
- 1. 安装
- 2. 开机自启
- 2. 登录控制台
- 三、hyperf 接入 Nacos
- 1. 配置 Nacos
- 2. 配置 hyperf
一、安装 Java
-
在 Nacos 下载界面可以看到对 java 版本的要求,因此需要下载 Java17
-
手动安装,因为资源是 Github 上的,所以如果下载的慢,开梯子或者直接去 Github 上下完再复制到目录里去
# 创建安装目录 mkdir -p /usr/local/java cd /usr/local/java# 下载 OpenJDK 17(请确认最新版本链接) wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz# 解压 tar -zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz mv jdk-17.0.9+9 jdk17# 配置环境变量 echo 'export JAVA_HOME=/usr/local/java/jdk17' >> /etc/profile echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile# 使环境变量生效 source /etc/profile# 验证安装 java -version
-
安装成功
二、安装 Nacos
1. 安装
-
可以在这里下载 Github: Releases · alibaba/nacos
-
或者
# 创建安装目录 mkdir -p /usr/local/nacos cd /usr/local/nacos# 下载 Nacos 3.0.2(请确认最新下载链接,此处为示例) wget https://github.com/alibaba/nacos/nacos-server/releases/download/3.0.2/nacos-server-3.0.2.tar.gz# 解压 tar -zxvf nacos-server-3.0.2.tar.gz mv nacos-server-3.0.2/* . rm -rf nacos-server-3.0.2.tar.gz nacos-server-3.0.2# 建立软链接,方便升级 ln -s nacos nacos
2. 开机自启
-
创建服务
sudo vim /etc/systemd/system/nacos.service
-
文件内容
[Unit] Description=Nacos After=network.target[Service] Type=forking ExecStart=/usr/local/nacos/bin/startup.sh -m standalone ExecStop=/usr/local/nacos/bin/shutdown.sh User=root Group=root Restart=always[Install] WantedBy=multi-user.target
-
启动服务
sudo systemctl daemon-reexec sudo systemctl enable nacos sudo systemctl start nacos
2. 登录控制台
-
查看端口
cat /usr/local/nacos/conf/application.properties | grep port=
-
可以看到控制台端口是 8080,核心服务端口 8848,向外暴露两个端口
firewall-cmd --add-port=8848/tcp --permanent firewall-cmd --add-port=8080/tcp --permanent firewall-cmd --reload
核心服务地址:
http://ip:8848
(用于服务注册 / 配置管理的 API 调用)
控制台访问地址:http://ip:8080/nacos/
(Web 界面)
三、hyperf 接入 Nacos
1. 配置 Nacos
- 在控制台点击新建配置
- 随便配置一下,记住 命名空间、dataId、group,配置 hyperf 的时候要用
2. 配置 hyperf
-
首先要有两个扩展
composer require hyperf/config-center composer require hyperf/config-nacos
-
配置
config/autoload/nacos.php
use function Hyperf\Support\env;return [// nacos server url like https://nacos.hyperf.io, Priority is higher than host:port// 'url' => '',// The nacos host info'host' => env('NACOS_HOST', '127.0.0.1'),'port' => env('NACOS_PORT', 8848),// The nacos account info// 账号密码 (Nacos 3.x 必须有)'username' => env('NACOS_USERNAME', 'nacos'),'password' => env('NACOS_PASSWORD', 'nacos'),// http 客户端配置'guzzle' => ['config' => null] ];
-
配置
config/autoload/config_center.php
use Hyperf\ConfigCenter\Mode;use function Hyperf\Support\env;return ['enable' => (bool) env('CONFIG_CENTER_ENABLE', true),'driver' => env('CONFIG_CENTER_DRIVER', 'nacos'),'mode' => env('CONFIG_CENTER_MODE', Mode::PROCESS),'drivers' => ['nacos' => ['driver' => Hyperf\ConfigNacos\NacosDriver::class,'merge_mode' => Hyperf\ConfigNacos\Constants::CONFIG_MERGE_OVERWRITE,'interval' => 3,'default_key' => 'nacos_config','listener_config' => [// dataId, group, tenant, type, content'nacos_config' => ['tenant' => env('NACOS_NAMESPACE', ''), // corresponding with service.namespaceId'data_id' => env('NACOS_DATA_ID', 'hyperf-config'),'group' => env('NACOS_GROUP', 'DEFAULT_GROUP'),],// 'nacos_config.data' => [// 'data_id' => 'hyperf-service-config-yml',// 'group' => 'DEFAULT_GROUP',// 'type' => 'yml',// ],],],], ];
-
启动 hyperf,没有报错就是启动成功
php /home/root/hyperf/hyperf-skeleton/bin/hyperf.php start
-
验证一下