Typecho 博客搭建记录 - Higurashi

前言

最近想单独搭建博客,因为服务器性能一般,选择用轻量级的 Typecho。下面是搭建记录,搭建过程主要参考自 ChatGPT,博文主要总结自 ChatGPT 对话,补充中途遇到的部分问题。

1. 准备工作

前置基础:

  • 一台服务器(我用的是腾讯云 OpenCloudOS,基于 CentOS)。
  • 一个已解析到服务器 IP 地址的域名(例如blog.example.site)。
  • 预先已经配置好防火墙,80、443 端口已放开。

2. 安装与配置 PHP (含 PHP-FPM)

Typecho 是一个基于 PHP 的应用,需要 PHP 运行时和 PHP-FPM (FastCGI 进程管理器) 来处理动态请求。

2.1 安装 PHP 及常用扩展

使用dnf包管理器安装 PHP 及其 Typecho 所需的常用扩展:

dnf install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json php-opcache php-curl

安装完成后,可以通过以下命令检查 PHP 版本:

php -v

2.2 启动并设置 PHP-FPM

启动php-fpm服务并设置开机自启:

systemctl enable php-fpm --now

确认php-fpm正在运行:

systemctl status php-fpm

2.3 确认 PHP-FPM 监听方式

默认情况下,PHP-FPM 会通过 Unix Socket 监听请求,通常路径为/run/php-fpm/www.sock。确认该文件是否存在:

ls /run/php-fpm/www.sock

一般路径是:

/run/php-fpm/www.sock

这个 Socket 路径将在后续 Nginx 配置中用到。

3. 安装与配置 MariaDB (MySQL)

Typecho 需要数据库来存储博客内容、用户数据等。这里我们选择 MariaDB。

3.1 安装并启动 MariaDB

dnf install -y mariadb-server
systemctl enable mariadb --now

3.2 初始化安全配置

强烈建议运行安全初始化脚本,设置root密码并移除不安全的默认项:

mysql_secure_installation

按照提示操作,通常建议选择:

  • 设置root密码:Y
  • 删除匿名用户:Y
  • 禁止root远程登录:Y
  • 删除test数据库:Y
  • 重新加载权限表:Y

3.3 创建 Typecho 数据库和用户

登录 MariaDB root用户:

mysql -u root -p

然后执行以下 SQL 命令,为 Typecho 创建数据库和专用用户。请将 '强密码' 替换为实际密码:

CREATE DATABASE typecho DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'typecho'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON typecho.* TO 'typecho'@'localhost';
FLUSH PRIVILEGES;
EXIT;

请记住数据库名 (typecho)、用户名 (typecho) 和密码,它们将在 Typecho 安装时使用。

4. 下载并部署 Typecho 程序

4.1 下载 Typecho

选择一个合适的网站根目录,例如/var/www/typecho

mkdir -p /var/www/typecho
cd /var/www/typecho

下载最新版 Typecho 程序并解压:

curl -L https://github.com/typecho/typecho/releases/latest/download/typecho.zip -o typecho.zip
unzip typecho.zip
rm typecho.zip # 清理安装包

解压后,/var/www/typecho目录下应包含admininstallusrindex.php等文件和目录。

4.2 设置文件权限

为了让 Nginx 和 PHP-FPM 能够正常读写 Typecho 文件,需要设置正确的属主和权限。Nginx 在 OpenCloudOS 上通常以nginx用户运行。

chown -R nginx:nginx /var/www/typecho
find /var/www/typecho -type d -exec chmod 755 {} \;
find /var/www/typecho -type f -exec chmod 644 {} \;

5. 配置 Nginx Web 服务器

5.2 安装并启动本地 Nginx

dnf install -y nginx
systemctl enable nginx --now

访问服务器 IP (http://你的服务器IP),如果看到 "Welcome to nginx!" 页面,说明 Nginx 已成功运行。

5.3 配置 Typecho 站点

创建 Nginx 站点配置文件:

vim /etc/nginx/conf.d/typecho.conf

将以下配置内容粘贴到文件中。将blog.example.site替换为实际域名:

server {listen 80;listen [::]:80;server_name blog.example.site;root /var/www/typecho;index index.php index.html;access_log /var/log/nginx/typecho.access.log;error_log  /var/log/nginx/typecho.error.log;location / {try_files $uri $uri/ /index.php?$args;}location ~ \.php$ {include fastcgi_params;fastcgi_pass unix:/run/php-fpm/www.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}location ~* \.(jpg|jpeg|png|gif|css|js|ico|webp)$ {expires 30d;access_log off;}
}

5.4 检查并重载 Nginx 配置

nginx -t
systemctl reload nginx

这时候已经能够通过blog.example.site访问 Typecho 配置页了。但是在配置时遇到报错“上传目录无法写入, 请手动将安装目录下的 /usr/uploads 目录的权限设置为可写然后继续升级”。

6. 解决权限与 SELinux 问题

权限问题和 SELinux 是常见的部署障碍。上面的报错就是权限问题导致。

6.1 确保 PHP-FPM 以nginx用户运行

这是解决 Typecho 上传目录写入问题的关键。Nginx 进程通常以nginx用户运行,为了避免权限冲突,PHP-FPM 也应以相同的用户运行。

首先,确认php-fpm当前的运行用户:

ps -ef | grep php-fpm

如果worker进程不是nginx用户(通常为apache),需要修改 PHP-FPM 配置:

vim /etc/php-fpm.d/www.conf

找到并修改以下行,确保usergroupnginx,并配置listen.ownerlisten.grouplisten.mode以确保 Nginx 可以访问 Socket:

user = nginx
group = nginxlisten = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

修改后,重启 PHP-FPM 服务:

systemctl restart php-fpm

6.2 处理 SELinux (如果启用)

OpenCloudOS 默认启用 SELinux (Enforcing 模式),这会严格限制进程的文件访问权限。如果 SELinux 处于Enforcing状态,即使文件权限看起来正确,也可能导致 Typecho 无法写入上传目录。我这里没有开启(运行getenforce输出Disabled),就不记录了。

7. 完成 Typecho 初始化配置

现在,访问域名http://blog.example.site,应该会看到 Typecho 的安装页面。

7.1 填写数据库信息

按照页面提示填写数据库连接信息:

  • 数据库适配器: 保持默认PDO Mysql 适配器
  • 数据库前缀: 保持默认typecho_
  • 数据库地址: localhost
  • 数据库用户名: typecho(之前创建的)。
  • 数据库密码: 为typecho用户设置的密码。
  • 数据库名: typecho(之前创建的)。

7.2 填写管理员信息

继续填写管理员账号信息:

  • 管理员用户名: 希望的后台登录用户名。
  • 管理员密码: 后台登录密码 (建议复杂且与数据库密码不同)。
  • 管理员邮箱: 邮箱地址。

点击「确认,开始安装」。如果一切顺利,Typecho 将完成数据库表的创建和配置文件的写入,并提示安装成功。

7.3 安装后的重要操作

  1. 删除install目录: 这是非常重要的安全步骤,防止他人重新安装或利用安装程序漏洞。

    rm -rf /var/www/typecho/install
    
  2. 验证上传功能: 登录 Typecho 后台,尝试发布文章并上传图片,确认上传功能正常。

  3. 备份数据库: 首次安装成功后,建议立即备份数据库,作为初始干净状态的快照。

    mysqldump -u typecho -p typecho > typecho_init.sql
    

8. 启用 HTTPS (Let's Encrypt)

我们使用 Certbot 自动申请和配置 Let's Encrypt 证书。

8.1 前置条件检查

在执行 Certbot 之前,需确保:

  • 域名已正确解析到服务器 IP。
  • Nginx 服务正在运行,且 80 端口可正常访问。

8.2 安装 Certbot 并申请证书

使用一条命令即可完成 Certbot 的安装、证书申请和 Nginx 配置:

dnf install -y certbot python3-certbot-nginx && certbot --nginx -d blog.example.site

在执行过程中,Certbot 会提示:

  1. 输入邮箱地址: 用于接收证书到期提醒。
  2. 同意服务条款: 输入A
  3. 是否接收 EFF 邮件: 可选,输入N即可。
  4. 选择 HTTPS 行为: 强烈建议选择2(Redirect),这将自动将所有 HTTP 请求重定向到 HTTPS。

如果一切顺利,将看到Congratulations! You have successfully enabled HTTPS on https://blog.example.site的提示。

8.3 验证 HTTPS

现在,访问https://blog.example.site,浏览器地址栏应显示安全锁图标,表明 HTTPS 已成功启用。

Certbot 会自动修改 Nginx 配置文件 (/etc/nginx/conf.d/typecho.conf),添加listen 443 ssl配置、证书路径和 HTTP 到 HTTPS 的重定向规则。它还会自动创建定时任务,确保证书在到期前自动续期。

运行下面的命令检查是否启动了定时任务,没有输出,定时任务应该是没有启动:

systemctl list-timers | grep certbot

运行下面的命令输入显示为禁用状态:

systemctl list-unit-files | grep certbot
certbot-renew.service                        static          -
certbot-renew.timer                          disabled        disabled

执行以下命令启动:

systemctl enable --now certbot-renew.timer

再次list-timers能够正常看到定时任务。

9. 基础安全加固与性能优化

9.1 Nginx 禁止上传目录执行 PHP 脚本

为了防止恶意用户上传 WebShell 等可执行脚本,应在 Nginx 配置中禁止uploads目录执行 PHP 文件。

编辑 Nginx 配置文件/etc/nginx/conf.d/typecho.conf,在server块内添加以下location规则:

location ~* ^/usr/uploads/.*\.(php|php5|phtml)$ {deny all;
}

添加后,测试并重载 Nginx 配置:

nginx -t && systemctl reload nginx

9.2 PHP-FPM / OPcache 性能调优

暂时没用到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1221086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

桌面图片——壁纸

桌面图片——壁纸本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多份资料所成,在这之中也必有疏漏未加标注处,如有侵权请与博主联系。 如果未特殊标注则为…

GEO出海营销榜单揭晓:AI巨浪下,原圈科技如何领航企业增长?

在GEO(生成式引擎优化)领域,原圈科技被普遍视为市场中的领航者。其基于"私域AI"的核心技术,在为出海企业构建权威性内容与实现营销全周期闭环上表现突出。相较于标准化工具或纯策略咨询,原圈科技凭借其深度行…

Windows录制浏览器音视频

Windows录制浏览器音视频 前言:为什么需要特殊方法录制浏览器声音?核心原理:虚拟音频设备——数字世界的“音频管道”准备工作:获取两大神器1. Virtual Audio Cable (VAC)2. FFmpeg 详细操作步骤第一步:配置虚拟音频线…

AI模型监控与告警:AI应用架构师的技术前沿研究

AI模型监控与告警:AI应用架构师的技术前沿研究 凌晨3点,某电商AI架构师李阳的手机突然弹出红色告警: “推荐系统转化率较昨日暴跌38%,模型预测准确率下降22%——触发一级故障!” 他火速登录监控平台,发现…

【扩展卡尔曼滤波算法EKF估计SOC】 基于二阶RC锂电池模型,利用扩展卡尔曼滤波器EKF在线...

【扩展卡尔曼滤波算法EKF估计SOC】 基于二阶RC锂电池模型,利用扩展卡尔曼滤波器EKF在线估计HPPC工况和复杂电流工况下SOC变化,EKF滤波器估计效果比较理想。 【仿真模型、配套理论视频、配套相关文献、word文档解释说明】 【纯simulink基础模块】 锂电池…

微电网并离网下垂控制Simulink模型,完美运行!这就是下垂控制的精髓

微电网并离网下垂控制simulink模型,只有模型,能完美运行!这才是下垂控制!打开Simulink模型文件,看到密密麻麻的线路和模块组,别慌——咱们今天要拆解的这个下垂控制模型,核心就三个模块&#xf…

‌情绪化测试场景:让AI模拟愤怒用户的破坏力‌

随着用户体验成为软件质量的核心指标,传统压力测试在应对极端情绪化行为时暴露明显局限。本文提出基于生成式对抗网络(GAN)与行为模式挖掘的AI模拟框架,通过构建“愤怒因子-行为路径”模型,实现高保真用户情绪场景复现…

量子算法测试入门:验证薛定谔的代码稳定性

量子测试的独特挑战 量子计算正重塑软件测试领域,但量子算法测试与传统二进制软件测试存在本质差异。量子比特(Qubit)的状态叠加性(同时处于|0>和|1>态)、纠缠特性(非局域关联)和不可克隆…

No.1141 S7-200 PLC和MCGS组态自动化搬运机械手的组态系统 带解释的梯形图程...

No.1141 S7-200 PLC和MCGS组态自动化搬运机械手的组态系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面 自动化搬运机械手的开发过程中,PLC与上位机组态软件的配合就像机械手的"大脑"和"眼睛"。咱…

咱们搞信号处理的老司机,谁没被噪声折磨过?今天来唠唠几种滤波方法的实战体验,带点代码实操,直接上干货不废话

几种常用信号滤波方法对比; 高斯滤波; EEMD分解;集合经验模态分解;补充的集合经验模态分解; 小波分解;高斯滤波——简单粗暴的老司机先整点高斯滤波,这货简直就是快速去噪的万金油。看这段Pytho…

MP2636充电升压模块原理图设计,已量产

目录 1、充电模式:从 USB 输入到锂电池 2、升压放电模式:从锂电池到 USB 输出 3、保护机制与可靠性设计 在便携式智能设备、储能电源等应用场景中,兼具高效充电与升压放电功能的电源模块是核心设计之一。本文将围绕基于MP2636的双向充放电电路展开详细分析,从原理架构、…

三相异步电机矢量控制调速系统Simulink仿真探索

三相异步电机矢量控制调速系统simulink仿真 MATLAB Simulink仿真模型 异步电机FOC控制仿真模型 矢量解耦控制 在电机控制领域,三相异步电机因其结构简单、成本低、可靠性高等优点被广泛应用。而矢量控制技术,特别是磁场定向控制(FOC&#xf…

滑模与终端滑模(SMC):控制领域的奇妙之旅

滑模 终端滑模 smc 在控制理论的广阔天地里,滑模控制(Sliding Mode Control,SMC)宛如一颗璀璨的明珠,而终端滑模则是在其基础上进一步发展的瑰宝。今天,咱们就来唠唠这滑模和终端滑模到底是啥神奇玩意儿。…

Agentic AI做社交媒体运营:提示工程架构师的3个增加粉丝案例

Agentic AI做社交媒体运营:提示工程架构师的3个增加粉丝案例 一、引言:当社交媒体运营遇到“会思考的AI” 凌晨1点,小张盯着电脑屏幕上的小红书后台——第12条笔记的阅读量停在237,点赞数只有11。作为一个刚起步的美妆博主&…

智能算法实战:粒子群优化在配电网调度中的妙用

基于粒子群算法的配电网日前优化调度 采用IEEE33节点配电网搭建含风光,储能,柴油发电机和燃气轮机的经济调度模型。 以运行成本和环境成本最小为目标,考虑储能以及潮流等约束,采用粒子群算法对模型进行求解,得到电源的…

二项式系数的素数整除性质的研究

当 $p$ 为质数: $$ f(x_1, x_2, \cdots, x_n)^p=f(x_1^p, x_2^p, \cdots, x_n^p) $$二项式系数的素数整除性质的研究 \(\mathbb F_p\) 是大小为 \(p\)(\(p\) 是质数)的有限域,也就是 \(\bmod p\) 的剩余系。 二项式…

目标检测数据集 - 排球比赛场景排球检测数据集下载

数据集介绍:排球比赛场景排球检测数据集,真实场景高质量图片数据,涉及场景真实,比如室内场馆排球、发球飞行排球、扣球高速运动、排球遮挡、排球严重遮挡数据等,划分为 "ball"一个类别;适用实际项…

20260126_215218_RAG(Retrieval-Augmented_Genera

RAG(Retrieval-Augmented Generation,检索增强生成) 是大语言模型应用中的一项核心技术框架。简单来说,它的核心思想是:先检索,后生成。 为了让一个只会“凭空想象”的大模型变成一个能“引经据典”的专家…

基于DEMATEL-ISM法的民航飞行员综合安全能力结构模型研究(文章浮现)。 关键词:民航飞...

基于DEMATEL-ISM法的民航飞行员综合安全能力结构模型研究(文章浮现)。 关键词:民航飞行员,综合安全能力,多级递阶级结构模型,中心度,原因度。 只需要改动原始矩阵,main文件&#xff…

构建 OpenHarmony 随机颜色生成器:用纯数学生成视觉灵感

一、为什么需要“随机颜色生成器”? 在 OpenHarmony 的 UI 开发、设计协作或创意场景中,用户常需快速获取一个美观、可用、可复现的颜色值: 设计师寻找配色灵感;开发者调试主题色;教育场景演示 RGB 原理;…