WordPress插件:哀悼日首页灰屏 [附件] Justin在前面的文章问我 WordPress 怎样实现首页灰屏,而不是全站灰屏。因此写了这个插件,后台上传安装即可。安装包在文末。 主要用到了两个方法: is_home() 判断是一般首页 is_front_page() 判断是用户将单页定义为首页的情况 演示地址:https://wordpress.dujun.eu.org 2022-12-02
开源实例之本系列镜像开源 前言 前文说到,本系列实例全部改为容器部署。既然本身就是关于开源,那么索性将所有镜像也开源出来,供有需要的朋友参考。主要用到了 Dockfile 构建,以及 docker-compose 编排。 项目地址 https://github.com/dujunio/open-source-examples 目录说明 00000_BASE 目录为基础镜像,其他目录为相应的项目镜像。 构建说明 以构建 WordPress 项目为例,进入目录 10111_WordPress。修改 data/root/start/mysql_init.sql,将 “dujun.space” 相关的域名替换为你自己的域名。然后执行构建和启动。 构建镜像: docker-compose -f build.yml build 启动容器(组): docker-compose up -d 后记 体验更多开源实例 2022-11-30
开源实例之多项目部署方案 前言 目前部署的开源实例都是 LNMP 架构,在没有并发的情况下,不会随着项目数量增加而导致系统负载显著提高。但想要部署编译型(常驻内存)实例,几个项目就不够用了。 如果这个问题不解决,本系列大概就要降级为 “PHP 和 JS 开源实例系列”,有点违背初衷。所以我将所有实例重构成了容器实现,在上个周末完成了架构方案。 部署方案 关键思路就是容器部署项目实例,并且能够定期销毁、自动重建。主要用到了 Docker、PHP webman 和 Nginx。 Docker 使用 Docker 做容器化部署。通过 docker-compose 编排,一个项目整合成一组容器。比如 WordPress 实例,包含了 LNMP 容器组和自身的代码容器。这样做的好处是方便隔离和回收,同时一整个项目只需要暴露一个 WEB 端口。 关于 Docker 配置细节会单独写一篇文章介绍:开源实例之Docker。 web... 2022-11-29
开源实例之phpMyAdmin 前言 phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. 以上官网的介绍很到位了。phpMyAdmin 是基于 PHP 开发的,以 Web 方式管理 MySQL 的工具。它为MySQL和MariaDB数据库提供了丰富的操作接口。 实例地址 https://phpmyadmin.dujun.eu.org 实例配置 配置 描述 系统 Debian 服务端 PHP 8.1 数据库 MariaDB 10.5 服务器 Nginx 程序 phpMyAdmin 5.2.0 实例部署 phpMyAdm... 2022-11-26
开源实例之Typecho 前言 Typecho 是由 type 和 echo 两个词合成的,来自于开发团队的头脑风暴。 Typecho 是一个简单快速的博客平台,源自开发团队在精神层面上的洁癖和狂热。项目本身非常轻量,很适合有开发基础的用户进行 DIY。 实例地址 https://typecho.dujun.eu.org 实例配置 配置 描述 系统 Debian 服务端 PHP 8.1 数据库 MariaDB 10.5 服务器 Nginx 程序 Typecho 1.2.0 实例部署 Typecho 的部署非常简单。 权限要求 具有系统读写权限 已安装 PHP 已安装数据库,如 MySQL 已安装 Nginx 域名解析 以 Nginx 为例,配置 url 重写: if (!-e $request_filename) { rewrite ^/(.*) /index.php/$1 last; } 建数据库 创建一个数... 2022-11-21
开源实例之WordPress 前言 WordPress 是最知名的开源建站系统,没有之一。主机商基本都将 WordPress 一键部署作为标配提供。2022 年最新数据,WordPress 占据了全球 CMS 市场 64.2% 的份额,所以它早已不是最初的博客工具。 实例地址 https://wordpress.dujun.eu.org 实例配置 配置 描述 系统 Debian 服务端 PHP 8.1 数据库 MariaDB 10.5 服务器 Nginx 程序 WordPress 6.1.1 实例部署 WordPress 的部署非常简单。 权限要求 具有系统读写权限 已安装 PHP 已安装数据库,如 MySQL 已安装 Nginx 域名解析 以 Nginx 为例,配置 url 重写: if (!-e $request_filename) { rewrite ^/(.*) /index.php/$1 last; }... 2022-11-20
开源实例系列 前言 作为一名技术,自然对开源世界心向往之。常有朋友问我如何搭建博客,WordPress 怎么样。我想最好就是生成一个实例,让他们亲身体验前后台的使用,客观了解是否适合自己。推而广之,我希望将各种知名的开源项目部署在相同服务器上展示。一方面可以宣传开源,另一方面让大家在同等条件下直观地对比各种系统。 本篇为开源实例系列文章的导航页。 个人实例 动态博客 WordPress 开源实例之WordPress Typecho 开源实例之Typecho emlog 开源实例之emlog Z-Blog 开源实例之Z-Blog Halo 开源实例之Halo Drupal 开源实例之Drupal JPress 开源实例之JPress Tale 开源实例之Tale Ghost 开源实例之Ghost Mblog 开源实例之Mblog Serendipity 开源实例之Serendipity FlatPress... 2022-11-18
CleanCSS - 移除未使用的 CSS 代码 应用:CleanCSS 地址:https://dujun.eu.org/cleancss 功能:分析页面中引用的 CSS 文件,打包成单一的干净文件用于替换所有引用 适用:独立页面 一、缘起 我导航站用了开源项目WebStackPage,首次静态资源加载有 1.5M,一部分原因是它使用了第三方库,比如 Bootstrap。当然,第三方库只有少量代码实际被用到,所以我就想找个办法,把未使用的 CSS 代码移除,使得静态文件更小。 二、方案 很快就找到了这个网站https://unused-css.com/。它可以很好地实现我的需求,不过有一个小问题,它是收费的,最低 25 美元一个月。 Only paying users can download clean CSS files. 那怎么办呢?那就自己开发一个工具吧。 三、分析 清理 CSS 代码需要这么几步: 抓取页面 HTML 内容 找到... 2022-10-31
应对 DDoS 攻击的防御策略 1. 背景 本站部署在腾讯云,并使用了云盾CDN。本月到现在被 DDoS 攻击两次,造成总停服时长 12 个小时。 10 月 5 号,详见:《被 DDoS 攻击导致封停了六小时》 10 月 20 号,详见:《这个月第二次被 D 了》 2. 攻击分析 攻击者应该是很熟悉腾讯云的,使用 UDP Flood 攻击,每次只攻击两分钟,攻击带宽峰值远高于腾讯云的基础防护 2Gbps。 攻击开始后立即引起腾讯云的 ip 封堵,腾讯云的理由是: 通常发生大流量攻击时,运营商考虑网络稳定性因素会进行封堵,从而避免攻击影响到其他未被攻击的用户,保障整个云平台网络的稳定。 两分钟的攻击就可以造成 6 个小时的封堵。找腾讯云客服咨询,购买高防产品才可以自助解封,否则只能等待到期后自动解封。 3. 官方策略 咨询腾讯云客服,给出了两套策略。 3.1 购买高防产品 客服给出的第一个建议就是购买高防产品。但作为个人网... 2022-10-21
JavaScript 强混淆 我的网站是纯内存缓存读 + js 渲染 spa,现在的瓶颈就是硬件配置低、带宽小,程序架构上可以说追求到极致了。其中,js 渲染是全站性能优化的关键一坏,服务器只负责吐出原始数据,而把路由解析、数据处理、布局渲染的计算压力都转嫁给了浏览器。 如此重要的前端部分我当然花了很大的心思。js 是明文的,只能做混淆。但是如果混淆得足够好,逆向成本过高,也是可以达到很好的代码保护。网上有很多 js 代码混淆的方法可以参考,但有些会让文件大小增加好几倍。这里我分享一下自己 js 强混淆的思路。 我实现 js 强混淆的关键一点就是字面量表达式。 原生写法: str.trim(); 字面量表达式: str['trim'](); 有了这个基础,混淆要做的就是进一步隐藏字符串了。我用了 ASCII 转码和 base64,使得字符基础变量简化为 64 个 base64 编码字符,以及特殊的空格和换行符。 以“我... 2022-10-19