从零开始搭建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...
相关推荐
代码老y几秒前
Spring Boot项目中大文件上传的高级实践与性能优化
spring boot·后端·性能优化
paishishaba3 分钟前
处理Web请求路径参数
java·开发语言·后端
神仙别闹5 分钟前
基于Java+MySQL实现(Web)可扩展的程序在线评测系统
java·前端·mysql
程序无bug7 分钟前
Java中的8中基本数据类型转换
java·后端
雨落倾城夏未凉11 分钟前
8.Qt文件操作
c++·后端·qt
51714 分钟前
Django中序列化与反序列化
后端·python·django
也许明天y15 分钟前
Spring Cloud Gateway 自定义分布式限流
redis·后端·spring cloud
心.c20 分钟前
react当中的this指向
前端·javascript·react.js
Java水解27 分钟前
Web API基础
前端
闲鱼不闲28 分钟前
实现iframe重定向通知父级页面跳转
前端