docker分离Typecho_docker-compose一键部署typecho

前提:已安装docker,域名已解析,已配置https,如没有域名 调整相关配置

编写DockerfileFROM php:7.2.3-fpm

RUN apt-get update

RUN docker-php-ext-install pdo_mysql

保存Dockerfile

在Dockerfile目录构建镜像docker build -t scofieldpeng/php:7.2.3-fpm .

cd /data/app/

创建docker编排文件touch docker-compose.yml

mysql文件夹,用来存放mysql数据,方便后期导出mkdir mysql

mysql镜像的环境touch mysql.env

nginx配置文件touch typecho.conf

克隆官方仓库git clone https://github.com/typecho/typecho.git

mysql.env中的内容

MySQL的root用户默认密码,这里自行更改

MYSQL_ROOT_PASSWORD=111111

MySQL镜像创建时自动创建的数据库名称

MYSQL_DATABASE=typecho

MySQL镜像创建时自动创建的用户名

MYSQL_USER=typecho

MySQL镜像创建时自动创建的用户密码

MYSQL_PASSWORD=111111

typecho.conf的内容为server {

listen 0.0.0.0:80;

root /app;

index index.php;

server_name www.baidu.com baidu.com;

rewrite ^ https://$server_name$request_uri? permanent;

access_log /var/log/nginx/typecho_access.log main;

if (-f $request_filename/index.html){

rewrite (.*) $1/index.html break;

}

if (-f $request_filename/index.php){

rewrite (.*) $1/index.php;

}

if (!-f $request_filename){

rewrite (.*) /index.php;

}

location ~ .*\.php(\/.*)*$ {

##try_files $uri = 404;

include fastcgi_params;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_index index.php;

fastcgi_pass php-fpm:9000;

}

}

server {

listen 443 ssl;

root /app;

index index.php;

server_name www.baidu.com baidu.com;

ssl_certificate /etc/letsencrypt/live/www.baidu.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/www.baidu.com/privkey.pem;

ssl_session_timeout 1d;

ssl_session_cache shared:SSL:50m;

ssl_session_tickets on;

ssl_dhparam /etc/ssl/private/dhparam.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK';

ssl_prefer_server_ciphers on;

access_log /var/log/nginx/typecho_access.log main;

if (-f $request_filename/index.html){

rewrite (.*) $1/index.html break;

}

if (-f $request_filename/index.php){

rewrite (.*) $1/index.php;

}

if (!-f $request_filename){

rewrite (.*) /index.php;

}

location ~ .*\.php(\/.*)*$ {

##try_files $uri = 404;

include fastcgi_params;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_index index.php;

fastcgi_pass php-fpm:9000;

}

}

docker-compose.yml中内容

version: '2'

services:

nginx:

image: nginx:1.13.9-alpine

ports:

- "80:80"

- "443:443"

restart: always

volumes:

- ./typecho:/app

- ./typecho.conf:/etc/nginx/conf.d/default.conf

- logs:/var/log/nginx

- /etc/ssl:/etc/ssl

- /etc/letsencrypt:/etc/letsencrypt

links:

- php-fpm

depends_on:

- php-fpm

php-fpm:

image: scofieldpeng/php:7.2.3-fpm

restart: always

volumes:

- ./typecho:/app

links:

- db

depends_on:

- db

db:

image: mysql:5.7.21

restart: always

ports:

- 7878:3306

volumes:

- ./mysql:/var/lib/mysql

- logs:/var/logs/mysql

- /data/app/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf

env_file:

- mysql.env

volumes:

logs:

注意

最先docker-compose没有挂载

/data/app/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf

导致Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes

所以第一次运行docker-compose up -d

根据域名访问检查无错误后docker-compose down

cd /data/app/mysql/

vim mysqld.cnf

在[mysqld]下加入

max_allowed_packet=400M

重新运行docker-compose up -d

我的mysqld.cnf[mysqld]

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

datadir = /var/lib/mysql

#log-error = /var/log/mysql/error.log

# By default we only accept connections from localhost

#bind-address = 127.0.0.1

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

max_allowed_packet=400M

直接在第一次的时候复制到/data/app/mysql/挂载上去,避免报错

最后

Typecho 安装好后,默认的后台路径是”你的域名/admin“,为了提高安全性,把访问路径设置为“你的域名/自定义文件夹”。

网站根目录下的config.inc.php文件里,找到:

后台路径(相对路径)

define('__TYPECHO_ADMIN_DIR__', '/admin/');

把这个/admin/路径改成自己想要的路径就行了,同时把网站中的admin文件夹改成相同的名字。重新建立个admin文件夹,建立index.html文件,里面可以随意写嘲讽内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值