杜郎俊赏 - dujun.io

开源实例之PHPwind

phpwind-example封面
前言 PHPwind 曾经是和 Discuz 齐名的,国内最知名的论坛系统。“PHPwind” 一词由“PHP”和“wind”两部分组成。其中“PHP”源于论坛程序基于PHP,“wind”源于对流畅速度的追求,让程序像风一样轻盈,运行快速,这也是PHPwind的蜻蜓标志的内涵之一。 PHPwind 已经不再维护,也不提供官网下载,因此不建议投入生产。本篇仅作为纪念。 实例地址 https://phpwind.dujun.eu.org 实例配置 配置 描述 系统 Debian 服务端 PHP 5.6 数据库 MariaDB 10.5 服务器 Nginx 程序 PHPwind 9.0.2 实例部署 PHPwind 的部署非常简单。 权限要求 具有系统读写权限 已安装 PHP5 已安装数据库,如 MySQL 已安装 Nginx 域名解析 以 Nginx 为例,配置 url 重写: if (!-e...

2022-12-17

开源实例之Discuz

discuz-example封面
前言 Discuz! 是最知名且历史悠久的开源论坛系统。 * Discuz! 超过300万站长使用,全球成熟度最高、覆盖率最大的建站系统之一,拥有超过5000款应用。 * 站长可以方便的通过 Discuz! 搭建社区论坛、知识付费网站、视频直播点播站、企业网站、同城社区、小程序、APP、图片素材站,游戏交流站,电商购物站、小说阅读、博客、拼车系统、房产信息、求职招聘、婚恋交友等等绝大多数类型的网站。 * Discuz!自2001年6月面世以来,已有20多年的历史,Discuz!性能优异、功能全面、安全稳定,在社区论坛(BBS)软件领域全球市场占有率第一。 * 站长可以不需要任何编程基础,通过简单的安装和设置,在互联网上搭建起具备完善功能、很强负载能力和可高度定制的网站。 * Discuz! 的基础架构采用世界上最流行的web编程组合PHP+MySQL实现,是一个经过完善设计,适用于各种服务...

2022-12-16

开源实例之容器最佳实践

docker-best-practices-for-open-source-examples封面
前言 前文提到,本系列实例采用运行时容器 + 数据容器的部署方式。当项目多样性增加,运行时环境所需应用的排列组合也在增加。考虑到可维护性,决定遵循最佳实践重构,即一个容器只运行一个应用,通过编排完成部署。 本文以 WordPress 为例,示范如何以 Docker 最佳实践部署 LNMP 环境。 容器划分 WordPress 项目需要 4 个容器,即 PHP 容器、MySQL 容器、Nginx 容器和数据容器(WordPress 代码和上传文件存储)。 镜像构建Dockerfile 系统镜像 #Debian 系统镜像,包含 Debian 11.5,基于官方镜像 debian:stable-20221205-slim FROM debian:stable-20221205-slim MAINTAINER dujun ENV LANG zh_CN.UTF-8 ENV LANGUAGE zh_C...

2022-12-13

开源实例之webman

前言 本篇是对《开源实例之多项目部署方案》中 webman 部分的展开。 webman的介绍 webman是一款基于workerman开发的高性能HTTP服务框架。webman用于替代传统的php-fpm架构,提供超高性能可扩展的HTTP服务。你可以用webman开发网站,也可以开发HTTP接口或者微服务。 除此之外,webman还支持自定义进程,可以做workerman能做的任何事情,例如websocket服务、物联网、游戏、TCP服务、UDP服务、unix socket服务等等。 官网地址:https://www.workerman.net/webman webman的理念 以最小内核提供最大的扩展性与最强的性能。 webman仅提供最核心的功能(路由、中间件、session、自定义进程接口)。其余功能全部复用composer生态,这意味着你可以在webman里使用最熟悉的功能组件,例...

2022-12-12

开源实例之Yaf

yaf-example封面
前言 Yaf (Yet Another Framework) 是我最喜欢的 PHP 开发框架。本站基于 Yaf 开发。 git 地址:https://github.com/laruence/yaf pecl 地址:https://pecl.php.net/package/yaf Yaf的介绍 Yaf is a PHP framework similar to zend framework, which is written in c and built as PHP extension. Yaf 是一个C语言编写的、基于PHP扩展开发的,被誉为最快的PHP开发框架。Yaf 的作者是人称“亚一程”(亚洲第一程序员)的鸟哥(惠新宸)。 Yaf的优点 引用鸟哥的原话,Yaf主要有如下优点: * 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销. * 所有的框架类, 不需...

2022-12-12

开源实例之Nginx

前言 本篇是对《开源实例之多项目部署方案》中 Nginx 部分的展开。 Nginx的介绍 nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev. Nginx 是轻量级的 HTTP 和反向代理 WEB 服务器。它资源占用少、高并发能力强,在互联网项目中广泛应用。Nginx 也就是常说的 LNMP 架构中的 N。 Nginx的应用 本系列的开源项目实例容器,由 Nginx 协助完成自动重建功能。主要利用的特性是,容器未创建或已停止时,HTTP 状态码返回 502,由此做重建分发。 以 WordPress 项目为例: 分发流程 项目落地页:https://word...

2022-12-09

开源实例之Podman

前言 Podman is a daemonless container engine for developing, managing, and running OCI Containers on your Linux System. Containers can either be run as root or in rootless mode. Podman(Pod Manager tool)是 RedHat 推出的,无守护进程、不依赖 root 的容器管理工具,是 Docker 的“无痛”替代品。 官网地址是https://podman.io Podman 的诞生 Podman 的诞生是一种必然,或者说,即便不是 Podman,也必然会出现另一款替代 Docker 的产品。这里面政治斗争或许大于技术因素。 在 Docker 一家独大的时候,Google 的 Kubernetes 是最...

2022-12-06

开源实例之Kubernetes

前言 Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications. Kubernetes,发音是[kubə'netis],常被简称为 K8s,即 k + 中间8个字母 + s。这种极客命名,另一个知名例子是多语言软件常见的 i18n(internationalization)。 Kubernetes 源于希腊语,有“舵手”的意思,正如它的 logo 是一个船舵。 官网地址是:https://kubernetes.io Kubernetes的发展 Kubernetes 起源于 Google 内部项目,在 2014 年被正式开源。在 Docker 开始爆火的时期,Kubernetes...

2022-12-05

开源实例之Docker

docker-example封面
前言 Docker 是最知名的开源容器引擎,是将容器技术推广开来的超级应用。官网的 slogon 是 "Develop faster. Run anywhere." 相对于虚拟机,容器最大的优势是极低的开销和超快的部署。这正是我实现这个开源实例系列的技术基础。本篇是对《开源实例之多项目部署方案》中 Docker 部分的展开。 相关镜像构建脚本已经开源,详见《开源实例之本系列镜像开源》。 容器架构方案 Docker 的最佳实践是一个容器只跑一个应用。比如 LNMP 环境可以用三个容器分别跑 PHP、MySQL 和 Nginx。通过 docker-compose 编排组网,管理起来倒也方便。 但在本系列中,这样部署实际很麻烦。像 WordPress 一键安装,默认 PHP 和 MySQL 在同一台机器上,相关配置是 localhost。多个容器组网的映射,就要改相应代码。 最初图方便,我将一个...

2022-12-04

Typecho插件:哀悼日首页灰屏

typecho-plug-mourn-index封面
[附件] 前面写了《WordPress插件:哀悼日首页灰屏》,顺便再写一版 Typecho 的插件。功能是实现仅首页灰屏,而非全站灰屏。压缩包在文末。 主要用到了方法 is('index') 判断当前是首页。 演示地址:https://typecho.dujun.eu.org

2022-12-04

分页: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195