docker-compose 配置
- 这里将原有的typecho代理成了https
docker images下载地址
mysql: https://package.emal.cc/httpd/img/mysql.tar
typecho: https://package.emal.cc/httpd/img/typecho.tar
nginx: https://package.emal.cc/httpd/img/nginx.tar
创建目录
- certificates 证书存放目录
- mysql 数据库数据存放目录
typecho 博客主题插件存放目录
mkdir -p certificates mysql typecho
创建文件
- config.inc.php php配置文件
- mysql.env mysql配置文件
nginx.conf nginx配置文件
for i in config.inc.php mysql.env nginx.conf do touch $i done
添加权限
执行命令
chmod -R 755 ./
文件内容
config.inc.php
<?php //start debug //define('__TYPECHO_DEBUG__', true); // site root path define('__TYPECHO_ROOT_DIR__', dirname(__FILE__)); /** 开启HTTPS */ define('__TYPECHO_SECURE__',true); // plugin directory (relative path) define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins'); // theme directory (relative path) define('__TYPECHO_THEME_DIR__', '/usr/themes'); // admin directory (relative path) define('__TYPECHO_ADMIN_DIR__', '/admin/'); // register autoload require_once __TYPECHO_ROOT_DIR__ . '/var/Typecho/Common.php'; // init \Typecho\Common::init(); // config db $db = new \Typecho\Db('Pdo_Mysql', 'typecho_'); // 由于我们的typecho后续也是允许在docker里,所以根据之前的网络配置我们可以写db来连接同在docker部署的mysql,注意端口时docker内的端口,而不是映射到docker外的 $db->addServer(array ( 'host' => 'db', 'port' => 3306, 'user' => 'root', 'password' => '123456', 'charset' => 'utf8mb4', 'database' => 'typecho', 'engine' => 'InnoDB', ), \Typecho\Db::READ | \Typecho\Db::WRITE); \Typecho\Db::set($db); /** 开启HTTPS */ define('__TYPECHO_SECURE__'true); define('__TYPECHO_SECURE__',true);mysql.env
# MySQL的root用户默认密码,这里自行更改 MYSQL_ROOT_PASSWORD=123456 # MySQL镜像创建时自动创建的数据库名称 MYSQL_DATABASE=typecho # MySQL镜像创建时自动创建的用户名 MYSQL_USER=typecho # MySQL镜像创建时自动创建的用户密码 MYSQL_PASSWORD=123456nginx.conf
############################## 公共资源 ############################## # SSL优化参数 共享SSL参数(减少重复配置) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; server { listen 443 ssl; server_name demo.cloud.com; ssl_certificate /etc/nginx/ssl/fullchain.pem; # 将这路径替换为你的证书路径 ssl_certificate_key /etc/nginx/ssl/privkey.pem; # 将这路径替换为你的证书私钥路径 # 关闭直接IP访问 if ($host != "demo.cloud.com") { return 444; } # 全站反向代理配置 location / { proxy_pass http://10.7.0.15:8003; } # 强制HTTPS跳转 error_page 497 https://$host$request_uri; } server { listen 8003; server_name demo.cloud.com; return 301 https://$server_name$request_uri; } ############################## 公共资源 ############################## # 公共代理参数文件 proxy_params proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 可选:WebSocket支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";docker-compose.yml
services: typecho: #image: joyqi/typecho:1.2.0-php7.4-apache image: joyqi/typecho:1.3.0-php7.4-apache container_name: typecho-typecho restart: always ports: - 8003:80 volumes: - ./typecho:/app environment: - TYPECHO_SITE_URL=https://cloud.emal.cc networks: xy: ipv4_address: 172.19.0.10 logging: driver: "json-file" options: max-size: "50m" max-file: "3" db: image: mysql:5.7.21 container_name: typecho-mysql restart: always ports: - 13306:3306 volumes: - ./mysql:/var/lib/mysql env_file: - mysql.env networks: xy: ipv4_address: 172.19.0.11 logging: driver: "json-file" options: max-size: "50m" max-file: "3" # nginx: # image: nginx:latest # restart: always # ports: # - 8002:80 # - 11443:443 # volumes: # - ./nginx.conf:/etc/nginx/conf.d/default.conf # - ./certificates:/etc/nginx/ssl # networks: # xy: # ipv4_address: 172.19.0.12 # depends_on: # - typecho networks: xy: driver: bridge ipam: config: - subnet: 172.19.0.0/16
typecho文件设置
编辑Typecho站点根目录下的文件config.inc.php加入下面一行配置,否则网站后台还是会调用HTTP资源。
/* 开启HTTPS / define('__TYPECHO_SECURE__',true);
启动typecho
执行命令
docker-compose up -d
Typecho设置
- 登录Typecho后台 -> 设置 -> 基本设置 -> 站点地址改成https的域名是必须的
或者直接下载博主写好的docker-compose
下载后,修改docker-compose里面的域名,然后根据自己的域名生成证书,替换certificates里面的证书
wget https://packages.emal.cc/package/typecho/blogc-20250527.tar.gz # 更换域名 sed -i 's/demo.cloud.com/你的域名/g' docker-compose.yml sed -i 's/demo.cloud.com/你的域名/g' nginx.conf sed -i 's/10.7.0.15/你部署机器的IP/g' nginx.conf # 部署typecho docker-compose up -d
访问地址
数据库地址:你本地IP:13306
数据库密码:部署目录文件 mysql.env- 原著:元气满满
- 转载请添加原链接
qqq
瑕不掩瑜,稍加打磨必成佳作。
这篇文章提供了宝贵的经验和见解,对读者有很大的启发和帮助。
选材新颖独特,通过细节描写赋予主题鲜活生命力。