当前位置: 首页 > news >正文

基于PHP的轻量级博客typecho

在这里插入图片描述

本文完成于 5 月中旬,发布时未在最新版本上验证;

什么是 typecho ?

Typecho 是一款基于 PHP 的博客软件,旨在成为世界上最强大的博客引擎。TypechoGNU 通用公共许可证 2.0 下发布。支持多种数据库,原生支持 Markdown 排版语法,是一款轻量、高效、稳定、简洁的开源博客程序。

命令行安装

在群晖上以 Docker 方式安装。

typecho 的镜像版本比较多,例如基于 php7.4 的版本就包含了:nightly-php7.4nightly-php7.4-apachenightly-php7.4-clinightly-php7.4-fpm4 个版本

因为基于 apache 的容器在老苏的低内核版本的机器上,会在初始化时出现下面的错误

Function not implemented: AH00141: Could not initialize random number generator

所以最后老苏选择了 nightly-php7.4-fpm 这个 tag 的版本,但 fpm 镜像本身未内置 web 服务器,需要依赖于 nginx 或者其他 web 服务

第一步、将下面的内容保存为 docker-compose.yml 文件

version: '3.7'services:app:image: joyqi/typecho:nightly-php7.4-fpmcontainer_name: typecho-serverrestart: alwaysvolumes:- ./www:/appenvironment:- TIMEZONE=Asia/Shanghaidepends_on:- dbdb:image: mariadb:10.6container_name: typecho-mariadbrestart: alwaysvolumes:- ./data:/var/lib/mysqlenvironment:- TZ=Asia/Shanghai- MYSQL_ROOT_PASSWORD=LHFeR2vSfiTR- MYSQL_DATABASE=typecho- MYSQL_USER=typecho- MYSQL_PASSWORD=Ls59JAqRiymLweb:image: nginxcontainer_name: typecho-nginxrestart: alwaysports:- 8812:80links:- appvolumes:- ./nginx.conf:/etc/nginx/nginx.conf:rovolumes_from:- appdepends_on:- app
  • joyqi/typecho:nightly-php7.4-fpm 的说明

关于镜像 nightly-php7.4-fpm 的环境变量很多,请参考官方文档:
https://github.com/typecho/Dockerfile#environment-variables

但老苏发现设了并没有起作用,在设置向导中还是需要手工输入,所以就没用环境变量,只保留了 TIMEZONE

  • mariadb:10.6 的说明
可变
TZ时区设置为 Asia/Shanghai
MYSQL_ROOT_PASSWORD数据库管理员账号的密码
MYSQL_DATABASE数据库库名设为了 typecho
MYSQL_USER数据库用户设为了 typecho
MYSQL_PASSWORD数据库用户typecho 对应的密码
  • nginx 的说明
本地端口容器端口
881280

本地端口只要不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号

第二步、将下面的内容保存为 nginx.conf 文件

worker_processes auto;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;# Prevent nginx HTTP Server Detectionserver_tokens   off;keepalive_timeout  65;#gzip  on;#upstream php-handler {#    server app:9000;#}server {listen 80 default_server;root /app;index index.php;access_log /var/log/nginx/typecho_access.log main;if (!-e $request_filename) {rewrite ^(.*)$ /index.php$1 last;}location / {index index.html index.htm index.php;if (!-e $request_filename) {rewrite . /index.php last;}}location ~\.php(.*)$ {fastcgi_pass   app:9000;fastcgi_index  index.php;fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;fastcgi_param  PATH_INFO  $fastcgi_path_info;fastcgi_param  SCRIPT_NAME $fastcgi_script_name;fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;include        fastcgi_params;}}
}

第三步、依次执行下面的命令

# 新建文件夹 typecho 和 子目录
mkdir -p /volume2/docker/typecho/{data,www}# 进入 typecho 目录
cd /volume2/docker/typecho# 将 docker-compose.yml 和 nginx.conf 放入当前目录# 一键启动
docker-compose up -d

在这里插入图片描述

以上文件可以在这里找到: https://github.com/wbsu2003/synology/tree/main/typecho

运行

在浏览器中输入 http://群晖IP:8812 就能看到主界面,第一次会需要设置

在这里插入图片描述

开始下一步 开始设置数据库

  • 数据库适配器:默认的 Pdo_Mysql 就可以;
  • 数据库前缀:默认的 typecho_ 就可以;
  • 数据库地址:不能使用 localhost,要改为 docker-compose.yml 中设置的 db
  • 数据库用户名:要对应 mariadb:10.6 的环境变量 MYSQL_USER 的值;
  • 数据库密码:要对应 mariadb:10.6 的环境变量 MYSQL_PASSWORD 的值;
  • 数据库名:要对应 mariadb:10.6 的环境变量 MYSQL_DATABASE 的值;
  • 高级选项:默认就可以,一般不需要修改;

在这里插入图片描述

接下来设置管理员

  • 网站地址:如果局域网使用,用 IP就行,否则改为域名,例如:https://typecho.laosu.ml:444
  • 用户名:根据需要自行设置;
  • 登录密码:根据需要自行设置;
  • 邮件地址:根据需要自行设置;

在这里插入图片描述

安装完成后,有两个地址选项

在这里插入图片描述

  • 查看您的 Blog 或者在浏览器中输入 http://群晖IP:8812

在这里插入图片描述

  • 访问您的控制面板

在这里插入图片描述

开始使用

在这里插入图片描述

发一篇文章

在这里插入图片描述

去首页看看

在这里插入图片描述

中文软件,功能很容易上手

参考文档

Typecho Official Site
地址:https://typecho.org/

typecho/typecho: A PHP Blogging Platform. Simple and Powerful.
地址:https://github.com/typecho/typecho

typecho/Dockerfile: Docker Image packaging for Typecho
地址:https://github.com/typecho/Dockerfile

相关文章:

基于PHP的轻量级博客typecho

本文完成于 5 月中旬,发布时未在最新版本上验证; 什么是 typecho ? Typecho 是一款基于 PHP 的博客软件,旨在成为世界上最强大的博客引擎。Typecho 在 GNU 通用公共许可证 2.0 下发布。支持多种数据库,原生支持 Markdo…...

MySQL多表查询

1.创建student和score表 创建score表 2.为student表和score表增加记录 向student表插入记录的INSERT语句如下: 向score表插入记录的INSERT语句如下: 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号&#…...

消息队列(12) - 定义服务器类

目录 前言设计思想 前言 之前,我们写了通信协议的具体设计,接下来我们设计服务器类 设计思想 我们先只考虑一个虚拟主机的情况下, 在一个虚拟主机的情况下,我们需要有一个session会话来帮助我们存储信息,并且既然是网络通信,那么socket关键字肯定也必不可少,我们在引入一个线…...

做正确的事 VS 正确的做事,哪个更重要?

管理大师彼得德鲁克曾在《有效的主管》一书中简明扼要地指出:“效率是以正确的方式做事,而效能则是做正确的事。效率和效能不应偏废,但这并不意味着效率和效能具有同样的重要性。我们当然希望同时提高效率和效能,但在效率与效能无…...

每日一题——寻找旋转排序数组中的最小值(I)

寻找旋转排序数组中的最小值——I 题目链接 思路 首先我们以数组[1,2,3,4,5,6,7]举个例子,经过旋转后它无非就这两种情况: 情况一:旋转过后数组变成两段有序数列: 情况二:旋转过后数组不变,仍然有序&…...

C语言每日一题:16:数对。

思路一&#xff1a;基本思路 1.x,y均不大于n&#xff0c;就是小于等于n。 2.x%y大于等于k。 3.一般的思路使用双for循环去遍历每一对数。 代码实现&#xff1a; #include <stdio.h> int main() {int n 0;int k 0;//输入scanf("%d%d", &n, &k);int x…...

中科亿海微浮点数转换定点数

引言 浮点数转换定点数是一种常见的数值转换技术&#xff0c;用于将浮点数表示转换为定点数表示。浮点数表示采用指数和尾数的形式&#xff0c;可以表示较大范围的数值&#xff0c;但存在精度有限的问题。而定点数表示则采用固定小数点位置的形式&#xff0c;具有固定的精度和范…...

JavaScript激活严格模式

在JavaScript中&#xff0c;严格模式是一种特殊的模式&#xff0c;通过’use strict’;去激活严格模式&#xff01;在 JavaScript 中&#xff0c;“use strict” 是一种指令&#xff0c;表示在代码运行时启用严格模式&#xff0c;从而禁止使用一些不安全或者不规范的语法&#…...

Linux cond_resched()简介

文章目录 简介一、cond_resched1.1 _cond_resched1.2 should_resched1.2.1 __preempt_count&#xff1a;1.2.2 函数说明 1.3 preempt_schedule_common1.3.1 preempt_schedule_common1.3.2 preempt_latency_start/stop 1.3.3 preempt_disable_notrace 参考资料 简介 Linux 内核…...

初出茅庐的小李博客之认识编码器

编码器是什么&#xff1a; 一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器&#xff0c;我们可以通过编码器测量到底位移或者速度信息。编码器通常由一个旋转部分和一个固定部分组成&#xff0c;旋转部分随着被测量的物体进行旋转&#xff0c;固定部分则保持不动…...

NVIDIA TX2 NX编译及更新设备树

在NVIDIA官网下载相关文件 官网网址:https://developer.nvidia.com/embedded/jetson-linux-archive 我选择的版本为R32.7.4 需要下载3个文件,BSP、根文件系统、BSP源码: 解压 将Tegra_Linux_Sample-Root-Filesystem_R32.7.4_aarch64文件夹下的内容提取到Jetson_Linux_R32.…...

从零开始学Python(二)运算符、if、循环结构

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Python的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.运算符 1.基本运算符 2.比较运算符 …...

Sentinel整合Spring Cloud Gateway、Zuul详解

Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块&#xff0c;此模块中包含网关限流的规则和自定义 API 的实体和管理逻辑&#xff1a; GatewayFlowRule&#xff1a;网关限流规则…...

wsl2安装mysql环境

安装完mysql后通过如下命令启动mysql service mysql start 会显示如下错误&#xff1a; mysql: unrecognized service 实际上上面显示的错误是由于mysql没有启动成功造成的 我们要想办法成功启动mysql才可以 1.通过如下操作就可以跳过密码直接进入mysql环境 2.如果想找到my…...

C#质检工具(StyleCop、SonarLint)

1、StyleCop StyleCop工具主要类似java中的checkStyle,是检查代码样式规范的工具。 1.1、StyleCop安装流程: 图1.1 图1.2 图1.3 安装StyleCop插件时可能会遇到下载特慢或卡住不动的情况,需注意: 1)网上说的关闭IPV6功能不管用 2)网上说的自动指定dns不管用 3)网上…...

PyTorch翻译官网教程-NLP FROM SCRATCH: GENERATING NAMES WITH A CHARACTER-LEVEL RNN

官网链接 NLP From Scratch: Generating Names with a Character-Level RNN — PyTorch Tutorials 2.0.1cu117 documentation 使用字符级RNN生成名字 这是我们关于“NLP From Scratch”的三篇教程中的第二篇。在第一个教程中</intermediate/char_rnn_classification_tutor…...

【C语言】结构体详解

现实生活中一个事物&#xff0c;会有许多属性连接起来。而C语言引入一种构造数据类型——结构体 将属于一个事物的多个数据组织起来以体现其内部联系。 一、结构体类型的定义 结构体类型 是一种 构造类型&#xff0c;它是由若干成员组成的&#xff0c;每个成员可以是一个基本…...

leetcode242. 有效的字母异位词

题目&#xff1a;leetcode242. 有效的字母异位词 描述&#xff1a; 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 示例 1: 输入: s “…...

Unity 编辑器资源导入处理函数 OnPostprocessAudio :深入解析与实用案例

Unity 编辑器资源导入处理函数 OnPostprocessAudio 用法 点击封面跳转下载页面 简介 在Unity中&#xff0c;我们可以使用编辑器资源导入处理函数&#xff08;OnPostprocessAudio&#xff09;来自定义处理音频资源的导入过程。这个函数是继承自AssetPostprocessor类的&#xff…...

uniapp开发(由浅到深)

文章目录 1. 项目构建1.1 脚手架构建1.2 HBuilderX创建 uni-app项目步骤&#xff1a; 2 . 包依赖2.1 uView2.2 使用uni原生ui插件2.3 uni-modules2.4 vuex使用 3.跨平台兼容3.1 条件编译 4.API 使用4.1 正逆参数传递 5. 接口封装6. 多端打包3.1 微信小程序3.2 打包App3.2.1 自有…...

用STM32和AD637搞定电路幅频特性测试:手把手教你复刻电赛D题核心模块

STM32与AD637构建的电路特性测试仪实战指南 在电子设计竞赛和实际工程中&#xff0c;快速准确地测量电路特性是每个硬件工程师的必备技能。本文将带你从零开始&#xff0c;用STM32微控制器和AD637真有效值检测芯片搭建一个功能完整的电路特性测试平台。不同于传统的赛题报告&am…...

Arch Linux无线安装保姆级教程:从iwctl联网到KDE/GNOME桌面完整配置

Arch Linux无线安装全流程指南&#xff1a;从零配置到KDE/GNOME桌面环境部署 当你面对一台没有有线网络接口的机器&#xff0c;却想体验Arch Linux的纯净与自由时&#xff0c;传统的安装教程往往显得力不从心。这份指南将彻底解决无线环境下的安装难题&#xff0c;从最基础的iw…...

【会议征稿通知 | 台州学院主办 | IET出版 | EI 、Scopus稳定检索】第二届新能源与电力电网国际学术会议(NEPG 2026)

第二届新能源与电力电网国际学术会议&#xff08;NEPG 2026&#xff09; 2026 2nd International Conference on New Energy and Power Grid 2026年5月29-31日 | 中国台州 大会官网&#xff1a;www.ic-nepg.org 截稿时间&#xff1a;见官网&#xff08;早投稿&#xff0c;早…...

Inspirit Capital将收购Kaplan Languages Group

专注于企业分拆业务投资的Inspirit Capital欣然宣布&#xff0c;计划从Kaplan手中收购全球领先的语言教育平台KLG Kaplan Languages Group (“KLG”)。本次出售的所有条件均已达成&#xff0c;预计交易将于5月1日完成。 KLG旗下拥有Kaplan International Languages、Alpadia L…...

018、多智能体协作(一):通信协议与协同机制

上周调试一个多机器人调度系统时,遇到了一个经典问题:两个智能体同时向对方发送任务请求,结果互相等待对方响应,直接死锁在通信层。查了一下午日志才发现,是我们的自定义消息协议没处理好并发请求的序列化。这个坑让我意识到,多智能体系统的核心往往不在算法本身,而在那…...

除了FFmpeg,这4款小众但好用的M3U8下载工具你可能真不知道(含Python脚本示例)

超越FFmpeg&#xff1a;4款高效M3U8下载工具深度评测与实战指南 在视频处理领域&#xff0c;M3U8格式因其分片传输特性成为流媒体主流方案。虽然FFmpeg凭借其全能性成为首选工具&#xff0c;但在特定场景下&#xff0c;专业工具往往能提供更精细的控制和更优的体验。本文将深入…...

3D Tiles Tools实战指南:从GLB到B3DM的格式转换与批量处理技术

3D Tiles Tools实战指南&#xff1a;从GLB到B3DM的格式转换与批量处理技术 【免费下载链接】3d-tiles-tools 项目地址: https://gitcode.com/gh_mirrors/3d/3d-tiles-tools 在3D地理空间数据可视化领域&#xff0c;3D Tiles Tools项目提供了强大的格式转换能力&#xf…...

从‘找茬’到‘抠图’:OpenCV图像分割实战指南(迭代法、OSTU、区域生长法详解)

从‘找茬’到‘抠图’&#xff1a;OpenCV图像分割实战指南 想象一下&#xff0c;你正在玩一款经典的"找茬"游戏——在两幅看似相同的图片中找出细微差异。这种视觉敏锐度训练&#xff0c;与计算机视觉中的边缘检测技术有着异曲同工之妙。而当我们需要将照片中的主体从…...

从‘亚利桑那大学多项式’到Zemax实操:一文理清Zernike条纹多项式与标准多项式的区别与选用指南

从‘亚利桑那大学多项式’到Zemax实操&#xff1a;一文理清Zernike条纹多项式与标准多项式的区别与选用指南 在光学设计和波前分析领域&#xff0c;Zernike多项式就像是一把瑞士军刀&#xff0c;能够将复杂的波前畸变分解为一系列正交的基函数。但当你第一次打开Zemax的波前分析…...

别再只用highlight.js了!Vue3中实现代码高亮的几种方案对比与选型指南

Vue3代码高亮方案深度对比&#xff1a;从Highlight.js到Shiki的进阶指南 在技术文档、博客或开源项目展示中&#xff0c;代码高亮早已成为提升可读性的标配功能。但当我们面对Vue3生态时&#xff0c;选择却远不止于老牌的highlight.js。不同的高亮方案在性能、定制化、语言支持…...