飞蚊话 发布的文章

一直用Cloudflare作为我这个域名的DNS和CDN。一来,我的服务器在德国,不能备案。所以虽然可以用国内的域名解析,但不能用国内的CDN,访问速度必然会是一个问题;二来,Cloudflare的CDN是免费的。免费的东西谁不喜欢::(阴险)

因为本身我这个博客也申请过ssl证书,而Cloudflare之前的ssl设置也一直使用的Full(strict),然后从CDN到我这博客的后台都做了强制的https跳转。一直用的也好好的。直到昨天…

不知道脑子哪根筋抽了,想把我的子域名都做上CDN。但Cloudflare的Full模式要求域名要有证书,也要有Cloudflare的证书。

Cf的证书好说,免费申请一个就可以随便用,只要主域名是一个就行;但我自己的证书不行啊,只授权到了www这个下面。所以如果这样的话,就不得不再申请几个证书来用。太麻烦了…就不如把Cf的SSL降到Flexible来用来得快。


Cf的SSL等级有4个:Off、Flexible、Full和Full(Strict)。区别看图


然后,满心欢喜的把我的很多二级域名都打开了CDN。再来ping一下:

完美。ping到的ip已经是Cf的CDN地址了。加速的同时,我的真实ip也已经被隐藏了。其实本身我的真实ip也是禁ping的…所以就算知道了,如果想用ping来验证大概也是不可能的

但随之而来的就是对这个正经的HTTPS站点一些坑爹的善后了…

一、重定向次数过多

一开始没发现这个问题,直到在满意的离开我那些带有小绿锁的二级域名站,转到www下面时…

打开控制台看跳转(用到了Firefox。因为火狐不会提示这个错误而是会一直跟着跳转走,直到内存耗尽),发现访问地址不断的在http和https之间来回跳跃。

仔细阅读SSL的帮助,发现对Flexible的解释中提到了一点:

Note: You may encounter a redirect loop with some origin configurations.

为什么呢?往前看一看:

Visitors will be able to access your site over HTTPS, but connections to your origin will be made over HTTP. 

所以说,使用flexible时,浏览器请求HTTPS到cf,而cf则请求HTTP到我的服务器上。而对于www这个网址,我之前又配置过强制HTTPS,也就是说,cf通过HTTP链接服务器的请求全部被跳转到了HTTPS,但cf又把它拉回了HTTP。这循环便形成了。

明白了原因,那解决就很好办了。因为我是用宝塔的,所以直接去这个网站的SSL设置,将强制HTTPS关掉,便万事大吉了。

直到我想登录的时候…

二、登录不作用

什么现象呢?当我想登陆时,输入好用户名和密码后点击登录,页面会刷新一下,然后我填写的东西便被吞噬了。

仿佛无事发生。

可还行::(阴险)

这我可是真的没头绪了…毕竟在Full模式时候都没出现过这种问题,怎么等级松下来了,反而登录不了了…

直到搜到了这个博客的文章,提到了个解决方案,就是在config.ini.php下加入一行:

 /** 开启HTTPS */
define('__TYPECHO_SECURE__',true);

虽然这个博主的问题是评论不可用,我这是登录不可用,但都是不可用,所以就死马当活驴医,试试吧。

然后…就可以了…

我所有二级域名都可以愉快的使用CDN和HTTPS了。

视频点此

之前说过了使用transmission搭建bt离线下载服务。但是这个的局限性在于只支持种子和磁力链的下载。那对于迅雷、百度网盘、FTP,或者仅仅是普通的http下载,有没有什么办法呢?

当然有。aria2,一款命令行操作,基本可以做到全速下载的强大的下载工具,并且支持迅雷离线以及百度云等常用网盘的多线程下载(甚至可以超过专用客户端的下载速度)。但就像我刚刚说的,Aria2是一个命令行软件,很多人嫌麻烦或者不会弄,就这样错过了一个下载神器,因此我们可以使用一个Aria2的控制前端,直接通过浏览器来操作下载。不但操作更加简单容易,还能架设在服务器上面,造就一个全功能的离线下载服务。来看看怎么弄。

一、部署前端

因为之前已经安装过宝塔面板,所以直接通过它来完成。
  • 登录面板,新建一个纯静态站
  • 进入这个静态站的根目录,远程下载WebUI项目到这个目录并解压(Download ZIP即可,不必git clone)
  • 进入刚刚解压出的文件夹,将里边的文件全部拷贝到网站根目录
  • 进入docs文件夹,将文件全部拷贝到网站根目录

至此,前端已经部署完毕了

二、部署后端

因为已经安装过宝塔面板,所以默认http的组件已经安装好了,否则请配置httpd以保证web页面可以正常显示
  • 安装aria2:yum -y install aria2

至此,后端就部署完毕了

三、运行

  • 先启动后端:aria2c --enable-rpc --rpc-listen-all --rpc-secret 你的密码
  • 进入宝塔面板 - 安全,放行6800端口
  • 现在,进入webUI,应该会提示无法连接服务。点击设置——连接设置,配置好主机、端口号(应该是6800)、密码令牌(启动后端时,rpc-serct后面的字符就是了)即可。

至此,一个几乎全能的离线下载服务已经搭建好了。只是需要注意一点,通过ssh启动后端时,需要让其在后台运行。你可以使用screen这个包来实现,或者直接在命令的结尾加一个&即可。

这是b站一个小伙伴问到的。但是具体哪里出问题了我也不是很清楚,所以就写一下我的安装过程。简而言之,就是通过archlinuxcn源来完成

1、编辑/etc/pacman.conf,在末尾添加以下文本:

[archlinuxcn]
Include = /etc/pacman.d/mirrorlist-archlinuxcn

2、通过命令pacman -Syu更新软件仓库

3、通过命令pacman -S archlinuxcn-keyring安装cn源的密钥环

4、通过命令pacman -S vmware-workstation安装vmware即可。

效果图:

视频点此

利用服务器搭建一个BT种子/磁力链下载机,省去我们自己挂机的烦恼。如果你的VPS在国外,可能还会起到些许加速的作用。

请注意,我服务器的操作系统为CentOS7,安装有宝塔面板

一、安装并配置Transmission

Transmission 是一款开源、跨平台的BT文件下载客户端,同时也提供有服务器使用的离线下载方案。对于大多数Linux发行版来说,Transmission已经进入到软件源中,只需要安装并进行简单的配置便可以投入使用了。

1、如果之前没有配置epel源,需要先行添加

yum -y install epel-release
yum -y update

2、安装Transmission-daemon

yum -y install transmission-daemon

3、先运行一次,以产生配置文件

  • 先启动 systemctl start transmission-daemon
  • 再关闭 systemctl stop transmission-daemon

4、编辑文件/var/lib/transmission/.config/transmission-daemon/settings.json,查找并修改如下几句以保证可以在任意地方通过账户密码登陆管理transmission

"rpc-authentication-required": true,  
"rpc-enabled": true, 
"rpc-password": "远程调用的密码", 
"rpc-whitelist-enabled": false,
"rpc-username": "远程调用的用户名", 

5、如果想在服务器重启后这个服务可以自动启动,可通过命令systemctl enable transmission-daemon实现

二、配置宝塔面板

1、在安全页中,放行9091端口

注意:transmission默认使用9091端口。所以请保证9091没有被占用。否则请在刚刚提到的settings.json中修改端口号

2、配置一个nginx下载,指向transmission的下载目录。默认是 /var/lib/transmission/Downloads

nginx下载服务配置方法,参见 利用Nginx建立简单的下载服务器


现在,通过命令systemctl start transmission-daemon来启动,并在浏览器中输入服务器ip:9091来看看吧。

至此,一个基本的种子离线下载环境就搭建完成了。默认的界面有些简陋,可以自行进行美化。同时,settings.json文件中还有很多其他的设置向,根据需要修改即可。

在开源驱动和闭源驱动之间进行切换时,KDE的字体会受到影响。最典型的就是最近从Intel核显切换到NVIDIA独显使用,重启之后从sddm到KDE,字体都变得异常小,以至于几乎看不清了。不过好在这个问题普遍存在,所以很容易就找到解决方案了。只是有一个坑要注意,所以特别来记录一下

一、调整KDE字体

根据解释,在切换到英伟达驱动后,字体改变的原因在于NVIDIA驱动使用了显示器提供的DPI设置。而KDE与Gnome等其他的DE不同之处在于它并没有强制使用某一个固定的字体DPI值。所以在切换驱动后,KDE的字体会受到影响而其他DE基本不会。

解决方案也很简单,前往 系统设置—字体 ,将 固定字体DPI 勾选,并保持96默认值即可。

二、调整SDDM大小

正如前面说到的,NVIDIA使用了显示器提供的DPI,所以SDDM的大小同样会受到影响。所以可以通过修改sddm的配置文件解决。

打开 /etc/sddm.conf(具体位置需要自行查找),找到 ServerArguments=-nolisten tcp 字段(在[X11]区域内),在这句话的结尾追加 -dpi 96 (96根据自己的情况修改)。最终效果为

ServerArguments=-nolisten tcp -dpi 96

保存即可。

但是在我的sddm配置文件中,并没有这个字段。这可能是由于这个配置文件是KDE生成的,而不是SDDM自己产生的。所以一些无关紧要的配置项便没有设定。因此在进行上述操作之前,需要生成一份全功能的配置文件。

# 将当前配置文件备份(具体文件位置视自己的情况而定)
sudo mv /etc/sddm.conf /etc/sddm.conf.bak
# 切换到root
sudo su
#生成sddm的配置模板
sddm --example-config > /etc/sddm.conf

然后便可以修改了。

注意,如此生成之后,sddm的所有配置就都被初始化了,所以需要前往 系统设置—开机和关机—登陆屏幕(SDDM) 中重新配置一下。

至此,驱动切换前后的字体问题便解决了。

视频点此

先来假设一个场景。

众所周知,Steam的软件一定是保存在某一个文件夹下面的。假如说,我有一个分区专门保存我的游戏,那么我如何才能将Steam的游戏都直接放在分区下面而不是在Steam库文件夹下面呢?

在看过我今天这个神奇的快捷方式之后,你就知道要怎么做了。


要注意,今天这个功能,Win、Linux、Mac都是可以使用的。只是Win与另外两者的命令有些不同。而Linux对文件之类的快捷方式本身就会用到这种。所以为了对比,我这次在Win下进行演示。直接上演示让你感受一下。

一、文件

我事先已经安装好了{{7z这个压缩软件:C:\Program Files\7-Zip}},是可以正常使用的。现在,我把安装目录下的7z.dll剪切到{{桌面:C:\Users\gameb\Desktop}}。显然,由于缺少了7z.dll这个库,尝试运行时候会提示出错。

如果我们把7z.dll复制一份普通的快捷方式放到安装目录下面,它可以运行吗?很明显,快捷方式只是一个很弱鸡的快捷方式,并不能行使dll文件本身的职能,所以还是出错的。顺便请你记住这个快捷方式的大小:1KB.

现在,用管理员身份打开命令提示符,使用mklink "C:\Program Files\7-Zip\7z.dll" C:\Users\gameb\Desktop\7z.dll的形式来召唤那个更强大的快捷方式。

可以看到,它的大小占用为0K. 然而,虽然体积近似于没有,但当我们尝试运行7z的时候,你会惊奇的发现:它可以运行了!这个比弱鸡快捷方式的体积还小的快捷方式竟然可以履行dll本身的职能!

二、文件夹

现在,我们在把目光转移到文件夹上。我事先在桌面建立了一个名字叫temp的文件夹。现在我们创建一个普通的快捷方式,放到这个文件夹内,双击,资源管理器的路径会显示到哪里?

没有错,还是它本身的位置没有动。

但是,通过命令mklink /D C:\Users\gameb\Desktop\test\test C:\Users\gameb\Desktop\test,为它创建那个强大的快捷方式,放到它自身目录下面。如果我们双击这个,资源管理器的路径会如何变化?

正如你所见,它真的多了一层!不断的双击还会不断的加多!这个快捷方式真的行使了文件夹的职能了!

这个快捷方式,叫做符号连接

至于它太细节的东西我不打算多说了,因为说了也没啥用。只通过这个图来给你简要说明一下符号连接与快捷方式的不同之处就好了。

正如你所见,一个文件被存放的时候,它会对应一个名称保存在分区开始的内容表中。而快捷方式其实是一个类型为快捷方式的文件。当我们双击快捷方式的时候,其实是访问了快捷方式这个文件,然后它再给引导到它所对应的文件上面。本质上快捷方式和它所对应的文件是不一样的。

但符号连接就不同了,它其实是文件的另一个名字,所以我们双击符号连接和双击文件本身的效果是相同的。

形象一点来说。假如我是用户,你是文件,我直接访问文件就是我直接找的你;而快捷方式就是你公司的传达室大爷,我通过快捷方式访问文件,就是我去找这个老大爷,让他帮我传个话;那么符号连接,就好比是你的电话号码。我通过符号连接访问文件就是我用电话来联系你。虽然看起来多了一层,但我还是直接找到你的。

通过这个比喻,我们还可以顺带着说明另一个问题:你只有一个,而且位置确定。所以直接访问文件必须到存放文件的位置;传达室大爷可以有很多个,可以被放在公司不同的门口。所以快捷方式可以有很多个,也可以放在不同的位置;电话号码同样可以有很多个,我只需要找到任何一个电话号码就行了。所以符号连接也可以有很多个,存放在任何位置。

现在,你应该对符号连接有一个大概的认识了吧。对于应用来讲,符号连接和文件本身是同一个东西。所以借助这个,我们可以很轻易的实现我开头说到的问题——将Steam的游戏直接放在分区下面而不是在Steam库文件夹下面:只需要把游戏文件夹剪切到分区下面,然后在Steam库文件夹建立对应的符号连接就可以了。

最后,说一下Linux和OSX的命令如何书写吧——这个命令很常用所以我觉得你应该挺熟悉的:ln -s 需要创建连接的目标 创建的位置

如果你翻看过Linux系统的根目录,你会发现很多符号连接。所以这个在Linux下面的用处是很大的。当然,对于Windows也一样。只要你有足够的创造力。