<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>EFV智能云转码切片系统 – 博客目录</title>
    <link>https://docs.efvcms.com/blog/</link>
    <description>Recent content in 博客目录 on EFV智能云转码切片系统</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    
	  <atom:link href="https://docs.efvcms.com/blog/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Blog: ffmpeg出现Segmentation fault (core dumped)错误的解决办法</title>
      <link>https://docs.efvcms.com/blog/ffmpeg-tutorial/ffmpeg-downloading-m3u8-encounters-segmentation-fault-core-dumped-error/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/ffmpeg-tutorial/ffmpeg-downloading-m3u8-encounters-segmentation-fault-core-dumped-error/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;Segmentation fault (core dumped)&lt;/code&gt;错误一般在下载&lt;code&gt;m3u8&lt;/code&gt;中最常见，这里就说下在&lt;code&gt;Linux&lt;/code&gt;系统中的解决办法。&lt;/p&gt;
&lt;h2 id=&#34;解决办法&#34;&gt;解决办法&lt;/h2&gt;
&lt;p&gt;该错误通常就是缺少&lt;code&gt;nscd&lt;/code&gt;服务导致的，所以我们需要在&lt;code&gt;SSH&lt;/code&gt;客户端使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#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
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完成后，基本上可以解决该问题。&lt;/p&gt;
&lt;p&gt;当然如果依然解决不了该问题，那就可能是&lt;code&gt;ffmpeg&lt;/code&gt;二进制不太适合你当前系统，建议换一个即可。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Linux服务器挂载硬盘</title>
      <link>https://docs.efvcms.com/blog/linux-tutorial/linux-server-mounting-disk-tutorial/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/linux-tutorial/linux-server-mounting-disk-tutorial/</guid>
      <description>
        
        
        &lt;p&gt;我们买独立服务器的时候，有些硬盘是需要我们自己挂载的，如果服务器只有一块硬盘需要挂载，那么这里会写单个硬盘挂载教程。&lt;/p&gt;
&lt;p&gt;但如果服务器有多块硬盘需要挂载，鉴于难度有点高，建议直接给商家发工单，要他们使用&lt;code&gt;raid 0&lt;/code&gt;合并所有硬盘后，再给你挂载到根目录。&lt;/p&gt;
&lt;p&gt;不过我建议不管是一块，还是多块，最好都去发工单要服务商帮忙挂载，以免自己误操作导致服务器开不了机。&lt;/p&gt;
&lt;h2 id=&#34;挂载步骤&#34;&gt;挂载步骤&lt;/h2&gt;
&lt;h3 id=&#34;如何确定是否有硬盘未挂载&#34;&gt;如何确定是否有硬盘未挂载&lt;/h3&gt;
&lt;p&gt;使用&lt;code&gt;SSH&lt;/code&gt;客户端登录服务器，运行命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;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
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果我买的时候，服务器硬盘标的信息大幅度少于上面显示的硬盘信息，那么就是有硬盘没挂载。&lt;/p&gt;
&lt;h3 id=&#34;查看需要挂载的硬盘&#34;&gt;查看需要挂载的硬盘&lt;/h3&gt;
&lt;p&gt;使用&lt;code&gt;SSH&lt;/code&gt;客户端登录服务器，运行命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;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
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;比如我知道我有一个&lt;code&gt;4T&lt;/code&gt;硬盘没挂载(由于计算问题，显示肯定没这么多，比如我示例只显示&lt;code&gt;3.7T&lt;/code&gt;)，那么我找到对应容量的硬盘&lt;code&gt;NAME&lt;/code&gt;，如示例的&lt;code&gt;sdb&lt;/code&gt;，那么我们硬盘名称就是&lt;code&gt;/dev/sdb&lt;/code&gt;，也就是加一个&lt;code&gt;/dev/&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;给需要挂载的硬盘分区&#34;&gt;给需要挂载的硬盘分区&lt;/h3&gt;
&lt;p&gt;使用&lt;code&gt;SSH&lt;/code&gt;客户端登录服务器，运行命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#开始挂载，后面为未挂载硬盘名称
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 &#39;help&#39; 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.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;分区完成后，继续使用命令查看分区名称：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;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
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这次比之前多了个&lt;code&gt;sdb1&lt;/code&gt;，那么我们分区名称叫&lt;code&gt;/dev/sdb1&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;挂载分区&#34;&gt;挂载分区&lt;/h3&gt;
&lt;p&gt;先格式化分区，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#后面为分区名称，运行完等待格式化完毕
mkfs.ext4 /dev/sdb1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;新建挂载目录，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#后面为目录名称，自行修改
mkdir /data
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;开始挂载分区，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#后面2个分辨是，分区名称，挂载目录，请根据上面操作的实际情况修改
mount /dev/sdb1 /data
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查挂载是否成功，运行命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;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
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果我们看到了挂载目录，即对应的容量没问题，那么就挂载成功了。&lt;/p&gt;
&lt;h3 id=&#34;设置开机自启&#34;&gt;设置开机自启&lt;/h3&gt;
&lt;p&gt;我们挂载后，需要设置开机自启，这样重启服务器后，会自动挂载。&lt;/p&gt;
&lt;p&gt;查看分区的&lt;code&gt;UUID&lt;/code&gt;，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#后面为分区名称
blkid /dev/sdb1

#输出信息如下，即分区UUID为b82b0f79-2198-4c8c-a183-acd62sg5d832
/dev/sdb1: UUID=&amp;quot;b82b0f79-2198-4c8c-a183-acd62sg5d832&amp;quot; TYPE=&amp;quot;ext4&amp;quot; PARTLABEL=&amp;quot;primary&amp;quot; PARTUUID=&amp;quot;29a545e6-2a67-463d-bb3e-3127fghtccaf&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;设置开机自启，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#b82b0f79-2198-4c8c-a183-acd62sg5d832 /data分别为分区UUID，挂载目录，先修改好下面相关信息，再一起复制到ssh客户端运行
echo &#39;UUID=b82b0f79-2198-4c8c-a183-acd62sg5d832 /data ext4 defaults 0 0&#39; &amp;gt;&amp;gt;/etc/fstab
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个步骤一点要操作正确，不然到时候重启后，可能会开机不了。&lt;/p&gt;
&lt;p&gt;最后再检查下配置文件，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount -a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果不报错，就可以使用&lt;code&gt;reboot&lt;/code&gt;命令重启服务器，重启后，再使用&lt;code&gt;df -h&lt;/code&gt;查看是否自动挂载成功。&lt;/p&gt;
&lt;h2 id=&#34;组raid-0教程&#34;&gt;组raid 0教程&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;提示：仅做笔记，即合并多个空闲硬盘并挂载，没经验的勿操作
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以下命令行均使用&lt;code&gt;ssh&lt;/code&gt;操作：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#查看硬盘及分区
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 &#39;UUID=b82b0f79-2198-4c8c-a183-acd62sg5d832 /data ext4 defaults 0 0&#39; &amp;gt;&amp;gt;/etc/fstab&lt;/code&gt;&lt;/pre&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: linux将目录及其子目录所有指定后缀文件移动到其他目录，并保持子目录文件路径不变</title>
      <link>https://docs.efvcms.com/blog/linux-tutorial/move-files-specified-suffix-linux-preserve-directory-structure/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/linux-tutorial/move-files-specified-suffix-linux-preserve-directory-structure/</guid>
      <description>
        
        
        &lt;p&gt;操作需配合&lt;code&gt;async&lt;/code&gt;工具，先使用&lt;code&gt;SSH&lt;/code&gt;客户端登录到服务器，运行命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#CentOS 7+、AlmaLinux、Rocky Linux系统
yum install rsync -y

#Debian、Ubuntu系统
apt install rsync -y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再运行命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#进入需要操作的目录
cd /home/work

#将目录及其子目录所有的jpg文件，移动到/home/img文件夹，并保持其子目录文件路径不变
find . -type f -name &#39;*.jpg&#39; -exec rsync -aR --remove-source-files {} /home/img \; -exec rm -rf {} \;&lt;/code&gt;&lt;/pre&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Linux快速安装Docker</title>
      <link>https://docs.efvcms.com/blog/linux-tutorial/linux-quick-install-docker/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/linux-tutorial/linux-quick-install-docker/</guid>
      <description>
        
        
        &lt;p&gt;首先，使用&lt;code&gt;ssh&lt;/code&gt;客户端登录到你的服务器，并以&lt;code&gt;root&lt;/code&gt;或具有&lt;code&gt;sudo&lt;/code&gt;权限的用户身份执行以下命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#运行安装脚本
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -sSL https://get.docker.com/ | sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#启动并设置开机自启
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl start docker
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl enable docker
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#验证是否安装成功
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最后输出类似&lt;code&gt;Docker version 24.0.5, build ced0996&lt;/code&gt;的信息即为安装成功！&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Linux临时或永久设置DNS服务器</title>
      <link>https://docs.efvcms.com/blog/linux-tutorial/linux-set-dns-server-temporary-or-permanent/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/linux-tutorial/linux-set-dns-server-temporary-or-permanent/</guid>
      <description>
        
        
        &lt;p&gt;有时候我们运行某些项目或者命令行的时候，会因为服务器&lt;code&gt;DNS&lt;/code&gt;错误导致出问题，这时候就需要修改&lt;code&gt;DNS&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;相关错误&#34;&gt;相关错误&lt;/h2&gt;
&lt;p&gt;当服务器&lt;code&gt;DNS&lt;/code&gt;错误的时候，我们运行&lt;code&gt;wget&lt;/code&gt;和&lt;code&gt;curl&lt;/code&gt;命令行的时候，分别会输出如下错误信息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#wget命令行
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget: unable to resolve host address
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#curl命令行
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl: (6) Could not resolve host
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;有些需要请求网络的项目同样也会因为&lt;code&gt;DNS&lt;/code&gt;错误导致出问题，我们可以运行&lt;code&gt;curl https://www.baidu.com&lt;/code&gt;命令行进行确认。&lt;/p&gt;
&lt;h2 id=&#34;设置dns服务器&#34;&gt;设置DNS服务器&lt;/h2&gt;
&lt;p&gt;注意临时和永久设置的区别就是，临时设置后重启服务器就失效了，永久是不管是否重启一直生效。&lt;/p&gt;
&lt;p&gt;建议先用临时设置&lt;code&gt;DNS&lt;/code&gt;的方法验证我们的问题是否被解决，然后再永久修改&lt;code&gt;DNS&lt;/code&gt;服务器。&lt;/p&gt;
&lt;h3 id=&#34;临时设置dns服务器&#34;&gt;临时设置DNS服务器&lt;/h3&gt;
&lt;p&gt;首先，使用&lt;code&gt;ssh&lt;/code&gt;客户端登录到你的服务器，再执行以下命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#设置Google DNS服务器
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &amp;#34;nameserver 8.8.8.8&amp;#34; &amp;gt; /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &amp;#34;nameserver 8.8.4.4&amp;#34; &amp;gt;&amp;gt; /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;运行完即为设置成功！&lt;/p&gt;
&lt;h3 id=&#34;永久设置dns服务器&#34;&gt;永久设置DNS服务器&lt;/h3&gt;
&lt;p&gt;由于&lt;code&gt;DNS&lt;/code&gt;问题普遍出现在&lt;code&gt;CentOS&lt;/code&gt;系统中，所以这里只讲解&lt;code&gt;CentOS&lt;/code&gt;及其衍生系统，教程适用于&lt;code&gt;CentOS 7+&lt;/code&gt;，&lt;code&gt;AlmaLinux&lt;/code&gt;，&lt;code&gt;Rocky Linux&lt;/code&gt;系统&lt;/p&gt;
&lt;p&gt;对于&lt;code&gt;Linux&lt;/code&gt;不太熟悉的新手来说，如果你有安装宝塔面板，可以在宝塔安装&lt;code&gt;Linux&lt;/code&gt;工具箱，设置主&lt;code&gt;DNS&lt;/code&gt;服务器为&lt;code&gt;8.8.8.8&lt;/code&gt;，备用为&lt;code&gt;8.8.4.4&lt;/code&gt;即可。&lt;/p&gt;
&lt;p&gt;首先，使用&lt;code&gt;ssh&lt;/code&gt;客户端登录到你的服务器，再执行以下命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#检测并判断是否安装网卡检测工具&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;command&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ifconfig&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;dev&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;yum&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;install&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;y&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;net&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tools&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#获取网卡信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;ifconfig&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;看到接口信息后，显示&lt;code&gt;inet 服务器ip&lt;/code&gt;的就是你的网卡信息，该部分左上角的英文就是你的网卡名称，常见的为&lt;code&gt;eth0&lt;/code&gt;，也有可能是其它的。&lt;/p&gt;
&lt;p&gt;开始永久设置&lt;code&gt;DNS&lt;/code&gt;，运行命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /etc/sysconfig/network-scripts/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#找到网卡配置文件，一般名称为ifcfg-网卡名称，如ifcfg-eth0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ls
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#修改配置文件，运行命令之前，先将下面2个命令的后面改成你的网卡配置文件名称
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sed -i &amp;#39;/DNS1=/d&amp;#39; ifcfg-eth0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &amp;#34;DNS1=8.8.8.8&amp;#34; &amp;gt;&amp;gt; ifcfg-eth0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#重启网络生效，重启如果有报错，解决方法看下方
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;service network restart
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;#检查是否修改完成
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出你设置的&lt;code&gt;DNS&lt;/code&gt;服务器就修改完成。&lt;/p&gt;
&lt;p&gt;注意如果出现&lt;code&gt;Failed to restart network.service: Unit network.service not found.&lt;/code&gt;错误，则运行命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl restart NetworkManager
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后重新使用命令重启网络。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Linux使用Brook转发端口一键脚本</title>
      <link>https://docs.efvcms.com/blog/linux-tutorial/linux-brook-port-forwarding-one-click-script/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/linux-tutorial/linux-brook-port-forwarding-one-click-script/</guid>
      <description>
        
        
        &lt;p&gt;有时候我们连接远程服务器&lt;code&gt;SSH&lt;/code&gt;，或其它端口地址出现很慢的情况，很影响体验；这时候我们可以在网络好的服务器使用&lt;code&gt;Brook&lt;/code&gt;转发任意的远程服务器端口，从而改善网络情况。&lt;/p&gt;
&lt;h2 id=&#34;大致原理&#34;&gt;大致原理&lt;/h2&gt;
&lt;p&gt;比如我&lt;code&gt;服务器B&lt;/code&gt;网络不太好，&lt;code&gt;服务器A&lt;/code&gt;网络可以，而&lt;code&gt;服务器B&lt;/code&gt;有我在运行的程序，地址为&lt;code&gt;http://服务器B的ip:3000&lt;/code&gt;，那么我可以使用&lt;code&gt;服务器A&lt;/code&gt;的任意端口，比如&lt;code&gt;4000&lt;/code&gt;端口转发&lt;code&gt;服务器B&lt;/code&gt;的&lt;code&gt;3000&lt;/code&gt;端口，这时候你访问&lt;code&gt;http://服务器A的ip:4000&lt;/code&gt;的时候，&lt;code&gt;服务器A&lt;/code&gt;会去请求&lt;code&gt;http://服务器B的ip:3000&lt;/code&gt;，最后再将数据返回给你，也就是不需要直接访问&lt;code&gt;服务器B&lt;/code&gt;，而是访问&lt;code&gt;服务器A&lt;/code&gt;就可以了，间接的等于你访问&lt;code&gt;服务器B&lt;/code&gt;的数据，达到一种加速效果。&lt;/p&gt;
&lt;h2 id=&#34;安装brook&#34;&gt;安装Brook&lt;/h2&gt;
&lt;p&gt;首先我们需要挑选一个网络相对较好的服务器进行中转，起码也要比你转发的服务器网络要好，不然就没什么意义了。&lt;/p&gt;
&lt;p&gt;系统要求：&lt;code&gt;CentOS 7+&lt;/code&gt;，&lt;code&gt;Debian 8+&lt;/code&gt;，&lt;code&gt;Ubuntu 16.04+&lt;/code&gt;，&lt;code&gt;AlmaLinux 8+&lt;/code&gt;，&lt;code&gt;Rocky Linux 8+&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;然后使用&lt;code&gt;SSH&lt;/code&gt;客户端，比如&lt;code&gt;Xshell&lt;/code&gt;软件，登录该&lt;code&gt;VPS&lt;/code&gt;服务器，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#下载脚本
wget -N --no-check-certificate -O /opt/brook.sh https://down.querydata.org/moeapp/shell/brook.sh
#运行命令，运行之前请修改相关参数，8888为本地端口，192.6.8.1:9999为远程ip地址:远程端口
bash /opt/brook.sh 8888 192.6.8.1:9999
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行完成后，你访问安装端口转发服务器的&lt;code&gt;ip:8888&lt;/code&gt;就等于访问远程服务器的&lt;code&gt;192.6.8.1:9999&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你需要转发其它端口，且可以多次通过运行该命令，来中转多个远程服务器端口地址。&lt;/p&gt;
&lt;h2 id=&#34;删除相关端口转发&#34;&gt;删除相关端口转发&lt;/h2&gt;
&lt;p&gt;如果我们多次运行脚本转发端口，有些不使用了，需要删除，则按要求操作命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#查看全部转发端口配置文件，格式为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
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行完成后，指定端口转发会彻底删除。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Linux使用Caddy配置反向代理</title>
      <link>https://docs.efvcms.com/blog/website-building-tutorial/linux-caddy-configure-reverse-proxy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/website-building-tutorial/linux-caddy-configure-reverse-proxy/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;Caddy&lt;/code&gt;是一个现代化的、易于使用的&lt;code&gt;Web&lt;/code&gt;服务器，配置非常简单，在很多方面可以替代&lt;code&gt;Nginx&lt;/code&gt;使用。&lt;/p&gt;
&lt;h2 id=&#34;反代步骤&#34;&gt;反代步骤&lt;/h2&gt;
&lt;h3 id=&#34;安装caddy&#34;&gt;安装Caddy&lt;/h3&gt;
&lt;p&gt;使用&lt;code&gt;SSH&lt;/code&gt;客户端，比如&lt;code&gt;Xshell&lt;/code&gt;软件，登录服务器，再使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p /usr/local/caddy
wget -N --no-check-certificate https://down.querydata.org/moeapp/caddy/caddy -P /usr/local/caddy
wget -N --no-check-certificate https://down.querydata.org/moeapp/caddy/caddy.service -P /etc/systemd/system
chmod +x /usr/local/caddy/caddy
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;配置域名&#34;&gt;配置域名&lt;/h3&gt;
&lt;p&gt;该配置会自动签发&lt;code&gt;ssl&lt;/code&gt;证书，请提前解析域名的&lt;code&gt;A&lt;/code&gt;记录到服务器&lt;code&gt;ip&lt;/code&gt;，并等待解析生效。&lt;/p&gt;
&lt;p&gt;然后在&lt;code&gt;SSH&lt;/code&gt;客户端使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#以下全部内容是一个整体，请修改域名和需要反代的地址127.0.0.1:3000，然后一起复制到SSH运行！
echo &amp;quot;www.efvcms.com {
 gzip
 tls admin@efvtest.com
 proxy / http://127.0.0.1:3000 {
     transparent
     header_upstream Host {host}
 }
}&amp;quot; &amp;gt; /usr/local/caddy/Caddyfile
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;开启相关防火墙&#34;&gt;开启相关防火墙&lt;/h3&gt;
&lt;p&gt;由于有些服务器会关闭&lt;code&gt;80&lt;/code&gt;、&lt;code&gt;443&lt;/code&gt;等端口，会影响到我们绑定域名并申请&lt;code&gt;ssl&lt;/code&gt;证书，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#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
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;启动并设置开机自启&#34;&gt;启动并设置开机自启&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;systemctl start caddy
systemctl enable caddy&lt;/code&gt;&lt;/pre&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Linux使用Docker快速安装Qbittorrent</title>
      <link>https://docs.efvcms.com/blog/practical-tool-source-sharing/linux-docker-quick-install-qbittorrent/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/practical-tool-source-sharing/linux-docker-quick-install-qbittorrent/</guid>
      <description>
        
        
        &lt;p&gt;目前&lt;code&gt;EFV&lt;/code&gt;已支持磁力下载功能，如果你觉得自带的满足不了你的需求，或者你想专门使用一个服务器用来下载磁力，或者存放&lt;code&gt;EFV&lt;/code&gt;的视频做种资源，鉴于我的使用体验，就推荐一款&lt;code&gt;Linux&lt;/code&gt;服务器中比较好用的&lt;code&gt;bt&lt;/code&gt;下载程序&lt;code&gt;qBittorrent&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;安装qbittorrent&#34;&gt;安装qBittorrent&lt;/h2&gt;
&lt;p&gt;首先安装&lt;code&gt;Docker&lt;/code&gt;：&lt;a href=&#34;https://docs.efvcms.com/blog/linux-tutorial/linux-quick-install-docker/&#34;&gt;Linux快速安装Docker&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;然后在&lt;code&gt;SSH&lt;/code&gt;客户端使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#将以下命令一起复制粘贴，且/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
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完成后，相关信息如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;qbittorrent管理面板地址：http://ip:8080
登录用户名：admin
登录密码：adminadmin
qbittorrent配置和下载目录：/home/qbittorrent
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下来需要开启相关使用端口，请运行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#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
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;有些服务商，比如阿里云、谷歌云，都还要开启安全组端口。&lt;/p&gt;
&lt;h2 id=&#34;设置中文界面&#34;&gt;设置中文界面&lt;/h2&gt;
&lt;p&gt;进去后在设置那里更改默认的用户名和密码，不然你的服务器随时会被黑，并可能拿来挖矿。&lt;/p&gt;
&lt;p&gt;接下来看不懂英文的，可以设置中文信息，如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.efvcms.com/image/qb1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.efvcms.com/image/qb2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;最后点下方的保存即可。&lt;/p&gt;
&lt;h2 id=&#34;卸载qbittorrent&#34;&gt;卸载Qbittorrent&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#删掉容器
CONTAINERID=$(docker ps | grep linuxserver/qbittorrent | awk &#39;{print $1}&#39;)
docker kill ${CONTAINERID}
docker rm ${CONTAINERID}
docker rmi $(docker images | grep linuxserver/qbittorrent | awk &#39;{print $3}&#39;)
#删掉配置和下载文件夹
rm -rf /home/qbittorrent
&lt;/code&gt;&lt;/pre&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Linux使用Nginx自建CDN服务</title>
      <link>https://docs.efvcms.com/blog/website-building-tutorial/linux-nginx-self-hosted-cdn/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/website-building-tutorial/linux-nginx-self-hosted-cdn/</guid>
      <description>
        
        
        &lt;p&gt;目前我们提供免费的&lt;code&gt;CDN&lt;/code&gt;缓存系统，如果觉得不太好用，可以使用&lt;code&gt;Nginx&lt;/code&gt;自建&lt;code&gt;CDN&lt;/code&gt;，最后觉得哪个体验好就使用哪个。&lt;/p&gt;
&lt;p&gt;不过既然是自建&lt;code&gt;CDN&lt;/code&gt;，那么我们需要准备一台网络比较好的服务器，最起码得比要加速的服务器网络好，不然自建就没意义了。&lt;/p&gt;
&lt;p&gt;以下操作均在需要自建&lt;code&gt;CDN&lt;/code&gt;的服务器上进行。&lt;/p&gt;
&lt;h2 id=&#34;自建步骤&#34;&gt;自建步骤&lt;/h2&gt;
&lt;h3 id=&#34;安装宝塔面板&#34;&gt;安装宝塔面板&lt;/h3&gt;
&lt;p&gt;这里分别提供宝塔国内和国际&lt;code&gt;2&lt;/code&gt;个版本安装，区别是宝塔国内版需要强制登录宝塔账号，而国际版不需要，可自行选择安装&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;SSH&lt;/code&gt;客户端登录服务器，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#CentOS系统，国内版本
yum install -y wget &amp;amp;&amp;amp; wget -O install.sh https://download.bt.cn/install/install_6.0.sh &amp;amp;&amp;amp; sh install.sh ed8484bec
#CentOS系统，国际版本
yum install -y wget &amp;amp;&amp;amp; wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh &amp;amp;&amp;amp; bash install.sh aapanel

#Debian系统，国内版本
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh &amp;amp;&amp;amp; bash install.sh ed8484bec
#Debian系统，国际版本
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh &amp;amp;&amp;amp; bash install.sh aapanel

#Ubuntu系统，国内版本
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh &amp;amp;&amp;amp; sudo bash install.sh ed8484bec
#Ubuntu系统，国际版本
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh &amp;amp;&amp;amp; sudo bash install.sh aapanel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完成后，会给你宝塔登录信息，保存好就行。&lt;/p&gt;
&lt;h3 id=&#34;安装nginx&#34;&gt;安装Nginx&lt;/h3&gt;
&lt;p&gt;点击宝塔面板左侧 ⇒ 软件商店 ⇒ 找到&lt;code&gt;Nginx&lt;/code&gt;安装即可。&lt;/p&gt;
&lt;h3 id=&#34;绑定域名&#34;&gt;绑定域名&lt;/h3&gt;
&lt;p&gt;先准备一个域名作为&lt;code&gt;CDN&lt;/code&gt;域名，可以是&lt;code&gt;2&lt;/code&gt;级域名，然后解析域名的&lt;code&gt;A&lt;/code&gt;记录到服务器&lt;code&gt;ip&lt;/code&gt;，然后点击宝塔面板左侧 ⇒ 网站 ⇒ 添加站点，只需要填写域名，其它默认就行，如图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.efvcms.com/image/1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;配置cdn&#34;&gt;配置CDN&lt;/h3&gt;
&lt;p&gt;点击宝塔面板左侧 ⇒ 软件商店 ⇒ 找到&lt;code&gt;Nginx&lt;/code&gt; ⇒ 点击设置，配置修改，如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#在http{}里面加入以下代码
proxy_cache_path /www/wwwroot/www.efvcms.com levels=1:2 keys_zone=efv:500m inactive=1d max_size=50g;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;主要参数如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;proxy_cache_path /www/wwwroot/www.efvcms.com 后面路径为缓存目录，可自行修改，比如你CDN域名根目录
keys_zone=efv:500m efv为缓存的名字，可不变；后面500m为内存缓存空间，自行根据内存大小适当进行修改
inactive=1d 为一定时间内没人访问的资源缓存清空时间，如1d，也就是1天没有被访问的内容自动清除，10天可设置为10d
max_size=50g 为最大缓存空间，可根据硬盘大小自行设置
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.efvcms.com/image/cdn1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;接下来再点击域名右侧设置按钮，点击配置文件，加入以下代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;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;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;主要参数如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;proxy_pass http://185.172.165.11:3000 后面地址为需要加速的地址，可直接修改为转码服务器的访问地址，如ip:3000
proxy_cache efv 后面的efv为之前设置的缓存名称，也就是直接引用该缓存名称的配置
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.efvcms.com/image/cdn2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;然后删除配置文件里面的这几行代码，不然&lt;code&gt;js&lt;/code&gt;、&lt;code&gt;jpg&lt;/code&gt;等文件缓存不了，代码如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;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; 
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后基本上设置好了，然后此时我们访问&lt;code&gt;CDN&lt;/code&gt;域名后，数据会根据缓存配置，缓存到设置的缓存目录。&lt;/p&gt;
&lt;p&gt;注意如果这里设置不生效，记得点击宝塔面板左侧 ⇒ 软件商店 ⇒ 找到&lt;code&gt;Nginx&lt;/code&gt;，重启下&lt;code&gt;Nginx&lt;/code&gt;即可。&lt;/p&gt;
&lt;h2 id=&#34;相关提示&#34;&gt;相关提示&lt;/h2&gt;
&lt;p&gt;有些服务器流量有限，且双向计算，所以这里需要将最大缓存空间设置尽量大点，这样缓存一次后，资源最大化从&lt;code&gt;cdn&lt;/code&gt;服务器拉取，而不需要额外从源站拉取资源，节约流量。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Linux使用静态二进制快速安装ffmpeg</title>
      <link>https://docs.efvcms.com/blog/ffmpeg-tutorial/linux-binary-quick-install-ffmpeg/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/ffmpeg-tutorial/linux-binary-quick-install-ffmpeg/</guid>
      <description>
        
        
        &lt;h2 id=&#34;安装ffmpeg&#34;&gt;安装ffmpeg&lt;/h2&gt;
&lt;p&gt;首先我们下载适合自己服务器架构的&lt;code&gt;ffmpeg&lt;/code&gt;二进制文件，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#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
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下来解压并安装，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#解压文件
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
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果有输出信息，基本上算安装完成了。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Minio服务端一键安装及使用</title>
      <link>https://docs.efvcms.com/blog/linux-tutorial/minio-server-one-click-installation-and-usage/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/linux-tutorial/minio-server-one-click-installation-and-usage/</guid>
      <description>
        
        
        &lt;h2 id=&#34;安装minio&#34;&gt;安装MInio&lt;/h2&gt;
&lt;p&gt;系统要求：&lt;code&gt;CentOS 8+&lt;/code&gt;，&lt;code&gt;Debian 10+&lt;/code&gt;，&lt;code&gt;Ubuntu 20.04+&lt;/code&gt;，&lt;code&gt;AlmaLinux 8+&lt;/code&gt;，&lt;code&gt;Rocky Linux 8+&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;SSH&lt;/code&gt;客户端，比如&lt;code&gt;Xshell&lt;/code&gt;软件，登录存储服务器，再使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#后面的/home为文件存储路径，自行修改
curl -sL https://down.querydata.org/moeapp/shell/nimio_install.sh | bash -s /home
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完成后，会给你同步端配置信息和&lt;code&gt;Web&lt;/code&gt;管理面板信息信息，面板默认访问地址为&lt;code&gt;ip:9001&lt;/code&gt;，如果打不开，请检查下防火墙端口，并手动开启&lt;code&gt;9000&lt;/code&gt;和&lt;code&gt;9001&lt;/code&gt;端口。&lt;/p&gt;
&lt;h2 id=&#34;创建存储桶&#34;&gt;创建存储桶&lt;/h2&gt;
&lt;p&gt;我们登录管理员面板，通过左侧的&lt;code&gt;Buckets&lt;/code&gt;，再点击&lt;code&gt;Create Bucket&lt;/code&gt;，创建一个桶。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.efvcms.com/image/minio_zx.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;这时候我们就可以在同步端配置相关信息了。&lt;/p&gt;
&lt;h2 id=&#34;其它说明&#34;&gt;其它说明&lt;/h2&gt;
&lt;h3 id=&#34;关于存储路径说明&#34;&gt;关于存储路径说明&lt;/h3&gt;
&lt;p&gt;如果我们设置存储目录为&lt;code&gt;/home&lt;/code&gt;，且桶名称为&lt;code&gt;efvcms&lt;/code&gt;，那么我们同步过来的切片目录为&lt;code&gt;/home/efvcms&lt;/code&gt;，即桶在存储目录下。&lt;/p&gt;
&lt;h3 id=&#34;如何配置域名从而读取到路径不变的切片&#34;&gt;如何配置域名，从而读取到路径不变的切片&lt;/h3&gt;
&lt;p&gt;我们添加一个存储桶使用的域名，然后把同步过来的切片目录，如&lt;code&gt;/home/efvcms&lt;/code&gt;设置为根目录就可以了。&lt;/p&gt;
&lt;p&gt;建议在域名设置的配置文件项，类似&lt;code&gt;root /home/efvcms;&lt;/code&gt;下一行添加该代码&lt;code&gt;add_header Access-Control-Allow-Origin *;&lt;/code&gt;最后面&lt;code&gt;;&lt;/code&gt;别漏掉了，可防止出现跨域问题。&lt;/p&gt;
&lt;h3 id=&#34;如何修改存储目录&#34;&gt;如何修改存储目录&lt;/h3&gt;
&lt;p&gt;如果我们想修改存储目录，则需要先修改文件&lt;code&gt;/etc/systemd/system/minios.service&lt;/code&gt;，可在&lt;code&gt;SSH&lt;/code&gt;客户端使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vi /etc/systemd/system/minios.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;首先按一下键盘的&lt;code&gt;i&lt;/code&gt;键，进入编辑模式，这时候可以使用键盘进行编辑，编辑代码详解如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Unit]
Description=minio server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/minio server &amp;quot;/home&amp;quot; --console-address &amp;quot;:9001&amp;quot;
Environment=MINIO_ROOT_USER=89031270c3 MINIO_ROOT_PASSWORD=b657ae64b3
PIDFile=/var/run/minio.pid
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;/home&lt;/code&gt;为存储目录，且为绝对路径，自行修改，编辑好了后，按一下键盘的&lt;code&gt;esc&lt;/code&gt;键退出编辑模式，接下来输入英文&lt;code&gt;:wq&lt;/code&gt;，&lt;code&gt;enter&lt;/code&gt;保存退出。&lt;/p&gt;
&lt;p&gt;最后如果你不是很会命令行，依然不会修改，可以使用&lt;code&gt;FTP&lt;/code&gt;软件或宝塔文件管理，找到该文件后手动修改即可。&lt;/p&gt;
&lt;p&gt;最后修改好了重启，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl daemon-reload
systemctl restart minios

#查看状态，如显示Active: active (running)，则修改成功
systemctl status minios
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下来重新登录管理面板，创建一个新桶或原桶名称，重新在同步端配置使用。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Mongodb备份及还原数据库</title>
      <link>https://docs.efvcms.com/blog/linux-tutorial/mongodb-backup-and-restore-database/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/linux-tutorial/mongodb-backup-and-restore-database/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;EFV&lt;/code&gt;使用的是&lt;code&gt;Mongodb&lt;/code&gt;数据库，且默认的数据库名，数据库用户名和密码均为&lt;code&gt;ffmpeg&lt;/code&gt;，如果你没修改过这些信息，可以直接复制粘贴。&lt;/p&gt;
&lt;h2 id=&#34;备份数据库&#34;&gt;备份数据库&lt;/h2&gt;
&lt;p&gt;首先使用&lt;code&gt;SSH&lt;/code&gt;客户端，比如&lt;code&gt;Xshell&lt;/code&gt;软件，登录要备份的切片服务器，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mongodump -h 127.0.0.1 -u ffmpeg -p ffmpeg -d ffmpeg -o /root --authenticationDatabase ffmpeg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;-d&lt;/code&gt;是选择要备份的数据库，&lt;code&gt;-u&lt;/code&gt;是用户名，&lt;code&gt;-p&lt;/code&gt;是密码，&lt;code&gt;--authenticationDatabasehou&lt;/code&gt;后面也是要备份的数据库。&lt;/p&gt;
&lt;p&gt;备份好了后，数据库备份文件路径为&lt;code&gt;/root/ffmpeg&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;还原数据库&#34;&gt;还原数据库&lt;/h2&gt;
&lt;h3 id=&#34;清空数据库&#34;&gt;清空数据库&lt;/h3&gt;
&lt;p&gt;还原之前，需清空需要还原的服务器数据库，防止数据有冲突的情况。&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;SSH&lt;/code&gt;客户端，比如&lt;code&gt;Xshell&lt;/code&gt;软件，登录服务器，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#ffmpeg为数据库名，将下面代码一起复制到ssh运行
mongo ffmpeg --eval &#39;
db.getCollectionNames().forEach(function(collection) {
    if (!collection.startsWith(&amp;quot;system.&amp;quot;)) {
        db[collection].drop();
        print(&amp;quot;已删除: &amp;quot; + collection);
    }
})
&#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;开始还原&#34;&gt;开始还原&lt;/h3&gt;
&lt;p&gt;我们需要将数据库备份文件夹放到需要还原的服务器目录，如&lt;code&gt;ffmpeg&lt;/code&gt;备份文件夹放到&lt;code&gt;/root&lt;/code&gt;目录&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;SSH&lt;/code&gt;客户端，比如&lt;code&gt;Xshell&lt;/code&gt;软件，登录服务器，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#/root/ffmpeg为数据表备份存放文件夹，自行修改
mongorestore -h 127.0.0.1 -u ffmpeg -p ffmpeg -d ffmpeg /root/ffmpeg --authenticationDatabase ffmpeg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;-d&lt;/code&gt;是选择要合并的数据库，&lt;code&gt;-u&lt;/code&gt;是用户名，&lt;code&gt;-p&lt;/code&gt;是密码，&lt;code&gt;--authenticationDatabasehou&lt;/code&gt;后面也是要还原的数据库。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: MongoDB管理面板adminMongo安装教程</title>
      <link>https://docs.efvcms.com/blog/practical-tool-source-sharing/install-adminmongo-mongodb-web-management-panel/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/practical-tool-source-sharing/install-adminmongo-mongodb-web-management-panel/</guid>
      <description>
        
        
        &lt;p&gt;由于&lt;code&gt;EFV&lt;/code&gt;使用的&lt;code&gt;MongoDB&lt;/code&gt;数据库，该数据库对于很多人来说貌似比较陌生，特别是对于一些命令，所以这里推荐一个可以管理&lt;code&gt;MongoDB&lt;/code&gt;的&lt;code&gt;Web&lt;/code&gt;管理可视化界面&lt;code&gt;adminMongo&lt;/code&gt;，可以让我们很简单的对&lt;code&gt;MongoDB&lt;/code&gt;转码数据库进行创建、编辑、修改、备份，而且还自带监控界面。&lt;/p&gt;
&lt;h2 id=&#34;安装adminmongo&#34;&gt;安装adminMongo&lt;/h2&gt;
&lt;p&gt;首先安装&lt;code&gt;Docker&lt;/code&gt;：&lt;a href=&#34;https://docs.efvcms.com/blog/linux-tutorial/linux-quick-install-docker/&#34;&gt;Linux快速安装Docker&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;然后在&lt;code&gt;SSH&lt;/code&gt;客户端使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#将以下命令一起复制粘贴，且第4行efvpasswd为面板访问密码，自行修改
docker run --restart=unless-stopped --name adminmongo -d \
--net=host \
-p 8001:8001 \
-e passwd=efvpasswd \
moerats/adminmongo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;访问地址为：&lt;code&gt;http://ip:8001&lt;/code&gt;，密码为&lt;code&gt;efvpasswd&lt;/code&gt;或者你自己设置的其它密码。&lt;/p&gt;
&lt;p&gt;如果装有宝塔面板，记得去宝塔左侧安全-放行防火墙端口&lt;code&gt;8001&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;没有安装宝塔面板，可以直接运行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#CentOS 7+、AlmaLinux、Rocky Linux系统
firewall-cmd --zone=public --add-port=8001/tcp --permanent
firewall-cmd --reload

#Debian、Ubuntu系统
ufw allow 8001
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;使用步骤&#34;&gt;使用步骤&lt;/h2&gt;
&lt;p&gt;先访问&lt;code&gt;http://ip:8001&lt;/code&gt;，然后添加本地&lt;code&gt;MongoDB&lt;/code&gt;数据库，名称随便填，地址填&lt;code&gt;mongodb://127.0.0.1:27017&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.efvcms.com/image/dbweb.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;添加完成后，再点&lt;code&gt;connect&lt;/code&gt;连接即可。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Mongodb开放外网访问及配置管理员</title>
      <link>https://docs.efvcms.com/blog/linux-tutorial/mongodb-open-external-access-and-configure-administrator/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.efvcms.com/blog/linux-tutorial/mongodb-open-external-access-and-configure-administrator/</guid>
      <description>
        
        
        &lt;p&gt;非必要情况下不要随便开放数据库的外网访问，不然请严格按照下面要求开放。&lt;/p&gt;
&lt;h2 id=&#34;设置mongodb管理员&#34;&gt;设置Mongodb管理员&lt;/h2&gt;
&lt;p&gt;首先使用&lt;code&gt;SSH&lt;/code&gt;客户端，比如&lt;code&gt;Xshell&lt;/code&gt;软件，登录服务器，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mongo
use admin
db.createUser({user:&amp;quot;adminuser&amp;quot;,pwd:&amp;quot;adminpasswd&amp;quot;,roles: [{ role: &amp;quot;root&amp;quot;, db: &amp;quot;admin&amp;quot; }]})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;adminuser&lt;/code&gt;和&lt;code&gt;adminpasswd&lt;/code&gt;分别是管理员账户和密码，使用命令前自行修改。&lt;/p&gt;
&lt;h2 id=&#34;配置外网和认证&#34;&gt;配置外网和认证&lt;/h2&gt;
&lt;p&gt;编辑数据库配置文件，脚本安装的默认为&lt;code&gt;/usr/local/mongodb/mongod.conf&lt;/code&gt;，需要编辑的配置如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;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
  compression:
    compressors: snappy,zstd
    
security:
  authorization: enabled
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里你可以通过&lt;code&gt;ftp&lt;/code&gt;客户端、宝塔文件管理，或者&lt;code&gt;vi/nano&lt;/code&gt;命令行修改该文件。&lt;/p&gt;
&lt;p&gt;这里也提供一个一键修改命令，在&lt;code&gt;SSH&lt;/code&gt;客户端运行，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#将下面全部一起复制，粘贴到ssh客户端运行即可
cat &amp;gt; /usr/local/mongodb/mongod.conf &amp;lt;&amp;lt;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
  compression:
    compressors: snappy,zstd
    
security:
  authorization: enabled
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后重启&lt;code&gt;mongodb&lt;/code&gt;生效，使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart mongod
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后再开放&lt;code&gt;27017&lt;/code&gt;端口即可。&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
