Linux教程

Linux服务器挂载硬盘

我们买独立服务器的时候,有些硬盘是需要我们自己挂载的,如果服务器只有一块硬盘需要挂载,那么这里会写单个硬盘挂载教程。

但如果服务器有多块硬盘需要挂载,鉴于难度有点高,建议直接给商家发工单,要他们使用raid 0合并所有硬盘后,再给你挂载到根目录。

不过我建议不管是一块,还是多块,最好都去发工单要服务商帮忙挂载,以免自己误操作导致服务器开不了机。

挂载步骤

如何确定是否有硬盘未挂载

使用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

如果我买的时候,服务器硬盘标的信息大幅度少于上面显示的硬盘信息,那么就是有硬盘没挂载。

查看需要挂载的硬盘

使用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查看是否自动挂载成功。

组raid 0教程

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

以下命令行均使用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将目录及其子目录所有指定后缀文件移动到其他目录,并保持子目录文件路径不变

操作需配合async工具,先使用SSH客户端登录到服务器,运行命令:

#CentOS 7+、AlmaLinux、Rocky Linux系统
yum install rsync -y

#Debian、Ubuntu系统
apt install rsync -y

再运行命令:

#进入需要操作的目录
cd /home/work

#将目录及其子目录所有的jpg文件,移动到/home/img文件夹,并保持其子目录文件路径不变
find . -type f -name '*.jpg' -exec rsync -aR --remove-source-files {} /home/img \; -exec rm -rf {} \;

Linux快速安装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的信息即为安装成功!

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

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

相关错误

当服务器DNS错误的时候,我们运行wgetcurl命令行的时候,分别会输出如下错误信息:

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

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

有些需要请求网络的项目同样也会因为DNS错误导致出问题,我们可以运行curl https://www.baidu.com命令行进行确认。

设置DNS服务器

注意临时和永久设置的区别就是,临时设置后重启服务器就失效了,永久是不管是否重启一直生效。

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

临时设置DNS服务器

首先,使用ssh客户端登录到你的服务器,再执行以下命令:

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

运行完即为设置成功!

永久设置DNS服务器

由于DNS问题普遍出现在CentOS系统中,所以这里只讲解CentOS及其衍生系统,教程适用于CentOS 7+AlmaLinuxRocky Linux系统

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

首先,使用ssh客户端登录到你的服务器,再执行以下命令:

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

#获取网卡信息
ifconfig -a

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

开始永久设置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转发任意的远程服务器端口,从而改善网络情况。

大致原理

比如我服务器B网络不太好,服务器A网络可以,而服务器B有我在运行的程序,地址为http://服务器B的ip:3000,那么我可以使用服务器A的任意端口,比如4000端口转发服务器B3000端口,这时候你访问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_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

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

Minio服务端一键安装及使用

安装MInio

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

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

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

创建存储桶

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

这时候我们就可以在同步端配置相关信息了。

其它说明

关于存储路径说明

如果我们设置存储目录为/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键退出编辑模式,接下来输入英文:wqenter保存退出。

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

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

systemctl daemon-reload
systemctl restart minios

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

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

Mongodb备份及还原数据库

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

还原数据库

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

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

#/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" }]})

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

配置外网和认证

编辑数据库配置文件,脚本安装的默认为/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端口即可。

工具分享

Linux使用Docker快速安装Qbittorrent

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

安装qBittorrent

首先安装DockerLinux快速安装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

MongoDB管理面板adminMongo安装教程

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

安装adminMongo

首先安装DockerLinux快速安装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使用Caddy配置反向代理

Caddy是一个现代化的、易于使用的Web服务器,配置非常简单,在很多方面可以替代Nginx使用。

反代步骤

安装Caddy

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

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

配置域名

该配置会自动签发ssl证书,请提前解析域名的A记录到服务器ip,并等待解析生效。

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

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

开启相关防火墙

由于有些服务器会关闭80443等端口,会影响到我们绑定域名并申请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自建CDN,最后觉得哪个体验好就使用哪个。

不过既然是自建CDN,那么我们需要准备一台网络比较好的服务器,最起码得比要加速的服务器网络好,不然自建就没意义了。

以下操作均在需要自建CDN的服务器上进行。

自建步骤

安装宝塔面板

这里分别提供宝塔国内和国际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域名,可以是2级域名,然后解析域名的A记录到服务器ip,然后点击宝塔面板左侧 ⇒ 网站 ⇒ 添加站点,只需要填写域名,其它默认就行,如图:

配置CDN

点击宝塔面板左侧 ⇒ 软件商店 ⇒ 找到Nginx ⇒ 点击设置,配置修改,如下:

#在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 为最大缓存空间,可根据硬盘大小自行设置

如图:

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

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为之前设置的缓存名称,也就是直接引用该缓存名称的配置

如图:

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

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,重启下Nginx即可。

相关提示

有些服务器流量有限,且双向计算,所以这里需要将最大缓存空间设置尽量大点,这样缓存一次后,资源最大化从cdn服务器拉取,而不需要额外从源站拉取资源,节约流量。

ffmpeg教程

ffmpeg出现Segmentation fault (core dumped)错误的解决办法

Segmentation fault (core dumped)错误一般在下载m3u8中最常见,这里就说下在Linux系统中的解决办法。

解决办法

该错误通常就是缺少nscd服务导致的,所以我们需要在SSH客户端使用命令:

#CentOS 7+、AlmaLinux、Rocky Linux系统
yum install nscd -y
systemctl start nscd
systemctl enable nscd

#Debian、Ubuntu系统
apt install nscd -y
systemctl start nscd
systemctl enable nscd

安装完成后,基本上可以解决该问题。

当然如果依然解决不了该问题,那就可能是ffmpeg二进制不太适合你当前系统,建议换一个即可。

Linux使用静态二进制快速安装ffmpeg

安装ffmpeg

首先我们下载适合自己服务器架构的ffmpeg二进制文件,使用命令:

#i686架构
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-i686-static.tar.xz

#amd64架构
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz

#arm64架构
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-arm64-static.tar.xz

#armhf架构
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-armhf-static.tar.xz

#armel架构
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-armel-static.tar.xz

接下来解压并安装,使用命令:

#解压文件
tar xvf ffmpeg-release-*-static.tar.xz

#将ffmpeg和ffprobe可执行文件移至/usr/bin方便系统直接调用
mv ffmpeg-*-static/ffmpeg  ffmpeg-*-static/ffprobe /usr/bin/

#清理垃圾文件
rm -rf ffmpeg-*

#查看版本
ffmpeg
ffprobe

如果有输出信息,基本上算安装完成了。