分类 网站搭建 下的文章 - 🥝 E 家 分 享 🥝
首页
📋 留言板
🔗 友情链接
🛠️ E家百宝箱
❤️ 关于
推荐
🔍 VPS监控
🐉 青龙面板
💽 E家网盘
----------
🔗 CloudFlare
🔗 甲骨文云
🔗 RackNerd
搜 索
1
自动提取 ChromeGo 一键翻墙包内的免费节点
293 阅读
2
GigaFile - 日本免费大文件加密分享服务,最长保留文档100天
205 阅读
3
【汇总:免费节点 - 每周更新】
182 阅读
4
CloudFlare WARP 免费 VPN 搭建教程
106 阅读
5
使用小火箭免广告观看油管视频
85 阅读
精选网站
网站搭建
科学上网搭建
有感而发
软件技巧
Excel技巧
WordPress技巧
登录
搜 索
标签搜索
WordPress
脚本
GitHub
科学上网
哈佛管理导师
E家分享月刊系列
V2ray
Mac软件
AI
Cloudflare
Docker
免费节点
建站在线工具
Excel技巧
Notion
Nginx
ChatGPT
图像编辑
免费图床
网盘资源
E家之长
累计撰写
195
篇文章
累计收到
246
条评论
首页
栏目
精选网站
网站搭建
科学上网搭建
有感而发
软件技巧
Excel技巧
WordPress技巧
页面
📋 留言板
🔗 友情链接
🛠️ E家百宝箱
❤️ 关于
推荐
🔍 VPS监控
🐉 青龙面板
💽 E家网盘
----------
🔗 CloudFlare
🔗 甲骨文云
🔗 RackNerd
用户登录
登录
找到
39
篇与
网站搭建
相关的结果
2023-05-20
通过 PaaS 平台 Fly.io 部署「Node-RED 低代码自动化工具」及「Vaultwarden 密码管理器」
本文作者:FreeCultureBoy 转载地址:https://sspai.com/post/78674前言PaaS - 平台即服务,对于普通用户的最大好处就是可以低成本、便捷、无障碍地使用一些现成的项目。通过 PaaS 平台 Fly.io 部署「Node-RED 低代码自动化工具」及「Vaultwarden 密码管理器」Fly.io介绍Fly.io 支持多种编程语言及容器虚拟化方案,只需要简单流程就能部署项目到 Fly.io 的服务器上,同时还支持自动生成域名并通过 Lets Encrypt 来颁发证书,免去普通用户维护域名的烦恼。当然,也提供了免费计划,但前提是需绑定信用卡(也有些不用信用卡的平台,以后有机会再说)。免费计划内容:最多 3 个 shared-cpu-1x 256 mb 实例3 GB 数据卷存储空间(总计)160 GB 出站数据流量(总计)[1]安装 flyctlflyctl 是一个官方提供的命令行安装程序,可用于本地快捷部署项目,官方提供了很详尽的 文档 。这里以 Windows 系统为例:运行 Powershell 安装脚本powershell -Command "iwr https://fly.io/install.ps1 -useb | iex"因为我已经网页注册,就略过命令行注册的步骤,直接登录就行fly auth login根据提示填写账号密码,没错,就是这么简单。Noed-RED介绍Node-RED 是一个虽然初开始主要用于物联网及智能家居的自动化工具,但功能远不止此,活跃的社区及低资源占用的特点,成为除 n8n 之外我的首选。安装这里我选择使用 Docker 安装flyctl launch --image nodered/node-red:3.0.2实例命名选择部署地区,优先北美,流量比较多。用不到数据库,先忽略。先不部署,要创建数据卷和修改配置创建数据卷fly volumes create <数据卷名称> --region lax --size 1 --no-encryption 例如 fly volumes create node_red_data --region lax --size 1 --no-encryption--region lax 即 部署地区,尽量选择与实例地区一致。--size 1 即 1 GB 大小。--no-encryption 创建未加密的卷,以提高部署和运行时的性能。打开当前目录自动生成的 fly.toml 文件配置部署参数,主要是修改时区、端口、数据卷,其它保持默认生成的即可。app = "node-red" kill_signal = "SIGINT" kill_timeout = 5 processes = [] [build] image = "nodered/node-red:3.0.2" [env] # 时区修改 TZ = "Asia/Shanghai" [mounts] # 数据卷 source = "node_red_data" destination = "/data" [experimental] auto_rollback = true [[services]] http_checks = [] internal_port = 1880 # 修改为 Node-RED 默认端口 processes = ["app"] protocol = "tcp" script_checks = [] [services.concurrency] hard_limit = 25 soft_limit = 20 type = "connections" [[services.ports]] force_https = true handlers = ["http"] port = 80 [[services.ports]] handlers = ["tls", "http"] port = 443 [[services.tcp_checks]] grace_period = "1s" interval = "15s" restart_limit = 0 timeout = "2s"修改完成后开始部署flyctl deploy部署完成,然后点击日志链接快捷进入面板查看。可以看到资源占用还是非常低的,完全不用担心超出免费计划额度问题。至此基本部署已经完成。启用密码登录Node-RED 默认是没有密码登录的,需要修改配置,而 Fly.io 本身是支持 SSH 和 SFTP 连远程连接。生成密码并修改配置SSH 连接实例flyctl ssh console打开到数据目录cd data调用生成密码参数node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" <为要设置的密码> 例如 node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" password 记得把生成的密码字符串复制出来修改配置文件vi settings.js进入编辑模式i方向键移动,在 76 行左右找到以下代码,然后把 // 注释删除去掉,再替换 username 及 password 即可启用。 //adminAuth: { // type: "credentials", // users: [{ // username: "admin", // password: "$2a$08$18E8TpMRvKw9HZqSpx5eH.XefIj9qp6.kHYQ8DEI55aYfDJdefqzm", // permissions: "*" // }] //},保存退出ESC :wq退出 SSHexit重启实例flyctl apps restart <实例名称> 例如 flyctl apps restart node-red可以看到已经启用密码登录了因为官方使用 Lets Encrypt 来颁发证书的缘故,重启其实就是保留数据的重新部署,新证书的颁发需要等一会才能生效。备份数据对于节点备份建议直接导出保存即可Vaultwarden介绍Vaultwarden 是对开源密码管理器 Bitwarden 的 Rust 再构建项目,低资源占用的特性非常适合运行在低性能的平台上。安装部署过程与 Node-RED 大同小异,只需更换镜像及新数据卷即可flyctl launch --image vaultwarden/server:latestfly volumes create vaultwarden_data --region lax --size 1 --no-encryption部署参考配置如下app = "vaultwarden" kill_signal = "SIGINT" kill_timeout = 5 processes = [] [build] image = "vaultwarden/server:latest" [env] TZ = "Asia/Shanghai" # 时区修改 WEBSOCKET_ENABLED = "true" # 启用 WS [mounts] # 数据卷 source = "vaultwarden_data" destination = "/data" [experimental] auto_rollback = true [[services]] http_checks = [] internal_port = 80 # 修改为 Vaultwarden 默认端口 processes = ["app"] protocol = "tcp" script_checks = [] [services.concurrency] hard_limit = 25 soft_limit = 20 type = "connections" [[services.ports]] force_https = true handlers = ["http"] port = 80 [[services.ports]] handlers = ["tls", "http"] port = 443 [[services.tcp_checks]] grace_period = "1s" interval = "15s" restart_limit = 0 timeout = "2s"部署完成后创建账号即可使用创建账号备份数据Vaultwarden 建议定期手动导出数据保存,但可以本地离线特性使得即使云端出问题,本地离线状态下也可无忧导出备份。Fly.io 的优缺点优点免费额度算得上很不错,可选地区多;部署简单友好;支持部署编程语言架构及方案众多;文档齐全;缺点虽然数据库可以持久保存,但迁移还是非常麻烦,虽然可以 SFTP 操作,但过程还是太折磨人,所以只建议部署轻量级、数据容易迁移的项目。总结毕竟不是每个人都会自己维护服务器,有信用卡的门槛让 Fly.io 不至于被滥用得太夸张,对于普通用户还是非常推荐尝试的,免费额度也足够可以部署其它一些非常实用的项目,例如:「FreshRSS - 在线 RSS 阅读器 」、「Wallabag 稍后阅读」等。[1] 需注意不同地区免费额度不一样,北美及欧洲为每月 100 GB,其它地区为 30 + 30 GB。【END】
2023年05月20日
14 阅读
0 评论
0 点赞
2023-04-22
CloudFlare Tunnel 免费内网穿透的简明教程
本文作者:Antiscientist 转载地址:https://sspai.com/post/79278简介CloudFlare Tunnel 免费内网穿透的简明教程Tunnel可以做什么将本地网络的服务暴露到公网,可以理解为内网穿透。 例如我们在本地服务器 192.168.1.1:3000 搭建了一个 Transmission 服务用于 BT 下载,我们只能在内网环境才能访问这个服务,但通过内网穿透技术,我们可以在任何广域网环境下访问该服务。相比 NPS 之类传统穿透服务,Tunnel 不需要公网云服务器,同时自带域名解析,无需 DDNS 和公网 IP。将非常规端口服务转发到 80/443 常规端口。 无论是使用公网 IP + DDNS 还是传统内网穿透服务,都免不了使用非常规端口进行访问,如果某些服务使用了复杂的重定向可能会导致 URL 中端口号丢失而引起不可控的问题,同时也不够优雅。自动为你的域名提供 HTTPS 认证。为你的服务提供额外保护认证。最重要的是——免费。Tunnel 工作原理Tunnel 通过在本地网络运行的一个 Cloudflare 守护程序,与 Cloudflare 云端通信,将云端请求数据转发到本地网络的 IP + 端口。前置条件持有一个域名将域名 DNS 解析托管到 CF内网有一台本地服务器,用于运行本地与 cloudflare 通信的 cloudflared 程序一张境内双币信用卡(仅用于添加付款方式,服务是免费的)开始1. 打开 Cloudflare Zero Trust 工作台面板2. 创建 Cloudflare Zero Trust ,选择免费计划。需要提供付款方式,使用境内的双币卡即可填写team name,随意填写选择免费计划添加付款方式填写信用卡信息(仅验证,不会扣款),完成配置3. 完成后,在 Access Tunnels 中,创建一个 Tunnel。创建 Tunnel4. 选择 Cloudflared 部署方式。Tunnel 需要通过 Cloudflared 来建立云端与本地网络的通道,这里推荐选择 Docker 部署Cloudflared 守护进程以使用 Tunnel 功能。获取 Cloudflared 启动命令及 Token点击复制按钮复制指令,在本地网络主机上运行命令。我们还可以加上--name cloudflared -d --restart unless-stop为 Docker 容器增加名称和后台运行。你可以使用下方我修改好命令来创建 Docker,注意替换你为自己的 Token(就是网页中 —-token 之后的长串字符)docker run --name cloudflared -d --restart unless-stop cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <YourToken>5. 配置域名和转发URL为你的域名配置一个子域名(Subdomain),Path 留空,URL 处填写内网服务的IP加端口号。注意 Type 处建议使用 HTTP,因为 Cloudflare 会自动为你提供 HTTPS,因此此处的转发目标可以是 HTTP 服务端口。配置内网目标 IP+端口完成接着访问刚刚配置的三级域名,例如 https://app.yourdomain.com(是的,你没看错,是 https,cloudflare 已经自动为域名提供了 https 证书)就可以访问到内网的非公端口号服务了。一个 Tunnel 中可以添加多条三级域名来跳转到不同的内网服务,在 Tunnel 页面的 Public Hostname 中新增即可。为你的服务添加额外验证如果你觉得这种直接暴露内网服务的方式有较高的安全风险,我们还可以使用 Application 功能为服务添加额外的安全验证。1. 点击 Application - Get started。创建 Application2. 选择 Self-hosted。选择类型3. 填写配置,注意 Subdomain 和 Domain 需要使用刚刚创建的 Tunnel 服务相同的 Domain 配置。配置三级域名4. 选择验证方式。填写 Policy name(任意)。在 Include 区域选择验证方式,示例图片中使用的是 Email 域名的方式,用户在访问该网络时需要使用指定的邮箱域名(如@gmail.com)验证,这种方式比较适合自定义域名的企业邮箱用户。另外你还可以指定特定完整邮箱地址、IP 地址范围等方式。选择验证方式5. 完成添加此时,访问 https://app.yourdomain.com 可以看到网站多了一个验证页面,使用刚刚设置的域名邮箱,接收验证码来访问。评价除了上述直接转发 http 服务之外,Tunnel 还支持 RDP、SSH 等协议的转发,玩法丰富,有待各位探索。作为一款免费的服务,简单的配置,低门槛使用条件,适合各位 Self-hosted 玩家尝试。不过要注意的是 Tunnel 在国内访问速度不快,并且有断流的情况,请酌情使用。【END】
2023年04月22日
29 阅读
0 评论
0 点赞
2023-04-08
【WordPress】数据库详解
前言在本文中,我们将了解 WordPress 数据库是什么以及它是如何工作的。WordPress 数据库是什么我们都知道在创建 WordPress 时,需要之前就创建好一个数据库。WordPress 是一个数据库驱动的开源内容管理系统或网站平台,用 PHP 编写。WordPress 使用数据库来存储和检索您的网站或博客的内容。可以理解为 WordPress 网站是数据库的呈现形式。WordPress 使用 MySQL 数据库管理系统。MySQL 是一个开源的关系数据库管理系统 (RDBMS),通常用于创建数据库。MySQL 使用结构化查询语言 (SQL),这是一种流行的数据库语言。MySQL 最适合与 WordPress、Apache Web 服务器、Linux 操作系统和 PHP 等其他开源应用程序配合使用。大多数 WordPress 用户几乎不需要与 WordPress 数据库进行交互。它只是在幕后运作。但是,如果您对主题或插件开发或为WordPress 核心感兴趣,了解 WordPress 数据库是什么以及它是如何工作的会很有帮助。WordPress 的 MySQL 数据库将网站的数据存储到表、行和列中。WordPress 数据库是动态的,这意味着您可以添加、修改和删除其中包含的信息(前提是您具有管理权限)。WordPress 数据库结构及解释存储在 WordPress 数据库中的不同类型数据的一些示例包括:页面、帖子和其他内容标签、类别和其他组织信息用户评论和个人资料数据主题和插件相关数据全站设置WordPress 数据库描述的内容参见下图。每个全新的 WordPress 数据库安装都将包含 12 个表。表的名称让您对每个表负责存储的内容有一个非常可靠的概念。此外,每个表将包含存储更多指定数据位的各种字段和列。例如,wp_comments 表包含与您的帖子和页面上的用户评论相关的所有数据。表名描述wp\_usersWordPress 网站上的用户列表 。所有 WordPress 用户角色的用户都存储在这里(管理员、编辑、作者、贡献者、订阅者等)。存储在此表中的其他用户信息包括用户名、名字、姓氏、昵称、密码、电子邮件、注册日期、状态和角色。wp\_usermeta每个 用户 的特征信息称为 元数据。此处存储的元数据包括唯一的用户 ID、元键、元值和元 ID。这些都是您网站上用户的唯一标识符。wp\_term\_taxonomyWordPress 使用三种类型的分类法,包括类别、 链接或标签。此表存储术语的分类关联。wp\_term\_relationships此表存储帖子、类别和标签之间的关系。 与各自类别的链接的关联 也保存在此表中。wp\_termmeta每个 术语 的特征信息称为 元数据 ,它存储在 wp\_termmeta 中。wp\_terms帖子和链接的 类别 以及帖子的 标签 都可以在 wp\_terms 表中找到。wp\_postsWordPress 数据的核心是 帖子。此表存储您发布的任何帖子或页面的内容,包括自动保存修订和帖子选项设置。此外,页面 和导航菜单项存储在此表中。wp\_postmeta每个 帖子都 包含称为 元数据的信息 ,它存储在 wp\_postmeta 中。一些插件可能会将自己的信息添加到此表中。wp\_options从 WordPress 管理仪表板的设置页面设置的所有设置都存储在这里。这包括所有主题和插件选项。wp\_linkswp\_links 保存与 输入到 WordPress 的链接功能中的 **链接相关的信息。**(此功能现已弃用,但可以使用 Links Manager 插件重新启用。)wp\_comments发布到您网站的所有评论以及有关评论作者的其他信息(姓名、URL、IP 地址、电子邮件地址等)都存储在此处wp\_commentmeta每个 评论都 包含称为 元数据的信息 ,它存储在 wp\_commentmeta 中,包括评论 ID 号。WordPress 数据库表示例:评论任何 WordPress 数据库表都可以扩展以显示存储在表中的所有数据。以 wp_comments 表为例。 通过 phpMyAdmin 打开 MySQL 数据库。点击左侧数据库的 wp_comments 表,如您所见,数据库存储的有关网站上每个用户评论的信息比您想象的要多得多。它存储有关每个评论的作者详细信息、唯一用户 ID、可以在哪里找到评论等信息。WordPress 数据库表 wp_comments 进一步细分为以下列:comment_ID comment_post_ID comment_author comment_author_email comment_author_url comment_author_IP comment_date comment_date_gmt comment_content comment_karma comment_approved comment_agent comment_type comment_parent user_id具体如何操作 phpMyAdmin,详见相关阅读里的 phpMyAdmin 入门教程 和 phpMyAdmin教程 之 创建新用户/导入/导出数据库。注意:请务必谨慎操作数据库WordPress 数据库的推荐权限对于标准的 WordPress 操作,数据库用户只需要 SELECT、INSERT 和 UPDATE 权限。强烈建议在运行 WordPress 数据库时使用绝对最低权限。在重大升级期间,有时可能需要额外的权限,如 CREATE、ALTER 和 DROP。当安装需要更改数据库结构以便在您的网站上运行的插件时,也可能需要它们。在这种情况下,插件开发人员会建议您对数据库的用户权限进行此类更改。MySQL 查询及更改许多与数据库相关的 MySQL 查询将自动运行。但是,您也可以直接访问数据库并手动运行命令和查询。数据库管理器可帮助您简化流程。MySQL 查询示例:DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam'此查询将通知数据库查看与用户发表的评论相关的所有数据。它会查找并删除您已标记为垃圾邮件的所有评论。通过手动执行查询,可以更好地完成某些无法从仪表板完成的任务。您可以做一些事情,例如更改您帐户上的用户名,这是仪表板不允许的。再比如由于网站更换域名,图片外链图床改变,导致文章地址或图片地址发生改变,需要进行批量替换 url 的操作。修改 option_value 里的站点 url 和主页地址:UPDATE wp_options SET option_value = REPLACE(option_value,'替换内容','替换值');更改文章中内部链接及附件的地址:UPDATE wp_posts SET post_content = REPLACE(post_content,'替换内容','替换值');更改 WordPress 文章默认的永久链接:UPDATE wp_posts SET guid = REPLACE(guid,'替换内容','替换值');更改博客用户里你的网站链接:(如果你的个人资料里没有填你的博客地址,可忽略)UPDATE wp_users SET user_url = REPLACE(user_url,'替换内容','替换值');更改评论者资料里你的博客链接:UPDATE wp_users SET user_url = REPLACE(user_url,'替换内容','替换值');更改评论内容你的博客链接:(如果评论里没有你博客链接,可忽略)UPDATE wp_comments SET comment_content = REPLACE(comment_content,'替换内容','替换值');如何重置 WordPress 数据库有时可能希望将数据库重置为原始设置。例如,如果您在测试站点或本地服务器上工作,您可能希望将数据库恢复到进行更改之前的状态。注意:当您重置数据库时,您的所有数据将被永久删除。重置过程无法撤消。因此,在进行数据库重置之前创建完整的 WordPress 备份是个好主意。如果您不想创建整个站点的备份副本,则可以仅创建 WordPress 数据库的备份。要将数据库重置为其默认设置,您首先需要安装并激活名为WP Database Reset的插件。激活插件后,转到页面工具 > 数据库。在此位置,您可以单击以选择要重置的表。如果要重置数据库中的所有表,请单击“选择所有表”。如果您选择所有表格,您将可以选择重新激活您的活动插件和当前主题。该插件还保留您的活动 WordPress 用户帐户。在此之后,需要通过在所需文本框中输入安全代码并单击“重置表”链接来确认重置。当屏幕上出现警告弹出窗口时,单击“确定”继续。然后插件继续删除数据库表中的所有数据。该过程完成后,您会在插件的设置页面上看到“成功”消息。片刻之后,您将自动退出 WordPress 的管理区域。此时,您可以使用同一帐户再次登录。您的数据库已重置,您的网站现在显示的方式将在您刷新时反映这一点。如何修复 WordPress 数据库如果想修复数据库而不是完全重置数据库,首先要做的是打开 WordPress 主机的控制面板区域并登录您的帐户。进入后,您将在控制面板内看到主机为您提供的所有选项。像在本文前面所做的那样找到 phpMyAdmin 图标,然后单击它。对于大多数主机的控制面板,可以在“数据库”的标题下找到 phpMyAdmin。进入 phpMyAdmin 界面后,需要选择“正确的 WordPress 数据库”。执行此操作后,您会看到所有内部文件夹都将出现在侧边栏中。所有文件夹名称都以 wp\_ 开头。如果在服务器上有多个 WordPress 站点,您将在选择“更正 WordPress 数据库”时看到所有站点。在继续进行任何修复之前,请仔细检查是否选择了正确的数据库。一旦打开了正确的数据库,请确保数据库的每个部分都得到修复(当然,除非您收到的错误消息告诉您只有数据库的一个特定部分已损坏)。要修复 WordPress 数据库的所有部分,请前往底部并在主目录中选择“全部检查”。这会突出显示数据库中的所有子目录。在看到所有子目录都被选中后,打开“检查所有”字段旁边的列表。选择“修复表”选项。该过程运行后,检查它是否在修复结果屏幕上工作。在那里,它会告诉你修复是否成功。如何优化 WordPress 数据库?随着时间的推移和使用,WordPress 数据库可能会损坏或需要良好的整体管理。这就是数据库优化介入的地方。应该定期优化您的 WordPress 数据库,以使其保持清洁并保持最佳状态。如果没有定期优化,您会注意到 WordPress 网站速度会随着时间的推移而减慢。WordPress 数据库优化是一个相对简单的过程,有几种不同的方法来完成它。通过 phpMyAdmin 优化数据库第一种方法是重新登录 phpMyAdmin 并单击“数据库”。在这里,您会看到列出了要优化的数据库。同样,您将看到与您的网站数据库相关的所有表格。从那里,您需要做的就是向下滚动页面并单击“全选”。然后导航到“With Selected”下拉菜单并选择“Optimize Tables”。系统现在优化您选择的所有表格。用于数据库优化的 WordPress 插件如果希望使用插件优化 WordPress 数据库,可以使用几种不同的插件。第一个称为 WP-Optimize,可以在 WordPress 插件存储库中找到。这个插件的安装和操作都很简单。您还可以使用它在白天或晚上的任何时间安排自动优化。如何备份 WordPress 数据库强烈建议您始终使用可靠的 WordPress 备份插件如 BackupBuddy 定期备份 WordPress 数据库(每周一次是个好主意)。特别建议在执行站点升级甚至优化之前备份您的数据库。这样,如果出现问题,将能够恢复数据库(和网站)而无需任何恐慌。简单的方法:使用插件进行数据库备份到目前为止,备份 WordPress 数据库的最简单方法是使用 WordPress 备份插件 BackupBuddy。BackupBuddy 允许您轻松备份、恢复和迁移 WordPress 网站到新的服务器或域名。注:BackupBuddy 是一个收费插件。手动方法:通过 phpMyAdmin 进行数据库备份登录 phpMyAdmin。从屏幕左侧的窗口中,选择要备份的 WordPress 数据库。右侧的窗口将显示 WordPress 数据库中的所有表。需要单击顶部选项卡上的“导出”选项卡。 选择“快速”选项,然后单击“执行”下载数据库文件。如果要更改默认行为,还可以选择自定义备份选项。在上述步骤中,选择“自定义”选项而不是“快速”选项。从那里,您将看到显示的详细选项。表部分是可以从数据库中的所有不同表中进行选择的地方。如果其他程序正在使用该数据库,请仅选择与 WordPress 安装相对应的表。它们将以您已经在 wp-config.php 文件中指定的 wp\_ 或 table\_prefix 开头。如果只安装了 WordPress,请保持原样,如果选择已更改,请单击“全选”。在输出部分,从压缩框中选择“gzipped”或“zipped”。这将允许在下载数据时对其进行压缩。在格式部分中,确保选择 SQL。这将导出一系列 SQL 命令,而不是其他数据格式,例如 CSV,这不适用于此备份过程。当看到特定于格式的部分时,请继续保持原样。在对象创建部分中,选择以下内容:Drop TableViewProcedureFunctionEventTrigger在创建目标数据库之前,它会调用一个 DROP 语句来删除任何旧的现有表(如果它们存在)。在此之后,您需要确保将数据创建选项部分完全保留原样。前往窗口底部,然后单击“开始”。系统将提示下载文件。将此文件保存在您的计算机上。请记住,此过程不会备份您的所有文件和文件夹(如图像)。但是,博客文章和用户评论等所有内容都已通过此手动数据库备份过程进行备份。如何恢复 WordPress 数据库使用 BackupBuddy 恢复 WordPress 数据库恢复数据库可以在插件中执行。导航到插件中的“备份”页面,然后导航到“还原备份”选项卡。使用数据库备份右侧的按钮来恢复数据库。然后,可以观看 BackupBuddy 将数据库恢复到备份中包含的版本。通过 phpMyAdmin 恢复推荐使用 phpMyAdmin来完成恢复。登录 phpMyAdmin 平台。单击“数据库”并选择将要导入数据的数据库。您将看到一个屏幕告诉您不存在任何表或数据库中已经存在的表列表。这将取决于您如何设置。单击屏幕顶部附近的“导入”选项卡。在此屏幕上,单击“浏览”以查找存储在计算机上的数据库备份文件。仔细检查是否在标题为“格式”的下拉菜单中选择了 SQL。点击“执行”。稍等片刻,数据库就导入成功了。总结希望您现在对 WordPress 数据库有更多了解,包括创建、访问、修复、备份或优化它。记住:少折腾,多备份!相关阅读 WordPress 数据库详解(是什么,创建、备份和恢复等) 数据库描述 phpMyAdmin 入门教程 phpMyAdmin教程 之 创建新用户/导入/导出数据库【END】
2023年04月08日
40 阅读
0 评论
0 点赞
2023-04-04
VPS 通用 DD 重装系统脚本
前言想尝试更加稳定的 Debian 系统,因此想 DD 目前的系统,下面提供的脚本适合绝大部分 VPS 使用。警告:重装系统将抹掉所有数据,并可能导致服务器无法开机!所以请确保服务器上所有文件和数据库都已备份完成!请谨慎操作!重装 Linux 系统(例如重装系统为 Debian 11)bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -d 11 -v 64 -p 123456 -port 22脚本解释:Linux 系统参数 -d 11:对应 Debian 不同版本【7、8、9、10,11】 -u 20.04:对应 Ubuntu 不同版本【14.04、16.04、18.04、20.04】密码参数 -p 12345:12345 为重启后 root 账户需要输入的密码端口参数 port 22安装完成后 VPS 会重启安装,等待约10分钟左右,尝试重新连接。 重启后,用户名为 root,密码是刚设置的 12345。成功连接后输入下面的更新组件和 BBR 命令,完善 Linux 系统环境。更新并安装组件 curl、socat、wgetapt update -y && apt install -y curl && apt install -y socat && apt install wget -y安装 BBR 加速wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh接下来可以考虑安装宝塔面板或 Docker。参考文章https://kejilion.blogspot.com/2022/09/vpsdd.html
2023年04月04日
9 阅读
0 评论
0 点赞
2023-04-01
自动切换 cdn.jsdelivr.net 域名的脚本
前言cdn.jsdelivr.net 有时候会出现国内无法访问的情况,以至于造成网站 js, css, image,字体等文件无法正常显示。 因此 BestTools 大神开发出自动检查 cdn.jsdelivr.net 是否可用的脚本, 如果不可用时,会自动把所有资源地址切换到其他可用的域名。比如:gcore.jsdelivr.net,fastly.jsdelivr.net等其他 CDN。项目地址Github 地址:https://github.com/PipecraftNet/jsdelivr-auto-fallback使用方法直接复制 index.js 或 index.min.js 里的内容,加到网站里。强烈建议添加到 head 标签最上面。所有 script 标签加上 defer 属性。如果原来有 async 属性,可以跳过。这个可以避免 pending 状态带来的等待时间,大大提升性能。如果是 hexo 生成的网站,可以安装 hexo-filter-jsdelivr-auto-fallback 插件,自动添加。示例:# 可以把 js 文件放到其他目录下进行引用 <script defer src="index.js"></script> <script defer src="index.min.js"></script>index.js 代码:((document) => { 'use strict'; let fastNode; let failed; let isRunning; const DEST_LIST = [ 'cdn.jsdelivr.net', 'fastly.jsdelivr.net', 'gcore.jsdelivr.net', 'cdn.zenless.top', 'testingcf.jsdelivr.net', 'test1.jsdelivr.net' ]; const PREFIX = '//'; const SOURCE = DEST_LIST[0]; const starTime = Date.now(); const TIMEOUT = 2000; const STORE_KEY = 'jsdelivr-auto-fallback'; const TEST_PATH = '/gh/PipecraftNet/jsdelivr-auto-fallback@main/empty.css?'; const shouldReplace = (text) => text && text.includes(PREFIX + SOURCE); const replace = (text) => text.replace(PREFIX + SOURCE, PREFIX + fastNode); const setTimeout = window.setTimeout; const $ = document.querySelectorAll.bind(document); const replaceElementSrc = () => { let element; let value; for (element of $('link[rel="stylesheet"]')) { value = element.href; if (shouldReplace(value) && !value.includes(TEST_PATH)) { element.href = replace(value); } } for (element of $('script')) { value = element.src; if (shouldReplace(value)) { const newNode = document.createElement('script'); newNode.src = replace(value); element.defer = true; element.src = ''; element.before(newNode); element.remove(); } } for (element of $('img')) { value = element.src; if (shouldReplace(value)) { // Used to cancel loading. Without this line it will remain pending status. element.src = ''; element.src = replace(value); } } // All elements that have a style attribute for (element of $('*[style]')) { value = element.getAttribute('style'); if (shouldReplace(value)) { element.setAttribute('style', replace(value)); } } for (element of $('style')) { value = element.innerHTML; if (shouldReplace(value)) { element.innerHTML = replace(value); } } }; const tryReplace = () => { if (!isRunning && failed && fastNode) { console.warn(SOURCE + ' is not available. Use ' + fastNode); isRunning = true; setTimeout(replaceElementSrc, 0); // Some need to wait for a while setTimeout(replaceElementSrc, 20); // Replace dynamically added elements setInterval(replaceElementSrc, 500); } }; const checkAvailable = (url, callback) => { let timeoutId; const newNode = document.createElement('link'); const handleResult = (isSuccess) => { if (!timeoutId) { return; } clearTimeout(timeoutId); timeoutId = 0; // Used to cancel loading. Without this line it will remain pending status. if (!isSuccess) newNode.href = 'data:text/plain;base64,'; newNode.remove(); callback(isSuccess); }; timeoutId = setTimeout(handleResult, TIMEOUT); newNode.addEventListener('error', () => handleResult(false)); newNode.addEventListener('load', () => handleResult(true)); newNode.rel = 'stylesheet'; newNode.text = 'text/css'; newNode.href = url + TEST_PATH + starTime; document.head.insertAdjacentElement('afterbegin', newNode); }; const cached = (() => { try { return Object.assign( , JSON.parse(localStorage.getItem(STORE_KEY) || '') ); } catch { return ; } })(); const main = () => { cached.time = starTime; cached.failed = false; cached.fastNode = null; for (const url of DEST_LIST) { checkAvailable('https://' + url, (isAvailable) => { // console.log(url, Date.now() - starTime, Boolean(isAvailable)); if (!isAvailable && url === SOURCE) { failed = true; cached.failed = true; } if (isAvailable && !fastNode) { fastNode = url; } if (isAvailable && !cached.fastNode) { cached.fastNode = url; } tryReplace(); }); } setTimeout(() => { // If all domains are timeout if (failed && !fastNode) { fastNode = DEST_LIST[1]; tryReplace(); } localStorage.setItem(STORE_KEY, JSON.stringify(cached)); }, TIMEOUT + 100); }; if ( cached.time && starTime - cached.time < 60 * 60 * 1000 && cached.failed && cached.fastNode ) { failed = true; fastNode = cached.fastNode; tryReplace(); setTimeout(main, 1000); } else { main(); } })(document);index.min.js 代码:(n=>for(e of v("img"))t=e.src,d(t)&&(e.src="",e.src=m(t));for(e of v("*[style]"))t=e.getAttribute("style"),d(t)&&e.setAttribute("style",m(t));for(e of v("style"))t=e.innerHTML,d(t)&&(e.innerHTML=m(t))},y=()=>,b=(()=>,JSON.parse(localStorage.getItem(c)||""))}catch}})();var h=()=>;r=u(l,o),s.addEventListener("error",()=>l(!1)),s.addEventListener("load",()=>l(!0)),s.rel="stylesheet",s.text="text/css",s.href=e+f+i,n.head.insertAdjacentElement("afterbegin",s)})("https://"+t,e=>);u(()=>,o+100)};b.time&&i-b.time<36e5&&b.failed&&b.fastNode?(s=!0,r=b.fastNode,y(),u(h,1e3)):h()})(document);用户脚本作为用户,你也可以使用油猴脚本将网站中的 cdn.jsdelivr.net 替换为可以访问的域名。浏览器安装 Tampermonkey。安装脚本: https://greasyfork.org/zh-CN/scripts/445701-jsdelivr-auto-fallbackjsdelivr 可用节点比较gcore.jsdelivr.netGcore 节点可用性高testingcf.jsdelivr.netCloudflare 节点可用性高quantil.jsdelivr.netQuantil 节点可用性尚可fastly.jsdelivr.netFastly 节点可用性尚可originfastly.jsdelivr.netFastly 节点可用性低cdn.jsdelivr.net通用节点可用性低参考文章https://www.neosey.com/archives/55.htmlhttps://iui.su/167/
2023年04月01日
9 阅读
0 评论
0 点赞
1
...
3
4
5
...
8