首页
直播
留言
统计
关于
推荐
造价e星球
随想
Search
1
群晖DSM7.x通过acme.sh全自动更新并部署SSL证书(2024年)
1,600 阅读
2
群晖 或 NAS Docker-compose方式私有化部署minio,Nginx Proxy Manager反向代理, 自建S3对象存储 (含两个坑的解决方案和思源笔记配置)
688 阅读
3
Docker-compose 部署思源笔记实现多终端多平台协作同步
687 阅读
4
子比主题,由搜索的历史记录过多(存在 Cookie中),新增搜索记录访问时,由于请求头过大导致访问报错(502 Bad Gateway openresty)
208 阅读
5
欢迎来摸鱼
194 阅读
默认分类
造价
定额
清单
合约
算量
建站
wordpress
Typecho
服务器
群晖
routeros
vps
R68S
T201P
H88K
Docker
折腾
维修
数码
拍摄
器材
改装
手机
app
登录
Search
标签搜索
wp
应用
docker
鱼塘
累计撰写
12
篇文章
累计收到
0
条评论
首页
栏目
默认分类
造价
定额
清单
合约
算量
建站
wordpress
Typecho
服务器
群晖
routeros
vps
R68S
T201P
H88K
Docker
折腾
维修
数码
拍摄
器材
改装
手机
app
页面
直播
留言
统计
关于
推荐
造价e星球
随想
搜索到
12
篇与
的结果
2024-05-05
在wordporess 中 <iframe>不希望用户通过源代码查看到网址的方法
在WordPress中,如果您希望在编辑器中插入iframe代码时,不希望用户通过源代码查看到网址,您可以考虑使用插件或者自定义功能来实现这一目的。这可以增加一些安全性,防止用户轻易获取到您的网址信息。一种方法是创建一个自定义短代码,通过短代码来插入iframe代码,而不是直接在编辑器中粘贴完整的iframe代码。这样可以隐藏实际的网址,用户只能看到短代码的使用方式。以下是一个简单的示例:一、AIchat嵌入1、在您的WordPress主题的functions.php文件中添加以下代码: /* AIchat嵌入 */ function custom_iframe_shortcode($atts) { return '<iframe style="width: 100%; height: 500px;" src="https://www.***.com" frameborder="0"></iframe>'; } add_shortcode('custom_iframe', 'custom_iframe_shortcode');2、然后在WordPress编辑器中使用[custom_iframe]来插入iframe代码。二、AList嵌入1、在您的WordPress主题的functions.php文件中添加以下代码: /* AList嵌入 */ function custom_secure_iframe_shortcode($atts) { $atts = shortcode_atts( array( 'width' => '100%', 'height' => '1880', 'frameborder' => 'no', 'scrolling' => 'yes' ), $atts, 'custom_secure_iframe' ); $iframe = '<iframe src="https://www.***.com" width="' . esc_attr($atts['width']) . '" height="' . esc_attr($atts['height']) . '" frameborder="' . esc_attr($atts['frameborder']) . '" scrolling="' . esc_attr($atts['scrolling']) . '"></iframe>'; return $iframe; } add_shortcode('custom_secure_iframe', 'custom_secure_iframe_shortcode');2.在文章或页面中使用 [custom_secure_iframe] 短代码即可。
2024年05月05日
43 阅读
0 评论
0 点赞
2024-04-15
git存储库,利用Dockerfile部署打包构建镜像,提交代码至开源仓库
以https://github.com/labring/FastGPT举例1、克隆您在 GitHub 上 Fork 的存储库:git clone https://github.com/labring/FastGPT.git cd FastGPT cp ./projects/app/Dockerfile . 2、部署打包docker build -t dockername/fastgpt:tag --build-arg name=app .--build-arg 指定变量dockername/fastgpt:tag 镜像目录和名称. 本地目录3、提交代码至开源仓库docker login docker push dockername/fastgpt:tagdocker login 输入hub.docker.com的用户名和密码 登录dockername 自行修改成自已的账号
2024年04月15日
130 阅读
0 评论
0 点赞
2024-03-21
Docker-compose 部署思源笔记实现多终端多平台协作同步
docker部署docker及docker-compose安装方法网上很多。docker-compose.yml配置 version: "3.9" services: main: image: b3log/siyuan # docker 镜像 platform: amd64 # 操作系统 X64 container_name: siyuan # 容器名称 hostname: siyuan # 容器主机网络名 user: '1000:1000' # 读写用的用户名和用户组 command: ['--workspace=/siyuan/workspace/', '--accessAuthCode=自设密码'] # 指定工作目录/siyuan/workspace/,指定访问密码(密码自行设定) environment: # A list of time zone identifiers can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ=Asia/Shanghai # 设定时区 ports: # 端口映射 - 6806:6806 # “:” 之前可以自行设定端口 volumes: # 文件夹映射 - ./workspace:/siyuan/workspace # “:” 之前可以自行设定路径 “./” 表示当前目录 restart: unless-stopped # 总是主机重启后启用容器 networks: # 网络设置 - app_net # 网络名称 networks: app_net: external: true用Nginx Proxy Manager反向代理私有化部署minio, 自建S3对象存储,实现思源笔记各终端云同步具体详见: 群晖 或 NAS Docker-compose方式私有化部署minio,Nginx Proxy Manager反向代理, 自建S3对象存储 (含两个坑的解决方案和思源笔记配置)思源云配置
2024年03月21日
687 阅读
0 评论
0 点赞
2024-03-17
群晖 或 NAS Docker-compose方式私有化部署minio,Nginx Proxy Manager反向代理, 自建S3对象存储 (含两个坑的解决方案和思源笔记配置)
请注意文章时效(2024-03-17)【Minio是什么】Minio是一款兼容Amazon S3 API的高性能的对象存储服务器。如:aws的s3存储、阿里云的OSS、腾讯的COS等都属于S3协议的存储(也就是说:有了minio,可以弃用各种收费的对象存储和CDN等)。【NAS部署Minio适用人群】同时拥有一台云服务器以及一台有带公网IP的NAS用户。【为什么NAS部署Minio】云服务器带宽太低,空间不够,用来做穿透太鸡肋。本地NAS是7*24小时开机,空间足够大,但没有80和443端口。那么我们可以将网站部署在云服务器上,然后把对象存储建立在本地NAS上。网站访问速度将大大提高,本地NAS也存储了关键数据。【适合适用minio的网站或应用】wordpress博客,memos笔记,思源笔记,chevereto图床,兰空图床,alist网盘等一切支持部署s3兼容对象存储的应用。安装教程:(在群晖DSM7.0系统下搭建)1.第一步,新建、映射两个文件夹,config和data,我的路径:/volume1/docker/minio。2.第二步,新建docker-compose.yml,运行容器docker-compose.yml内容如下: version: "3.7" services: minio: image: minio/minio container_name: minio command: server --address ":9000" --console-address ":9090" /data # 指定服务端口和管理端口 ports: - 9080:9000 # :前面的自行定义,服务端口:API: http://IP:9080 - 9090:9090 # :前面的自行定义,管理端口:http://IP:9090 volumes: - ./data:/data # 数据目录 - ./config:/root/.minio # TLS 密钥和证书存放在 .config/certs environment: - MINIO_ROOT_USER=admin # 用户名,自行修改 - MINIO_ROOT_PASSWORD=password # root密码,自行修改 restart: unless-stopped # 总是重启容器 networks: #网络设置 - app_net # 网络名称 networks: app_net: external: true 运行容器:docker-compose up -d3.第三步,浏览器打开minio网址http://IP:9090,如下,输入之前设置的账号密码进入。4.第四步,新建用户(1)创建用户(Create User)例:siyuan(2)创建组(Create Group)并关联用户。例:vps 关联siyuan\保存(3)服务帐户/创建访问密钥 Create Access Key将会下载一个credentials.json证书文件,打开后有密钥稍后配置思源笔记会用的。5.第五步,创建桶(Create Bucket)。6.第六步,恭喜!可以上传文件了!。7.第七步,创建地区。 点击左侧settings--点击region--在server location输入cn,点save。(意思地区是cn)网页顶部会提示重启生效,点击Restart。等待小会,minio重启完成,刷新网页即可。至此minio所有的配置已经完成。你的数据如下:Endpoint: http://域名:9080地区region:cnaccess key:在第四步创建的secret key:在第四步创建的存储桶Bucket:blog(第五步创建的名字,例:siyuan)Url前缀:http://域名:9090/siyuan #siyuan 是创建桶的名称,你可以自行定义部署完成后,minio不需要登录,保持docker容器开着就行。如果要给不同应用不同的存储桶,只需额外创建对应存储桶就行(第五步),其他数据不需要变。需要注意的是,如果你需要部署对象存储的网站是https,需要在Nginx Proxy Manager里将9080端口进行反代,并进行端口映射。例如端口映射到99,那你的endpoint就变成了https://域名:99,同理url就变成了https://域名:99/siyuan。# Allow special characters in headers ignore_invalid_headers off; # Allow any size file to be uploaded. # Set to a value such as 1000m; to restrict file size to a specific value client_max_body_size 0; # Disable buffering proxy_buffering off; proxy_request_buffering off; location / { proxy_set_header Host $http_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; proxy_connect_timeout 300; # Default is HTTP/1, keepalive is only enabled in HTTP/1.1 proxy_http_version 1.1; proxy_set_header Connection ""; chunked_transfer_encoding off; proxy_pass http://minio:9000; } 你需要配置对象存储的网站,例如博客,图床。填入以上数据即可。附:官方文档:https://www.minio.org.cn/docs/minio/kubernetes/upstream/index.html思源笔记配置界面详解两个坑的解决方案1、Nginx Proxy Manager 无法反向代理官网Issues上这类问题很多:https://github.com/NginxProxyManager/nginx-proxy-manager/issues?q=minio具体解方法:详见官方文档:https://www.minio.org.cn/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html(1)api服务端反向代理配置如下:注意:Scheme* 要改成 https 如果没有放置TLS证书请用httpForward Hostname / IP* minio 是容器的名称 Forward Port * 99 是容器的内部端口,注意区分,不是映射到主机的端口9080# Allow special characters in headers ignore_invalid_headers off; # Allow any size file to be uploaded. # Set to a value such as 1000m; to restrict file size to a specific value client_max_body_size 0; # Disable buffering proxy_buffering off; proxy_request_buffering off; location / { proxy_set_header Host $http_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; proxy_connect_timeout 300; # Default is HTTP/1, keepalive is only enabled in HTTP/1.1 proxy_http_version 1.1; proxy_set_header Connection ""; chunked_transfer_encoding off; proxy_pass https://minio:99; } 注意:https://minio:99 # 要改成 https (如果没有放置TLS证书请用http),99 是容器内部端口管理端服务端反向代理配置如下:注意:Scheme* 要改成 https 如果没有放置TLS证书请用httpForward Hostname / IP* minio 是容器的名称 Forward Port * 9090 是容器的内部端口复制下列代码:location / { proxy_set_header Host $http_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; proxy_set_header X-NginX-Proxy true; # This is necessary to pass the correct IP to be hashed real_ip_header X-Real-IP; proxy_connect_timeout 300; # To support websockets in MinIO versions released after January 2023 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # Some environments may encounter CORS errors (Kubernetes + Nginx Ingress) # Uncomment the following line to set the Origin request to an empty string # proxy_set_header Origin ''; chunked_transfer_encoding off; proxy_pass https://minio:9090; } 注意:https://minio:9090 # 要改成 https(如果没有放置TLS证书请用http) ,9090 是容器内部端口如果不加这段代码,会出现如下情况(坑点,原因不明)会一直打圈,不能显示列表2、共享文件外部域分享,显示为内部域ip(127.0.0.1:端口) (大坑)经阅读官方文档:https://www.minio.org.cn/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html对于个人的私有化布署,不太友好,官方文档也没说清楚(1)需要设置两个变量:您还必须为MinIO部署设置以下环境变量:将 MINIO_SERVER_URL 设置为MinIO服务器的代理主机FQDN( https://minio.example.net ) 将 MINIO_BROWSER_REDIRECT_URL 设置为代理主机的 FQDN (https://example.net/minio/ui)(2)修改 docker-compose.yml内容如下: version: "3.7" services: minio: image: minio/minio container_name: minio command: server --address ":9000" --console-address ":9090" /data # 指定服务端口和管理端口 ports: - 9080:9000 # :前面的自行定义,服务端口:API: http://IP:9080 - 9090:9090 # :前面的自行定义,管理端口:http://IP:9090 volumes: - ./data:/data # 数据目录 - ./config:/root/.minio # TLS 密钥和证书存放在 ./config/certs environment: - MINIO_ROOT_USER=admin # 用户名,自行修改 - MINIO_ROOT_PASSWORD=password # 密码,自行修改 - MINIO_SERVER_URL=https://api.example.com:99 # 自行修改成自已的域名# 反向代理的服务域名,用于文件分享外部url,":99" 是反向代理后公网访问端口 - MINIO_BROWSER_REDIRECT_URL=https://s3.example.com:99 # 自行修改成自已的域名# 反向代理的登录域名,":99" 是反向代理后公网访问端口 restart: unless-stopped # 总是重启容器 networks: #网络设置 - app_net # 网络名称 networks: app_net: external: true (3)运行容器:docker-compose up -d(4)无法登录管理页面(5)找原因官网Issues上这类问题很多大多数并没有给我带来帮助:https://github.com/minio/minio/issues?q=MINIO_ROOT_USER有一篇提问提到这个问题:minio启动后,会主动验证~ MINIO_SERVER_URL=https://api.example.com:99 ~的可通性面临两个问题:A.反向代理后方,无证书B.反向代理后方,内部如何域名解析到127.0.0.1对于个人单机单点的私有化布署,不太友好,官方文档也没说清楚最终还是在官方文档上找到了方法先解决证书问题:官方文档详见:https://www.minio.org.cn/docs/minio/linux/operations/network-encryption.html使用 MinIO 的 certgen 工具来生成自签名的TLS证书的方法,详见:https://www.cnblogs.com/hahaha111122222/p/15984957.html下载地址:https://github.com/minio/certgen/releases/tag/v0.0.2下载certgen-windows-amd64.exe 放到任意文件夹,例如:.\desktop\1certgen -ca -host "主机IP,minio容器运行IP,两个域名,hostname"实际执行的生成证书的命令:./certgen-windows-amd64.exe -ca -host "127.0.0.1,192.168.30.2,172.18.0.22,api.example.com,s3.example.com,minio" 显示:2022/03/09 14:10:58 wrote public.crt2022/03/09 14:10:58 wrote private.key如图:解释一下ip和域名:127.0.0.1 主机环回地址192.168.30.2 主机ip172.18.0.22 容器内ipapi.example.com 服务域名s3.example.com 管理域我minio hostname复制public.crt private.key 到 主机的./config 映射目录下反向代理后面的域名解析到127.0.0.1可以在docker-compose中增加dns记录解决 extra_hosts: api.example.com : 127.0.0.1 # 自行修改服务域名 s3.example.com : 127.0.0.1 # 自行修改服务域名解决容器内部无法访问到99端口的问题家庭网络环境中,路由器会转发端口例如:A路由器外部公网端口:99 #运营商限制不能使用80 没办法只能用99代替B反向代理端口:80/443C主机端口:9080 # 详见docker-compose 的配置D容器内部端口:9000访问的传递是 A->B->C->D在容器内部,无法使用99端口这就需要将容器服务端口与外部端口统一使用 “:99”综上修改后的docker-compos.yml如下: version: "3.7" services: minio: image: minio/minio container_name: minio command: server --address ":99" --console-address ":9090" /data # 指定服务端口和管理端口 ports: - 9080:99 # :前面的自行定义,服务端口:API: http://IP:9080 - 9090:9090 # :前面的自行定义,管理端口:http://IP:9090 extra_hosts: api.example.com : 127.0.0.1 # 自行修改服务域名 s3.example.com : 127.0.0.1 # 自行修改服务域名 volumes: - ./data:/data # 数据目录 - ./config:/root/.minio # TLS 密钥和证书存放在 ./config/certs environment: - MINIO_ROOT_USER=admin # 用户名,自行修改 - MINIO_ROOT_PASSWORD=password # 密码,自行修改 - MINIO_SERVER_URL=https://api.example.com:99 # 自行修改成自已的域名# 反向代理的服务域名,用于文件分享外部url,":99" 是反向代理后公网访问端口 - MINIO_BROWSER_REDIRECT_URL=https://s3.example.com:99 # 自行修改成自已的域名# 反向代理的登录域名,":99" 是反向代理后公网访问端口 - MINIO_STS_DURATION=168h # 文件分享外部url 最大时长 7天,超过7天无效,永久分享的方法:Buckets(存储块)Access Policy设为 public,链接文件名后面“?及以后的代码”删除。比较危险,通过Buckets路径,可以看到所有文件的目录。 restart: unless-stopped # 总是重启容器 networks: #网络设置 - app_net # 网络名称 networks: app_net: external: true 运行容器:docker-compose up -d完美解决------------完毕------------
2024年03月17日
688 阅读
0 评论
0 点赞
2024-03-07
群晖DSM7.x通过acme.sh全自动更新并部署SSL证书(2024年)
在当今信息化高速发展的社会,Https 的重要性不言而喻,所以对于我这种自己部署了很多服务并且要暴露在外网的人来说,维持自己的 ssl 证书是一件非常重要的事。本文介绍 acme.sh 脚本实现群晖(也适用于 泛 Linux 服务器)证书自动申请续签、自动部署的全过程,因本人在互联网查询教程期间,发现网上大部分文章均已经过时,部分官方新特性未在大部分教程中看到,遂开此文章,望帮到更多人。如果你有网络条件、设备基础、操作能力,强烈建议你直接参考 官方中文 指引,毕竟这是实时更新的 wiki ,理论上是不会过期的,也是更加准确的,但如果你命令行操作能力有限,可继续看下去。请注意文章时效(2024-03-07)。一、 开启root参考:https://wp.gxnas.com/1385.html二、 安装docker-composehttps://github.com/docker/compose/releases下载对应的版本文件:docker-compose-linux-aarch64更名为:docker-compose上传到:/usr/local/bin给执行权限:sudo chmod +x /usr/local/bin/docker-compose三、方法一:采用 acme docker容器+sh命令方式 (申请Cloudflare为例)1、新建docker目录mkdir /volume1/docker/acme mkdir /volume1/docker/acme/acme.sh cd /volume1/docker/acme可以自定义位置2、新建docker-compose.ymltouch /volume1/docker/acme/docker-compose.yml docker-compose.yml内容如下: version: '3' services: acme: container_name: acme # 容器的名称 environment: - SYNO_Username="" # 群晖管理员账号 - SYNO_Password="" # 群晖管理员登录密码 - SYNO_Device_ID="" # 设备ID 如果你开了两步验证,这里就需要填写 - SYNO_Certificate= "" #(证书名,没有就给空字符即可) - CF_Key= "" # 登录Cloudflare之后,进入域名管理在“概述”右下角单击“获取您的API令牌”然后点击“Global API Key 查看”即可 - CF_Email= "" # 自己Cloudflare的登录邮箱 volumes: - ./acme.sh:/acme.sh # 证书存放的映射目录 command: - daemon # 执行命令 image: neilpang/acme.sh # 容器镜像 platform: linux/amd64 # x86 操作系统 restart: unless-stopped # 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器 network_mode: host # host的网络 SYNO_Device_ID="" # 设备ID获取方法 打开浏览器,使用管理员账号登陆你的群晖,登录的时候选择:记住这台设备】【按 F12 开启调试模式,这个时候会弹出来一个新的界面】【上方一横排菜单里,找到 Application,如果找不到,就把这个窗口拉宽一点儿】【在左侧的 Cookies 菜单点击下方的地址,右侧就会出现很多项内容,找到 ID,把右边的值复制出来,放到上方的”群晖设备ID“处替换即可SYNO_Certificate= "" 的说明 有一点需要注意,上方的SAVED_SYNO_Certificate需要与DSM门户里已经上传的默认证书的描述相同。描述不同的话只会新增加一张证书,并不会替换原有的证书。 运行容器:docker-compose up -d3、新建AutoCert.shtouch /volume1/docker/acme/AutoCert.sh 打开文件写入如下命令 #!/bin/bash # ==参数说明== # 1)申请证书参数 docker exec acme acme.sh --force --log --issue --server letsencrypt --dns dns_cf --dnssleep 120 -d XXX.XXX -d *.XXX.XXX # acme:容器的名字,根据自己的容器名填写 # --server letsencrypt:选的是Let's Encrypt的免费证书 # --dns dns_cf:这里选的是Cloudflare的DNS # --dnssleep 120:Sleep 120秒 # -d XXX.XXX -d *.XXX.XXX:替换用自己的域名即可 # 2)部署证书到群晖参数 docker exec acme acme.sh --deploy -d XXX.XXX -d *.XXX.XXX --deploy-hook synology_dsm # acme:容器的名字,根据自己的容器名填写 # --deploy -d XXX.XXX -d *.XXX.XXX:用自己的域名即可 # --deploy-hook synology_dsm:部署到群晖上 给执行权限chmod +x /volume1/docker/acme/AutoCert.sh4、添加计划任务定时执行最后一步就是添加一个计划任务,每个月定时更新一次证书。控制面板->计划任务->新增,我设置为每月运行一次,运行脚本在 DSM 控制面板中,打开“任务计划程序”并为用户定义的脚本创建一个新的计划任务。常规设置:任务名:acme 用户:root计划:设置每周续订。例如,每周六上午 11:00。任务设置:用户定义的脚本:#renew certificates bash /volume1/docker/acme/AutoCert.sh >>/volume1/docker/acme/log.txt 2>&1 方案一完成更新方案二、本地脚本更新,无需群晖的账号1、安装 acme.shsudo su cd ~ wget https://github.com/acmesh-official/acme.sh/archive/master.tar.gz tar xvf master.tar.gz cd acme.sh-master/ ./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "email@gmailcom" source ~/.profile2、配置 DNS对于 CloudFlare,我们将设置两个环境变量,acme.sh(特别是子目录中的脚本)将读取这些变量以设置 DNS 记录。您可以在此处获取 CloudFlare API 密钥。dns_cfdnsapiexport CF_Key="MY_SECRET_KEY_SUCH_SECRET" export CF_Email="myemail@example.com"如果您生成了 API 令牌,请改为设置 CF_Token,而不是使用您的全局帐户密钥。export CF_Token="MY_SECRET_TOKEN_SUCH_SECRET" export CF_Email="myemail@example.com"如果您使用其他 DNS 服务,请查看目录和 DNS API 指南。许多DNS提供商的说明已经包含在内。您还可以在那里找到有关如何添加其他DNS服务的说明,尽管这需要一些软件开发技能。dnsapi3、创建证书现在是时候为您的域创建证书了: # These commands assume you are still working in the same terminal and have ran necessary commands described above. cd /usr/local/share/acme.sh export CERT_DOMAIN="your-domain.tld" export CERT_DNS="dns_cf" ./acme.sh --issue --server letsencrypt --home . -d "$CERT_DOMAIN" --dns "$CERT_DNS" 4、部署默认证书(推荐)使用自动创建的临时管理员用户进行部署如果您安装在 DSM 中,我们建议您尝试使用自动临时用户身份验证方法进行部署(DSM 应该已经有所需的内置工具,如果没有,我们会通知您):acme.shexport SYNO_USE_TEMP_ADMIN=1 ./acme.sh --deploy --home . -d "$CERT_DOMAIN" --deploy-hook synology_dsm这样,您就不需要提供任何管理员凭据,部署 sciprt 本身将利用 Synology 内置的实用程序来完成身份验证,因此它设计为仅支持本地部署,不能用于在 docker 中部署或远程部署。脚本将加载之前保存的 conf 以供后续部署,因此如果要使用现有管理员用户进行部署,则需要先执行。部署脚本退出后,临时管理员用户应该尚未创建或已被删除,但是如果脚本意外退出(例如,按“Ctrl+C”中止),它仍可能保留,在这种情况下,您可以通过“控制面板”安全地删除它。export CLEAR_SYNO_USE_TEMP_ADMIN=1此外,为了防止混淆,必须以当前本地计算机为目标(可以是 或)的值,但是,如果自定义SYNO_HOSTNAME确实以当前本地计算机为目标,则应在部署之前执行。SYNO_HOSTNAMElocalhost127.0.0.1export SYNO_LOCAL_HOSTNAME=15、配置证书续订若要在将来自动续订证书,需要在任务计划程序中配置任务。不建议将其设置为自定义 cronjob(如本 wiki 页面之前所述),因为 DSM 安全顾问会告诉您有关未知 cronjob 的严重警告。在 DSM 控制面板中,打开“任务计划程序”并为用户定义的脚本创建一个新的计划任务。常规设置:任务 - 更新默认证书。 用户 - root计划:设置每周续订。例如,每周六上午 11:00。任务设置:用户定义的脚本:# renew certificates ./acme.sh --cron --home .参考文章详见:https://github.com/acmesh-official/acme.sh/wiki/Synology-NAS-Guide#deploy-the-default-certificate
2024年03月07日
1,600 阅读
0 评论
0 点赞
2024-02-16
WP All Import l将cvs(excel)导入 wordpress
导入准备,编辑整理cvs(excel)文件 1、上传文件 2、识别预览 3、填写参数 4、设置转化参数 5、确认转化
2024年02月16日
147 阅读
0 评论
0 点赞
2024-02-16
在 HTML 中使用 transform CSS 属性旋转图像
CSS transform 属性意味着修改我们代码中的特定元素。我们需要一个外部资源,在这种情况下我们转换的图像,来转换它。此属性将 2D 或 3D 变换应用于元素。此外,此属性还授予对细节进行旋转、缩放、移动、倾斜等操作的授权。它还改变了 CSS 视觉格式模型的坐标空间。布局受 CSS 盒模型控制的元素只能进行转换。我们可以将 transform 属性设置为 rotate() 函数,在函数中提及用于在 HTML 中旋转图像的单位。图像要旋转的值应在函数的括号中提供。deg 单位用于指定旋转值。为此,我们可以使用内联 CSS。CSS 将用于 标签。例如,在 HTML 中插入带有 标签的常规图像。将 src 属性设置为 https://loremflickr.com/320/320。然后,对于 90 度旋转,插入图像并为其添加一些样式。在 style 属性中,将 transform 属性设置为 rotate(90deg)。然后,添加一个 标签。同样,将图像旋转到 180deg 和 360deg。下面的示例说明了一种在 HTML 图像源中旋转图像的方法。我们已经为 标签设置了样式,这意味着可以使用 transform:rotate() 属性旋转插入的图像。我们插入原始图像并将图像旋转到 90、180 和 360 度。我们可以在 rotate() 函数中写入所需的度数值。示例中的第二个图像最多旋转轴的一半。第三张图片看起来是倒置的,因为它被旋转了 180 度。当图像完成 360 度旋转时,它看起来像原始图像。因此,我们可以使用 transform() 属性和 rotate() 值来使用 HTML 和 CSS 旋转图像。示例代码:<html> <body> Original Image <img src="https://loremflickr.com/320/320" /> <br> 90 degree Rotation <img src="https://loremflickr.com/320/320" style="transform:rotate(90deg);"> <br> 180 degree Rotation <img src="https://loremflickr.com/320/320" style="transform:rotate(180deg);"> <br> 360 degree Rotation <img src="https://loremflickr.com/320/320" style="transform:rotate(360deg);"> <br> </body> </html>
2024年02月16日
87 阅读
0 评论
0 点赞
2024-01-16
WordPress 查找并替换数据库中的 URL 或文本
有的时候,我们可能需要更换 WordPress 网站的域名,或者需要批量更换网站中的某些文本内容。这时,我们可以通过 Adminer进行可视化的操作,或者通过 shell 命令行执行 SQL 查询更换域名无论是更换域名,还是从 http:// 更改为 https ://,我们都可以使用 MySQL 的 replace功能,来替换数据库中的 URL。如果我们要将 WordPress 网站迁移到不同的域名,例如,从域名old_domain.com迁移到域名new_domain.com。或者将数据库中所有http://old_domain.com替换为https://old_domain.com,我们可以执行下面的 SQL 语句:wp_options 表wp_options 表是 WordPress 配置表,在home和siteurl字段中,可以配置网站的 URL 。我们可以执行下面的语句来替换。UPDATE wp_options SET option_value = replace(option_value, 'old_domain.com', 'new_domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';wp_posts 表wp_posts表的post_content字段中的包含所有文章内容。如果文章中有指向其他文章的内部永久链接,需要替换该表中的链接 URL。执行下面的 SQL 语句:UPDATE wp_posts SET post_content = replace(post_content, 'old_domain.com', 'new_domain.com');清除 标题栏的空格:UPDATE wp_posts SET post_title = replace(post_title, ' ', '');在数据库中文章表数据表为:wp posts表字段如下:ID(文章ID)post author(文章作者名,我想可以是为用户名,也可以是用户ID)post date(文章发布日期)post_date_gmt(文章发布日期,格林威治时间)post content(文章内容)post_title(文章标题)post exerpt(摘录)post status(文章状态,publish/auto-draft/inherit)comment status(是否开启评论,默认值为open,打开)ping statuspost password(文章密码,如果加密的话,需要输入对应的密码才能打开post name(文章缩略名)to_ping(ping的链接)pinged(已经PING过的链接)post modified(文章修改时间)post modified gmt(文章修改时间,格林威治时间)post content filterpost parent(父文章,主要用于page)guidmenu order(排序ID)post type(文章类型,post或page)post_mime_type(MlME类型)comment count(文章评论总数)wp_postmeta 表wp_postmeta表包含所有的属性和自定义字段,例如 ACF (高级自定义字段)中的meta_value字段。如果自定义字段中包含旧的链接,也需要在此处替换它们。UPDATE wp_postmeta SET meta_value = replace(meta_value, 'old_domain.com', 'new_domain.com');wp_comments 表wp_comments表包含所有的文章评论内容,其中也可能包含指向其他文章的旧链接。如果有,可以执行下面的语句更改:UPDATE wp_comments SET comment_content = replace(comment_content , 'old_domain.com', 'new_domain.com');
2024年01月16日
118 阅读
0 评论
0 点赞
2023-11-16
子比主题,由搜索的历史记录过多(存在 Cookie中),新增搜索记录访问时,由于请求头过大导致访问报错(502 Bad Gateway openresty)
一、Nginx Proxy Manager 容器报错(502 Bad Gateway openresty)npm目录:../npm/data/nginx/default_host/site.conf增加如下设置 proxy_buffer_size 128k; proxy_buffers 16 128k; proxy_busy_buffers_size 128k; fastcgi_buffer_size 128k; fastcgi_buffers 16 128k;或者参照:https://github.com/NginxProxyManager/nginx-proxy-manager/issues/438二、wordpress 容器报错(502 Bad Gateway nginx/1.24.0)修复上面后,仍会报错wp目录:../wp/nginx/nginx.conf新建nginx,提取容器内部的nginx.conf映射:- ./nginx/nginx.conf:/etc/nginx/nginx.conf增加如下设置 proxy_buffer_size 128k; proxy_buffers 16 128k; proxy_busy_buffers_size 128k; fastcgi_buffer_size 128k; fastcgi_buffers 16 128k;
2023年11月16日
208 阅读
0 评论
0 点赞
2023-08-13
wordpress 在底部页脚增加统计模块
1.在子比主题的主题目录下,header.php底部添加以下函数代码:<!--统计信息函数--> <script type="text/javascript" > <?php //用户总数 $users = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users");echo "var tj_jstext="."'$users'"; ?> </script> <script type="text/javascript" > <?php /* * WordPress获取今日发布文章数量 *zje.cc */ function nd_get_24h_post_count(){ $today = getdate(); $query = new WP_Query( 'year=' . $today["year"] . '&monthnum=' . $today["mon"] . '&day=' . $today["mday"]); $postsNumber = $query->found_posts; return $postsNumber; } $post_24h = nd_get_24h_post_count(); echo "var tj_24h="."'$post_24h'"; ?> </script> <script type="text/javascript" > <?php /* * WordPress整站文章访问计数 * */ function nd_get_all_view(){ global $wpdb; $count=0; $views= $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key='views'"); foreach($views as $key=>$value){ $meta_value=$value->meta_value; if($meta_value!=' '){ $count+=(int)$meta_value; } }return $count; } $post_view = nd_get_all_view(); echo "var tj_view="."'$post_view'"; ?> </script> <script type="text/javascript" > <?php //日志总数 $count_posts = wp_count_posts(); $published_posts =$count_posts->publish; echo "var tj_rzzs="."'$published_posts'"; ?> </script> <script type="text/javascript" > <?php //稳定运行 $wdyx_time = floor((time()-strtotime("2023-06-01"))/86400); echo "var tj_wdyx="."'$wdyx_time'"; ?> </script> 注:函数运行日期2020-3-28改为你自己网站运行的日期。2.在子比主题,页面&显示 - 底部页脚 - 版块一设置- 版块内部 中填入如下代码<!-- 信息统计开始 --> <div id="nuandao"> <div class="siteCount"> <div class="wrapper"> <ul> <li> <b>用户总数</b> <span> <script type="text/javascript"> document.write(tj_jstext); </script> </span> </li> <li> <b>文章总数</b> <span> <script type="text/javascript"> document.write(tj_rzzs); </script> </span> </li> <li> <b>浏览总数</b> <span> <script type="text/javascript"> document.write(tj_view); </script> </span> </li> <li> <b>今日发布</b> <span></span> <span> <script type="text/javascript"> document.write(tj_24h); </script> </span> </li> <li> <b>稳定运行</b> <span> <script type="text/javascript"> document.write(tj_wdyx); </script> </span> </li> </ul> </div> </div> </div> <style type="text/css"> /* 添加以下 CSS 样式 */ #nuandao .siteCount ul li span { color: #FF69B4; } </style> <!-- 信息统计结束 -->3.效果如下4.如仅在首先显示,不占空间,可加入侧边栏(外观 - 小工具-自定义HTML 添加到首页 侧边栏)代码同上,效果如下
2023年08月13日
107 阅读
0 评论
0 点赞
2023-08-13
wordpress在文章下面增加 分类描述的方法
在文章下面增加 分类描述的方法 修改文件路径wordpress/wp-content/themes/zibll/inc/functions/zib-single.php原文:if ($cat || $tags) { echo '<div class="theme-box article-tags">' . $cat . '<br>' . $tags . '</div>'; } 修改前的效果修改后://**wdj/2023-8-13修改,增加获取当前文章的分类描述 if ($cat || $tags) { $category = get_the_category(); // 获取当前文章的分类 $category_description = $category[0]->description; // 获取分类的描述 echo '<div class="theme-box article-tags">' . $cat . '<br><span style="color: #FF69B4; font-size: 12px;">' . $category_description . '</span><br>' . $tags . '</div>'; }完成后的效果
2023年08月13日
70 阅读
0 评论
0 点赞
2023-02-14
欢迎来摸鱼
这里有我工程造价知识分享,也会我有的折腾记录,还有各种稀奇古怪的好玩的推荐!正在建设中,感谢关注!
2023年02月14日
194 阅读
0 评论
0 点赞