【Docker系列】 VPS通过Docker搭建部署Typecho博客
标签搜索

【Docker系列】 VPS通过Docker搭建部署Typecho博客

jack698
2024-05-18 / 0 评论 / 14 阅读 / 正在检测是否收录...

创建安装目录

mkdir -p /opt/docker-data/typecho

cd /opt/docker-data/typecho

创建几个相关的文件

  • 创建mysql:

    cd /opt/docker-data/typecho
    
    # 在typecho目录下创建mysql的.env文件
    vim mysql.env
  • 在mysql.env文件里输入一下内容:

    MYSQL_ROOT_PASSWORD=root_pass  # 数据库的root密码
    MYSQL_DATABASE=typecho  # 数据库名称
    MYSQL_USER=username  # 数据库用户名
    MYSQL_PASSWORD=password  # 数据库用户密码
  • 创建php-fpm:
    其中 php 目录为 php-fpm 的 Dockerfile,在官方镜像的基础上,添加了 PDO_MYSQL(如果使用 MySQL 作为 Typecho 的数据库,则需安装此扩展),并设置 buffer4kb,即一个内存页。同时设置了时区为RPC
    来源于:issue: https://github.com/typecho/typecho/issues/1090

    cd /opt/docker-data/typecho
    
    mkdir php
    
    cd php
    
    vim Dockerfile
  • 输入以下命令内容:

    FROM php:7.3.29-fpm
    RUN apt-get update \
      && docker-php-ext-install pdo_mysql \
      && echo "output_buffering = 4096" > /usr/local/etc/php/conf.d/php.ini \
      && echo "date.timezone = PRC" >> /usr/local/etc/php/conf.d/php.ini
  • 创建nginx
    nginx 的配置要注意的是需要有 rewrite 规则(后续typecho后台有一个地址重写功能),如果需要指定域名的话,需要写 server_name 字段。这里我并没有指定443端口,因为我们后面用到了反向代理。

    cd /opt/docker-data/typecho
    
    mkdir nginx
    
    cd nginx
    
    vim default.conf
  • 在default.conf这个文件里,输入以下命令内容:

    server {
      listen 80 default_server;
      root /var/www/html;
      index index.php;
    
      access_log /var/log/nginx/typecho_access.log main;
      if (!-e $request_filename) {
          rewrite ^(.*)$ /index.php$1 last;
      }
      location / {
          index index.html index.htm index.php;
    
          if (!-e $request_filename) {
              rewrite . /index.php last;
          }
      }
    
      location ~ \.php(.*)$ {
          fastcgi_pass   php:9000;
          fastcgi_index  index.php;
          fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;
          fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
          fastcgi_param  PATH_INFO  $fastcgi_path_info;
          fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
          fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include        fastcgi_params;
      }
    }
  • 下载typecho博客源代码,并解压源码压缩包:

    # 在typecho文件夹下再创建一个typecho文件夹,作为源码存放的文件夹
    mkdir -p /opt/docker-data/typecho/typecho
    
    # 进入刚创建的二级typecho文件夹:
    cd /opt/docker-data/typecho/typecho
    
    # 在二级typecho文件夹里下载官方源码:
    wget https://github.com/typecho/typecho/releases/download/v1.2.0/typecho.zip
    
    # 安装zip解压缩工具:
    apt install zip -y 
    
    # 解压缩刚下载的源码到同级目录里:
    unzip typecho.zip
  • 创建docker-compose.yml文件:

    # 进入typecho的一级目录
    cd /opt/docker-data/typecho
    
    # 创建docker-compose文件
    vim docker-compose.yml
  • 输入docker-compsoe命令内容:

    version: "3"
    
    services:
    nginx:
      image: nginx
      ports:
        - "8223:80"    # 左边可以改成任意没使用的端口
      restart: always
      environment:
        - TZ=Asia/Shanghai
      volumes:
        - ./typecho:/var/www/html
        - ./nginx:/etc/nginx/conf.d
        - ./logs:/var/log/nginx
      depends_on:
        - php
      networks:
        - web
    
    php:
      build: php
      restart: always
      expose:
        - "9000"       # 不暴露公网,故没有写9000:9000
      volumes:
        - ./typecho:/var/www/html
      environment:
        - TZ=Asia/Shanghai
      depends_on:
        - mysql
      networks:
        - web
    
    mysql:
      image: mysql:5.7
      restart: always
      environment:
        - TZ=Asia/Shanghai
      expose:
        - "3306"  # 不暴露公网,故没有写3306:3306
      volumes:
        - ./mysql/data:/var/lib/mysql
        - ./mysql/logs:/var/log/mysql
        - ./mysql/conf:/etc/mysql/conf.d
      env_file:
        - mysql.env
      networks:
        - web
    
    networks:
    web:

安装

  • 一切准备就绪后,按常规docker-compose的安装方式安装

    docker-compose up -d 
  • 反向代理:
    1,通过宿主机http://<主机IP>:8223即可访问typecho。
    2,可通过NPM或者雷池来配置反代,并且申请配置SSL证书。
  • 配置数据库:
    1,反代后通过域名打开typecho页面,并初始化部署配置。
    2,数据库配置注意事项:

    1,数据库地址必须填:mysql  # 因为mysql是在容器内容部运行的,不能填localhost
    
    2,页面给出mysql配置文件配置命令后,进到对应目录创建空白文件并填入相应命令:
    # 进入typecho的二级目录:
    cd /opt/docker-data/typecho/typecho
    
    # 创建编辑mysql的php配置文件:
    vim config.inc.php

安装Joe主题

# 进入typecho的二级目录对应的主题文件夹
cd /opt/docker-data/typecho/typecho/usr/themes

# 直接git拉取主题文件到主题文件夹
git clone https://github.com/HaoOuBa/Joe.git
5

评论

博主关闭了所有页面的评论