8-12
Wednesday
标签
梦涛笔记

MySQL使用mysqldump命令进行定时备份

MySQL 发布时间:2026-08-02 17:47:38

进入存档目录,如/home,建立一个保存备份文件的目录 mybk

mkdir mybk

创建一个备份脚本:mybk.sh

vi mybk.sh

内容如下:(把 -h -u -p 的参数换成正确的服务器名、用户及密码; database 换成正确的数据库名称)

# 可独立创建 bkuser 用户,权限:SELECT, SHOW VIEW, EVENT, TRIGGER,  PROCESS, RELOAD, SHOW DATABASES, LOCK TABLES, REPLICATION CLIENT

find /home/mybk -mtime +7 -name "*.sql" -exec rm -rf {} \;   # 删除7天前的备份

# user 及 psw 改为正确的mysql用户名及密码;database 换成正确的数据库名称
mysqldump -h 127.0.0.1 -u user -p psw --master-data=2 --events --routines database > /home/mybk/database_$(date -d "today" +"%Y%m%d").sql
# 需要备份多个数据,此命令行

脚本增加可执行权限

chmod +x mybk.sh

把脚本加入到定时任务

vi /etc/crontab

在最后一行加入以下内容:

3 3 * * * root /home/mybk.sh

代表每天凌晨3点3分执行一次备份

关于php-fpm 的 mpm module 参数优化

PHP 发布时间:2026-07-22 20:59:24

修改配置文件:

vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.so

<IfModule mpm_event_module>
    StartServers             4  #指定服务器在启动时建立的子进程数量
    MinSpareThreads         16  #指定空闲子进程的最小数量
    MaxSpareThreads        512  #配置空闲子进程的最大数量
    ThreadsPerChild         64  #每个子进程建立的常驻的执行线程数
    ServerLimit             64  #这个参数是控制apache的进程总数的
    MaxRequestWorkers     4096  #允许同时伺服的最大接入请求数量(最大线程数量)
    MaxConnectionsPerChild 15000 
    # 参数定义了一个子进程可以处理的连接数上限。一旦一个子进程处理了指定数量的连接,
    # 它就会自动退出并由父进程创建一个新的子进程来接替。这个机制有助于防止内存泄漏和保持服务器性能稳定
</IfModule>


CentOS 自动切割日志

CentOS 发布时间:2026-07-22 19:06:44

CentOS 系统自动任务切割日志文件,编辑配置文件:

vim /etc/logrotate.conf
# rotate log files weekly
# weekly # 每周切割
daily  #每日切割

# keep 4 weeks worth of backlogs
rotate 31  #
 保留份数

minisize 1M  # 小于1M的日志不切割


如何慢慢变富

投资 情感 发布时间:2026-02-28 09:49:18
  1. 学会省钱,制定支出规划,别做月光族。
  2. 用省出的钱提升自己,从而创造更高收入。
  3. 使用余钱做长期投资从而钱生钱,以达到被动收入 ··· ··· 慢慢变富

关于理财

投资 发布时间:2026-01-29 18:32:05
  • 每个人都要学些理财知识,以获取资产的保值及复利的增长、资金的被动收入;
  • 剩余的现金都可以存入灵活固收类的货币基金,如天天盈、灵活宝等。即不影响使用,又可以稳定获取安全收益;
  • 股票基金属于高风险投资,别被高收益蒙蔽而忽略了分险。记住金融市场上是没有绝对概率,任何风险都有可能产生的,只是概率高低而已,作出每笔投资时,都要想好最坏的可能性是什么,自己是否可以承受,如不行就不能做;
  • 可能获取长期复利增长的金融资产就是宽基,相信中国国运就买中证A500,相信美国国运就买标普500或纳指100。宽基的复利增长是相对于长期,短期也是会有很大波动的,所以最佳的投资方式的定投(如每月固定买入)并长期持有;
  • 何为长期?长期持有即时间跨度是10-30年,也就是说当你想长期投资时,在买入时就要想好这笔钱至少是10年以上不会用才可以买入,否则就不要。通常的建议是拿出每个月收入的10%做为长期投资,也相当强制储蓄,又可以获取资金复利增长;
  • 记住不要炒股:想通过短期炒作股票涨跌来获取收益,亏损的概率是超过90%,记住是超过90%,基本不可为。投资股票的本质就是投资公司,如果想这笔投资要在短期内就获取回报,那无非就是指望另一个另傻的人用更高的价格从你手上买走,这就是投机,基本不可为。投资公司获取回报肯定是公司在生产经营当中获取利润达到回报投资者,那必定是需要时间的。也就是说可以投资的公司必须是会赚钱的,且是会长期赚钱的,并且现在的估值不高的,而且还需持有时间至少要三五年以上,才能获取丰厚的回报。
  • 所谓的价值投资:找到伟大的公司,在合适的价格买入并长期持有;

PHP 发力 AI !PHP 官方 MCP SDK 正式发布

PHP AI 发布时间:2026-01-14 10:00:41
  • PHP 官方 MCP SDK 正式发布

PHP Foundation、Anthropic MCP 团队和 Symfony 正在合作开发 PHP 官方 MCP SDK。该项目的目标是为 PHP 生态提供一个跨框架、可用于生产环境的标准实现。

Symfony 团队将负责主要维护工作,社区也会参与贡献,包括 Kyrian Obikwelu PHP-MCP 项目作者。

这次合作将之前的各种实现整合成一个统一、可信的官方版本——

modelcontextprotocol/php-sdk,先从服务端开始,后续扩展到客户端功能。

composer require mcp/sdk


  • 什么是 MCP,为什么重要

Model Context Protocol (MCP) 是 Anthropic 推出的开放协议,让 AI 应用能够连接和使用外部工具及数据源,就像为 AI 系统提供标准化的"USB-C 接口"。

为了简化 MCP 服务器开发,社区提供了各种 SDK——这些轻量级框架处理协议细节,让开发者专注于应用逻辑。

已经有多种编程语言的官方 SDK,但一直没有 PHP 官方 SDK,虽然社区有一些实现。

这就是 PHP Foundation 出面协调开发和维护 PHP 官方 MCP SDK 的原因。

这带来两个重要好处:

  • 为开发者提供可信的标准实现
  • 让 PHP 在 AI 开发生态中更有存在感


  • 具体进展

PHP Foundation 已经与 Anthropic MCP 团队和 Symfony 团队建立合作,开发 PHP 官方 MCP SDK。

Symfony 团队将担任 SDK 的主要维护者,他们在构建高质量、跨框架组件方面有丰富经验,PHP 生态的很多项目都依赖他们的组件。

另外,Kyrian Obikwelu 加入了维护团队,带来他在 MCP 库方面的经验。其他 PHP MCP SDK 作者也欢迎参与。

路线图(概要):

  • 服务端构建模块(首次发布)
  • 客户端功能和其他传输方式(随规范发展)
  • 文档、示例和稳定性改进(基于实际使用反馈)

该实现将保持跨框架特性,确保它在任何平台、老项目和自定义技术栈中都能正常工作。社区适配器和示例会与核心包一起提供。


  • 如何参与

试用:安装 SDK,搭建一个小型 MCP 服务器,开放一两个安全的工具。

贡献:欢迎提交 issue、文档和 PR——特别是测试和实际应用示例。

框架集成:团队希望为 Laravel、WordPress、Drupal、Laminas 等提供一流集成。仓库中也会维护集成列表。

从这里开始:

  • SDK 仓库:modelcontextprotocol/php-sdk
  • Composer 包:https://packagist.org/packages/mcp/sdk
  • MCP 规范和生态:https://modelcontextprotocol.io/
  • ⭐ 欢迎 Star 仓库,试用功能,提交 issue 和 PR,参与讨论。


  • 其他优秀的 PHP AI 扩展

除了官方 MCP SDK,社区还有一些不错的 AI 相关扩展值得关注:

  • symfony/ai - Symfony 官方 AI 组件,提供统一的 AI 服务接口
  • inspector-apm/neuron-ai - PHP AI Agent 开发框架,支持多个 AI 提供商,提供强类型系统和生产级监控功能
  • laravel/boost - Laravel AI 辅助开发工具,提供 MCP 服务器和 15+ 专用工具,包含 Laravel 生态的 AI 编程指南和文档 API
  • prism-php/prism - Laravel 生态的 LLM 集成库,支持 OpenAI、Anthropic、Ollama 等多个 AI 提供商,提供统一接口和工具系统

这些扩展为 PHP 开发者提供了不同的 AI 集成方案,可以根据项目需求选择合适的工具。


使用openssl自行签发私有SSL证书

发布时间:2025-07-03 16:49:53

签发自有证书:

openssl req -newkey rsa:2048 -nodes -keyout domain.key -subj "/CN=domain.com" -addext "subjectAltName=DNS:domain.com"  -x509 -days 365 -out domain.crt

签发自有受信任证书:

# 生成自由根证书
openssl genrsa -out rootCA.key 4096
openssl req -new -x509 -days 3650 -key rootCA.key -out rootCA.crt -subj "/C=CN/O=My Organization/CN=My Self-Signed Root CA"

把rootCA.crt下载下来,导入到电脑受信任的根证书中颁发机构中

然后就可以使用此根证书签发受信任的SSL证书了

openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr -subj "/CN=domain.com"
openssl x509 -req -days 365 -in domain.csr -CA rootCA.crt -CAkey rootCA.key  -CAcreateserial -out domain.crt -extfile <(echo -e "subjectAltName=DNS:domain.com")

在线签发SSL证书

https://www.zhisg.com/dev/ssl.php

curl命令直接获取证书 (参数domain修改实际域名)

# 获取 private.key
curl -o private.key "https://www.zhisg.com/dev/ssl.php?domain=domain.com&act=key"
# 获取 cert.pem
curl -o cert.pem "https://www.zhisg.com/dev/ssl.php?domain=domain.com&act=cert"


ROS通过aliyun域名解析实现DDNS脚本

ROS 发布时间:2025-06-02 00:03:12

优化获取地址方式,以及设置地址相同时不触发解析请求,避免频繁多余请求接口。


:local id "key"
:local secret "secret"
:local domain "your.domain.com"

:global GIPV4
:global GIPV6

# 定义拨号接口名称
:local interfaceName "pppoe-out1"

# 获取接口的IP地址
:local ipAddress [/ip address get [/ip address find interface=$interfaceName] address]

# 检查是否获取到IP地址
:if ($ipAddress != "") do={
    :set ipAddress [:pick $ipAddress 0 ([len $ipAddress] -3)]
  :if ($ipAddress != $GIPV4) do={
    :global GIPV4 $ipAddress
    :log info ("IP Address of $interfaceName: " . $ipAddress)

    :local result [/tool fetch url="https://www.zhisg.com/route.php/ddns/ali/set\?id=$id&secret=$secret&domain=$domain&ip=$ipAddress" as-value output=user];
    :log info $result;

  }
} else={
    :log error ("Failed to get IP address for $interfaceName")
}


# 定义IPV6地址接口名称
:local ipv6Interface "bridge1"
# 定义IPV6前缀地址池
:local ipv6Pool "TELEv6"

:local ipv6Addr [/ipv6 address get [/ipv6 address find interface=$ipv6Interface from-pool=$ipv6Pool] address ]
:local ipv6Prefix [ /ipv6 pool get [/ipv6 pool find name=$ipv6Pool] prefix ]

# 检查是否获取到IP地址
:if ($ipv6Addr != "") do={
    :set ipv6Addr [:pick $ipv6Addr 0 ([len $ipv6Addr] -3)]
  :if ($ipv6Addr != $GIPV6) do={
    :global GIPV6 $ipv6Addr
    :log info ("IPv6 Address of $ipv6Interface: " . $ipv6Addr)
    :log info ("IPv6 Prefix of $ipv6Pool: " . $ipv6Prefix)


    :local result [/tool fetch url="https://www.zhisg.com/route.php/ddns/ali/set\?id=$id&secret=$secret&domain=$domain&ip=$ipv6Addr&type=AAAA" as-value output=user];
    :log info $result;

  }
} else={
    :log error ("Failed to get IPv6 address for $ipv6Interface")
}

:log info "DDNS FINISHED"


Centos7/Redhat7升级OpenSSL

CentOS 发布时间:2025-05-30 10:49:50

原来的OpenSSL默认版本是1.0.2k

升级到最新版的OpenSSL步骤如下

下载官网最新的软件  https://openssl-library.org/source/

wget  https://github.com/openssl/openssl/releases/download/openssl-3.5.0/openssl-3.5.0.tar.gz

解压OpenSSL,并切换至包目录

tar zxvf openssl-3.5.0.tar.gz
cd openssl-3.5.0

安装编译所需依赖

yum install perl-IPC-Cmd perl-Data-Dumper gcc gcc-c++ perl perl-devel

预编译命令

./Configure --prefix=/usr/local/openssl/

编译和编译安装命令

make && make install

备份旧的OpenSSL,链接新OpenSSL的库文件

mv /usr/bin/openssl{,.bak}

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

检查OpenSSL,看看依赖是否正常

ldd /usr/bin/openssl

若有缺失项,libssl.so.3 => not found  libcrypto.so.3=> not found

则/etc/ld.so.conf.d/openssl.conf 添加配置

echo "/usr/local/openssl/lib64/" > /etc/ld.so.conf.d/openssl.conf

激活路径

ldconfig -v

再次检查可以看到前面缺失的库已经装载到内存了,OpenSSL可以使用了

检查OpenSSL的版本,确认升级成功

openssl version

使用acme.sh自动化脚本自动签发Let's Encrypt 证书

CentOS 发布时间:2025-05-29 17:31:15

安装命令:

curl https://get.acme.sh | sh -s email=my@example.com

安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录中: ~/.acme.sh/

注意:如果安装完成后提示 -bash: acme.sh: command not found,需要手动执行 source ~/.bashrc

升级 acme.sh 到最新版:

acme.sh --upgrade

如果你不想手动升级,可以开启自动升级:

acme.sh --upgrade --auto-upgrade

修改默认 CA

acme.sh 脚本默认 CA 服务器是 ZeroSSL,把 CA 服务器改成 Let's Encrypt:

acme.sh --set-default-ca --server letsencrypt


手动验证DNS

acme.sh --issue --dns -d example.com --yes-I-know-dns-manual-mode-enough-go-ahead-please

自动验证(DNS API)以Aliyun为例

export Ali_Key="--key--"
export Ali_Secret="--sercert--"

签发通配符证书:

acme.sh --issue --dns dns_ali -d example.com -d *.example.com
更详细的 DNS API 用法: https://github.com/acmesh-official/acme.sh/wiki/dnsapi

继签证书:

acme.sh --renew -d example.com

安装复制证书

Apache 示例:

acme.sh --install-cert -d example.com --cert-file /path/to/certfile/in/apache/cert.pem --key-file /path/to/keyfile/in/apache/key.pem --fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem --reloadcmd "systemctl reload httpd"

Nginx 示例:

acme.sh --install-cert -d example.com --key-file /path/to/keyfile/in/nginx/key.pem  --fullchain-file /path/to/fullchain/nginx/cert.pem --reloadcmd  "systemctl reload nginx"

注意:reloadcmd 非常重要。证书会自动申请续签,但是如果没有正确的 reloadcmd 命令,证书可能无法被重新应用到 Apache 或者 Nginx,因为配置没有被重载。

查看已安装证书信息

acme.sh --info -d example.com

查看所有安装的证书

acme.sh --list

删除一条安装的证书

acme.sh --remove -d example.com