centos7部署Typecho

1. 背景

服务器内存资源有限(2GB),原Halo博客基于Java技术栈,运行时内存占用超过1GB,占据了服务器总内存一半以上。而博客本身属于低频使用服务,这样的资源占用于其实际使用频率严重不匹配。
更关键的是,剩余内存不足以支撑其他必要应用服务的部署,服务器资源的有效利用率极低。Typecho内存占用远低于Halo,替换后可将博客服务的资源消耗降至最低,为其他必要应用腾出部署空间。

2. 前置说明

内容说明
使用场景Centos 7, 已部署Nginx,域名已解析
技术栈Nginx(已有)/php/Sqlite
预期结果通过已有域名访问Typecho博客
前置条件Nginx正常运行,域名正常解析,具备root或sudo权限
  • 为了方便,本文所有命令均root账户执行。

3. 安装过程

3.1 安装php环境

  • 安装php所需内容

    # 1. 安装必须配置
    yum install -y php php-fpm php-gd php-mbstring php-xml php-curl php-zip php-sqlite3
    
    # 2. 启动开机自启
    systemctl enable --now php-fpm
  • 更改php-fpm运行用户【防止出现权限问题】,9000默认端口被占用改成19000

    • 编辑配置

      vim /etc/php-fpm.d/www.conf
    • 找到并修改

      listen = 127.0.0.1:19000    
      
      user = nginx
      group = nginx
      
      listen.owner = nginx
      listen.group = nginx
      listen.mode = 0660
  • 保存,重启php-fpm

    systemctl restart php-fpm

3.2 安装Typecho

  • 下载Typecho1.3.0,官网地址,点击跳转 https://typecho.org/download
  • 上传文件到服务器中
  • 创建网站目录并授权
    【由于我准备使用的域名是blog.caihn.cc,因此后面目录也是如此】

    # 1. 创建目录
    mkdir -p /var/www/blog.caihn.cc
    # 2. 进入目录
    cd /var/www/blog.caihn.cc
    # 3. 将文件放到当前目录解压
    unzip typecho.zip
    
    # 4. 授权文件给nginx用户,由于我的nginx是nginx用户启动的,因此这里授权
    chown -R nginx:nginx /var/www/blog.caihn.cc
    chmod -R 770 /var/www/blog.caihn.cc/usr

3.3 配置Nginx站点

nginx中的证书都是通用的,并且已经将所有请求都跳转到https中,以下是nginx的跳转配置

server {
  listen 80;
  listen [::]:80;
  server_name caihn.cc *.caihn.cc;
  rewrite ^(.*)$ https://$host$1;  
}

server {
    listen 80  default_server;
    listen 443 ssl default_server;
    server_name  _;
    ssl_certificate     /etc/nginx/ssl/caihn.cc/caihn.cc.pem;
    ssl_certificate_key /etc/nginx/ssl/caihn.cc/caihn.cc.key;
    return 404;
}
  • 配置blog对应的配置

    server {
      listen 443 ssl;
      server_name caihn.cc blog.caihn.cc www.caihn.cc;
      root /var/www/blog.caihn.cc;
      index index.php index.html;
    
      ssl_certificate /etc/nginx/ssl/caihn.cc/caihn.cc.pem;
      ssl_certificate_key /etc/nginx/ssl/caihn.cc/caihn.cc.key;
    
      # Typecho 伪静态规则
      location / {
          try_files $uri $uri/ /index.php$is_args$args;
      }
    
      # PHP解析,确认你php-fpm端口为19000
      location ~ \.php$ {
          fastcgi_pass 127.0.0.1:19000;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
      }
    
      # 禁止访问 .ht 隐藏文件
      location ~ /\.ht {
          deny all;
      }
    }
  • nginx语法验证并重载

    # 1. 语法验证
    nginx -t
    
    # 2. 重载
    nginx -s reload

4. 验证结果

  • 浏览器打开https://blog.caihn.cc这里打开的已经是我换了主题的页面
    image.png
  • 后台页面https://blog.caihn.cc/admin
    image.png

5. 后续内容

  • 主题选择:挑选了很久,我这里选择的主题是PureLoveForTypecho
    但是这个主题和其他插件有很多不合适的地方,需要多多注意,为了保持这个主题,我就用最原始的内容
  • 特别点:

    • 备案更换站点信息
    • 主题之前替换会丢失之前的内容
    • 归档页需要自己创建

6. 总结

本次迁移的核心目标是释放服务器内存资源。在 2GB 内存限制下,原 Halo 博客(Java + MySQL)占用超过一半内存,导致其他必要服务无法部署。替换为 Typecho(PHP + SQLite)后,博客服务的内存占用从 1GB+ 降至极低水平,服务器资源得以重新分配。

部署过程顺利完成,站点已通过 https://blog.caihn.cc 正常访问,后台管理功能可用。后续主题与插件的适配属于个人化调整,不影响本次迁移的核心成果。

至此,博客服务不再是服务器资源的“负担”,服务器也具备了承载更多应用的能力。

typecho部署

我来吐槽

*

*