从零开始搭建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...
相关推荐
丘山子4 分钟前
分享链接格式不统一,rel="share-url" 提案试图解决这个问题
前端·面试·html
G探险者13 分钟前
如何在批量创建 `DefaultMessageListenerContainer` 时避免阻塞问题
后端
我崽不熬夜29 分钟前
List、Set、Map,你真的会选用吗?
java·后端·java ee
JustHappy1 小时前
「Versakit攻略」🔥Pnpm+Monorepo+Changesets搭建通用组件库项目和发包流程
前端·javascript·vue.js
展信佳_daydayup1 小时前
01 基础篇-虚拟机网络配置
后端
紫金龙腾1 小时前
EDGE 、chrome、浏览器显示“由你的组织管理”
前端·chrome·edge
用户66197734585751 小时前
Vue3笔记
前端·vue.js
uhakadotcom2 小时前
最近rust生态有啥能力更新?
后端·面试·github
long3162 小时前
适配器模式 java demo
java·javascript·后端·程序人生·设计模式·适配器模式
2401_837088503 小时前
ref 简单讲解
前端·javascript·vue.js