0、准备
先在服务器上安装好 docker 及 docker-compose
1、下载 cloudflared
2、登录
进入 cloudflared.exe 所在目录
打开 cmd
cloudflared login
登录,之后选择一个托管在 cloudflare 上的域名
会在用户根目录生成”.cloudflared” 文件夹
里面有 cert.pem, 证书
3、创建有一个隧道
cloudflared tunnel create <隧道名字>
会在”.cloudflared” 文件夹,生成一个<id>.json
文件,记住 id,之后更名为 “id.json”
忘记隧道名和 ID 可以通过下面命令找回
cloudflared tunnel list
3.5、添加解析
cloudflared tunnel route dns <隧道名> <域名>
或者在仪表盘上,创建一个 CNAMEA,域名指向 <id>.cfargotunnel.com
4、创建配置文件
创建一个 “config.yaml” 文件
tunnel: <id>credentials-file: /etc/cloudflared/tunnel/id.json # 别改,路径为docker映射protocol: quicingress:- hostname: <域名> service: http://wp:80- service: http_status:404
修改 id 和域名
5、建立文件夹结构
blog├── html├── mariadb_data├── config│ └── uploads.ini├── cloudflared│ ├── config.yaml│ └── tunnel│ └── id.json└── docker-compose.yml
blog 为根文件夹 html 之后放置 workpress 文件,无需创建 mariadb_data 之后放置数据库文件,无需创建
5.5uploads.ini
是为了增加上传限制大小
file_uploads = Onmemory_limit = 256Mupload_max_filesize = 10Mpost_max_size = 10Mmax_execution_time = 600
6、docker-compose.yml
version: "3"services: argo_tunnel: image: cloudflare/cloudflared:latest volumes: - ./cloudflared:/etc/cloudflared restart: always command: 'tunnel --config /etc/cloudflared/config.yaml run' # 别改 user: root depends_on: - wp
wp: image: wordpress:latest restart: always ports: - "80:80" volumes: - ./html/:/var/www/html - ./config/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini depends_on: - mariadb_wp
mariadb_wp: image: mariadb:latest environment: MYSQL_ROOT_PASSWORD: Zzh125475 MYSQL_DATABASE: wordpress MYSQL_USER: root MYSQL_PASSWORD: Zzh125475 volumes: - ./mariadb_data:/var/lib/mysql restart: always privileged: true
注意数据库账号密码
7、将 blog 文件夹,传到服务器
启动
docker-compose up -d
查看日志
docker-compose logs -f --tail=30
移除所有容器
docker-compose down
7.5 迁移
把这个 “blog” 文件夹打包直接拷走到其他服务器重启启动就行了
移植 wordpress 后出现无法安装插件,主题,提示需要 ftp 服务
修改 wordpress 配置即可。 在 wordpress 安装目录中找到 wp-config.php 文件,在文件中添加以下代码:
define("FS_METHOD","direct");define("FS_CHMOD_DIR", 0777);define("FS_CHMOD_FILE", 0777);
然后给 wordpress 安装目录开放权限:
chmod -R 777 <wordpress安装目录>
8、局域网访问
workpress 只支持后台设置的域名访问,局域网直接输 ip 是访问不了的
进入 C:\Windows\System32\drivers\etc
修改 hosts,添加一条解析
192.168.16.239 b.zzh.one
然后本地通过域名就能访问局域网了
8.5 解除域名限值
需要通过其他域名或者局域网访问 wordpress 时
修改 wordpress 配置即可。 在 wordpress 安装目录中找到 wp-config.php 文件,在文件中添加以下代码:
define('WP_SITEURL','http://'.$_SERVER['HTTP_HOST']);define('WP_HOME','http://'.$_SERVER['HTTP_HOST']);define( 'WP_CONTENT_URL', '/wp-content');
9、优化速度
frp
目前使用 cloudflare tunnel 穿透,好处是免费,安全,但是延迟有点高
使用 香港服务器 做 frp 中转,可以提高浏览体验
安装 frp 看这篇 -> frp 内网穿透
反向代理
先到 cloudflare 上添加一条解析,指派一个域名给中转服务器 fast.sanqi.one
然后通过 nginx,反向代理服务器上的中转端口
刚好中转服务器上安装了宝塔,这次就使用宝塔来设置反向代理
到宝塔上新增一个站点,域名填写 fast.sanqi.one,下方选项都选不创建
打开站点设置,通过 Let’s Encrypt,添加 ssl
修改配置文件,在下方加入:
location / {#注意我frp配置的是http协议,所以端口为7080,proxy_pass http://127.0.0.1:7080;rewrite ^/(.*)$ /$1 break;proxy_redirect off;proxy_set_header Host $host:80;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade-Insecure-Requests 1;proxy_set_header X-Forwarded-Proto https;#解决nginx反向代理Mixed Content和Blockable问题add_header Content-Security-Policy upgrade-insecure-requests;}
同时删除配置文件中的多余的过滤限值
现在就可以通过 fast.sanqi.one 来访问 wordpress 了