这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

博客目录

博客目录主要展示个人的技术内容为主

博客目录主要展示个人的技术博客内容为主

linux教程

linux技术教程和开发经验分享

ubuntu24测试你的服务器带宽是多少

我们有时候买完服务器不知道带宽到底够不够,特别的大带宽服务器,所以这里提供一些测试服务器带宽的命令,方便你测试你的服务器带宽是多少。

ubuntu24测试你的服务器带宽是多少

1.使用speedtest-cli

sudo apt-get install speedtest-cli
speedtest-cli

2.使用iperf3

sudo apt-get install iperf3
iperf3 -c 服务器ip

3.使用hping3

sudo apt-get install hping3
hping3 -c 1000 -S -p 80 服务器ip

以上就是简单的测试出大带宽服务器的带宽命令,希望对你有帮助。

Linux临时或永久设置DNS服务器

有时候我们运行某些项目或者命令的时候,会因为服务器的dns错误导致出问题,这时候就需要我们修改dns服务器了。

有时候我们运行某些项目或者命令的时候,会因为服务器的dns错误导致出问题,这时候就需要我们修改dns服务器了。

相关错误

当服务器的dns错误的时候,我们运行wget命令的时候,会报错如下:

#wget命令行
wget: unable to resolve host address

#curl命令行
curl: (6) Could not resolve host

有些需要请求网络的项目同样也会因为dns错误导致出问题,我们可以运行如下命令查看dns是否正确:

curl https://www.baidu.com

设置DNS服务器

注意临时和永久设置的区别就是,临时设置重启服务器后就会失效,永久设置重启服务器后依然生效。

建议先用临时设置DNS的方法验证我们的问题是否被解决,然后在永久修改DNS服务器。

临时设置DNS服务器

临时设置DNS服务器的方法很简单,只需要在命令行输入如下命令即可:

#设置Google DNS服务器
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

运行完即为设置成功。

永久设置DNS服务器

由于dns服务器问题普遍出现在centos系统上,所以我们只讲解centos及其衍生系统,教程适用于centos7+,AlmaLinux,Rocky Linux等系统。

对于linux不太熟悉的新手来说,如果你安装了宝塔面板,可以在宝塔面板安装linux工具箱,设置主dns服务器为8.8.8.8,备用dns服务器为8.8.4.4。

首先使用root权限登录服务器,然后输入如下命令:

#检测并判断是否安装网卡检测工具
if ! command -v ifconfig &> /dev/null; then yum install -y net-tools; fi

#获取网卡信息
ifconfig -a

看到接口信息后,显示inet服务器IP的就是你的网卡信息,该部分左上角的英文就是你的网卡名称,也有可能是其他的。

下面开始设置永久dns,运行以下命令:

cd /etc/sysconfig/network-scripts/
#找到网卡配置文件,一般名称为ifcfg-网卡名称,如ifcfg-eth0
ls
#修改配置文件,运行命令之前,先将下面2个命令的后面改成你的网卡配置文件名称
sed -i '/DNS1=/d' ifcfg-eth0
echo "DNS1=8.8.8.8" >> ifcfg-eth0
#重启网络生效,重启如果有报错,解决方法看下方
service network restart
#检查是否修改完成
cat /etc/resolv.conf

如果出现错误

输出你设置的dns服务器就修改完成了。

注意如果出现Failed to restart network.service: Unit network.service not found.错误,则运行命令:

systemctl restart NetworkManager

然后重新使用命令重启网络就可以了。

Linux使用Brook转发端口一键脚本

有时候我们连接远程服务器SSH,或其它端口地址出现很慢的情况,很影响体验;这时候我们可以在网络好的服务器使用Brook转发任意的远程服务器端口,从而改善网络情况。

有时候我们连接远程服务器SSH,或其它端口地址出现很慢的情况,很影响体验;这时候我们可以在网络好的服务器使用Brook转发任意的远程服务器端口,从而改善网络情况。

大概转发原理

比如我服务器B网络不太好,服务器A网络可以,而服务器B有我在运行的程序,地址为http://服务器B的ip:3000,那么我可以使用服务器A的任意端口,比如4000端口转发服务器B的3000端口,这时候你访问http://服务器A的ip:4000的时候,服务器A会去请求http://服务器B的ip:3000,最后再将数据返回给你,也就是不需要直接访问服务器B,而是访问服务器A就可以了,间接的等于你访问服务器B的数据,达到一种加速效果。

安装brook

首先我们需要挑选一个网络相对较好的服务器进行中转,起码也要比你转发的服务器网络要好,不然就没什么意义了。

系统要求:CentOS 7+,Debian 8+,Ubuntu 16.04+,AlmaLinux 8+,Rocky Linux 8+。

然后使用SSH客户端,比如Xshell软件,登录该VPS服务器,使用命令:

#下载脚本
wget -N --no-check-certificate -O /opt/brook.sh https://file.efvcms.com/moeapp/shell/brook.sh
#运行命令,运行之前请修改相关参数,8888为本地端口,192.6.8.1:9999为远程ip地址:远程端口
bash /opt/brook.sh 8888 192.6.8.1:9999

运行完成后,你访问安装端口转发服务器的ip:8888就等于访问远程服务器的192.6.8.1:9999。

如果你需要转发其它端口,且可以多次通过运行该命令,来中转多个远程服务器端口地址。

删除相关端口转发brook

如果我们多次运行脚本转发端口,有些不使用了,需要删除,则按要求操作命令:

#查看全部转发端口配置文件,格式为brook_8888.service,8888为本地转发的端口
ls /etc/systemd/system/brook_*

#停止端口转发,8888为你需要停止的本地转发的端口,自行修改
systemctl stop brook_8888

#删除端口转发,8888为你需要停止的本地转发的端口,自行修改
systemctl disable brook_8888
rm -rf /etc/systemd/system/brook_8888.service

#删除brook转发配置文件,8888为你需要停止的本地转发的端口,自行修改
rm -rf /opt/brook_8888.json

运行完成后,指定端口转发会彻底删除。

使用Nginx配置防范恶意统计链接

非常理解您的困扰,这种带有明显垃圾推广参数的恶意访问不仅耗费资源,还可能涉及安全风险。这类访问通常来自爬虫、扫描器或广告刷量机器人。

非常理解您的困扰,这种带有明显垃圾推广参数的恶意访问不仅耗费资源,还可能涉及安全风险。这类访问通常来自爬虫、扫描器或广告刷量机器人。为了保护您的服务器资源,我们可以通过Nginx配置来防范这些恶意统计链接。以下是一个简单的Nginx配置示例,用于过滤掉带有特定参数的请求:

server {
    # ↓↓↓ 完整的屏蔽规则 ↓↓↓
    set $block 0;
    
    # 模式1:匹配 ad= 后面跟域名的情况(如 ad=www.xxx.com)
    if ($query_string ~* "ad=([^&]*\.(com|cn|net|org|info))") {
        set $block 1;
    }
    
    # 模式2:匹配URL中包含连续数字账号的模式(如 laoli8862, zhangsan1234 等)
    if ($request_uri ~* "[a-z]+[0-9]{4,}") {
        set $block 1;
    }
    
    # 模式3:匹配常见的推广参数名
    if ($query_string ~* "(ad|promo|sponsor|aff|agent|proxy|market)=[^&]*") {
        set $block 1;
    }
    
    # 模式4:匹配异常的域名自引用
    if ($query_string ~* "ad=.*ykpic\.com") {
        set $block 1;
    }
    
    # 最终判断
    if ($block = 1) {
        return 444;
    }
    # ↑↑↑ 完整的屏蔽规则结束 ↑↑↑

然后重启动nginx服务即可。

Linux服务器挂载硬盘

我们购买独立服务器的时候,有些硬盘是需要我们自己去挂载的,如果服务器只有一块硬盘,那么我们就不需要挂载,如果服务器有多个硬盘,那么我们就需要挂载了,下面介绍如何挂载硬盘。

我们购买独立服务器的时候,有些硬盘是需要我们自己去挂载的,如果服务器只有一块硬盘,那么我们就不需要挂载,如果服务器有多个硬盘,那么我们就需要挂载了,下面介绍如何挂载硬盘。

确定是否有硬盘未挂载

使用SSH客户端登录服务器,运行命令:

df -h

#输出信息大致如下,Size为容
[root@s196176 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             7.4G     0  7.4G   0% /dev
tmpfs                7.4G  8.7M  7.4G   1% /run
/dev/mapper/vg-root  431G  1.3G  408G   1% /
/dev/sda2           1008M  119M  839M  13% /boot
/dev/mapper/vg-tmp   976M  2.6M  907M   1% /tmp

如果我们买的时候是1T硬盘,那么我们就可以看到硬盘大小为1T,但是如果我们买的是2T硬盘,那么我们就可以看到硬盘大小为431G,因为我们的硬盘还没有挂载,所以我们需要挂载硬盘。

查看需要挂载的硬盘

使用SSH客户端登录服务器,运行命令:

lsblk

#输出信息如下
[root@s196176 ~]# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 447.1G  0 disk 
├─sda1        8:1    0     1M  0 part 
├─sda2        8:2    0     1G  0 part /boot
└─sda3        8:3    0 446.1G  0 part 
  ├─vg-root 253:0    0 437.6G  0 lvm  /
  ├─vg-swap 253:1    0   7.5G  0 lvm  [SWAP]
  └─vg-tmp  253:2    0     1G  0 lvm  /tmp
sdb           8:16   0   3.7T  0 disk

比如我知道我有一块4T硬盘没有挂载(由于计算问题,显示肯定没那么多,比如我示例只显示3.7T)那么我找到对应量的硬盘name,如示例的sdb,那么我们的硬盘名称就是/dev/sdb,也就是加一个/dev/前缀。

创建分区

使用SSH客户端登录服务器,运行命令:

#开始挂载,后面为未挂载硬盘名称
parted /dev/sdb
#创建创建磁盘标签,可能会有个提示,你输入Yes确定即可
mklabel gpt
#创建整个分区
mkpart primary 0% 100%
#退出
q

#大致操作日志如下,仅供参考
[root@s196176 ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt                                                      
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost.
Do you want to continue?
Yes/No? Yes                                                               
(parted) mkpart primary 0% 100%                                           
(parted) q                                                                
Information: You may need to update /etc/fstab.

完成分区后,继续使用命令来查看分区名称:

lsblk

#输出信息如下
[root@s196176 ~]# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 447.1G  0 disk 
├─sda1        8:1    0     1M  0 part 
├─sda2        8:2    0     1G  0 part /boot
└─sda3        8:3    0 446.1G  0 part 
  ├─vg-root 253:0    0 437.6G  0 lvm  /
  ├─vg-swap 253:1    0   7.5G  0 lvm  [SWAP]
  └─vg-tmp  253:2    0     1G  0 lvm  /tmp
sdb           8:16   0   3.7T  0 disk
└─sdb1        8:17   0   3.7T  0 part

这次比之前多了个sdb1分区,那么我们的分区名称叫/dev/sdb1。

格式化分区,挂载分区

先格式化分区,使用命令:

#后面为分区名称,运行完等待格式化完毕
mkfs.ext4 /dev/sdb1

新建挂载目录,使用命令:

#后面为目录名称,自行修改
mkdir /data

开始挂载分区,使用命令:

#后面2个分辨是,分区名称,挂载目录,请根据上面操作的实际情况修改
mount /dev/sdb1 /data

查看挂载是否成功,使用命令:

df -h

#输出信息大致如下,Size为容量
[root@s196176 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             7.4G     0  7.4G   0% /dev
tmpfs                7.4G  8.7M  7.4G   1% /run
/dev/mapper/vg-root  431G  1.3G  408G   1% /
/dev/sda2           1008M  119M  839M  13% /boot
/dev/mapper/vg-tmp   976M  2.6M  907M   1% /tmp
/dev/sdb1            3.6T   89M  3.4T   1% /data

如果我们看到了挂载目录,及对应的容量没问题,那么就挂载成功了。

设置开机自动挂载

我们挂载后,需要设置开机自启,这样重启动服务器后会自动挂载。

查看分区的UUID,使用命令:

#后面为分区名称
blkid /dev/sdb1

#输出信息如下,即分区UUID为b82b0f79-2198-4c8c-a183-acd62sg5d832
/dev/sdb1: UUID="b82b0f79-2198-4c8c-a183-acd62sg5d832" TYPE="ext4" PARTLABEL="primary" PARTUUID="29a545e6-2a67-463d-bb3e-3127fghtccaf"

设置开机自启,使用命令:

#b82b0f79-2198-4c8c-a183-acd62sg5d832 /data分别为分区UUID,挂载目录,先修改好下面相关信息,再一起复制到ssh客户端运行
echo 'UUID=b82b0f79-2198-4c8c-a183-acd62sg5d832 /data ext4 defaults 0 0' >>/etc/fstab

这个步骤一点要操作正确,不然到时候重启动后,可能会开不了机。

最后在检查下配置文件,使用命令:

mount -a

如果不报错,就可以使用reboot命令重启服务器了。重启后在使用df -h命令查看下是否挂载成功。

组raid0教程

提示:仅做笔记,即合并多个空闲硬盘并挂载,没经验的勿操作

以下命令均使用SSH操作:

#查看硬盘及分区
lsblk
#创建RAID 0阵列,后面为硬盘数量和名称
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sd{a,b}
#格式化分区
mkfs.ext4 /dev/md0
#新建挂载目录
mkdir /data
#挂载分区
mount /dev/md0 /data
#查看分区uuid
blkid /dev/md0
#设置开机自启
echo 'UUID=b82b0f79-2198-4c8c-a183-acd62sg5d832 /data ext4 defaults 0 0' >>/etc/fstab

以上就是如何挂载硬盘的教程,如有问题,请自行百度。

Linux快速安装Docker

docker现在比较流行的程序安装方式,安装起来非常方便,本文介绍如何快速安装docker

首先,使用SSH客户端登录到您得服务器,并以root用户身份登录。或具有sudo权限的用户。执行以下命令:

#运行安装脚本
curl -sSL https://get.docker.com/ | sh

#启动并设置开机自启
systemctl start docker
systemctl enable docker

#验证是否安装成功
docker --version

最后输出类似Docker version 24.0.5, build ced0996的信息即为安装成功!

MongoDB管理面板adminMongo安装教程

这里推荐一个可以管理Mongdb的web管理可视化界面adminmongo,可以让我们很简单的对mongdb转码数据库进行创建,编辑,修改,备份,而且还自带监控界面。

由于EFV使用的Mongdb数据库,该数据库对于很多人来说貌似比较陌生,特别是对于一些命令,所以这里推荐一个可以管理Mongdb的web管理可视化界面adminmongo,可以让我们很简单的对mongdb转码数据库进行创建,编辑,修改,备份,而且还自带监控界面。

安装adminmongo

  • 首先安装docker:

安装docker

  • 然后在SSH客户端使用命令:
#将以下命令一起复制粘贴,且第4行efvpasswd为面板访问密码,自行修改
docker run --restart=unless-stopped --name adminmongo -d \
--net=host \
-p 8001:8001 \
-e passwd=efvpasswd \
moerats/adminmongo

访问地址为:http://ip:8001,密码为efvpasswd或者你自己设置的其它密码。

如果装有宝塔面板,记得去宝塔左侧安全-放行防火墙端口8001。

没有安装宝塔面板,可以直接运行以下命令:

#CentOS 7+、AlmaLinux、Rocky Linux系统
firewall-cmd --zone=public --add-port=8001/tcp --permanent
firewall-cmd --reload

#Debian、Ubuntu系统
ufw allow 8001

使用步骤

先访问http://ip:8001,然后添加本地MongoDB数据库,名称随便填,地址填mongodb://127.0.0.1:27017。添加完成后,再点connect连接即可。

Linux使用Docker快速安装Qbittorrent

你想专门使用一个服务器用来下载磁力,或者存放EFV的视频做种资源,鉴于我的使用体验,就推荐一款Linux服务器中比较好用的bt下载程序qBittorrent。

安装Qbittorrent

目前EFV已支持磁力下载功能,如果你觉得自带的满足不了你的需求,或者你想专门使用一个服务器用来下载磁力,或者存放EFV的视频做种资源,鉴于我的使用体验,就推荐一款Linux服务器中比较好用的bt下载程序qBittorrent。

首先安装Docker:

Linux快速安装Docker

然后在SSH客户端使用命令:

#将以下命令一起复制粘贴,且/home/qbittorrent/downloads为下载目录,自行修改,且为绝对路径。
docker run --restart=unless-stopped --name qbittorrent -d \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-e UMASK_SET=022 \
-e WEBUI_PORT=8080 \
-p 6881:6881 \
-p 6881:6881/udp \
-p 8080:8080 \
-v /home/qbittorrent/config:/config \
-v /home/qbittorrent/downloads:/downloads \
linuxserver/qbittorrent:4.5.4

安装完成后,相关信息如下:

qbittorrent管理面板地址:http://ip:8080
登录用户名:admin
登录密码:adminadmin
qbittorrent配置和下载目录:/home/qbittorrent

接下来需要开启相关使用端口,请运行以下命令:

#CentOS 7+、AlmaLinux、Rocky Linux系统
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=6881/tcp --permanent
firewall-cmd --zone=public --add-port=6881/udp --permanent
firewall-cmd --reload

##Debian、Ubuntu系统
ufw allow 6881
ufw allow 8080

有些服务商,比如阿里云、谷歌云,都还要开启安全组端口。

卸载Qbittorrent

#删掉容器
CONTAINERID=$(docker ps | grep linuxserver/qbittorrent | awk '{print $1}')
docker kill ${CONTAINERID}
docker rm ${CONTAINERID}
docker rmi $(docker images | grep linuxserver/qbittorrent | awk '{print $3}')
#删掉配置和下载文件夹
rm -rf /home/qbittorrent

以上就是如何安装Qbittorrent,如果你有更好的方法,欢迎留言交流。

404是网站必须设置的怎么设置?

了解为什么404页面是网站必备的,以及如何正确设置404页面来提升用户体验和网站专业性。

404页面是网站必须设置

404页面是指用户在访问网站时,服务器无法找到请求的页面,返回的页面。404页面是网站必须设置的,因为它是用户在访问网站时遇到错误时看到的页面。告知用户该网页不存在或已被删除。

404页面设置方法

  1. 在网站根目录下创建一个名为404.html的文件。

  2. 在404.html文件中添加符合标准的404代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>404 Not Found</title>
</head>
<body>
    <h1>404 Not Found</h1>
    <p>Sorry, the page you are looking for could not be found.</p>

</body>
</html>
  1. 在服务器配置文件中添加404页面重定向规则
server {
    listen 80;
    server_name example.com;
    root /var/www/html;

    error_page 404 /404.html;
    location = /404.html {
        internal;
    }
}

4 . 在Apache服务器配置文件中添加404页面重定向规则

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html

    ErrorDocument 404 /404.html
</VirtualHost>
  1. 在IIS服务器配置文件中添加404页面重定向规则
<system.webServer>	
    <httpErrors errorMode="Custom" existingResponse="Replace">
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" path="/404.html" responseMode="ExecuteURL" />
    </httpErrors>
</system.webServer>
  1. 或是使用宝塔的朋友添加404页面重定向规则
使用宝塔网站设置的重定向功能,有个404跳转,按上图设置好即可。
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#HTTP_TO_HTTPS_START

404页面设置注意事项

  1. 404页面不要直接跳转到网站首页,这将导致首页不被收录。

  2. 404页面前边不要到主域名,否则返回的状态码是302,而不是404。

  3. 404页面要简洁明了,不要有太多的广告和链接。

  4. 404页面要设置好SEO,方便搜索引擎收录。最好底部加入导航尤其是网站地图。

  5. 404页面要设置好缓存,避免每次访问都重新生成页面。

  6. 404页面要设置好访问权限,防止恶意访问。

总结:404页面是网站必须设置的,因为它是用户在访问网站时遇到错误时看到的页面。设置404页面时要注意不要直接跳转到网站首页,要简洁明了,设置好SEO,设置好缓存,设置好访问权限。

linux使用Caddy配置反向代理

caddy是一个轻量级的反向代理服务器,它支持HTTP、HTTPS、WebSocket、gRPC等协议,并且支持自动HTTPS证书。下面我将介绍如何使用Caddy配置反向代理。

caddy是一个轻量级的反向代理服务器,它支持HTTP、HTTPS、WebSocket、gRPC等协议,并且支持自动HTTPS证书。下面我将介绍如何使用Caddy配置反向代理。

安装Caddy

在linux服务器上安装Caddy非常简单,只需要执行以下命令即可:

mkdir -p /usr/local/caddy
wget -N --no-check-certificate https://file.efvcms.com/moeapp/caddy/caddy -P /usr/local/caddy
wget -N --no-check-certificate https://file.efvcms.com/moeapp/caddy/caddy.service -P /etc/systemd/system
chmod +x /usr/local/caddy/caddy

配置Caddy

首先配置域名,该配置会自动签发ssl证书,并且自动续期。请提前解析域名的A记录到服务器IP。然后使用SSH客户端使用一下命令:

#以下全部内容是一个整体,请修改域名和需要反代的地址127.0.0.1:3000,然后一起复制到SSH运行!
echo "www.efvcms.com {
 gzip
 tls admin@efvtest.com
 proxy / http://127.0.0.1:3000 {
     transparent
     header_upstream Host {host}
 }
}" > /usr/local/caddy/Caddyfile

开启相关防火墙

由于有些服务器会关闭80和443端口,所以需要开启防火墙,他们会影响到我们绑定的域名并申请SSL证书,请使用以下命令开启防火墙:

#CentOS 7+、AlmaLinux、Rocky Linux系统
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

#Debian、Ubuntu系统
ufw allow 80
ufw allow 443

启动并设置开机自启

systemctl start caddy
systemctl enable caddy

测试

打开浏览器,输入域名,如果出现你反代的网站内容,那么恭喜你,配置成功!

Linux使用Nginx自建CDN服务

自建CDN服务,使用Nginx搭建,支持HTTPS、HTTP2、WebSocket、gRPC、IPv6、HTTP/3等协议。

平时我们需要自己搭建使用nginx的CDN服务,既然是自建CDN,那么我们肯定需要支持各种协议,比如HTTP/3、WebSocket、gRPC、IPv6等,下面我们来看看如何使用Nginx搭建一个支持各种协议的CDN服务。

我们还需要准备一台网络计较好的服务器,最起码比要加速的网站的网络要好,不然加速效果不明显,甚至可能适得其反。以下是Nginx的安装步骤:

自建步骤

  • 安装宝塔面板

这里分别提供国内和国际2个版本安装,区别是宝塔国内版需要强制登录宝塔账号,国际版不需要,可自行选择安装,使用SSH客户端登录服务器,输入以下命令安装:

#CentOS系统,国内版本
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
#CentOS系统,国际版本
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh aapanel

#Debian系统,国内版本
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh ed8484bec
#Debian系统,国际版本
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh aapanel

#Ubuntu系统,国内版本
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
#Ubuntu系统,国际版本
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && sudo bash install.sh aapanel
  • 安装Nginx

登录宝塔面板,点击左侧软件商店,搜索Nginx,点击安装,等待安装完成。

  • 绑定域名

先准备一个CDN域名,解析到服务器的A记录,然后点击左侧网站,点击添加站点,输入域名,选择Nginx,点击提交,等待创建完成。

  • 配置Nginx

点击宝塔面板左侧⇒软件商店找到设置点击Nginx设置,点击配置文件,找到server标签,添加以下配置:


#在http{}里面加入以下代码
proxy_cache_path /www/wwwroot/www.efvcms.com levels=1:2 keys_zone=efv:500m inactive=1d max_size=50g;
  • 主要参数
proxy_cache_path /www/wwwroot/www.efvcms.com 后面路径为缓存目录,可自行修改,比如你CDN域名根目录
keys_zone=efv:500m efv为缓存的名字,可不变;后面500m为内存缓存空间,自行根据内存大小适当进行修改
inactive=1d 为一定时间内没人访问的资源缓存清空时间,如1d,也就是1天没有被访问的内容自动清除,10天可设置为10d
max_size=50g 为最大缓存空间,可根据硬盘大小自行设置

如图所示:

自建CDN设置

接下来再点击域名右侧设置按钮,点击配置文件,加入以下代码:


location /
{
    proxy_pass http://185.172.165.11:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_cache efv;
    proxy_ignore_headers cache-control;
    proxy_cache_key $host$uri$is_args$args;
    add_header Nginx-Cache $upstream_cache_status;
    proxy_cache_valid 200 304 30m;
    proxy_cache_valid 301 24h;
    proxy_cache_valid 500 502 503 504 0s;
    proxy_cache_valid any 1s;
    proxy_cache_min_uses 1;
    expires 12h;
}

主要参数如下:

proxy_pass http://185.172.165.11:3000 后面地址为需要加速的地址,可直接修改为转码服务器的访问地址,如ip:3000
proxy_cache efv 后面的efv为之前设置的缓存名称,也就是直接引用该缓存名称的配置

如图所示:

自建CDN设置

然后删除配置文件里面的这几行代码,不然js、jpg等文件缓存不了,代码如下:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    expires      30d;
    error_log off;
    access_log /dev/null;
}

location ~ .*\.(js|css)?$
{
    expires      12h;
    error_log off;
    access_log /dev/null; 
}

最后基本上配置好了,然后此时我们访问CDN域名后,数据会根据缓存配置,缓存到设置的缓存目录,注意如果这里不生效,记得点击宝塔面板左侧软件商店找到NGINX重启即可。

自建网络代理地址

如果你使用过翻墙软件,那么你应该知道,代理地址是翻墙软件的核心功能之一。

如果你使用过翻墙软件,那么你应该知道,代理地址是翻墙软件的核心功能之一。代理地址就是指代理服务器在互联网上的地址,通过代理服务器,你可以访问到被墙的网站。那么,如何自建一个代理地址呢?

你也可以自己搭建一个代理服务器,首先买个网络好一点的VPS服务器,然后开始搭建自己的代理服务器。

安装Docker

#运行安装脚本
curl -sSL https://get.docker.com/ | sh

#启动并设置开机自启
systemctl start docker
systemctl enable docker

#验证是否安装成功
docker --version
  • 输出类似Docker version 24.0.5, build ced0996的信息即为安装成功!

安装BBR网络加速

wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh
chmod 755 /opt/bbr.sh
/opt/bbr.sh

安装privoxy代理工具

#5432为代理的设置端口,可自行修改
docker run -d --restart=unless-stopped --name privoxy -p 5432:8118 vimagick/privoxy

开放代理端口5432

#CentOS 7+、AlmaLinux、Rocky Linux系统
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload

#Debian、Ubuntu系统
ufw allow 5432

已经安装宝塔的可以直接宝塔左侧安全里的端口开放,最后我们的代理地址为http://服务器ip:5432 ,在将代理地址填入FTP客户端,如果网络还是不行,可以尝试吧服务器删了,再创建其他地区的服务器重新安装。

MYSQL数据库定时删除N天前数据命令

不少小伙伴咨询mysql如何定时删除N天前数据的命令,下面就以umami统计程序来告诉大家怎么执行SQL命令。

MYSQL数据库定时删除N天前数据命令

  • 不少小伙伴咨询mysql如何定时删除N天前数据的命令,下面就以umami统计程序来告诉大家怎么执行SQL命令。
delete from session where created_at<=now()-INTERVAL 4 day

以上就是定时删除N天数据的SQL命令。

wordpress更换文章里的图片地址教程

wordpress需要批量更换图片的域名地址,下面就简单的一句SQL命令实现更换文章内的所有图片域名地址。

wordpress需要批量更换图片的域名地址

近些年wordpress被广大网友认可,都用来建立一些常用的个人博客或是新闻博客之类的网站,也有不少网友是采集回来的数据,数据多,图片地址因为某些特殊情况被屏蔽或是失效之类的,就需要批量更换图片的域名地址,下面就简单的一句SQL命令实现更换文章内的所有图片域名地址。

SQL命令

  • 进到宝塔面板安装的phpmyadmin点击你的数据库,然后在点开SQL,在里面把一下代码复制粘贴,点右下角的执行即可.
UPDATE wp_posts SET post_content = REPLACE( post_content, '需要更换的域名', '新域名' );
  • 说明:上面代码中的wp_posts是wordpress默认的文章表前缀,如果你在安装wordpress时更改了表前缀,请把wp_posts改成你自己的表前缀_posts。
  • 例子:假如你要把文章里所有的图片域名从www.oldsite.com更换成www.newsite.com.

Minio服务端一键安装及使用

Minio服务端一键安装及使用

安装Minio服务端

系统要求:CentOS 8+,Debian 10+,Ubuntu 20.04+,AlmaLinux 8+,Rocky Linux 8+。

使用SSH客户端,比如Xshell软件,登录存储服务器,再使用命令:

#后面的/home为文件存储路径,自行修改
curl -sL https://file.efvcms.com/moeapp/shell/nimio_install.sh | bash -s /home

安装完成后,会给你同步端配置信息和Web管理面板信息信息,面板默认访问地址为ip:9001,如果打不开,请检查下防火墙端口,并手动开启9000和9001端口。

创建存储桶

我们登录管理员面板,通过左侧的Buckets,再点击Create Bucket,创建一个桶。

创建存储桶

minio_zx.png

其他说明

关于存储路径说明

如果我们设置存储目录为/home,且桶名称为efvcms,那么我们同步过来的切片目录为/home/efvcms,即桶在存储目录下。

如何配置域名,从而读取到路径不变的切片

我们添加一个存储桶使用的域名,然后把同步过来的切片目录,如/home/efvcms设置为根目录就可以了。

建议在域名设置的配置文件项,类似root /home/efvcms;下一行添加该代码add_header Access-Control-Allow-Origin *;最后面;别漏掉了,可防止出现跨域问题。

如何修改存储目录

如果我们想修改存储目录,则需要先修改文件/etc/systemd/system/minios.service,可在SSH客户端使用命令:

vi /etc/systemd/system/minios.service

首先按一下键盘的i键,进入编辑模式,这时候可以使用键盘进行编辑,编辑代码详解如下

[Unit]
Description=minio server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/minio server "/home" --console-address ":9001"
Environment=MINIO_ROOT_USER=89031270c3 MINIO_ROOT_PASSWORD=b657ae64b3
PIDFile=/var/run/minio.pid
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

/home为存储目录,且为绝对路径,自行修改,编辑好了后,按一下键盘的esc键退出编辑模式,接下来输入英文:wq,enter保存退出。

最后如果你不是很会命令行,依然不会修改,可以使用FTP软件或宝塔文件管理,找到该文件后手动修改即可。

最后修改好了重启,使用命令:

systemctl daemon-reload
systemctl restart minios

#查看状态,如显示Active: active (running),则修改成功
systemctl status minios

接下来重新登录管理面板,创建一个新桶或原桶名称,重新在同步端配置使用。

Mongodb备份及还原数据库

EFV使用的是Mongodb数据库,且默认的数据库名,数据库用户名和密码均为ffmpeg,如果你没修改过这些信息,可以直接复制粘贴。

EFV使用的是Mongodb数据库,且默认的数据库名,数据库用户名和密码均为ffmpeg,如果你没修改过这些信息,可以直接复制粘贴。

备份数据库

首先使用SSH客户端,比如Xshell软件,登录要备份的切片服务器,使用命令:

mongodump -h 127.0.0.1 -u ffmpeg -p ffmpeg -d ffmpeg -o /root --authenticationDatabase ffmpeg

-d是选择要备份的数据库,-u是用户名,-p是密码,–authenticationDatabasehou后面也是要备份的数据库。

备份好了后,数据库备份文件路径为/root/ffmpeg。

还原数据库

还原之前,需清空需要还原的服务器数据库,防止数据有冲突的情况。

使用SSH客户端,比如Xshell软件,登录要还原的切片服务器,使用命令:

#ffmpeg为数据库名,将下面代码一起复制到ssh运行
mongo ffmpeg --eval '
db.getCollectionNames().forEach(function(collection) {
    if (!collection.startsWith("system.")) {
        db[collection].drop();
        print("已删除: " + collection);
    }
})
'

我们需要将数据库备份文件夹放到需要还原的服务器目录,如ffmpeg备份文件夹放到/root目录

清空数据库后,使用命令:

#/root/ffmpeg为数据表备份存放文件夹,自行修改
mongorestore -h 127.0.0.1 -u ffmpeg -p ffmpeg -d ffmpeg /root/ffmpeg --authenticationDatabase ffmpeg

-d是选择要合并的数据库,-u是用户名,-p是密码,–authenticationDatabasehou后面也是要还原的数据库。

Mongodb开放外网访问及配置管理员

非必要情况下不要随便开放数据库的外网访问,不然请严格按照下面要求开放。

非必要情况下不要随便开放数据库的外网访问,不然请严格按照下面要求开放。

设置Mongodb管理员

首先使用SSH客户端,比如Xshell软件,登录服务器,使用命令:

mongo
use admin
db.createUser({user:"adminuser",pwd:"adminpasswd",roles: [{ role: "root", db: "admin" }]})

adminuser和adminpasswd分别是管理员账户和密码,使用命令前自行修改

配置外网和认证

编辑数据库配置文件,脚本安装的默认为/usr/local/mongodb/mongod.conf,需要编辑的配置如下:

storage:
  dbPath: /usr/local/mongodb/data
  journal:
    enabled: true

systemLog:
  destination: file
  logAppend: true
  path: /usr/local/mongodb/mongod.log

net:
  port: 27017
  bindIp: 0.0.0.0

security:
  authorization: enabled

这里你可以通过ftp客户端、宝塔文件管理,或者vi/nano命令行修改该文件。

这里也提供一个一键修改命令,在SSH客户端运行,使用命令:

#将下面全部一起复制,粘贴到ssh客户端运行即可
cat > /usr/local/mongodb/mongod.conf <<EOF
storage:
  dbPath: /usr/local/mongodb/data
  journal:
    enabled: true

systemLog:
  destination: file
  logAppend: true
  path: /usr/local/mongodb/mongod.log

net:
  port: 27017
  bindIp: 0.0.0.0

security:
  authorization: enabled
EOF

然后重启mongodb生效,使用命令:

systemctl restart mongod

最后再开放27017端口即可。

重启SSH服务的方法

本文将为你介绍多种方法来重启SSH服务。

SSH是一种加密网络协议,用于安全地连接远程服务器。在进行云服务器管理的过程中,可能会出现SSH服务无法连接的情况,这时就需要重启SSH服务.本文将为你介绍多种方法来重启SSH服务。

SSH服务

  1. 使用命令行重启SSH服务 在大多数Linux发行版中,可以使用以下命令来重启SSH服务:
sudo service ssh restart
  1. 这条命令会重启SSH服务,其中sudo表示以管理员(超级用户)身份运行该命令,service是Ubuntu操作系统下的一个服务管理工具,ssh是需要被重启的服务名称,restart是重启服务的命令。 如果你使用的是CentOS操作系统,则可以输入以下命令:
sudo systemctl restart sshd

这条命令与Ubuntu下的命令类似,只是服务名变成了sshd。

  1. 通过SSH客户端重启SSH服务

如果SSH服务无法连接,我们可以使用SSH客户端来重启SSH服务。在Windows系统中,我们可以使用PuTTY软件,Mac和Linux操作系统中则可以使用终端命令行工具。

首先,打开SSH客户端,并连接到需要被重启的服务器。然后,输入管理员账号和密码进行登录。登录成功后,输入以下命令:

sudo service ssh restart

或者

执行该命令后,SSH服务将会被重启。 4. 三、更换SSH服务端口

如果你的服务器一直无法连接SSH服务,可能是因为SSH服务运行的端口被占用了。此时,你可以更换SSH服务端口,让SSH服务在一个新端口上运行。

打开终端窗口,并编辑SSH服务配置文件。在Ubuntu系统中,该文件路径为/etc/ssh/sshd_config,CentOS系统中为/etc/ssh/sshd_config。 使用以下命令打开配置文件:

sudo vim /etc/ssh/sshd_config

找到以下行:

```将其修改为:
```bashPort 2222

将22改为一个未被占用的端口号(例如:2222),然后保存并退出文件。重启SSH服务,使配置文件生效:

sudo service ssh restart

或者

此后,你的SSH服务将会在新端口上运行。 5. 检查SSH日志文件

如果你仍然无法连接SSH服务,你可以检查SSH日志文件,以了解SSH服务运行、连接的详细信息。在Ubuntu系统中,SSH日志文件路径为/var/log/auth.log;CentOS系统中为/var/log/secure。

打开终端窗口,并输入以下命令查看日志文件:

sudo cat /var/log/auth.log

或者

sudo cat /var/log/secure

通过查看日志文件,你可以发现SSH服务是否存在错误或异常情况,并做出相应的调整。

总结

SSH服务是云服务器管理中不可或缺的一部分,当遇到SSH服务无法连接的情况时,可以通过命令行、SSH客户端、更换端口号、检查日志文件等多种方式进行重启或调整 。希望本文能帮助你解决SSH服务无法连接的问题,顺利管理你的云服务器。

建站心得

分享一些建站心得,帮助一些新手站长快速建站的教程

Hugo + 宝塔 Nginx 最小安全配置指南(2026 年版)

我们来一步步搭建一个高性能、轻量、完全静态的 Hugo 影视站点。
  1. 重装系统 推荐系统:Ubuntu 22.04 LTS 或 CentOS 7/8 Stream 不要保留旧数据!

  2. 更新系统 & 设置时区

# Ubuntu
# 自动回答“保留旧配置”或使用默认策略,不卡住
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"

# CentOS
sudo yum update -y
sudo timedatectl set-timezone Asia/Shanghai
  1. 创建非 root 用户(禁用 root 登录)这个使用宝塔的root+密匙也可以。新建用户配置麻烦。
adduser hugo   # 按提示设密码
usermod -aG sudo hugo  # Ubuntu
# usermod -aG wheel hugo  # CentOS

# 切换到新用户
su - hugo

然后记得安装BBR网络加速

wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh
chmod 755 /opt/bbr.sh
/opt/bbr.sh
  1. 安装宝塔(仅 Nginx)这去官网自己去安装,安装完之后,记得禁用 root 登录。

把宝塔的登录安全设置都设置好,

    1. 安装 Node.js 20.x(用于运行采集脚本)
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

sudo apt update

sudo apt install -y nodejs

node -v → 应输出 v20.x.x
npm -v → 应输出 10.x.x
  1. 安装 Hugo v0.154 Extended(Linux 64位)
wget https://github.com/gohugoio/hugo/releases/download/v0.154.0/hugo_extended_0.154.0_linux-amd64.tar.gz

tar -xzf hugo_extended_0.154.0_linux-amd64.tar.gz

sudo mv hugo /usr/local/bin/

rm hugo_extended_0.154.0_linux-amd64.tar.gz

hugo version → 应输出 hugo v0.154.0-... extended
  1. 然后创建hugo文件夹,建议在home目录下,根据自己创建你的站点文件夹,然后在宝塔目录指向就 可以了。
# 1. 创建项目目录(在 /home 下)
mkdir -p /home/hugo-drama

# 2. 设置所有权(虽然 root 默认就有权限,显式设置更规范)
chown root:root /home/hugo-drama

# 3. 进入目录
cd /home/hugo-drama

# 4. 上传你的 Hugo 项目(通过 SFTP 或 git clone)
#    包含:config.toml, content/, scripts/, static/ 等

# 5. 安装 Node.js 依赖(如果用了 pinyin 等)
npm install
  1. 把hugo源码目录上传到新建的目录,删除里面的.user.ini文件,需要执行以下命令删除
# 取消不可变属性
# 1. 进入站点目录
cd /www/wwwroot/你的站点目录

# 2. 查看文件属性(通常有i属性,不可更改)
lsattr .user.ini

# 3. 如果显示有'i'属性,需要先取消
chattr -i .user.ini

# 4. 删除文件
rm -f .user.ini

# 5. 可选:删除其他可能的锁定文件
chattr -i .htaccess 2>/dev/null

批量删除所有站点的.user.ini文件

# 查找并显示所有.user.ini文件
find /www/wwwroot -name ".user.ini" -type f

# 批量取消属性并删除
find /www/wwwroot -name ".user.ini" -exec chattr -i {} \;
find /www/wwwroot -name ".user.ini" -exec rm -f {} \;
  1. 安装 pypinyin 库以支持采集回来的自动转为拼音这是个python库,如果是node.js采集就需要安装其他依赖。
请立即运行以下命令安装全部依赖:
npm install axios fs-extra date-fns pinyin slugify

虽然 pinyin 已存在,但再装一次也没问题,npm 会自动去重。

验证成功:ls node_modules | grep -E 'axios|fs-extra|date-fns|slugify'

你当前的 package.json 是自动生成的,内容没问题。
后续如果想清理或重装依赖,可以:

# 删除依赖
rm -rf node_modules package-lock.json

# 重新安装
npm install axios fs-extra date-fns pinyin slugify

以下是python库pinyin的安装方法

pip3: command not found,先装 pip:

sudo apt update
sudo apt install -y python3-pip

pip3 install pypinyin

这时候会提示错误,需要安装使用虚拟环境(最推荐)

安装 python3-venv(如果还没装)

sudo apt update
sudo apt install -y python3-venv

cd /home/hugo-yutuq
python3 -m venv .pyenv

这会在 /home/hugo-yutuq/.pyenv/ 下创建独立 Python 环境
激活虚拟环境并安装 pypinyin

source .pyenv/bin/activate
pip install pypinyin

输出应类似:Successfully installed pypinyin-0.50.0 ...

验证安装:python -c "from pypinyin import lazy_pinyin; print(lazy_pinyin('末日逃生'))"

→ 应输出 ['mo', 'ri', 'tao', 'sheng']
  1. 安装JQ(用于解析 JSON)解决方案:立即安装 jq
# 查看 jq 版本
jq --version

# 在新、旧服务器都运行:
echo '{"list":[]}' | jq empty

如果新服务器报错而旧的不报 → 就是 jq 问题。

安装jq:

sudo apt update
sudo apt install -y jq

验证:jq --version  # 应输出 jq-1.6 或类似

再次运行采集脚本就正常了

./sync-from-api.sh --type 6 --limit 5

安装宝塔,配置环境

  • 安装完宝塔之后只需要安装nginx即可,其他不需要。

写个采集脚本执行定时任务

# 每天凌晨 2 点同步最近 7 天的新剧
0 2 * * * /home/ubuntu/movie-site/sync-from-api.sh --last-days 7

都按完记得按个插件 实现方案:用 pypinyin 自动生成拼音 slug

第一步:安装 pypinyin(只需一次)

pip3 install pypinyin

如果没有 pip3,先装 Python3:

sudo apt update && sudo apt install -y python3-pip

新服务器记得安装jq

你的采集脚本 sync-from-api.sh 里调用了 Python,所以运行脚本时必须保持虚拟环境激活,或者在脚本内部自动激活。

先取消不可变属性

chattr -i /home/hugo-yutuq/public/.user.ini

再删除

rm -f /home/hugo-yutuq/public/.user.ini

使用宝塔搭建nginx缓存CDN教程和配置

使用宝塔搭建nginx缓存CDN教程和配置,自建CDN加速网站,解决国内访问慢的问题。

首先购买香港VPS即可,省钱,安装宝塔面板就不在这里阐述了,都会,如果不会也就没必要自建网站或是CDN了。安装完宝塔之后别的都不需要安装就把nginx安装上,然后安装好nginx之后,我们就可以开始配置nginx缓存了。

配置CDN服务器的nginx的缓存

NGINX的缓存配置如下:首先是进到网站的设置里,点左边的配置文件,直接复制以下代码覆盖原代码即可,记得域名修改下你自己的。

server {
    listen 443 ssl ;
    http2 on;
    server_name cdn.maccmsrust.com;

    ssl_certificate    /www/server/panel/vhost/cert/cdn.maccmsrust.com/fullchain.pem;
    ssl_certificate_key /www/server/panel/vhost/cert/cdn.maccmsrust.com/privkey.pem;

    # ===== 1. 首页:单独缓存 1 小时 =====
    location = / {
        proxy_cache cdn_cache;
        proxy_cache_valid 200 1h;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        proxy_cache_lock on;

        proxy_pass https://www.jljjj.com/;
        proxy_set_header Host www.jljjj.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Accept-Encoding "";
        proxy_hide_header Vary;               # 👈 添加这行
        gzip_vary off;                        # 👈 强烈建议添加(防 gzip 自动加 Vary)
        add_header Vary "Accept-Encoding";    # 👈 添加这行
        add_header X-Cache-Status $upstream_cache_status;
    }

    # ===== 2. 静态资源目录:缓存 7 天 =====
    location ~ ^/(static|template|upload)/ {
        proxy_cache cdn_cache;
        proxy_cache_valid 200 302 7d;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        proxy_cache_lock on;

        proxy_pass https://www.jljjj.com;
        proxy_set_header Host www.jljjj.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Accept-Encoding "";
        proxy_hide_header Vary;
        add_header Vary "Accept-Encoding";
        add_header X-Cache-Status $upstream_cache_status;
    }

    # ===== 3. 其他路径(动态页面):不缓存 =====
    location / {
        proxy_pass https://www.jljjj.com;
        proxy_set_header Host www.jljjj.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 注意:这里不加 proxy_cache,避免缓存动态内容
    }

    # 安全:禁止脚本执行
    location ~* \.(php|jsp|cgi|sh|pl|py|asp|aspx)$ {
        deny all;
    }

    gzip on;
    gzip_types text/plain text/css application/json application/javascript image/svg+xml;
}

下一步修改全局的nginx配置文件,进到左边的软件商店,点nginx的设置,在http标签里添加以下代码:

    # ===== CDN 缓存区定义(全局,只需写一次)=====
http
    {
        include       mime.types;
		#include luawaf.conf;
    # ===== CDN 缓存区定义(全局,只需写一次)就是这段代码=====
proxy_cache_path /www/wwwroot/cdn_cache levels=1:2 keys_zone=cdn_cache:50m max_size=20g inactive=1h use_temp_path=off;
    # ===== CDN 缓存区定义(全局,只需写一次)就是这段代码=====
		include proxy.conf;
        lua_package_path "/www/server/nginx/lib/lua/?.lua;;";

        default_type  application/octet-stream;

附赠一个图片的CDN缓存规则

server {
    listen 443 ssl ;
    http2 on;
    server_name img.maccmsrust.com;

    ssl_certificate    /www/server/panel/vhost/cert/img.maccmsrust.com/fullchain.pem;
    ssl_certificate_key /www/server/panel/vhost/cert/img.maccmsrust.com/privkey.pem;

    root /www/wwwroot/img.maccmsrust.com;  # ← 明确指定 root(即使主要用 proxy)
    # ==============================
    # 1. 字体文件:/jljjj/webfonts/ → 缓存 + CORS
    # ==============================
    location ~ ^/jljjj/webfonts/.+\.(woff2|woff|ttf|eot|otf)$ {
        # CORS 跨域头(必须)
        add_header Access-Control-Allow-Origin "https://www.jljjj.com" always;
        add_header Vary "Origin" always;  # 建议加上,避免 CDN 缓存污染

        # 启用 proxy_cache
        proxy_cache cdn_cache;
        proxy_cache_valid 200 30d;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        proxy_cache_lock on;

        # 代理到源站
        proxy_pass https://ywimg.basinhydrology.com;
        proxy_set_header Host ywimg.basinhydrology.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Accept-Encoding "";

        # 隐藏后端头,自定义缓存控制
        proxy_hide_header Vary;
        proxy_hide_header Cache-Control;
        gzip_vary off;

        add_header X-Cache-Status $upstream_cache_status;
        add_header Cache-Control "public, max-age=2592000";  # 30天
    }
    # ==============================
    # 1. 所有 /jljjj/upload/ 静态资源:走 proxy_cache
    # ==============================
    location ~ ^/jljjj/upload/.+\.(css|js|woff2|woff|ttf|svg|png|jpe?g|gif|webp|bmp|avif)$ {
        proxy_cache cdn_cache;
        proxy_cache_valid 200 30d;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        proxy_cache_lock on;

        proxy_pass https://ywimg.basinhydrology.com;
        proxy_set_header Host ywimg.basinhydrology.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Accept-Encoding "";

        proxy_hide_header Vary;
        proxy_hide_header Cache-Control;
        gzip_vary off;
        # === 新增 CORS 头 ===
    add_header Access-Control-Allow-Origin "https://www.jljjj.com" always;
    # 如果还有其他域名需要支持,可以用 map 或多个规则
        add_header Vary "Accept-Encoding";
        add_header X-Cache-Status $upstream_cache_status;
        add_header Cache-Control "public, max-age=2592000";
    }

    # ==============================
    # 2. 其他请求:透传(不缓存)
    # ==============================
    location / {
        proxy_pass https://ywimg.basinhydrology.com;
        proxy_set_header Host ywimg.basinhydrology.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Accept-Encoding "";
    }

    # ==============================
    # 3. 安全:禁止脚本执行
    # ==============================
    location ~* \.(php|jsp|cgi|sh|pl|py|asp|aspx)$ {
        deny all;
    }

    gzip on;
    gzip_types text/plain text/css application/json application/javascript image/svg+xml;
}

配置源站的nginx的缓存

    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END

    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-71.conf;
    #PHP-INFO-END

    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/www.jljjj.com.conf;
    #REWRITE-END

# ===== 自动将本地路径替换为 CDN 域名(无侵入式)=====
sub_filter_types text/html;
sub_filter_once off;

# ✅ 只替换静态资源(安全!)
sub_filter 'src="/upload/'              'src="https://cdn.maccmsrust.com/upload/';
sub_filter 'src="/template/'            'src="https://cdn.maccmsrust.com/template/';
sub_filter 'src="/static/'              'src="https://cdn.maccmsrust.com/static/';
sub_filter 'href="/template/'           'href="https://cdn.maccmsrust.com/template/';
sub_filter 'href="/static/'             'href="https://cdn.maccmsrust.com/static/';
sub_filter 'url(/upload/'               'url(https://cdn.maccmsrust.com/upload/';
sub_filter 'url(/template/'             'url(https://cdn.maccmsrust.com/template/';
sub_filter 'url(/static/'               'url(https://cdn.maccmsrust.com/static/';

# ❗ 关键防护:确保首页链接不被替换(防止跳转到 CDN 域名)
    sub_filter 'href="/"'                   'href="/"';
    sub_filter 'href="/index.html"'         'href="/index.html"';
# ===== 自动将本地路径替换为 CDN 域名(无侵入式)就是上边这段代码加到适当位置=====



    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }

以上就是全部的配置,重启nginx即可。各个参数根据自己的实际情况修改吧。

宝塔安装Cloudreve pro 4.10.1最新教程(推荐)

使用宝塔面板在 Linux 服务器上安装 Cloudreve 最新版(Go 版本,通常称为 Cloudreve Pro) 的详细图文式教程。本教程适用于你已有一台装好 宝塔面板 的服务器(如 CentOS/Ubuntu 等),并希望部署最新版的 Cloudreve 自建网盘。

cloudreve是什么?

Cloudreve 是一款开源的云存储网盘系统,它支持多种存储方式,包括本地存储、阿里云 OSS、腾讯云 COS、七牛云 Kodo、又拍云 USS 等。Cloudreve 提供了丰富的功能,包括文件管理、用户管理、权限控制、分享链接、离线下载等,可以满足个人和团队的各种需求。

cloudreve安装

1. 安装宝塔面板

在 Linux 服务器上安装宝塔面板,宝塔面板是一个方便的 Linux 服务器管理工具,可以简化很多服务器管理任务。

2. 安装 Cloudreve

  • 使用宝塔建立个自己的网站,这个不需要多说了,都会的,不会的可以百度一下。

虽然 Cloudreve 默认使用 SQLite,但生产环境建议使用 MySQL 提高性能和稳定性。

  • 首先在宝塔里新建mysql数据库,然后进入到新建的网站目录,新建一个文件夹,名字叫data,然后进入data文件夹,新建一个文件,名字叫conf.ini,然后打开conf.ini文件,把下面的代码复制进去,然后保存。
[Database]
Type = mysql
User = cloudreve_user
Password = StrongPass123!
Host = 127.0.0.1
Name = cloudreve
TablePrefix = cd_
Port = 3306
Charset = utf8mb4

把数据库的用户名、密码、数据库名称、表前缀都改成你自己的。

  • 打开宝塔终端,使用命令:
cd /www/wwwroot/cloudreve
  • 下载 Cloudreve:登录 Pro 授权管理面板 获取主程序。版本选择 cloudreve_版本号_linux_arm64.tar.gz

  • 解压 Cloudreve:在宝塔文件夹里就执行解压了,或是者在终端执行命令:

unzip cloudreve.zip
  • 启动 Cloudreve:在终端执行命令:
# 赋予执行权限
chmod +x ./cloudreve
  • 对于 Pro 版本,在启动时需要将授权密钥通过命令行参数 –license-key 传入:
./cloudreve --license-key "你的授权密钥"
  • Cloudreve 是常驻服务,需后台运行。推荐使用 宝塔的「Supervisor」插件(进程守护):
宝塔软件商店 → 搜索 Supervisor 并安装
安装后进入 Supervisor 管理页面 → 添加进程
进程名称:cloudreve
启动命令:/www/wwwroot/cloudreve/cloudreve
启动目录:/www/wwwroot/cloudreve
用户:root(或 www-data,根据权限调整)
勾选「自动重启」
点击「启动」,状态变为「RUNNING」即成功

你可以在 Pro 授权管理面板 获取你的授权密钥。

Cloudreve 默认会监听 5212 端口记得在宝塔安全里放心,浏览器中访问 http://localhost:5212进入 Cloudreve。请注册一个账户,首个注册的账户会被设置为管理员。

以上就是使用宝塔面板在 Linux 服务器上安装 Cloudreve 最新版(Go 版本,通常称为 Cloudreve Pro) 的详细图文式教程。

宝塔安装maccms-rust版Docker 部署(推荐)

maccms-rust是一款基于rust语言开发的视频cms系统,具有高性能、高并发等特点。本文将介绍如何在宝塔面板上安装maccms-rust版Docker,并部署到服务器上。

maccms-rust是一款基于rust语言开发的视频cms系统,具有高性能、高并发等特点。本文将介绍如何在宝塔面板上安装maccms-rust版Docker,并部署到服务器上。

首先系统环境建议大家使用ubuntu22.4系统,安全稳定性,宝塔的兼容性都比较好。安装宝塔的命令去宝塔官方文档查看,这里就不多说了。

然后进入宝塔只需要安装Nginx环境即可,留作后续做反向代理使用。然后在宝塔内安装Docker即可,别的无需操作,按完以后使用以下命令:

# 创建项目文件夹
mkdir -p /home/maccms-rust

#进入文件夹,下载Dockerfile
cd /home/maccms-rust
wget https://raw.githubusercontent.com/TFTG-CLOUD/MacCMS-rust/refs/heads/main/Dockerfile
wget https://raw.githubusercontent.com/TFTG-CLOUD/MacCMS-rust/refs/heads/main/entrypoint.sh

以上2个文件暂时没更新,有问题,使用我本地上传的这2个文件到文件夹既可。

# 构建 Docker 镜像
docker build -t maccms-rust:latest .

#启动镜像
docker run -d \
  --name maccms-rust \
  --network host \
  -e ADMIN_USER=myuser \
  -e ADMIN_PASS=myuser \
  -v ./maccms_data:/var/lib/mongodb \
  -v ./maccms-rust:/app \
  -v ./maccms_logo:/var/log \
  --restart unless-stopped \
  maccms-rust:latest

以上代码可能会出现编码问题,请注意。如果出现请粘贴到QQ对话框里在复制一下即可。

#相关参数和文件夹说明
ADMIN_USER 设置后台用户名
ADMIN_PASS 设置后台密码,推荐复杂点
/var/lib/mongodb 数据库文件夹,可自行备份
/app/static 模板文件夹
/var/log 相关运行日志

# 查看容器状态
docker ps

# 查看日志
docker logs maccms-rust

# 停止容器
docker stop maccms-rust

# 启动容器
docker start maccms-rust

# 重启容器
docker restart maccms-rust

# 删除容器
docker rm maccms-rust

# 进入容器
docker exec -it maccms-rust /bin/bash

访问地址就是IP+8080,然后使用宝塔做域名的反向代理即可访问,该程序只有SSL加密域名可以访问。

使用Twonav建立自己的书签导航

搭建一个自己的简易书签,方便自己日常使用。简易网址导航网站。

前言

网址导航程序的选择也挺重要的,市面上有很多开源的导航程序,但是安全性和易用性都不尽如人意。Twonav是一个轻量级的PHP网址导航程序,界面简洁,功能实用,非常适合个人使用。


Twonav简介

Twonav是一个开源的PHP网址导航程序,具有以下特点:轻巧,数据存储在JSON文件中,无需数据库支持;界面简洁,易于使用;支持自定义分类和标签;支持搜索功能;支持多用户管理。


安装步骤

  1. 下载Twonav:从GitHub下载最新版本的Twonav。
  2. 上传文件:将下载的文件解压后,上传到你的服务器的Web根目录。
  3. 设置权限:访问您得域名自动进入安装页面,数据库可以选择SQLite,还是Mysql自己决定,个人用户简易选择Sqlite数据库,点击安装即可完成安装。
  4. 配置网站:安装完成后,登录后台,配置网站信息,如网站名称、描述等。
  5. 添加书签:在后台添加你常用的网站书签,可以按分类管理。

剩下的就没什么可说的了,这程序安装特简单,功能也挺实用,个人觉得挺不错的,推荐大家使用。参考链接肥猫书签导航

CheveretoV4的VPS脚本安装教程

Chevereto作为图库程序的领军代表,该程序功能强悍,作为图库,摄影,分享等用途得到广大好友的青睐,由于该程序功能强大导致V4版本在宝塔下安装环境极为困难还容易出错,所以官方给出Chevereto脚本安装,用于在任何 VPS(虚拟专用服务器)上安装 Chevereto 的 bash 脚本集合。

Chevereto作为图库程序的领军代表,该程序功能强悍,作为图库,摄影,分享等用途得到广大好友的青睐,由于该程序功能强大导致V4版本在宝塔下安装环境极为困难还容易出错,所以官方给出Chevereto脚本安装,用于在任何 VPS(虚拟专用服务器)上安装 Chevereto 的 bash 脚本集合。

安装环境

  • 必须以root用户登录,操作系统推荐ubuntu24.04

安装完会得到以下扩展

  • PHP
  • Apache HTTP Web server
  • MySQL Server
  • Composer
  • FFmpeg
  • Certbot
  • ExifTool
  • exiftran

然后运行以下脚本

注意: Ubuntu LTS 24.04。现在安装可能存在问题,建议使用debian12。

prepare.sh脚本用于在 Ubuntu 上安装系统堆栈。

重启VPS以确保应用所有待处理的内核更新:

systemctl reboot

请务必将其更改24.04为与您的 Ubuntu LTS 版本相匹配:

bash <(curl -s https://raw.githubusercontent.com/chevereto/vps/4.3/ubuntu/24.04/prepare.sh)

成功后将显示此消息:

[OK] Stack ready for Chevereto!

Debian系统

注:推荐使用 Debian 12。 注:Debian 使用 MariaDB。

prepare.sh脚本用于在 Debian 系统上安装系统堆栈。

重启VPS以确保应用所有待处理的内核更新:

systemctl reboot

请务必将其更改12为与您的 Debian 版本相匹配:

bash <(curl -s https://raw.githubusercontent.com/chevereto/vps/4.3/debian/12/prepare.sh)

成功后将显示此消息:

[OK] Stack ready for Chevereto!
  • 这些脚本common/可以在任何类Unix系统下运行。
  • 需要curl和unzip

安装全新脚本

new.sh脚本会下载 Chevereto 并配置 Apache HTTP Web 服务器、MySQL 和 CRON。其目的是为Chevereto 的安装做准备。

这是针对全新安装而设计的,它应该在准备步骤之后运行,因为它假定系统堆栈已准备就绪。

bash <(curl -s https://raw.githubusercontent.com/chevereto/vps/4.3/common/new.sh)

提示输入pro密匙,是专业版用户就进到chevereto.com注册账号,然后获取license,也就是授权码,按回车继续。

数据库位置服务器端:

  • 网站根目录位于/var/www/html

  • MySQL root 密码保存在/root/.mysql_password

  • 日志位于/var/log/apache2

重要的:

运行以下命令保护您的数据库:

mysql_secure_installation

你正在运行 mysql_secure_installation,这是 安全加固 MariaDB/MySQL 的标准操作,和 Chevereto 本身没有直接冲突,但需要注意:Enter current password for root (enter for none): ← 直接回车

回车以后会陆续提示以下内容

Switch to unix_socket authentication [Y/n] n

Change the root password? [Y/n]  n
然后会出现以下全部yes

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

这步结束如果访问IP会提示各种依赖没安装完,不要慌,继续下一步

CheveretoV4下载命令

get.sh脚本下载 Chevereto 并将其解压到当前工作文件夹。

cd放入网站项目文件夹(例如/var/www/html)

运行以下命令,中间也会提示输入授权码,粘贴完按回车即可,授权码粘贴完是不显示的。

bash <(curl -s https://raw.githubusercontent.com/chevereto/vps/4.3/common/get.sh)

https设置

运行以下命令,即可借助 certbot 获取自动续期的 HTTPS 证书。请注意替换example.com为目标域名。

certbot --apache -d example.com

第一个提示是让你输入信箱然后回车,第二个提示输入Y回车,然后在提示就选个N就可以了

如果有子域名www,也可以这样执行

certbot --apache -d example.com -d www.example.com

注意安装提示选择1-2的时候选择2,

选项 1: 000-default.conf - 这是默认的 HTTP 虚拟主机

选项 2: 000-default-le-ssl.conf | example.com | HTTPS | Enabled - 这是专门为你的域名 example.com 配置的 HTTPS 虚拟主机

后续工作

wipe-v3-leftovers.sh脚本会从当前工作文件夹中删除之前 Chevereto V3 安装留下的所有残留文件。

bash <(curl -s https://raw.githubusercontent.com/chevereto/vps/4.3/common/wipe-v3-leftovers.sh)

这时候就可以直接域名访问自动跳转到安装页面,但是这时候数据库的密码是不知道的,我们来设置下MYSQL数据库密码

设置数据库密码

  1. 生成一个高强度密码(12~16位)
生成一个安全的随机密码(不含特殊字符问题)
openssl rand -base64 18 | tr -d '/+=' | cut -c1-14
  1. 用 root 登录 MariaDB 并设置强密码,修改数据库密码
sudo mysql

然后依次执行

ALTER USER 'chevereto'@'localhost' IDENTIFIED BY '生产的密码';
FLUSH PRIVILEGES;
EXIT;
  1. 测试数据库密码是否可以链接
mysql -u chevereto -p -e "USE chevereto; SELECT 'OK';"

会提示输入密码,把你生成的密码粘贴进去回车就可以了。会出现OK字样。

现在就可以使用域名进行安装了,数据库密码就是你新生成的那个密码了。

以上就是CheveretoV4的VPS脚本安装教程,希望对您有所帮助。

mysql数据库的备份和还原

Chevereto 迁移 = 备份 3 个核心部分:数据库、文件和配置文件。

备份

  1. 备份数据库
# 导出 chevereto 数据库(替换 your_db_password)
mysqldump -u chevereto -p'your_db_password' chevereto > /root/chevereto_db_$(date +%Y%m%d).sql

如果密码含特殊字符,改用交互式:

mysqldump -u chevereto -p chevereto > /root/chevereto_db_$(date +%Y%m%d).sql
  1. 备份文件
# 打包 images 目录(包含所有图片)
tar -czf /root/chevereto_images_$(date +%Y%m%d).tar.gz -C /var/www/html images/

# (可选)备份自定义设置、logo 等
tar -czf /root/chevereto_content_$(date +%Y%m%d).tar.gz -C /var/www/html content/
  1. 备份配置文件
cp /var/www/html/app/env.php /root/chevereto_env_$(date +%Y%m%d).php

还原

  1. 还原数据库

前提:新服务器已装好 LAMP(Apache + PHP + MariaDB) Step 1: 创建数据库和用户(同旧服务器)

sudo mysql

CREATE DATABASE chevereto;
CREATE USER 'chevereto'@'localhost' IDENTIFIED BY 'your_new_strong_password';
GRANT ALL PRIVILEGES ON chevereto.* TO 'chevereto'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Step 2: 导入数据库

mysql -u chevereto -p'your_new_strong_password' chevereto < /root/chevereto_db_20251223.sql

Step 3: 部署 Chevereto 程序(官方 ZIP)就是从新安装新程序。

Step 4: 恢复图片和内容

# 解压 images
sudo tar -xzf /root/chevereto_images_20251223.tar.gz -C /var/www/html/

# (可选)恢复 content
sudo tar -xzf /root/chevereto_content_20251223.tar.gz -C /var/www/html/

Step 5: 恢复或重建 env.php 方法 A(推荐):直接用备份的 env.php

sudo cp /root/chevereto_env_20251223.php /var/www/html/app/env.php
# 修改数据库密码(如果新密码不同)
sudo nano /var/www/html/app/env.php

Step 6: 修复权限

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 775 /var/www/html/images /var/www/html/content
sudo chmod 600 /var/www/html/app/env.php

Step 7: 配置 HTTPS(用 Certbot)

所有图片都在 用户账号、设置、统计全部保留 无需重新安装!

额外建议:定期自动备份(可选)

创建备份脚本 /root/backup-chevereto.sh:

#!/bin/bash
DATE=$(date +%Y%m%d)
mysqldump -u chevereto -p'your_pass' chevereto > /backups/chevereto_db_$DATE.sql
tar -czf /backups/chevereto_images_$DATE.tar.gz -C /var/www/html images/
find /backups -name "*.sql" -mtime +7 -delete  # 保留7天

加 cron 每天凌晨 2 点备份

crontab -e
# 添加:
0 2 * * * /root/backup-chevereto.sh

你现在就拥有了 完整的迁移能力!无论换 VPS、升级系统,还是灾难恢复,都能从容应对。

efvcdn出错恢复源码教程

efvcdn是EFV切片转码推出的免费CDN,用于加速视频播放。当efvcdn出错时,可以尝试使用以下方法恢复。

efvcdn是EFV切片转码推出的免费CDN,用于加速视频播放。当efvcdn出错时,可以尝试使用以下方法恢复。

根据情况删除CDN缓存

进到SSH,执行以下命令

rm -rf /home/cdn-node/public/tmp

mkdir -p /home/cdn-node/public/tmp

mongo efvcdn --eval "db.files.deleteMany({})"

依次执行以上代码,删除CDN缓存,并清空数据库。

恢复CDN源码

cd /home && wget file.querydata.org/cdn-node.tar.gz

这个地址是EFV切片转码提供的CDN源码下载地址,如果下载失败,可以尝试使用其他下载工具下载。

然后执行解压文件和重启服务的命令:

tar zxvf cdn-node.tar.gz
cd /home/cdn-node
pm2 start ecosystem.config.js --env production

然后设置开机自启:

pm2 save

pm2 startup

重启服务器

reboot

以上方法可以尝试解决efvcdn出错的问题,如果问题仍然存在,可以尝试联系EFV切片转码客服寻求帮助。

使用谷歌邮箱作为发送端设置

现在,你可以使用下面的通用SMTP服务器信息和刚刚获取的“应用专用密码”进行配置了。

在目标应用或客户端中配置SMTP服务器信息。

  • 现在,你可以使用下面的通用SMTP服务器信息和刚刚获取的“应用专用密码”进行配置了。
配置项
SMTP服务器地址smtp.gmail.com
端口号推荐587
端口号备用465
加密方式STARTTLS(推荐)或SSL/TLS
认证方式普通密码认证
用户名你的完整Gmail邮箱地址
密码你刚刚生成的“应用专用密码”

以上就是使用谷歌邮箱作为发送端的完整设置步骤。完成这些配置后,你的应用或客户端应该能够通过Gmail的SMTP服务器发送电子邮件了。如果遇到任何问题,请确保检查防火墙设置以及Gmail账户的安全设置。祝你使用愉快!

什么是Google的应用专用密码?如何设置?

Google的应用专用密码是一个16 位数的密码,可授权应用或设备访问您的 Google 帐户。如果您开启了两步验证,并且在尝试访问自己的 Google 帐户时看到了“密码不正确”的消息,那么您有可能需要使用应用专用密码而非正常的google帐户的密码。
  • Google的应用专用密码是一个16 位数的密码,可授权应用或设备访问您的 Google 帐户。如果您开启了两步验证,并且在尝试访问自己的 Google 帐户时看到了“密码不正确”的消息,那么您有可能需要使用应用专用密码而非正常的google帐户的密码。

  • 当您的google帐户开启了两步验证后,通常会通过验证码的方式完成两步验证。但是,由于部分应用(如Thunderbird 、Outlook和部分网页版的应用)并不支持这种验证码。因此,在首次使用此类应用或设备登录 Google 帐户时,您将需要通过生成并输入应用专用密码来向此类应用授权。正常情况下,您不必记住这个密码,因为每个应用只需输入一次应用专用密码。

您可以通过以下方法设置专用密码:

1、访问应用专用密码页面(https://security.google.com/settings/security/apppasswords),此时您可能需要登录自己的 Google 帐户。

2、在应用专用密码页面中点击选择设备,然后选择您要使用的设备。如:您在使用139邮箱添加Gmail为其他邮箱时选择设备时,就需选择的是Windows计算机。

3、在应用专用密码页面中点击“选择应用”,然后选择您要使用的应用。如:您要使用139邮箱收取Gmail邮箱的邮件,选择应用时,就需选择的是邮件。

4、设备和应用选择完毕,点击“生成”,会提示正在生成新的应用专用密码,生成成功,展示生成的专用密码.

maccms10苹果CMS添加播放历史详细教程

maccms10苹果CMS添加播放历史详细教程

maccms10苹果CMS添加播放历史详细教程,也算是全网最详细的,也是最有效的教程了。

使用maccms10苹果CMS原生内置系统添加

  1. 确保顶部加载JS文件里包含如果没有home.js文件,请自行添加。

  2. 确保还有3个依赖的JS,文件名 ewave-plugins.js,ewave-global.js,ewave-common.js,如果没有请自行添加。本程序就包含所需的所有JS和CSS文件,请自行下载。

  3. 在文件底部添加以下代码作为加载home.js对应的样式。

<span class="mac_hits hide" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}" data-type="insert"></span> <span class="mac_ulog_set hide" data-type="4" data-mid="{$maccms.mid}" data-id="{$obj.vod_id}" data-sid="" data-nid=""></span> <span class="ewave-history-set hide" data-id="{$obj.vod_id}" data-name="{$obj.vod_name}" data-link="{$obj|mac_url_vod_detail}" data-playname="{$obj['vod_play_list'][$param['sid']]['urls'][$param['nid']]['name']}" data-link=""></span>
  1. 在导航需要添加观看历史的位置添加以下代码
 <div class="item js-history ewave-history"></div>
     <!--
      {if $GLOBALS.config.user.status==1}
      <div class="item js-user ewave-user"></div>
      {/if}
      -->

总结:以上步骤完成后,刷新页面,即可看到播放历史记录了。这个播放历史说简单也简单,说难也挺难的,因为涉及到很多JS和CSS的修改,所以需要一定的前端知识,如果你是小白,建议还是不要尝试了,直接使用本程序吧。

cloudflare + B2设置nginx反向代理

使用B2源,cloudflare作为CDN时候,nginx配置文件需要修改

使用B2源,cloudflare作为CDN时候,nginx配置文件需要修改,修改如下:

注意:反向代理都在这里设置了,不需要单独在宝塔里加反向代理了。

nginx配置文件

server
{
    listen 80;
    listen 443 ssl;
    listen 443 quic;
    http2 on;
    server_name dd.beiwopan.com;
    index index.php index.html index.htm default.php default.htm default.html;
    #root /www/wwwroot/dd.beiwopan.com;
    #CERT-APPLY-CHECK--START
    # 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
    include /www/server/panel/vhost/nginx/well-known/dd.beiwopan.com.conf;
    #CERT-APPLY-CHECK--END
    include /www/server/panel/vhost/nginx/extension/dd.beiwopan.com/*.conf;
    
    # 👇 把你的代理代码放在这里
location / {
    # 1. 先设置代理目标和请求头
    proxy_pass https://cloudflare-b2.beiwopan123.workers.dev;
    proxy_set_header Host cloudflare-b2.beiwopan123.workers.dev;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_http_version 1.1;
    proxy_ssl_server_name on;
    proxy_ssl_name cloudflare-b2.beiwopan123.workers.dev;
    proxy_ssl_verify off;

    # 2. 关闭 Nginx 自动生成缓存头(关键!)
    expires off;

    # 3. 👇 隐藏所有不希望透传的上游响应头(包括 B2 元数据)
    proxy_hide_header Cache-Control;
    proxy_hide_header Expires;
    proxy_hide_header Pragma;
    proxy_hide_header Set-Cookie;
    proxy_hide_header X-Cache;

    # 隐藏 Backblaze B2 的私有元信息(可选但推荐)
    proxy_hide_header x-bz-upload-timestamp;
    proxy_hide_header x-bz-content-sha1;
    proxy_hide_header x-bz-file-id;
    proxy_hide_header x-bz-file-name;
    proxy_hide_header x-bz-info-src_last_modified_millis;

    # 4. 添加你自己的标准响应头
    add_header Cache-Control "public, max-age=2592000" always;
    add_header Expires "30d" always;
    add_header X-Content-Type-Options nosniff always;
}
    
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #HTTP_TO_HTTPS_START
    set $isRedcert 1;
    if ($server_port != 443) {
        set $isRedcert 2;
    }
    if ( $uri ~ /\.well-known/ ) {
        set $isRedcert 1;
    }
    if ($isRedcert != 1) {
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END
    ssl_certificate    /www/server/panel/vhost/cert/dd.beiwopan.com/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/dd.beiwopan.com/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_tickets on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    add_header Alt-Svc 'quic=":443"; h3=":443"; h3-29=":443"; h3-27=":443";h3-25=":443"; h3-T050=":443"; h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"; h3-Q046=":443"; h3-Q043=":443"';
    error_page 497  https://$host$request_uri;

    #SSL-END

    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END

    #PHP-INFO-START  PHP引用配置,可以注释或修改
    #清理缓存规则

    location ~ /purge(/.*) {
        proxy_cache_purge cache_one $host$1$is_args$args;
        #access_log  /www/wwwlogs/dd.beiwopan.com_purge_cache.log;
    }
	#引用反向代理规则,注释后配置的反向代理将无效
	include /www/server/panel/vhost/nginx/proxy/dd.beiwopan.com/*.conf;

	#include enable-php-00.conf;
    #PHP-INFO-END

    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/dd.beiwopan.com.conf;
    #REWRITE-END

    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }

    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }

    #禁止在证书验证目录放入敏感文件
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    

    
    access_log  /dev/null;
    error_log  /www/wwwlogs/dd.beiwopan.com.error.log;
}

这是整个宝塔的配置文件内容,根据自己的修改。

cloudflare配置CDN

这个设置不好贴出来,详情看账户的CDN规则设置把。

生活随笔

每天的生活乐趣,分享生活小技巧之类的目录

击壤歌

此歌创作时间以不可考。全歌古朴醇厚,写出了远古初民日出而作,日落而息的纯朴生活。歌谣的大意是:我们日出而作,日落而息,凿井而饮,耕田而食。帝尧的权力对我们有什么用呢?我们有自己的田地和土地,虽然有舟车,却不敢使用;虽然有甲兵,也不敢动用。

击壤歌

  • 日出而作,日入而息。
  • 凿井而饮,耕田而食。
  • 帝力于我何有哉?
  • 我有吾田,我有吾土。
  • 虽有舟车,弗敢加也。
  • 虽有甲兵,弗敢用也。
  • 帝力于我何有哉?
  • 我有吾屋,我有吾室。
  • 虽有仓廪,弗敢取也。
  • 虽有沟池,弗敢决也。
  • 帝力于我何有哉?
  • 我有吾乐,我有吾忧。
  • 虽有他人,弗敢求也。
  • 虽有亲戚,弗敢恃也。
  • 帝力于我何有哉?
  • 我有吾生,我有吾死。
  • 虽有天下,弗敢取也。
  • 虽有大位,弗敢争也。
  • 帝力于我何有哉?

注释:

  • 击壤歌出自《诗经·大雅·生民之什》,是一首反映古代农民生活的歌谣。歌中表达了农民对自给自足生活的满足和对外来权力的抵制,体现了古代劳动人民的朴素思想和生活态度。

1 击壤:古代一种游戏,王应麟《困学纪闻》二十引《风土纪》曰“以木为之,前广后锐。长尺三寸,其形如屡,先侧一壤于地,遥于三四步,以手中壤击之。中者为上”。

2 帝:指帝尧.

诗解:

  • 此歌创作时间以不可考。全歌古朴醇厚,写出了远古初民日出而作,日落而息的纯朴生活。歌谣的大意是:我们日出而作,日落而息,凿井而饮,耕田而食。帝尧的权力对我们有什么用呢?我们有自己的田地和土地,虽然有舟车,却不敢使用;虽然有甲兵,也不敢动用。帝尧的权力对我们有什么用呢?我们有自己的房屋和室内,虽然有粮仓,却不敢取用;虽然有沟池,也不敢开挖。帝尧的权力对我们有什么用呢?我们有自己的快乐和忧愁,虽然有他人,却不敢向他们求助;虽然有亲戚,也不敢依赖他们。帝尧的权力对我们有什么用呢?我们有自己的生命和死亡,虽然有天下,却不敢去争取;虽然有高位,也不敢去争夺。帝尧的权力对我们有什么用呢?

古歌谣

中国是诗的国度,古代的诗歌形式多样,其中歌谣作为一种通俗易懂的文学形式,深受百姓喜爱。

古歌谣:穿越时空的情感共鸣

摘要:歌谣不仅是情感的表达,更是文化传承的重要载体。通过朗朗上口的韵律和生动的描绘,歌谣能够让人们仿佛置身于那个时代,感受到当时的风土人情和社会氛围。

🎵 身临其境的文学体验

中国是诗的国度,古代的诗歌形式多样,其中歌谣作为一种通俗易懂的文学形式,深受百姓喜爱。歌谣通常以口头传唱为主,内容丰富多彩,涵盖了生活的方方面面。

音乐与情感的完美融合

《毛诗序》说得好:

“诗者,志之所之也;歌者,声之所发也。”

诗歌本来就是人的情感表达,当人类的语言还不足以充分表达人们心中情感的时候:

  • 🎶 歌唱在表达人的情感方面比语言更为生动
  • 💝 每一个音符和乐调都包含着丰富的情感色彩
  • 🌊 歌谣通过音乐的形式,将情感传递得更加直接和深刻

📜 历史的真实记录

今天我们看到的这些远古时代留存下来的歌谣,是先民们的思想情感最真实的记录,他们将各种生活活动都融入到歌谣之中:

生活场景歌谣内容
🏹 狩猎捕鱼记录狩猎技巧和渔获喜悦
🌿 采摘农耕描绘季节变化和劳作场景
🏠 建筑制陶传承工艺技术和建造智慧
🎪 宴乐游艺展现娱乐生活和社交活动

文化传承的重要载体

通过这些歌谣,我们可以感受到:

  1. 古代人民的智慧和创造力
  2. 对自然、生命和宇宙的理解与敬畏
  3. 丰富多彩的生活场景和情感世界
  4. 独特的艺术价值和历史价值

🌟 歌谣的现代意义

歌谣作为一种文化遗产,值得我们深入研究和传承:

  • 🔍 学术价值:了解古代社会结构和价值观念
  • 🎨 艺术价值:欣赏简洁而富有韵律的语言美
  • 📚 教育价值:传承优秀的传统文化精髓
  • 💞 情感价值:建立古今情感的桥梁和纽带

结语:让更多的人了解和欣赏这一独特的文学形式,让古歌谣的魅力在新时代继续绽放光彩。

本文旨在传承和弘扬中国传统文化,让古歌谣的艺术价值得以延续。

人的一生不能不读的古诗词

中国是一个诗歌的国度,古典诗词是中国传统文化的奇葩,它们不仅反映了古代社会的风貌,更传递了深刻的人生哲理。

前言

古人说,不读诗词,不足以以言人生。诗词作为中华文化的瑰宝,蕴含着丰富的情感和智慧。本文将介绍一些人在一生中不可不读的古诗词,帮助你更好地理解人生的意义和价值。 中国是一个诗歌的国度,古典诗词是中国传统文化的奇葩,它们不仅反映了古代社会的风貌,更传递了深刻的人生哲理。无论是豪放的豪情,还是婉约的柔情,古诗词都能触动人心,启迪智慧。


  • 唐诗在中国文学史上占据着重要地位,许多唐代诗人的作品至今仍被广泛传颂。宋词则以其独特的艺术风格和深刻的情感表达,成为中国文学的重要组成部分。通过阅读这些古诗词,我们可以更好地理解古人的思想情感,感受他们对人生的独特见解。

  • 宋词作为中国文学史上的重要组成部分,以其独特的艺术风格和深刻的情感表达,成为人们了解古代文化和思想的重要途径。宋词不仅在文学上具有重要地位,更在哲学和人生观念上对后世产生了深远影响。通过阅读宋词,我们可以更好地理解古人的思想情感,感受他们对人生的独特见解。

元曲作为中国古代文学的重要组成部分,以其独特的艺术形式和深刻的思想内涵,成为人们了解古代文化和思想的重要途径。元曲不仅在文学上具有重要地位,更在哲学和人生观念上对后世产生了深远影响。通过阅读元曲,我们可以更好地理解古人的思想情感,感受他们对人生的独特见解。


本栏目每天会为大家带来一首古诗词,帮助大家在忙碌的生活中找到片刻的宁静与思考。希望通过这些诗词,大家能够更好地理解人生的意义和价值,感受到古人智慧的光辉。

午后咖啡馆的独白

在一个阳光慵懒的午后,独自坐在咖啡馆角落,记录下那些飘散的思绪与生活的感悟。

午后的阳光透过落地窗,在木地板上洒下一片斑驳的光影。我独自坐在咖啡馆的角落,面前是一杯渐凉的拿铁,奶泡上的拉花已经有些模糊了。

耳机里流淌着轻柔的爵士乐,但我的注意力却不在音乐上。窗外行人匆匆,每个人都带着自己的故事奔赴不同的方向。有人眉头紧锁,似乎在为工作烦恼;有人笑容满面,大概是见到了想见的人;还有人面无表情,就像此刻的我一样,只是静静地观察着这个世界。

突然想起村上春树在《挪威的森林》里写过:“每个人都有属于自己的一片森林,也许我们从来不曾去过,但它一直在那里,总会在那里。“此刻的咖啡馆,就是我的那片小森林吧。在这里,我可以暂时逃离日常的喧嚣,与自己对话。

服务生过来为我续了杯温水,微笑着点头示意。这种无声的关怀让人感到温暖。有时候,陌生人的一个微笑,比熟人的千言万语更能触动心弦。

笔记本电脑屏幕上的光标还在闪烁,但我并不急着写下什么。就这样发发呆,看看书,听听音乐,让时间慢下来,其实也是一种奢侈的幸福。在这个追求效率的时代,我们总是忙着赶路,却忘了偶尔也要停下来,等等自己的灵魂。

咖啡终于见底,我也该离开了。推开门,午后的微风拂面,带着一丝凉意,却让人清醒。或许,这就是独处的意义——不是为了逃避,而是为了更好地回归。

今天阴天,心情不是太好

一个阴沉的午后,思绪如灰色的云层般厚重,记录下此刻复杂的心境与感悟。

窗外的天空像是被蒙上了一层灰蒙蒙的薄纱,阳光挣扎着想要穿透云层,却终究无力回天。这样的天气,总让人不由自主地陷入一种莫名的忧郁之中。

坐在书桌前,看着电脑屏幕上闪烁的光标,思绪却飘向了远方。想起昨天还是阳光明媚,心情也随之明朗;而今天,连空气都变得沉重起来,每一次呼吸都带着些许压抑。或许这就是天气的魔力吧,它能悄无声息地影响我们的情绪,让我们在不知不觉中随着它的节奏起舞。

阴天总是让人变得格外敏感。平时不会在意的小事,在这样的日子里却显得格外刺眼。微信群里无人回复的消息,邮箱里堆积的工作邮件,甚至是窗外偶尔传来的汽车鸣笛声,都成了心情的负担。

但转念一想,阴天也有它的美好。它给了我们一个放慢脚步的理由,一个可以心安理得发呆的借口。不需要强迫自己保持积极,不需要伪装开朗,就这样静静地与自己的情绪共处,也是一种难得的奢侈。

泡一杯热茶,让温暖从掌心传遍全身。或许等到茶凉的时候,乌云就会散去了吧。毕竟,再漫长的阴天,也终会有放晴的时刻。

新片解读

针对即将上映的新片和新剧做一些整理和解读

《七王国的骑士》第一季震撼来袭

《七王国的骑士》第一季作为《权力的游戏》前传作品,改编自乔治·R·R·马丁的同名小说系列。

《七王国的骑士:荆棘与荣耀》—— 重返维斯特洛的传奇前奏

系列概述

《七王国的骑士》第一季作为《权力的游戏》前传作品,改编自乔治·R·R·马丁的同名小说系列,将时间线拉回主线故事的89年前。这部备受期待的剧集通过“高个”邓肯爵士和他的侍从伊戈的冒险旅程,展现了一个更为浪漫却也危机四伏的维斯特洛大陆。首播: 2026-01-18(美国) 七王国的骑士

剧情主线

故事围绕“高个”邓肯爵士——一位出身卑微却坚守骑士精神的雇佣骑士展开。在一次偶然的机会中,他结识了身材瘦小的侍从伊戈,而这个看似普通的男孩实则是铁王座的继承人伊耿·坦格利安。本季通过他们在七大王国间的游历,串联起五个各具特色的冒险故事:

  • 神秘骑士比武大会
  • 黑火叛乱的余波
  • 坦格利安王朝的内部斗争
  • 平民与贵族的阶级冲突
  • 即将到来的寒冬预兆

核心角色

  • “高个”邓肯爵士(彼得·克拉科夫饰):一位注重荣誉的雇佣骑士,以其高大的身材和正直的品格闻名
  • 伊戈/伊耿·坦格利安(德克斯特·索尔·安塞尔饰): 年轻聪明的王族成员,在隐姓埋名的旅途中学习治国之道

制作特色

剧集在保持《权游》标志性的史诗质感同时,采用了更为明亮的色调和冒险故事的叙事节奏。制作团队精心还原了坦格利安王朝鼎盛时期的君临城,龙族符号随处可见,但活龙已经绝迹。值得一提的是,本季的比武大会和战斗场面采用了实景特效与CGI的完美结合,创造了令人震撼的视觉体验。

主题探讨

《七王国的骑士》在冒险故事的外壳下,深入探讨了荣誉的真谛、阶级的固化和流动以及权力与责任的平衡等深刻主题。通过邓肯和伊戈的视角,观众将看到铁王座背后的理想与现实,以及那些被正史遗忘的普通人的悲欢。 ###历史定位 本季故事发生在:

  • 伊耿历第208年
  • “龙祸”伊耿三世统治结束后的54年
  • 戴伦·坦格利安二世国王统治时期 这部剧集不仅填补了《权游》世界的历史空白,更为观众理解后续事件提供了关键的历史背景。通过更为亲切的叙事尺度,《七王国的骑士》成功地在宏大的政治史诗与亲密的角色成长故事之间找到了完美平衡。 《七王国的骑士》第一季现已通过指定流媒体平台独家播出,共8集,每集时长约55分钟。

影视快讯

最新的影视快讯的发布,以及影视娱乐圈的八卦事件的发布。