Linux教程
- Linux服务器挂载硬盘
- linux将目录及其子目录所有指定后缀文件移动到其他目录,并保持子目录文件路径不变
- Linux快速安装Docker
- Linux临时或永久设置DNS服务器
- Linux使用Brook转发端口一键脚本
- Minio服务端一键安装及使用
- Mongodb备份及还原数据库
- Mongodb开放外网访问及配置管理员
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
错误的时候,我们运行wget
和curl
命令行的时候,分别会输出如下错误信息:
#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+
,AlmaLinux
,Rocky 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
端口转发服务器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_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
,如果打不开,请检查下防火墙端口,并手动开启9000
和9001
端口。
创建存储桶
我们登录管理员面板,通过左侧的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
键退出编辑模式,接下来输入英文:wq
,enter
保存退出。
最后如果你不是很会命令行,依然不会修改,可以使用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" }]})
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
端口即可。