从零开始搭建Typecho+Joe主题的博客

行云流水
2022-03-17 / 4 评论 / 2,034 阅读 / 正在检测是否收录...

前言

Typecho是最近比较火的博客系统,见到的第一眼就被它的简洁吸引。打算折腾一下了。Joe主题又是我非常喜欢的一款主题。下面记录一下从零开始搭建博客的整个过程。完成后和本站相同的效果。

我的同款主题博客 IT技术家园: https://www.itbunan.xyz

准备资源

要搭建自己的博客,需要一台vps,一个域名。因为开始,博客也没有什么人访问。完全可以使用阿里云 或者 腾讯云 最低配版的主机。域名便宜的几块钱一年时间。如果不想做备案的话,可以选择香港节点,这样就免去了备案,网络速度也很快。

云主机

域名
注册阿里云或腾讯云后,直接通过控制台“域名入口购买即可”。购买域名后,将域名解析到刚刚买的vps外网IP上(做实验也可以通过绑定hosts实现)。

系统初始化

云主机购买完成后,通过ssh远程登录。然后进行一些初始化配置。安装必要的软件,方便后期的管理维护。

具体的配置内容见我的另一篇文章: docker和docker-compose一键安装脚本

安装完成后验证

部署服务

我们采用 lnmp 架构运行Typecho程序,下面基于docker部署nginx + mysql + php

编辑docker-compose.yml文件

version: "2"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    restart: always
    volumes:
      - ./app:/www/web
      - ./services/nginx/conf:/etc/nginx
      - /var/log/lnmp/nginx:/www/web_logs
    networks:
        - lnmp-net
    depends_on:
      - php
  php:
    build:
      context: ./services/php/docker/
    restart: always
    volumes:
      - ./app:/www/web
      - ./services/php/etc/php74.ini:/usr/local/etc/php/conf.d/php.ini
      - /var/log/lnmp/php/:/logs/
    networks:
        - lnmp-net
  mariadb:
    image: mariadb:10.3.28
    ports:
      - "3306:3306"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./services/mariadb/my.cnf:/etc/mysql/my.cnf
      - ./data/mariadb:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: mariadb@123
      TIME_ZONE: Asia/Shanghai
    restart: always
    networks:
      -  lnmp-net
networks:
  lnmp-net:
    driver: bridge

编辑nginx配置文件


位置:services/nginx/conf/conf.d/default.conf
内容:

server {
    listen     80;
    server_name  www.itbunan.xyz;
    root  /www/web/typecho/;
    server_tokens off;
    index index.php index.html index.htm;
    access_log /www/web_logs/access.log wwwlogs;
    error_log  /www/web_logs/error.log  notice;

    if (-f $request_filename/index.html){
        rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
        rewrite (.*) $1/index.php;
    }
    if (!-e $request_filename){
        rewrite (.*) /index.php;
    }
    
    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        include fcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires      30d;
    }
    location ~ .*\.(js|css)?$ {
        expires      12h;
    }
}

配置php.ini

位置: services/php/etc/php74.ini
内容:

zend_extension=opcache.so
opcache.enable=0
opcache.enable_cli=0

#cert
openssl.cafile=/usr/lib/ssl/cert.pem

#上传文件限制
file_uploads = On
memory_limit = 256M
upload_max_filesize = 32M
post_max_size = 32M
max_execution_time = 360

启动服务

docker-compose up -d

php功能测试

mkdir -p app/typecho && echo '<?php phpinfo(); ?>' > app/typecho/index.php

显示如下,则服务配置正常:

安装博客

创建数据库

CREATE DATABASE `typecho`  DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

安装Typecho

通过 typecho下载页面 下载最新的Typecho源码,解压后上传到项目"app/typecho"目录下。
通过浏览器访问 http://www.itbunan.xyz,会自动跳转到安装页面安装。

安装Joe主题

将Joe下载到"app/typecho/usr/themes"目录下,然后通过后台启用。

git clone https://github.com/HaoOuBa/Joe.git

启用后:

主题官方展示站

FAQ

首页文章数量

首页文章数量默认5条,改成10条

递归改变目录权限

find . -type d -exec chmod 755  {} \;
find . -type f -exec chmod 644  {} \;

最新评论在前

上传图片失败

chown  1000:tape  usr/uploads/

评论 (4)

取消
只有登录/注册用户才可评论
  1. 头像
    Lightsky
    中国山西省 · Android · Google Chrome
    沙发

    不用面板怎么添加HTTPS。请问可以分享吗?

    回复
    1. 头像
      行云流水 作者
      中国黑龙江省 · MacOS · Google Chrome
      @ Lightsky

      修改nginx的配置,具体参考https://www.itbunan.xyz/xtfw/315.html

      回复
  2. 头像
    中国四川省 · Windows 10 · Google Chrome
    板凳

    表情支持

    回复
  3. 头像
    行云流水 作者
    中国江苏省 · MacOS · Google Chrome
    地毯

    支持博主,一定多分享

    回复