从零开始搭建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...
相关推荐
风无雨18 分钟前
GO启动一个视频下载接口 前端可以边下边放
前端·golang·音视频
kangkang-1 小时前
PC端基于SpringBoot架构控制无人机(二):MavLink协议
java·spring boot·后端·无人机
aha-凯心1 小时前
前端学习 vben 之 axios interceptors
前端·学习
熊出没1 小时前
Vue前端导出页面为PDF文件
前端·vue.js·pdf
VOLUN1 小时前
Vue3项目中优雅封装API基础接口:getBaseApi设计解析
前端·vue.js·api
用户99045017780091 小时前
告别广告干扰,体验极简 JSON 格式化——这款工具让你专注代码本身
前端
前端极客探险家2 小时前
告别卡顿与慢响应!现代 Web 应用性能优化:从前端渲染到后端算法的全面提速指南
前端·算法·性能优化
麦兜*2 小时前
Spring Boot秒级冷启动方案:阿里云FC落地实战(含成本对比)
java·spring boot·后端·spring·spring cloud·系统架构·maven
袁煦丞2 小时前
【局域网秒传神器】LocalSend:cpolar内网穿透实验室第418个成功挑战
前端·程序员·远程工作
江城开朗的豌豆2 小时前
Vuex数据突然消失?六招教你轻松找回来!
前端·javascript·vue.js