从零开始搭建typecho

系统:Rocky Linux 9.5 (Blue Onyx)

在 Rocky Linux 上,安装 PHP‑FPM 与扩展,以及配置 Nginx 和 SELinux,大致步骤如下。


1. 启用 EPEL 和 Remi 源

默认 Rocky 源里的 PHP 版本可能偏旧,推荐使用 Remi 源来安装 PHP 7.4+。

bash 复制代码
# 安装 EPEL
sudo dnf install -y epel-release

# 安装 Remi 源仓库
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

# 启用 Remi PHP 8.3 槽(也可改成 remi-8.0、remi-8.1)
sudo dnf module reset -y php
sudo dnf module enable -y php:remi-7.3

2. 安装 PHP-FPM 及必要扩展

bash 复制代码
sudo dnf install -y php-fpm php-mysqlnd php-gd php-mbstring php-xml php-curl

# 启动并设为开机自启
sudo systemctl enable --now php-fpm

检查服务状态:

bash 复制代码
systemctl status php-fpm

3. 下载并部署 Typecho

bash 复制代码
cd /var/www/html 
wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip 
dnf install unzip -y 
unzip typecho.zip 
chown -R www-data:www-data /var/www/typecho/ 
chmod -R 755 /var/www/typecho/ 
chmod -R 777 /var/www/typecho/usr/uploads

这里因为云服务网络问题,所以使用我的Windows电脑从typecho官网地址下载安装包上传到云服务器里。

4. 设置 SELinux 上下文

Rocky Linux 默认启用 SELinux,需要给 Typecho 的上传目录打标签,否则会被阻止写入。

bash 复制代码
# 给 uploads 目录及其子目录设置可写权限类型
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/typecho/usr/uploads(/.*)?'
sudo restorecon -Rv /var/www/typecho/usr/uploads

如果你还未安装 policycoreutils-python-utils,请先:

bash 复制代码
sudo dnf install -y policycoreutils-python-utils

5. 创建数据库

假设使用 MariaDB/MySQL:

bash 复制代码
sudo dnf install -y mariadb-server
sudo systemctl enable --now mariadb

# 安全配置(可交互)
sudo mysql_secure_installation

# 登录并创建库
mysql -u root -p <<SQL
CREATE DATABASE typecho_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'typecho_user'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL ON typecho_db.* TO 'typecho_user'@'localhost';
FLUSH PRIVILEGES;
SQL

6. 修改 Nginx 配置

因为我的域名已经使用,所以我采用新增一个local块,在原来 server 块里(处理 seekersferry.com 的部分),添加 /blog/ 段:

nginx 复制代码
# 处理 /blog/ 下的静态和 try_files
location /blog/ {
    root /var/www/typecho;
    index index.php index.html;
    # 有文件就直接给文件,没文件才转给 index.php
    try_files $uri $uri/ /blog/index.php?$args;
}

# 专门处理 /blog/ 下的 PHP
location ~ ^/blog/.*\.php$ {
    root /var/www/typecho;
    include fastcgi.conf;                       # 推荐比 fastcgi_params 完整
    fastcgi_pass   unix:/run/php-fpm/www.sock;
    fastcgi_index  index.php;
    # 告诉 PHP-FPM 真正的脚本位置
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

注意

  • root /var/www/typecho; 与 URL 前缀 /blog/ 一起,会把 /blog/index.php 映射到 /var/www/typecho/index.php
  • PHP-FPM 的 socket 在 Rocky Linux 通常是 /run/php-fpm/www.sock

测试并重载 Nginx:

bash 复制代码
sudo nginx -t && sudo systemctl reload nginx

7. 运行安装向导

浏览器访问:

arduino 复制代码
https://www.seekersferry.com/blog/install.php

按页面提示填写数据库信息、管理员账号等。完成后删除或重命名 install.php


8. 最后检查

  1. 后台登录:

    arduino 复制代码
    https://www.seekersferry.com/blog/admin
  1. 确保 usr/uploads 可写,上面 SELinux 标签正确。

  2. SSL、防火墙(firewalld)等根据需要打开/关闭端口。

最后效果如下:

补充: 安装插件

  1. 官网上插件列表:docs.typecho.org/plugins/dow...
  2. github上的插件:github.com/typecho-fan...
相关推荐
qcx2313 小时前
【系统学AI】25 论文导读 ①:两篇改变 AI 的开山之作——Attention Is All You Need & ReAct
前端·人工智能·react.js·transformer
蝎子莱莱爱打怪14 小时前
🚀 🚀🚀2026年5月GitHub月榜精选:17个项目中挑出10个推荐,实操4个!
人工智能·后端·ai编程
kyriewen14 小时前
大文件上传最全指南:分片、断点续传、秒传,一篇就够了
前端·javascript·面试
砍材农夫15 小时前
物联网实战:Spring Boot MQTT | MQTT 设备模拟器演示(附源码)
java·spring boot·后端·物联网·spring·netty
我叫黑大帅15 小时前
解决聊天页内部滚轮改为页面滚动问题
javascript·后端·面试
郑洁文15 小时前
基于Python的Web命令执行漏洞自动化检测系统
前端·python·网络安全·自动化
新酱爱学习15 小时前
手搓 10 个 Skill 后,我把重复劳动收敛成了一套零依赖 CLI 工具
前端·javascript·人工智能
IT_陈寒16 小时前
Python的线程池居然把我坑在了垃圾回收这块
前端·人工智能·后端
研☆香16 小时前
es6新特性功能介绍(一)
前端·ecmascript·es6