分类: 编程

  • 在WordPress中使用Redis,对应的一些Redis配置

    # 内存限制
    maxmemory 128mb
    
    # 客户端连接数限制
    maxclients 5000
    
    # 日志级别
    loglevel warning
    
    # 关闭AOF
    # 全用来做缓存,没必要启用AOF
    # 启用RDB就行了
    appendonly no
    
    # 内存策略
    # volatile-lru: 尝试淘汰设置了过期时间的键中最近最少使用的(LRU)键。
    # allkeys-lru: 淘汰所有键中最久未使用的键,而不论它们是否设置了过期时间。
    # volatile-ttl: 尝试淘汰设置了过期时间且剩余生存时间(TTL)最短的键。
    # 还有其他策略如volatile-random、allkeys-random等。
    maxmemory-policy allkeys-lru
  • 在WordPress中实施Cloudflare Turnstile

    Cloudflare Turnstile 是一种现代的 CAPTCHA 替代方案,它不仅能够有效阻止机器人行为,还能提供更好的用户体验。

    (更多…)
  • WordPress中发送邮件相关的调整

    通过SMTP服务器来发送邮件,同时将发送任务放入Action Scheduler队列。

    (更多…)
  • WordPress生成缩略图优化

    WordPress默认情况下会给上传的每一张图片都生成几个不同大小的缩略图,一般情况下问题不大,但是如果存在短时间上传大量图片的场景,会导致服务器整体卡顿。

    (更多…)
  • 创建strapi插件

    需要开发一个插件来实现一些自定义功能,官方文档写的实在是难以理解了。

    (更多…)
  • 使用SSH转发服务器端口到本地

    注意远程地址、远程端口号、本地地址、本地端口号需要按照实际情况修改。

    (更多…)
  • 为WordPress站点添加关键词和描述标签

    关键词和描述标签作为SEO的基础配置,在wordpress中没有默认添加,这里记录一下在Wordpress中自动添加关键词和描述标签的方法。

    (更多…)
  • Google Chrome扩展开发

    Chrome扩展开发者控制台

    1. 需要支付一次性的5美元
    2. 需要使用非国内卡

    参考:

    1. Chrome开发者网站
  • Go语言获取指定年份生肖

    根据给定年份,返回生肖字符串,公元前使用负值即可。(比如2022年,调用使用GetShengXiao(2022),公元前21年,调用使用GetShengXiao(-21))。

    (更多…)
  • Electron中数据持久化的选择

    Electron是一个基于Chromium的桌面应用程序框架,它可以让开发人员在不需要熟练掌握Web开发技术的情况下,快速地开发出高质量的桌面应用程序。在Electron中,开发人员可以使用各种各样的数据存储方式,包括文件系统、数据库等。其中,数据库是一种非常常见的数据存储方式,它可以方便地存储和管理各种数据,包括文本、图片、音频、视频等。

    (更多…)
  • Shell遍历文件夹下所有文件,并将文件内容写入一个文件中

    软件著作权要求提供代码文档,这里提供使用Shell遍历文件夹下所有文件,并将文件内容写入一个文件中的方法。

    (更多…)
  • PostgreSQL常用SQL语句

    PostgreSQL与MySQL语法有一些细微差异,记录一下PostgreSQL常用的SQL语句。

    (更多…)
  • MySQL8 GTID双主配置

    记录一下MySQL8中配置GTID双主的方式。

    (更多…)
  • MySQL常用SQL语句

    记录一些常用的MySQL语句,方便查找翻阅。

    (更多…)
  • 使用微信小程序来实现扫码登录网站

    微信小程序本身提供了openid等信息的无感知获取,基于此来实现微信扫码登录,主要包含以下几个步骤:

    (更多…)
  • Linux有线未托管问题

    今天发现在用的一个Linux开发机一直不能自动连接有线网络,显示“有线未托管”,查找测试了很多文章的解决方案都无法使用,可能更新后有了一些变化或者各自情况不同,这里记录一下个人生效的处理方式。

    sudo vim /etc/netplan/00-installer-config.yaml
    
    #文件中添加
    renderer: NetworkManager
    
    sudo netplan generate
    sudo netplan apply
    sudo reboot
  • Linux服务器的安全相关配置

    记录一下Linux服务器一般常用的安全相关配置,避免被简单的黑掉,更复杂的配置暂不考虑深入研究了。

    1. 添加用户、用户组

    # 添加用户组
    groupadd users
    # 添加用户
    useradd test
    # 将用户test添加到users组中
    usermod -g users test

    2. 启用密钥登陆

    # 1. 开启密钥登陆配置
    vim /etc/ssh/sshd_config
    
    # 将一下两个配置项打开
    RSAAuthentication yes
    PubkeyAuthentication yes
    
    # 2. 配置密钥
    # 生成密钥
    ssh-keygen
    # 复制公钥,放进服务器/home/xxx/.ssh/authorized_keys文件中
    vim /home/xxx/.ssh/authorized_keys
    
    # 3. 使用公钥测试连接
    ssh test@1.1.1.1
    
    # 4. 关闭密码登陆功能
    vim /etc/ssh/sshd_config
    
    # 禁止使用密码登陆
    PasswordAuthentication no
    # 禁止root账号登陆
    PermitRootLogin no
    # 指定SSH协议版本
    Protocol 2
    # 最大尝试次数
    MaxAuthTries 3
    
    # 重启ssh服务
    systemctl restart sshd
    
    # 5. 配置仅允许指定组使用su
    vi /etc/pam.d/su
    
    # 添加行
    auth required pam_wheel.so group=xxx
    
    # 6. 启用防火墙
    # Debian防火墙默认允许所有INPUT和OUTPUT,
    # 建议直接关闭所有流入,然后根据需要配置开放的端口,比如80,443,22等
    # 除了80与443,建议其他程序都更换默认端口,每增加一个策略就会增加部分安全性
    # !!!!禁止所有流量流入,注意放开SSH,否则就进不去了!!!!
    systemctl start nftables
    systemctl enable nftables

  • 在WordPress中给没有封面图的文章增加默认缩略图

    
    /**
     * 增加默认的文章特色图
     */
    add_filter( 'post_thumbnail_html', 'my_post_thumbnail_html' );
    function my_post_thumbnail_html( $html ) {
        if ( empty( $html ) ) {
            $default_images = [
                get_theme_root_uri() . '/twentytwentythree/assets/images/default-featured-image-1.jpg',
                get_theme_root_uri() . '/twentytwentythree/assets/images/default-featured-image-2.jpg',
                get_theme_root_uri() . '/twentytwentythree/assets/images/default-featured-image-3.jpg'
            ];
            $index = mt_rand(0, count($default_images) - 1);
            $html = "<img src="{$default_images[$index]}"/>";
        }
        return $html;
    }

  • Linux服务器Swap配置

    简单记录Linux中Swap启用与关闭的配置方式。

    (更多…)
  • PHP内置服务器与Serverless

    PHP从5.4版本开始就提供了一个内置的WEB服务器,可以通过一个简单的命令`php -S`启动一个WEB服务器,极大简化了开发环境的搭建。

    到目前为止,官网文档对于内置服务器的使用依然建议用于开发环境,不建议用于生产环境,原因倒是很容易理解,主要有两个方面:

    1. 支持的MIME类型很少,5.4版本放出时只支持.htm和.svg(从5.5版本完善了大部分常见的MIME类型支持)

    2. 仅实现了基本功能,基本没有任何优化,是一个单线程进程(不过从7.4版本开始,内置服务器支持多进程的运行方式)

    从传统开发角度看,这样性能和功能的服务器确实很难应用于生产环境,但是伴随着Serverless的发展,感觉内置服务器的限制突然不是那么重要了。

    使用Serverless服务,不管是AWS Lambda,Google Function,还是国内阿里云的函数计算、腾讯云的云函数,我们关注的点不再聚焦于单机性能释放,而是变成了以下四个方面,我们要做的本质上变成了降低单请求的资源占用和执行时间

    1. 调用次数

    2. CPU时间

    3. 内存占用

    4. 执行时间

    5. 带宽

    我们可以逐个对比以下,

    1. 调用次数显然很难因为WEB服务器的变化有什么变化

    2. CPU时间上,内置服务器作为一个单进程应用,同样的逻辑在函数计算这样的环境下,较少了Nginx与FPM交互的网络开销、Nginx的运行开销,理论上内置服务器应该表现更好

    3. 内存占用方面,内置服务器不再需要运行Nginx,同样逻辑,应该也比传统部署方式占用更少一些

    4. 执行时间,Nginx+FPM需要启动两个进程,需要两个进程间的通信,很难与直接启动PHP进程更快

    5. 带宽基本不用对比,应该不会有什么变化,gzip完全可以在CDN层来实现

    从Serverless的角度看,内置服务器并不算是一个很差的选择,对比传统的运行方式可能更加合适一些,就是不太清楚不建议生产环境使用是否有除性能外的其他原因,回头去翻一翻PHP的issue。

    参考文章

    1. PHP-Built-in web server(https://www.php.net/manual/en/features.commandline.webserver.php