使用 xdebug 调试 php 代码
环境
- php5.6
- xdebug 扩展
- phpstorm 编辑器
- homestead 虚拟机(注意要用超管用户启动)
本文内容基于以上环境编写,其他环境下配置也基本大同小异,注意这篇文章的调试只在传统的 php
方式下,并不包括 swoole
这种环境。
安装 xdebug 扩展
安装方式可以参考 swoole
扩展的安装,只需要确保扩展安装好并启用即可
cli
1 | php -m | grep xdebug |
fpm
1 | phpinfo(); |
hyperf web 单机应用不停机更新
在 hyperf
应用中如果修改了代码,我们就必须要重启应用才能使代码生效,但是生产环境中停机是会对服务产生巨大影响的,如果服务频繁的改动需要频繁的停机更新,这肯定是不合理的。有没有什么办法可以在服务能够继续使用的情况下更新代码呢,答案肯定是有的。
项目代码版本管理和发布-2
在上一篇 项目代码版本管理和发布-1 文章中我们部署了
gitlab
,这篇我们在上篇的基础上部署jenkins
用于发布项目。
Jenkins
安装
安装 java
1 | sudo apt install openjdk-11-jdk |
1 | sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \ |
项目代码版本管理和发布-1
- Gitlab 管理代码仓库
- Jenkins 管理项目发布
准备一台虚拟机,我使用的是 ubuntu20
, 8g内存,4核cpu
假设我们的开发团队有三个人,一个是 leader
,另外两个是普通 developer
,他们分别负责 projectA
, projectB
,在这个背景下搭建一套代码管理和发布方案
ELK 扩展篇
为什么需要用 filebeat
, kafka
扩展 ELK
,看看 chatgpt
的回答:
- 负载均衡和缓冲: Filebeat负责将日志数据发送到Kafka中间件,而Kafka充当缓冲层,能够平滑处理突发的数据流量和高峰时段的负载。这种负载均衡和缓冲机制可以有效地减少直接将日志数据发送到Elasticsearch时可能出现的压力和风险。
- 数据可靠性和持久性: Kafka提供了高度可靠的消息传递机制,能够保证数据不会丢失,并且支持数据持久化存储。这意味着即使Elasticsearch出现故障或需要维护时,数据仍然安全存储在Kafka中,不会丢失
- 解耦: 将Filebeat和Kafka引入ELK系统中,可以实现解耦,即日志收集与日志处理之间的解耦。这意味着系统的不同部分可以独立扩展和调整,而不会影响整个系统的稳定性
- 灵活性: 使用Kafka作为中间件,可以实现灵活的数据流动和处理。你可以根据需求调整Filebeat和Kafka的配置,以满足不同的性能和可用性要求
这里基于上一篇文章 ELK 搭建 的基础上,我们加入 kafka
和 filebeat
ELK 搭建
ELK
是指由 elasticsearch
, logstash
, kibana
组成的日志管理解决方案
elasticsearch
是一个分布式的实时搜索和分析引擎,能够快速地存储、搜索和分析大量数据losstash
能够从多种来源收集日志数据,对数据进行处理和过滤,然后将数据发送到Elasticsearch等目标存储中kibana
提供了一个直观的Web界面,可以用来创建实时仪表板、图表和可视化,帮助用户更好地理解和分析日志数据
Homestead 添加 Swoole 扩展
源码安装方式适用于 PHP
所有的扩展
- php~7.4
- swoole~4.8.12
1 | # 切换php为7.4版本 |
swoole.ini
加入以下内容
1 | extension=swoole.so |
执行命令
1 | cd /etc/php/7.4/cli/conf.d |
PHP 开发环境-Homestead
Homestead
是一个可以在本地快速部署一个 Laravel
项目的虚拟机盒子,它基于 ubuntu
的基础上,内置了 php-fpm
, nginx
, mysql
等等的服务,事实上可以有很多个本地php
的开发部署方案,比如 phpstudy
, docker
等,但是用虚拟机部署,更接近生产环境,可以使我们平时开发时对虚拟机的操作,如果有必要可以以同样的方式同步到生产环境中,大部分 Linux
的操作大同小异。
虽然 Homestead
对外的官方搭档是 Laravel
项目,但是其实项目中内置了很多其他 php
框架对应的 nginx
配置,只需要修改一点配置文件,就可以使用 proxy
模式,或者生成适配 thinkphp
, yii
等框架的配置,虚拟机中还部署了多个版本的 php
,简单的指令就可以让你轻松切换 php
版本,所以该虚拟机盒子作为开发环境还是挺高效方便。
镜像源修改
NPM 镜像源
1 | # 修改为淘宝镜像源 |
Composer 镜像源
1 | # 全局配置 |
Yum 镜像源
1 | # 备份 |