相信有很多朋友对于win8系统不太习惯,想要询问怎样把win8降为win7,重新回到熟悉的win7的怀抱。毕竟win7现在可是最受欢迎最多人使用的操作系统,那么接下来就让小编给大家分享一篇高手教你怎样把win8降为win7的教程,让大家都能轻松完成win8降为win7的操作。








相信有很多朋友对于win8系统不太习惯,想要询问怎样把win8降为win7,重新回到熟悉的win7的怀抱。毕竟win7现在可是最受欢迎最多人使用的操作系统,那么接下来就让小编给大家分享一篇高手教你怎样把win8降为win7的教程,让大家都能轻松完成win8降为win7的操作。








自动草稿
今天给大家分享一个基于聚推客联盟快速搭建部署并上线一个外卖cps小程序的简明教程,让我们不需要服务器和域名即可搭建一个属于自己的外卖cps小程序,
该小程序模板功能涵盖了吃、喝、玩、乐,花费充值,电影票,电商购物、衣、食、住、行为一体的综合导购返利小程序平台,不需要购买服务器和域名,聚推客联盟后台一键授权,零成本即可搭建,差不多不到半小时就能搭建好属于你的小程序,数据内容全部接入聚推客联盟,大平台,安全放心,可以通过聚推客联盟后台和小程序实时查看订单收益。
微信小程序注册地址:https://mp.weixin.qq.com/
聚推客联盟:https://pub.jutuike.com/
搭建教程:登录聚推客联盟以后注册一个微信小程序账号,然后授权小程序,授权小程序以后点击上传代码提交审核小程序就可以了,小程序的内容后台设置可以在聚推客联盟直接设置,方便快捷。详细的搭建教程因为毕竟简单就不多做赘述了,聚推客联盟官方具体教程看这里:https://www.yuque.com/kuaifan/uvha37/utwqlb
进入到win10以后,许多的操作方式都发生了变化,比如说在有些时候我们需要对windows系统已保存的wifi密码的查看,在win7的时候我们直接就可以右键点击右下角中的wifi热点图标,选择属性-在安全中就可以直接查看。
但到了win10以后,正常的操作是找不到wifi密码的。只有通过绕个弯子进入到win7时的界面才能找到密码,过程繁琐不说,由于是在win7时期的窗口,说不定哪天微软把它取消了。
那我们有没有简单的方法查看呢?
经过网上查找资料发现,原来这些我们一直都可以用命令提示符cmd去查询,只需要在管理员身份下敲一行代码就可以查看了,win7中适用,在win10中也是如此,毕竟作为系统的核心命令功能还是很强大的,具体如下:
1.首先我们通过管理员身份运行命令提示符
打开开始菜单,展开windows系统文件夹,找到”命令提示符“,点击右键-更多-以管理员身份运行打开命令提示符窗口。
这里为什么不用win+R通过打开运行对话框输入cmd打开命令提示符窗口呢?因为有些朋友的系统可能已经开启了UAC功能,当你用此方式打开的命令提示符后你会发现并不是以管理员身份运行,由于查看wifi密码涉及到更高的权限,所以在使用命令查看时展示的信息会不完成,如果你已经关闭了UAC功能,可以通过此方法打开命令提示符窗口。
然后在命令提示符窗口中输入以下命令
netsh wlan show profile name=查询的wifi名称 key=clear
name=""中为你要查看的系统已保存的wifi无线网热点名称
比如说我的wifi名称为sjgx,输入
netsh wlan show profile name="sjgx" key=clear
回车,就可以看到此wifi的详细属性了,其中在”安全设置“里的”关键内容“后面就是你的wifi密码,怎么样是不是很方便?
当然你也可以一次性把电脑中所有保存的wifi密码都进行查看了。
命令如下:
for /f "skip=9 tokens=1,2 delims=:" %i in (netsh wlan show profiles) do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
有人说前面打开命令提示符也不是挺麻烦的吗?和文章开头提供的查询方法难度不是差不多么?
因为用的是cmd命令,我们肯定可以把它写入到.bat批处理文件中,下次只要使用,直接右键以管理员身份运行就可以查看了,而且文件的位置随便放,这样不就非常方便了。
批处理代码如下:
@echo off netsh wlan show profile name="sjgx" key=clear echo 记好了密码,按任意键退出cmd pause >null exit
对于上面查看所有wifi密码的命令,小编认为最好是将查询的结果输出到txt文本文档中查看,经小编测试如果电脑中保存的wifi热点过多的话,cmd命令提示符窗口就会不停地向下滚动,这在查看时也不方便,后面小编有时间把查询所有wifi密码的批处理文件整理提供给大家。
更新:为方便大家查看win10中已保存的wifi密码,小编经过一番整理,把批处理显示的信息作了处理,只需要下载该批处理文件,解压并运行批处理文件,根据提示输入要查看的已保存密码的wifi名称,回车就可以方面地查看wifi密码了,在使用的过程中如果出现什么问题请随时与我联系。
注意:需要以管理员身份运行该批处理文件,由于无线网加密类型的不同,安全类型有WPA-个人,WPA2-个人,AES等多种形式,一般情况下采用WPA-个人和WPA2-个人两种类型的比较多,如果发现不能正常显示无线网密码,只需右键点击批处理文件-编辑,将其中的skip=32调整为skip=30即可。
下载地址 :https://vvso.lanzous.com/i6pNUjvexhe

我多次遇到用户抱怨 LTS 和稳定版的应用软件包有问题,但又声称开发版从来没有发生过这种事情。然而,以我在软件包技术方面的经验和知识,我不能不强调,这是不对的。
发行模式不是问题的根源所在,根本的问题是传统的软件包格式不适合现代的图形应用,不管是什么发行版。那么像 Nix 和 Flatpak 这样的格式是如何解决这些基本问题的?有趣的是,大多数服务器确实利用了容器化(即 Docker),因为它提高了可重复性并增强了可维护性。我们可以从中得到启发,采用一个适用于 Linux 桌面的类似标准。
“传统软件包”是指使用包管理器发布的图形应用程序,而不使用容器,如apt、dnf、pacman 等。
“发行模式”是指发行过程,如长期支持版(LTS)、稳定版和开发版等。
“类似的应用程序”是指两个在技术上真正相似的应用程序,如Visual Studio Code 和Code - OSS。
在这些例子中,我将使用 Arch Linux 作为参考。然而,这些行为与那些大量采用传统软件包格式的发行版是一致的。
Nix 不使用容器,它也不是一种容器格式。但为了简单起见,我暂时把它称为一种容器格式。
大多数(或许不是全部)大量采用传统软件包格式的发行版都有这个共同的问题:它们都没有利用容器或其他方便的方法来分离依赖关系。用通俗的话说,容器是一个盒子,我们可以把东西放在里面,在不影响主系统(主机)的情况下单独使用它们。
容器通常不会影响“盒子”外的任何东西。并且它们是可移植的,因为它们可以安装在其他发行版上,同时提供一致的体验。利用容器的包管理器会将每个软件包安装在不同的容器中,这提供了一个额外的安全层。这给了开发者更多的控制权和灵活性,他们可以决定在软件包内捆绑什么。
传统的软件包格式产生了一些问题,比如依赖性和包的冲突,这些问题通常需要解决,而不同的发行版有不同的解决办法。
如果我们试图安装 Visual Studio Code(visual-studio-code-bin),而 Code - OSS(code) 已经安装在 Arch Linux 上,我们会遇到这个问题:
$ paru -S visual-studio-code-bin [...] :: Conflicts found: visual-studio-code-bin: code :: Conflicting packages will have to be confirmed manually Aur (1) Old Version New Version Make Only aur/visual-studio-code-bin 1.70.1-1 No
这就是所谓的软件包冲突,即两个或多个软件包不能共存。在这种情况下,我们不能同时安装 Visual Studio Code 和 Code - OSS。
当两个应用程序或软件包提供相同的文件,具有相同的名称,并被放置在同一目录下,那么它们实际上是不能共存的,因为这些文件会发生冲突。在这个例子中,Visual Studio Code 和 Code - OSS 都提供了一个名为 code 的文件,它们都被放在 /usr/bin 中。Visual Studio Code 提供的 code 文件用于启动 Visual Studio Code,而 Code - OSS 的 code 文件则用于启动 Code - OSS。 虽然这个例子只展示了 Visual Studio Code 和 Code - OSS,但这种情况经常发生在不同的应用程序、库和其他软件中。
传统软件包格式的最大问题之一是,打包者不能选择依赖项。
例如,如果一个应用程序最近更新,需要依赖版本 1 的程序 A,但发行版只提供了版本 0.9 的程序 A,那么对于升级该应用程序来说就不太理想,因为发行版无法满足要求。这意味着打包者将不得不暂缓打包,直到该发行版发布新的依赖项,或者采用变通的方法。
同样,如果一个应用程序需要依赖 0.8.1 版本的程序 A,但发行版却只提供了 0.9 版本的程序 A,那么这个应用程序就会表现失常,甚至完全不能运行。
为了扩展,一些应用程序需要带补丁的库或额外的编译配置才能正常运行。例如,OBS Studio 需要一个 打了补丁的 FFmpeg 来与 OBS Studio 更好地整合。
在传统的软件包格式下,一次只能安装一个依赖项的变体。如果发行版提供的是未打过补丁的 FFmpeg,那么就没有办法安装打过补丁的 FFmpeg,除非打包者能解决这个问题。如果安装了打过补丁的 FFmpeg,但另一个程序高度依赖未打过补丁的 FFmpeg、打过其他补丁的 FFmpeg、内置或删除了其他功能的 FFmpeg,那么其他程序就会出现 bug。
现代应用程序本质上是脆弱的。依赖关系树中的一个小错误或不一致,就会导致应用程序的 bug,使用户体验恶化,甚至会让人觉得是应用程序的问题,而不是软件包本身的问题,这就会妨碍应用程序的声誉。
让我们看看目前开发者用来打包应用程序的变通方法:
第一种解决方法是在不同的目录中安装依赖库。例如,Electron 是一个巨大的框架,开发者用它来构建应用程序,然后将它们捆绑起来。然而,基于 Electron 的应用程序是不同的,因为它们是建立在不同版本的 Electron 之上的。Discord 捆绑了 Electron 13,而 Element 捆绑了 Electron 19。对于 Arch Linux 上的 Electron 打包,某些目录需要安装在/opt/APPLICATION_NAME 中,所以这些 Electron 版本不会相互冲突。
第二种解决方法是篡改应用程序。例如,给应用程序打上补丁,使其在没有某些依赖库或功能的情况下编译,这可以使应用程序成功编译,但不能保证该应用程序能够启动或按预期工作。
第三种解决方法是在编译应用程序时禁用许多编译选项,这也可能禁用一些功能。例如,在 Arch Linux 上,OBS Studio 在编译时禁用了许多基本功能,这导致了不合格的体验。
这些解决方法因人而异,有些会限制应用程序的功能,有些会引入稳定性问题等等。
虽然这些技术限制在整个传统软件包格式中是一致的,但用户体验往往不是这样。由于软件包的发布方式,发行模式与传统软件包格式相结合会影响用户体验。
一些发行版,如 Arch Linux,接近于开发版,因此有最新版本的软件包。然而 Debian 和 Ubuntu LTS 是 LTS 长期支持版,所以它们的很多软件包都落后几个版本。同时,Fedora Linux 和 Ubuntu 稳定版处于 Debian / Ubuntu LTS 和 Arch Linux 之间。
一些软件包格式喜欢尽可能少地给软件包打补丁,以保持它们最接近原版;而另一些格式打补丁是为了增加更多的功能,使用旧库或进行其他类型的更改,以改善用户体验。一些格式喜欢使软件更加轻量化;而另一些格式更喜欢尽可能地添加更多内置功能。软件包有各种各样的习惯和偏好。
正如我们所看到的,一个应用程序在不同的发行版中的构建方式非常不同。此外,不同的发行版的依赖关系也是不同的。传统软件包格式的许多技术限制需要根据发行模式和打包策略采取不同的解决方法。这些微小的变化往往给用户带来不完整的、不合格的体验和错误的印象。一些应用程序可能在某些发行版上运行得更好,但在其他发行版上运行得很差,而其他一些应用程序则运行得更好。即使一个应用程序在每个发行版上的构建方式不同,但其名称和品牌却保持原样,给用户留下错误的印象。
如上所述,解决这些问题的方法是使用容器。
容器被设计用来分离系统的几个方面。通过使用容器,打包者可以挑选依赖项而不受主机上的库限制。因此,打包者可以发布最新的、功能完整的软件包,同时保持发行的稳定性。
这一点非常重要,因为这些容器格式可以将应用程序和发行版发挥出最大的作用,而不会对系统造成破坏性的影响。
Nix 是一个跨平台的包管理器,可以在类 Unix 操作系统中运行,如 Linux 发行版、BSD 和 macOS。Nix 有几个 通道(分支)供用户使用。
另一方面,Flatpak 是一个用于 Linux 桌面的通用软件包格式,它也利用容器,但另外还有沙盒来隔离它们。它旨在以后可以供普通人使用,并被设计为与软件商店(如 GNOME “软件Software” 和 KDE “发现Discover)集成。换句话说,Flatpak 更像是发行版的一个扩展,而不是一个软件包格式的替代品,因为它的设计初衷不是为了取代系统包管理器。
如果使用 NixOS 等发行版,Nix 也可以作为一种扩展或单独使用。
Nix 和 Flatpak 解决了传统软件包格式的许多基本问题。由于应用程序的分离,这些格式可以安装类似的应用程序,如 Visual Studio Code 和 Code - OSS,而不会冲突。
Nix 和 Flatpak 可以安装同一个应用程序的多个版本。使用 Nix,我可以从 nixpkgs-stable(LTS)安装应用程序,同时也可以从 nixpkgs-unstable(开发版)安装同一个应用程序。
同样地,使用 Flatpak,我可以同时从 stable 和 beta 分支安装应用程序。我可以从更多的途径和分支继续安装同一个应用程序,而不会遇到冲突。
此外,打包者可以将应用程序与不同变体的库捆绑在一起,从而有机会启用更多的构建选项,并使用打过补丁或特定版本的库,从而为用户提供完整的体验。
这意味着打包者可以将打了补丁的 FFmpeg 与 OBS Studio 捆绑在一起,只为了用在 OBS Studio
中。如果我在主机上安装了普通的 FFmpeg,那么 OBS Studio 的补丁 FFmpeg 就不会与主机的 FFmpeg 发生干扰或冲突。
如上所述,各发行版使用不同的补丁、构建选项和环境构建应用程序。这导致了应用程序的碎片化,每个应用程序的构建方式和工作方式往往不尽相同。由于
Nix 和 Flatpak 是为跨发行版运行而设计的,它们在每个发行版中为应用程序提供一致的环境,前提是发行版提供了 Nix 或
Flatpak 的支持版本。
就像所有事物一样,Nix 和 Flatpak 不是完美的。由于最近在 Linux 桌面上容器技术得到了推崇,它们可能为许多应用程序提供了不寻常的环境。
Flatpak 不仅包含了应用程序,还对它们进行沙盒处理。Flatpak 的开发者已经实施了一个短期的变通方案,“在沙盒上打洞”,即所谓的静态权限。他们正在开发适当的长期解决方案,称为 XDG 门户,以解决有关沙盒的许多问题,并使其像 Android 的安全模型一样。
唯一的短期问题是,工具包、框架和应用程序必须采用这些标准。GTK 和 Qt 这样的工具包集成了其中一些门户portal,但它们也需要时间来集成其他的门户。同时,许多其他的工具箱还没有真正集成任何门户。
工具包、框架和应用程序采用这些新标准是一个时间问题,因为在 XDG 门户之前没有任何适当的标准。应用程序可以直接访问文件系统和 API,所以静态权限保持这种 “标准”。
传统软件包格式的根本问题是它没有利用容器。许多图形化的应用程序本质上是复杂的,需要非常具体的依赖关系才能按预期运行。许多发行版通过使用变通的方法在不同的环境中构建同一个应用程序,例如给应用程序打补丁或禁用某些构建选项。这导致了一个应用程序的不同变体、不一致的行为和不合格的用户体验。
当然,发行版的维护者不可能在几天内现实地重写他们的包管理器并使用容器。这些重写会破坏许多脚本、功能等,而且还需要很长时间才能投入生产环境。
我个人的建议是使用和推广 Flatpak,因为它只是为了扩展现有的发行版,而不是取代它。打包者不必担心打包应用程序,以及诉诸变通的问题,因为 Flatpak 已经在处理这些问题了。
作者 Hari Rana 最初发表于此博客。
Hari 是 Fedora 杂志的 Fedora 编辑委员会的成员。他也是 Fedoea 质量保证(QA)的一员。Hari 希望通过推广各种技术和帮助需要帮助的人,为 Linux 桌面的采用作出贡献。
本文所表达的观点和意见是作者本人的,并不代表我们的观点。
宝塔面板一键安装公益404页面代码丨帮助找回走失儿童404页面
这是一个宝塔面板一键可以一键安装404响应式页面的教程,我们在宝塔面板中安装该应用后可以对你的网站一键设置404页面,应用名为404公益,可以帮助找回那些走失的儿童,和设置创意公益视频,我相信打开我们心中那善良的窗可以去温暖更多需要的人。正如域名公益网站中的一句话:“小代码,大公益”;页面中共有6个404可供选择模板,所有样式均采用响应式设计,自定义色调、中英文双语言显示和支持深色模式,可以选择一键对某一站点404页面进行配置,不会影响到网站原有的任何内容,并且每次展示的走失儿童的信息都不一样,我们可以最大限度的在不同地区帮助不同的儿童,页面分发来自域名公益。
你也可以通过转让闲置域名的方式来参加此公益活动,方法如下:如果你有闲置域名,请使用CNAME方式把它指向DO.DNPW.ORG即可参与本公益,也可以注册该404公益站账户后进行多个域名展示和售卖。
宝塔面板公益404页面安装教程如下:
宝塔面板一键安装公益404页面代码丨帮助找回走失儿童404页面
宝塔面板一键安装公益404页面代码丨帮助找回走失儿童404页面
公益404页面演示截图:
宝塔面板一键安装公益404页面代码丨帮助找回走失儿童404页面
NextCloud可通过插件实现在线编辑Office文档,不过前提是需要依赖于Collabora Online服务,记录一下操作过程。

Collabora Online提供多种平台和多种安装方式,这篇文章使用Linux Docker方式来一键部署。
#安装docker
yum -y install docker
#运行docker
service docker start
#设置docker开机启动
systemctl enable docker
#部署Collabora Online
docker pull collabora/code
#运行Collabora Online
docker run -t -d -p 127.0.0.1:9980:9980 -e "domain=<your-dot-escaped-domain>"
-e "username=admin" -e "password=S3cRet" --restart always --cap-add MKNOD collabora/code
注意上面的<your-dot-escaped-domain>指的是WOPI主机,也就是您NextCloud所使用的域名,多个域名可以用|进行分隔,您需要在命令行中使用双反斜杠,因为shell会转义第一个,而domain参数会使用正则表达式。
比如您NextCloud域名是https://cloud.ttt.sh/,那么输入的命令应该是如下:
docker run -t -d -p 127.0.0.1:9980:9980 -e "domain=cloud.ttt.sh"
-e "username=admin" -e "password=S3cRet" --restart always --cap-add MKNOD collabora/code
账号、密码请根据自己需要进行调整,如果不报错应该是安装成功了,输入命令netstat -apn|grep 9980看到如下截图说明Collabora Online已经正常运行。

上一个步骤Collabora Online虽然已经安装成功,但是只能内网访问,假如您需要公网方式来提供服务,可以使用Nginx反向代理。以下是xiaoz的Nginx反向代理配置,供参考:
server
{
listen 443 ssl http2;
#listen [::]:443 ssl http2;
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /data/ssl/ttt.sh.crt;
ssl_certificate_key /data/ssl/ttt.sh.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# intermediate configuration. tweak to your needs.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
ssl_prefer_server_ciphers on;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
server_name office.ttt.sh;
# static files
location ^~ /loleaflet {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# main websocket
location ~ ^/lool/(.*)/ws$ {
proxy_pass https://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
# download, presentation and image upload
location ~ ^/lool {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# Admin Console websocket
location ^~ /lool/adminws {
proxy_pass https://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
}
server
{
listen 80;
server_name office.ttt.sh;
rewrite ^(.*) https://office.ttt.sh$1 permanent;
}
然后访问https://<CODE-domain>/loleaflet/dist/admin/admin.html可以进入Collabora Online控制台,至此Collabora Online服务已经部署完毕。

在NextCloud后台 - 应用 - 找到Collabora Online插件并启用。然后在设置 - 在线协助,填写Collabora Online的域名,如下截图。

最后打开NextCloud中的Office文档可以在线编辑了,如下截图。

Collabora Online不仅可以为NextCloud为提供在线文档编辑,也可以让Seafile 支持Office预览。值得一提的是Collabora Online比较耗费内存,尤其是多人同时编辑文档的情况下,因此部署Collabora Online建议4G内存以上。
Linux自动备份mysql数据库(含docker部署的)
此处以docker部署的mysql为例
首先使用bash命令创建一个sh脚本文件并赋予执行权限
touch Auto_backup.sh && chmod +x Auto_backup.sh
使用编辑器打开这个脚本,并添加以下内容:
#!/bin/bash
# 自动备份docker mysql数据库
# 定义备份路径
backup_dir=/Users/zdy/Desktop/mysql
# 定义备份时间
backup_time=`date +%Y_%m_%d_%H时%M分%S秒`
# 使用进入mysql容器执行mysqldump命令并备份数据库并将文件名更改为当前时间,此处--databases参数为备份多个数据库,若只有一个数据库备份,可以省略改参数
docker exec mysql mysqldump -u数据库用户名 -p数据库密码 --databases waline matomo | gzip > $backup_dir/backup_$backup_time.sql.gz
# 非docker部署时使用
# mysql mysqldump -u数据库用户名 -p数据库密码 --databases waline matomo | gzip > $backup_dir/backup_$backup_time.sql.gz
# 删除7天前的备份
find /www/mysql_backup -name "*.sql.gz" -mtime +7 | xargs rm -f
# 备用删除命令
# find $backup_dir -mtime +7 -name "*.sql.gz" -exec rm -rf {} \;
# 如果不需要压缩使用(直接备份为SQL文件)
# docker exec mysql mysqldump -u数据库用户名 -p数据库密码 --databases waline matomo > $backup_dir/backup_$backup_time.sql
# find /www/mysql_backup -name "*.sql.gz" -mtime +7 | xargs rm -f
此时这个脚本就手动运行可以进行数据备份了,此处会提示在命令行界面上使用密码可能不安全。请注意哦!不过我一般使用RSA秘钥免密码连接,通常不存在泄露问题
定时自动备份mysql数据库
–all-databases, -A: 备份所有数据库
–databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldum把每个名字都当作为数据库名。–force, -f:即使发现sql错误,仍然继续备份
–host=host_name, -h host_name:备份主机名,默认为localhost
–no-data, -d:只导出表结构
–password[=password], -p[password]:密码
–port=port_num, -P port_num:制定TCP/IP连接时的端口号
–quick, -q:快速导出
–tables:覆盖 –databases or -B选项,后面所跟参数被视作表名
–user=user_name, -u user_name:用户名
–xml, -X:导出为xml文件
这时候我们再添加一个定时任务,在每天凌晨2时自动对数据库进行一次备份,这里会用到Linux的crontab 命令了
# 查看定时任务
crontab -l
定时自动备份mysql数据库
# 修改定时任务,第一次运行会提示使用哪一个编辑器,我选择2使用vim
crontab -e
定时自动备份mysql数据库
* * * * * commad
分 时 日 月 周 命令第
1列表示分钟1~59, 每分钟用*或者*/1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列表示星期0~6(0表示星期日)
第6列是要运行的命令
# 使用 mysql 命令还原数据库格式如下:
mysql -u用户名 -p 数据库名 < 数据库名.sql
将数据库备份文件再备份到另一台服务器上,如果这一台服务器出现问题,文件丢失,另一台服务器还有备份
此处主要用到scp命令
# 将当前备份文件复制到远程服务器
scp $backup_dir/backup_$backup_time.sql 用户名@远程服务器:路径/backup_$backup_time.sql
#!/bin/bash
# 自动备份docker mysql数据库
# 定义备份路径
backup_dir=/Users/zdy/Desktop/mysql
# 定义备份时间
backup_time=`date +%Y_%m_%d_%H时%M分%S秒`
# 使用进入mysql容器执行mysqldump命令并备份数据库并将文件名更改为当前时间,此处--databases参数为备份多个数据库,若只有一个数据库备份,可以省略改参数
docker exec mysql mysqldump -u数据库用户名 -p数据库密码 --databases waline matomo | gzip > $backup_dir/backup_$backup_time.sql.gz
# 非docker部署时使用
# mysql mysqldump -u数据库用户名 -p数据库密码 --databases waline matomo | gzip > $backup_dir/backup_$backup_time.sql.gz
# 删除7天前的备份
find /www/mysql_backup -name "*.sql.gz" -mtime +7 | xargs rm -f
# 备用删除命令
# find $backup_dir -mtime +7 -name "*.sql.gz" -exec rm -rf {} \;
# 如果不需要压缩使用(直接备份为SQL文件)
# docker exec mysql mysqldump -u数据库用户名 -p数据库密码 --databases waline matomo > $backup_dir/backup_$backup_time.sql
# find /www/mysql_backup -name "*.sql" -mtime +7 | xargs rm -f
# 拷贝到远程服务器
scp $backup_dir/backup_$backup_time.sql 用户名@远程服务器:路径/backup_$backup_time.sql

Alpine Linux是一个社区开发的面向安全应用的轻量级Linux发行版操作系统,占用资源很少,
初始状态基本只占用几M内存和几十兆硬盘,而且还很稳定,适合很多小型服务器和设备使用。
你可以通过如下脚本将VPS上现有的Linux系统一键转换为Alpine Linux。但是你需要注意的是,
脚本只支持openvz6构架的vps,并且VPS上原有数据会全部丢失,安装成功后ssh端口号会变为22,密码不变。
已经在gullo 德国nat机(openvz7)上试了下,重装后再也无法开机,通过vps面板重装系统也不能开机了。
wget --no-check-certificate -O alpine-install.sh https://git.io/JeD5I && bash alpine-install.sh
执行完毕后,几分钟即可重新连接SSH。
Alpine常用命令
apk update //更新最新镜像源列表
apk search //查找所以可用软件包
apk search -v //查找所以可用软件包及其描述内容
apk search -v acf* //通过软件包名称查找软件包
apk search -v -d docker //通过描述文件查找特定的软件包
apk add openssh //安装一个软件
apk add openssh openntp vim //安装多个软件
apk add --no-cache mysql-client //不使用本地镜像源缓存,相当于先执行update,再执行add
apk info //列出所有已安装的软件包
apk info -a zlib //显示完整的软件包信息
apk info --who-owns /sbin/lbu //显示指定文件属于的包
apk upgrade //升级所有软件
apk upgrade openssh //升级指定软件
apk upgrade openssh openntp vim //升级多个软件
apk add --upgrade busybox //指定升级部分软件包
apk del openssh //删除一个软件
Alpine服务管理
alpine没有使用fedora的systemctl来进行服务管理,使用的是RC系列命令:
rc-update //主要用于不同运行级增加或者删除服务
rc-status //主要用于运行级的状态管理
rc-service //主用于管理服务的状态
rc-status -a //列出系统所有服务
可以对Nextcloud配置反向代理,使反向代理服务缓存诸如图片、CSS、JS这样的静态文件,或将处理HTTPS请求的负载转移到其他服务器上,也可以利用多台服务器配置负载平衡。
下文中所介绍的参数需要添加到config/config.php文件中的$CONFIG = array (...)中才可生效,格式遵守PHP数组的语法,为:
value, parameters_2 => [value_1,value_2], ... );
安全起见,你必须为Nextcloud指定可以信赖的反向代理服务器。来自可信代理的请求将会被做特殊处理以获取客户端的真实信息,确保访问控制和日志不会出错。相关的参数可以在config/config.php中设置。
将trusted_proxies参数设置为包含代理服务器IP地址的数组,以定义Nextcloud可以信任的代理服务器。此参数可防止客户端受到欺骗,您应像保护您的Nextcloud服务器一样保护这些服务器。
一个反向代理服务应该能够在HTTP头部中包含客户端的真实IP,Nextcloud能够使用这样的HTTP头部获取客户端的IP地址。Nextcloud默认使用实际中的标准头部X-Forwarded-For,如果你想修改默认值,可以在forwarded-for-headers参数中设置。该参数是一个PHP字符串查找数组,例如 ‘X-Forwarded-For’ 要写成‘HTTP_X_FORWARDED_FOR’,如果设置不正确,客户端的IP地址对于Nextcloud来说是不可见的。至于头部中X-Forwarded-For的取值,将取决于反向代理服务器的配置。
一般的,对于Nginx,我们可以添加如下内容到location{}块中,使Nginx在客户端请求的HTTP头部标出客户端的真实IP,然后传给后端的Nextcloud。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Nextcloud对主机名,协议或web目录的自动检测可能会在使用反向代理服务器的某些情况下失效。该配置用于手动覆盖自动检测。
如果Nextcloud未能成功地检测到主机名、协议和web目录,你可以使用config/config.php中的overwrite参数来覆盖它们。overwritehost参数用于设定反向代理服务器的主机名,可以同时指定端口号。overwriteprotocol参数用于设定反向代理服务器所使用的协议,有HTTP和HTTPS两种协议可选。overwritewebroot用于指定Nextcloud的目录,需使用绝对目录。如果你想让自动检测功能只对其中的一个或几个参数生效,只需将这些参数删除或将它的值留空。overwritecondaddr参数用于覆盖原本取决于远程客户端的IP地址,该项的值应当是一个代理服务器的IP地址的正则表达式。当你代理的是一个只允许HTTPS的Nextcloud实例并且想为HTTP请求使用自动检测时,这一项十分有用。
如果你想要通过IP地址为10.0.0.1的反向代理服务器https://ssl-proxy.tld/domain.tld/nextcloud 通过HTTPS请求访问http://domain.tld/nextcloud,你可以在config/config.php中添加如下内容:
[10.0.0.1], overwritehost => ssl-proxy.tld, overwriteprotocol => https, overwritewebroot => /domain.tld/nextcloud, overwritecondaddr => ^10\.0\.0\.1$, );