Hyperf 初体验
前言
swoole框架这些年挺火的,这不,搞了个外包是Hyperf框架的,之前只接触过easyswoole,还没撸过Hyperf。感谢外包,让我学习了一波,哈哈哈。
安装
环境
- ubuntu
- php7.2
- swoole4.X
composer 安装
composer create-project hyperf/hyperf-skeleton
这些是什么,官网也没说,那就都默认吧,但是安装时出现如下错误:proc_open(): fork failed - Cannot allocate memory
解决方法:
提示“提示内存不足”,我们可以通过创建swap分区解决这个问题。
查看内存空间
free -m
操作
执行如下三条命名:
dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
mkswap /var/swap.1
swapon /var/swap.1
完成后在运行composer安装框架
运行
准备就绪,可以开始跑了,在项目根目录下运行如下命令
sudo php bin/hyperf.php start
在运行过程中,如果出现如下错误:
failed to listen server port[0.0.0.0:9501], Error: Address already in use[98]
框架默认启动9501端口,这是端口被占用的结果。
第一种解决方案就是修改运行端口,修改config/server.php
文件中的如下截图圈出部分。
第二种就是杀死端口,重新启动,步骤如下:
找到PID
sudo lsof -i:9501
杀掉进程
sudo kill -9 30387
查看端口
sudo netstat -anp | grep 9501
已经不在了,启动
sudo php bin/hyperf.php start
supervisor管理
supervisor在另一篇文章Supervisor安装及使用有介绍过,具体操作请移步。
安装
sudo apt-get install supervisor
配置
查看配置所在位置
sudo whereis supervisor
进入 /etc/supervisor
目录,创建一个配置文件
sudo vim ./conf.d/hyperf.conf
内容如下(xxx部分改成项目根目录):
# 新建一个应用并设置一个名称,这里设置为 hyperf
[program:hyperf]
# 设置命令在指定的目录内执行
directory=/xxx
# 这里为您要管理的项目的启动命令
command=php bin/hyperf.php start
# 以哪个用户来运行该进程
user=root
# supervisor 启动时自动该应用
autostart=true
# 进程退出后自动重启进程
autorestart=true
# 进程持续运行多久才认为是启动成功
startsecs=1
# 重试次数
startretries=3
# stderr 日志输出位置,标准错误日志
stderr_logfile=/xxx/runtime/stderr.log
# stdout 日志输出位置,标准输出日志
stdout_logfile=/xxx/runtime/stdout.log
启动
sudo supervisord -c /etc/supervisor/supervisord.conf
如果出现如下错误:
这是python版本引起的,编辑/usr/bin/supervisord和/usr/bin/supervisorctl将#!/usr/bin/python修改为#!/usr/bin/python2即可。
查看是否已启动
ps -ef|grep supervisord
使用 supervisorctl 管理 hyperf
# 启动 hyperf 应用
supervisorctl start hyperf
# 重启 hyperf 应用
supervisorctl restart hyperf
# 停止 hyperf 应用
supervisorctl stop hyperf
# 查看所有被管理项目运行状态
supervisorctl status
# 重新加载配置文件
supervisorctl update
# 重新启动所有程序
supervisorctl reload
测试
启用
sudo supervisorctl start hyperf
关闭
sudo supervisorctl stop hyperf