环境准备硬件要求云服务器（推荐腾讯云/阿里云/华为云等主流云服务商）EL9 客户端（Linux）Windows 客户端稳定的公网 IP端口规划协议端口用途TCP23010基础连接UDP23010基础连接QUIC23012QUIC 代理云服务器部署1. 安装 EasyTier# 下载并解压 wget https://github.com/EasyTier/EasyTier/releases/download/v2.6.0/easytier-linux-x86_64-v2.6.0.zip tar -xzf easytier-linux-x86_64-v2.6.0.zip mv easytier-linux-x86_64-v2.6.0/* /opt/easytier/ chmod +x /opt/easytier/easytier-core2. 创建配置文件vim /opt/easytier/server.tomlinstance_name = "cloud-relay" hostname = "cloud-relay" ipv4 = "10.66.88.1/24" listeners = [ "tcp://0.0.0.0:23010", "udp://0.0.0.0:23010", "quic://0.0.0.0:23012", ] [network_identity] network_name = "my_*****_net" # 自定义名称 network_secret = "8DDB3F0DBE6FA5714A35AB1F19777E9F" # 自定义密钥 [flags] enable-kcp-proxy = true enable-quic-proxy = true private_mode = true3. 创建 systemd 服务vim /etc/systemd/system/easytier-server.service[Unit] Description=EasyTier Server Node After=network-online.target [Service] Type=simple ExecStart=/opt/easytier/easytier-core -c /opt/easytier/server.toml Restart=always RestartSec=5 User=root [Install] WantedBy=multi-user.target4. 启动服务systemctl daemon-reload systemctl enable --now easytier-server systemctl status easytier-server5. 防火墙配置# 开放所需端口 firewall-cmd --zone=public --add-port=23010/tcp --permanent firewall-cmd --zone=public --add-port=23010/udp --permanent firewall-cmd --zone=public --add-port=23012/udp --permanent firewall-cmd --reloadEL9 客户端部署1. 安装 EasyTier# 下载并解压 wget https://github.com/EasyTier/EasyTier/releases/download/v2.6.0/easytier-linux-x86_64-v2.6.0.zip tar -xzf easytier-linux-x86_64-v2.6.0.zip mv easytier-linux-x86_64-v2.6.0/* /opt/easytier/ chmod +x /opt/easytier/easytier-core2. 创建配置文件vim /opt/easytier/client.tomlinstance_name = "el9-client" hostname = "el9-client" ipv4 = "10.66.88.20/24" listeners = [] [network_identity] network_name = "my_*****_net" # 自定义名称 network_secret = "8DDB3F0DBE6FA5714A35AB1F19777E9F" # 自定义密钥 peer uri = "tcp://106.**.***.***:23010" # 云服务器的公网IP peer uri = "udp://106.**.***.***:23010" peer uri = "quic://106.**.***.***:23012" [flags] enable-kcp-proxy = true enable-quic-proxy = true private_mode = true3. 创建 systemd 服务vim /etc/systemd/system/easytier-client.service[Unit] Description=EasyTier Client Node After=network-online.target [Service] Type=simple ExecStart=/opt/easytier/easytier-core -c /opt/easytier/client.toml Restart=always RestartSec=5 User=root [Install] WantedBy=multi-user.target4. 启动服务systemctl daemon-reload systemctl enable --now easytier-client systemctl status easytier-clientWindows 客户端部署（也可使用gui版本）1. 下载 EasyTier从 GitHub Releases 下载 Windows 版本解压到任意目录（例如 C:\easytier）2. 创建配置文件在 C:\easytier 目录下创建 client.toml：instance_name = "win-pc" hostname = "win-pc" ipv4 = "10.66.88.3/24" listeners = [] [network_identity] network_name = "my_*****_net" # 自定义名称 network_secret = "8DDB3F0DBE6FA5714A35AB1F19777E9F" # 自定义密钥 peer uri = "tcp://106.**.***.***:23010" # 云服务器的公网IP peer uri = "udp://106.**.***.***:23010" peer uri = "quic://106.**.***.***:23012" [flags] latency-first = true enable_kcp_proxy = true enable_quic_proxy = true private_mode = true3. 启动 EasyTier双击 easytier-core.exe或者创建快捷方式到启动菜单验证与故障排除1. 验证连接# 在 EL9 客户端 ./easytier-cli peer ./easytier-cli ping 10.66.88.1 # 云服务器 ./easytier-cli ping 10.66.88.3 # Windows 客户端 # 在 Windows 客户端 easytier-cli.exe peer easytier-cli.exe ping 10.66.88.1 # 云服务器 easytier-cli.exe ping 10.66.88.20 # EL9 客户端2. 常见问题连接超时（Timeout）检查云服务器防火墙是否开放相应端口检查云服务器配置文件中的监听端口是否正确检查客户端配置文件中的 peer 地址是否正确节点不可见确认网络名称和密码是否一致检查 private_mode 设置确认 network_identity 段配置正确延迟高开启 latency-first = true开启 enable-kcp-proxy = true 和 enable-quic-proxy = true确保客户端配置了多种连接方式（tcp/udp/quic）配置说明关键配置项配置项说明推荐值network_name网络名称自定义（保持一致）network_secret网络密码强密码hostname节点显示名称自定义ipv4虚拟 IP 段10.66.88.0/24listeners监听端口客户端留空，服务器配置所需端口peer对端节点云服务器地址latency-first延迟优先trueenable-kcp-proxyKCP 代理trueenable-quic-proxyQUIC 代理trueprivate_mode私有模式true端口说明23010: 基础 TCP/UDP 连接23011: KCP 代理（UDP）23012: QUIC 代理（UDP）安全建议1、使用强密码作为 network_secret2、开启 private_mode 防止未授权访问3、限制云服务器防火墙访问来源4、定期更新 EasyTier 版本参考文档EasyTier 官方文档GitHub 仓库注意: 本文档基于 EasyTier v2.6.0 编写，如使用其他版本，请参考对应版本的文档。
常用插件（可根据实际情况选择安装）openmediavault-flashmemory：加载临时文件到内存，保护硬盘；openmediavault-fail2ban ：扫描日志文件并禁止显示恶意迹象的IP-太多的密码错误，寻找漏洞等；openmediavault-cputemp：显示CPU温度；openmediavault-diskstats：监控收集硬盘的性能统计数据；openmediavault-filebrowser：简单文件浏览器；openmediavault-resetperms：重置共享文件夹权限；openmediavault-locate：全系统文件名搜索，类似everything；OpenMediaVault WebDAV plugin：webdav共享插件。openmediavault-backup：OMV系统备份；openmediavault-usbbackup：自动将共享文件夹同步到USB/eSATA/SD设备，插入设备时也可同步。设备在同步后进入睡眠模式，以发出信号，表示可以安全地移除；openmediavault-remotemount：装载远程共享；openmediavault-hosts：管理系统etc/hosts文件；openmediavault-compose：docker管理软件；openmediavault-kvm：虚拟机软件；openmediavault-md：RAID配置管理软件；*注：需要提前先安装好OMV-Extras。配置RAID*注：需要安装好openmediavault-md插件。先擦除要配置RAID的磁盘添加RAID
更换国内源直接在SSH命令行执行如下命令即可，无需修改配置文件：omv-env set OMV_APT_REPOSITORY_URL "https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/public" omv-env set OMV_APT_ALT_REPOSITORY_URL "https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/packages" omv-env set OMV_EXTRAS_APT_REPOSITORY_URL "https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/openmediavault-plugin-developers" omv-env set OMV_APT_KERNEL_BACKPORTS_REPOSITORY_URL "https://mirrors.tuna.tsinghua.edu.cn/debian" omv-env set OMV_APT_SECURITY_REPOSITORY_URL "https://mirrors.tuna.tsinghua.edu.cn/debian-security" omv-env set OMV_DOCKER_APT_REPOSITORY_URL "https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian" omv-env set OMV_PROXMOX_APT_REPOSITORY_URL "https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian" # 使得环境变量更改生效 omv-salt stage run all安装OMV-extras扩展插件库直接在SSH命令行执行如下命令即可：wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash如果网络不好可以选择手动安装：在https://github.com/OpenMediaVault-Plugin-Developers/packages手动下载“openmediavault-omvextrasorg_latest_all7.deb”文件，上传到系统root目录后，SSH登陆root用户执行“dpkg -i openmediavault-omvextrasorg_latest_all7.deb”完成安装。最后再更新一下，修正一些BUGapt update && apt dist-upgrade # 更新完成后，reboot重启一下
Linux 图片LOGO转字符画，可用于开机纯文本终端展示
1、toilet纯文本彩色展示# 安装 yum install -y toilet # 使用 toilet --gay Late Winter # 保存到文件中 toilet --gay Late Winter > logo.txt2、jp2a把图片jpg转换为字符画# 安装 yum install -y jp2a # 使用 jp2a --chars=" WMH" --size=200x16 --colors logo.jpg # 保存到文件中 jp2a --chars=" WMH" --size=200x16 --colors logo.jpg > logo.txt*附：图片转Linux Shell彩色文本：https://motd.bakaya.ro/
ProxmoxVE(PVE)：Check of pool pve/data failed (status:1). Manual repair required!
虚拟机开机提示：TASK ERROR: activating LV 'pve/data' failed: Check of pool pve/data failed (status:1). Manual repair required!查看LVM-Thin发现lv卷疑似损坏操作删除此lv卷失败，提示需要手动修复度娘得知可执行下条命令尝试修复：lvconvert --repair pve/data刷新Web界面，发现卷恢复正常，虚拟机启动正常，但是有模板克隆后虚拟机启动异常，疑似文件损坏，删除虚拟机删除模板，重新还原虚拟机模板
因官方已停止FreeBSD12版本的支持，pkg无法使用。找到了相关的源码包：https://github.com/aborche/qemu-guest-agentmake编译失败，好在github上有编译好的二进制包https://github.com/aborche/qemu-guest-agent/releases/安装qemu-guest-agent下载对应的txz包，解压文件tar -xJvf qemu-guest-agent-5.0.1_FreeBSD_12.2-STABLE.txz -C / # 检查解压的文件是否到了根目录下，如果解压到了当前目录下，需要手动移动到对应的系统目录中 echo 'qemu_guest_agent_enable="YES"' >> /etc/rc.conf echo 'qemu_guest_agent_flags="-d -v -l /var/log/qemu-ga.log"' >> /etc/rc.conf永久加载 virtio_console 驱动程序kldload virtio_console echo 'virtio_console_load="YES"' >> /boot/loader.conf启动qemu-guest-agentservice qemu-guest-agent start
要在aarch64（ARM）平台上安装Proxmox VE，你应该需要先装debian或armbian系统，PVE官方基于Debian系统，推荐安装Debian操作系统。服务器环境：鲲鹏920 5220（ARM）+三星SSD+Debian12一、安装操作系统，注意项1、安装操作系统最好使用一块容量不大的SSD磁盘 2、如果没有小容量SSD，那么在磁盘分区的时候，需要手动配置分区，并使用LVM卷的模式 3、在分区的时候，系统分区给100G左右即可（最好在fdisk的时候，系统说用的sda1、sda2、sda3等共占用100G，剩余空间在安装好操作系统后分给sda4用作虚拟机LVM-thin卷）二、 配置hostspve服务需要host文件正确，否则会出现无法启动的问题。最后的hosts如下。也可以复制下面的host，替换ip、fqdn和hostname即可。127.0.0.1 localhost.localdomain localhost 192.168.168.166 PVE166.pvetest.com PVE166 ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts三、 修改apt仓库源首先更换Debian系统的源：sed -i.bak "s#http://ftp.debian.org#https://repo.huaweicloud.com#g" /etc/apt/sources.list sed -i "s#http://security.debian.org#https://repo.huaweicloud.com/debian-security#g" /etc/apt/sources.list apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing && apt update添加PVE8的ARM源并添加apt-keyecho "deb https://hk.mirrors.apqa.cn/proxmox/debian/pve bookworm port" > /etc/apt/sources.list.d/pveport.list echo "deb https://mirrors.lierfang.com/proxmox/debian/pve bookworm port" >> /etc/apt/sources.list.d/pveport.list curl https://mirrors.apqa.cn/proxmox/debian/pveport.gpg -o /etc/apt/trusted.gpg.d/pveport.gpg 四、安装Proxmox VE 8先添加好系统PATHexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin接下来开始安装pve和pve所需软件，需要等待一段时间apt update && apt install -y chrony ksmtuned rsyslog ifupdown2 apt install -y proxmox-ve安装过程中可能出现如下弹窗，如图选择“No configuration”即可等上一段时间，安装结束之后，就可以访问pve界面（https://IP地址:8006）。五、安装好PVE后的配置1、网络需要创建vmbr0网桥，用来给虚拟机连接网络2、将第一步提到的剩余空间划分给PVE虚拟机使用（根据实际情况操作）#例：使用vg卷剩下的空间，创建lvm-thin格式lv卷：lvcreate --thin -l 100%FREE -n lv卷名 vg卷名 #vg卷名可以用vgdispaly查看 lvcreate --thin -l 100%FREE -n local-SSD PVE-KunPeng-vg六、虚拟机配置（不按规则配置可能无法启动虚拟机）下面为必须遵守的配置规则。CPU：host或者maxBIOS：OVMFOSYPE: l26机器：i440fx磁盘：SCSI磁盘控制器：Virtio-Scsi（非single）光驱：SCSI需要注意，虚拟机需要有EFI ACPI支持，才能启动。参考资料：1、https://foxi.buduanwang.vip/virtualization/pve/1902.html2、https://github.com/jiangcuo/Proxmox-Arm643、编译：https://foxi.buduanwang.vip/virtualization/pve/2000.html
因PVE8.0更换了Debian12作为内核，软件源管理方式也发生了变更，故原软件源配置方法已失效。默认是企业订阅版，如果不做修改，在使用 pveceph init 进行 ceph 初始化安装的时候会将整个环境破坏，切记！登陆各节点Shell控制台【重要】将/etc/apt/sources.list.d/pve-enterprise.list 文件删除：rm -rf /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/ceph.listProxmox软件源更换南大NJU源（选一个）：echo "deb https://mirrors.nju.edu.cn/proxmox/debian bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list apt update && apt dist-upgrade #更新软件，可不执行中科大源（选一个）：echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list apt update && apt dist-upgrade #更新软件，可不执行其他可选源：# 清华Tuna源 echo "deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.listDebian系统源更换阿里Debian源（选一个）：sed -i.bak "s#ftp.debian.org/debian#mirrors.aliyun.com/debian#g" /etc/apt/sources.list #阿里Debian源 sed -i "s#security.debian.org#mirrors.aliyun.com/debian-security#g" /etc/apt/sources.list #阿里Debian源 apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing华为Debian源（选一个）：sed -i.bak "s#http://ftp.debian.org#https://repo.huaweicloud.com#g" /etc/apt/sources.list #华为Debian源 sed -i "s#http://security.debian.org#https://repo.huaweicloud.com/debian-security#g" /etc/apt/sources.list #华为Debian源 apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing163-Debian源（选一个）：sed -i.bak "s#ftp.debian.org/debian#mirrors.163.com/debian#g" /etc/apt/sources.list #163Debian源 sed -i "s#security.debian.org#mirrors.163.com/debian-security#g" /etc/apt/sources.list #163Debian源 apt update && apt-get install -y apt-transport-https ca-certificates --fix-missingLXC仓库源更换南大NJU源（选一个）：sed -i.bak "s#http://download.proxmox.com/images#https://mirrors.nju.edu.cn/proxmox/images#g" /usr/share/perl5/PVE/APLInfo.pm wget -O /var/lib/pve-manager/apl-info/mirrors.nju.edu.cn https://mirrors.nju.edu.cn/proxmox/images/aplinfo-pve-7.dat systemctl restart pvedaemon中科大源（选一个）：sed -i.bak "s#http://download.proxmox.com/images#https://mirrors.ustc.edu.cn/proxmox/images#g" /usr/share/perl5/PVE/APLInfo.pm wget -O /var/lib/pve-manager/apl-info/mirrors.ustc.edu.cn https://mirrors.ustc.edu.cn/proxmox/images/aplinfo-pve-7.dat systemctl restart pvedaemonCEPH源更换echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list #中科大源 sed -i.bak "s#http://download.proxmox.com#https://mirrors.ustc.edu.cn/proxmox#g" /usr/share/perl5/PVE/CLI/pveceph.pm #中科大源设置Web控制台默认语言为中文echo 'language: zh_CN' >> /etc/pve/datacenter.cfg删除订阅弹窗echo "0 1 * * * sed -Ezi \"s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g\" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js" | crontab - sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service # 执行完成后，浏览器Ctrl+F5强制刷新缓存一键配置脚本vim PVE8_Setting.sh#/bin/bash #更换软件源 rm -rf /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/ceph.list echo "deb https://mirrors.nju.edu.cn/proxmox/debian bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list sed -i.bak "s#http://ftp.debian.org#https://repo.huaweicloud.com#g" /etc/apt/sources.list #华为Debian源 sed -i "s#http://security.debian.org#https://repo.huaweicloud.com/debian-security#g" /etc/apt/sources.list #华为Debian源 apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing #更换LXC源 sed -i.bak "s#http://download.proxmox.com/images#https://mirrors.nju.edu.cn/proxmox/images#g" /usr/share/perl5/PVE/APLInfo.pm wget -O /var/lib/pve-manager/apl-info/mirrors.nju.edu.cn https://mirrors.nju.edu.cn/proxmox/images/aplinfo-pve-7.dat #删除订阅弹窗 sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js echo "0 1 * * * sed -Ezi \"s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g\" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js" | crontab - #设置Web控制台默认语言为中文 echo 'language: zh_CN' >>/etc/pve/datacenter.cfg #下载并导入虚拟机模板 #wget -P /var/lib/vz/dump/ http://192.168.169.2/vzdump-qemu/vzdump-qemu-openEuler2403-x86_64.vma.zst #qmrestore /var/lib/vz/dump/vzdump-qemu-openEuler2403-x86_64.vma.zst 100 # 重启相关服务 systemctl restart pvedaemon & systemctl restart pveproxy.service
本文介绍常用的 openEuler UKUI 桌面环境的安装和使用方法，它提供美观易用、安全可靠的图形化操作界面，给用户带来更好的体验。UKUI简介UKUI是麒麟软件团队历经多年打造的一款 Linux 桌面，主要基于 GTK 和 QT 开发。与其它 UI 界面相比，UKUI 更加注重易用性和敏捷度，各元件相依性小，可以不依赖其它套件而独自运行，给用户带来亲切和高效的使用体验。UKUI支持x86_64和aarch64两种架构。前提：下载openEuler ISO镜像并已安装系统。安装字体文件dnf groupinstall -y fonts安装UKUIdnf install -y ukui配置允许root登陆echo "greeter-show-manual-login=true" >> /usr/share/lightdm/lightdm.conf.d/95-ukui-greeter.conf echo "all-guest=false" >> /usr/share/lightdm/lightdm.conf.d/95-ukui-greeter.conf设置图形界面启动在确认正常安装后，如果希望以图形界面的方式启动，请在命令行运行以下代码systemctl set-default graphical.target重启生效
Linux新增硬盘使用LVM卷的方式挂载到home目录下
1、找到新加入到系统的硬盘fdisk -l 显示信息：磁盘 /dev/vdb：214.7 GB, 214748364800 字节，419430400 个扇区……2、创建分区# 先调整磁盘为GPT分区表 parted /dev/sdb mklabel gpt # 新增磁盘分区 fdisk /dev/vdb分别键入以下参数：p 查看已分区数量n 新增加一个分区 回车 默认选择（分区号）回车 默认选择（起始扇区） 回车 默认选择（结束扇区） t 修改分区类型 选分区1 lvm 修改为LVMw 写分区表，完成后退出fdisk命令使用partprobe重读分区表，或者reboot重启机器。partprobe格式化/dev/vdb1分区mkfs.ext4 /dev/vdb13、创建lv卷，并格式化为ext4格式pvcreate /dev/vdb1 #创建PV卷 vgcreate data /dev/vdb1 #创建VG卷 lvcreate -l 100%FREE -n home data #创建LV卷 mkfs.ext4 /dev/data/home #格式化根目录分区4、开机挂载新创建的lv卷到home目录mount /dev/data/home /home vim /etc/fstab # 在最下面追加一行 /dev/mapper/data-home /home ext4 defaults 1 1
因特殊原因，不允许使用SFTP、FTP和SCP等协议，故选用RSYNC来传输大文件到云端服务器。1、安装软件yum install -y rsync2、在接收端（服务端）配置好rsync服务vim /etc/rsyncd.conflist = true # 允许列出共享内容 uid = nobody gid = nobody max connections = 256 # 最大连接数 use chroot = true # 将rsync进程限制在指定的根目录中 secrets file = /etc/rsyncd.secrets # 包含用户凭据的密码文件路径 hosts allow = 192.168.1.0/24 10.0.0.2 # 允许访问的 IP 地址列表，以空格分隔 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock [data] path = /data/ auth users = rsync # 允许访问共享的用户，以空格分隔 read only = false # 允许用户上传文件 3、在接收端（服务端）创建rsync用户并启动服务echo "rsync:password" > /etc/rsyncd.secrets chmod 600 /etc/rsyncd.secrets systemctl start rsyncd # 启动服务，需防火墙开放TCP 873端口4、在发送端（客户端）传输文件【示例】export RSYNC_PASSWORD=password rsync -avzP localfile.txt rsync@接收端IP:/data/ # -a: 归档模式，用于保留文件属性，包括权限、所有者和时间戳等。 # -v: 显示详细输出，显示传输过程中的详细信息。 # -z: 启用压缩，减少网络传输的数据量。 # -P: 等同于 --partial --progress，允许在传输中断后继续，同时显示传输进度。 # localfile.txt: 本地文件的路径和名称，这是要传输的文件。 # rsync@接收端IP: 远程服务器的用户名和 IP 地址，用于 SSH 连接。 # :/data/: 远程服务器上的目标路径，文件将传输到这个目录。
导出OVA文件体积优化yum install -y pv dd if=/dev/zero | pv | dd of=zero.file ; rm -rf zero.file #dd if=/dev/zero of=zero.file ; rm -rf zero.file磁盘VMDK文件体积收缩# 需成功安装了vmware tools之后，才能在虚拟机中执行磁盘清理命令 # 对 / 分区所在的虚拟磁盘进行清理 vmware-toolbox-cmd disk wipe / # 对 / 分区所在虚拟磁盘进行压缩 vmware-toolbox-cmd disk shrink / # 对 /home 分区所在的虚拟磁盘进行清理 vmware-toolbox-cmd disk wipe /home # 对 /home 分区所在虚拟磁盘进行压缩 vmware-toolbox-cmd disk shrink //home最后：
local-lvm显示unknown：PVE重启后虚拟机无法启动，启动虚拟机时激活LV失败报错：修复方法：原因：据官方的的回复，此问题是PVE7 更新内核后，激活过程中的Thin_Check花费的时间太长导致pvcan崩溃引起的。在/etc/lvm/lvm.conf配置文件追加参数后，重启服务器# 打开配置 apt install -y vim ; vim /etc/lvm/lvm.conf可以看到在1120行处是thin_check_options的配置，追加下面代码thin_check_options = [ "-q", "--skip-mappings" ]运行命令更新启动参数，然后重启系统update-initramfs -u这实际是跳过了映射检查，目前还没反馈有负面影响，希望官方尽快能修复参考资料：https://www.mayanpeng.cn/archives/206.html
1、复制配置文件cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sftpd.service cp /etc/ssh/sshd_config /etc/ssh/sftpd_config2、修改sftpd.service配置文件vim /usr/lib/systemd/system/sftpd.service [Unit] Description=Sftpd server daemon [Service] ExecStart=/usr/sbin/sshd -f /etc/ssh/sftpd_config3、修改/etc/ssh/sftpd_config配置文件vim /etc/ssh/sftpd_config Port 12345 # 端口可自定义 #Subsystem sftp /usr/libexec/openssh/sftp-server # 注释掉 Subsystem sftp internal-sftp Match User sftpuser ##限制用户 ChrootDirectory /sftpdir ##限制sftp目录 X11Forwarding no ##与sftp无关，所以关闭 AllowTcpForwarding no ##与sftp无关，所以关闭 PermitTTY no ##不允许登入TTY ForceCommand internal-sftp备注： Sftp目录权限设置要遵循2点： ChrootDirectory设置的目录权限及其所有的上级文件夹权限，属主必须是root； ChrootDirectory设置的目录权限及其所有的上级文件夹权限，只有属主能拥有写权限，权限最大设置只能是755。4、增加sftp用户并创建目录和赋权useradd sftpuser passwd sftpuser usermod -s /bin/false sftpuser # 使用/bin/false，限制该用户通过shell登入OS mkdir /sftpuser/upload chown root.sftpuser /sftpuser chown sftpuser.sftpuser /sftpuser/upload chmod -R 755 /sftpuser # /sftpuser/upload 为最终文件上传下载目录。注意，因为使用ChrootDirectory，所以sftp的时候不能使用绝对路径/sftpuser/upload/xxx5、启动服务systemctl daemon-reload systemctl start sftpd参考资料：https://www.cnblogs.com/caoyibin/p/15205287.htmlhttps://codeleading.com/article/59295569585/
VMware虚拟机迁移到KVM之后无法启动（Virtio磁盘控制器驱动）
转换磁盘镜像格式之后导入KVM系统无法启动，但是可以进入恢复模式，可能是Virtio的内核模块没有加载，把磁盘改为IDE模式后正常。但是IDE模式效率没有Virtio高，这时可以手动加载Virtio模块，方法参考腾讯云帮助文档：https://cloud.tencent.com/document/product/213/9929操作步骤步骤1：检查内核是否支持 Virtio 驱动执行以下命令，确认当前内核是否支持 Virtio 驱动。grep -i virtio /boot/config-$(uname -r)返回类似如下结果：如果返回结果中CONFIG_VIRTIO_BLK 参数和CONFIG_VIRTIO_NET 参数取值为 m，请执行【步骤2】。如果在返回结果中CONFIG_VIRTIO_BLK 参数和CONFIG_VIRTIO_NET 参数取值为 y，表示该操作系统包含了 Virtio 驱动并编译到内核中了，编译到内核中的理论上不应该启动不了，所以可能是其他问题，请略过此文。如果在返回结果中没有CONFIG_VIRTIO_BLK 参数和CONFIG_VIRTIO_NET 参数的信息，表示该操作系统不支持导入KVM，不包含Virtio 驱动。步骤2：检查临时文件系统是否包含 Virtio 驱动如果【步骤1】的执行结果参数取值为 m，则需要进一步检查，确认临时文件系统 initramfs 或者 initrd 是否包含 virtio 驱动。请根据操作系统的不同，执行相应命令：CentOS 6/CentOS 7/CentOS 8/RedHat 6/RedHat 7 操作系统：lsinitrd /boot/initramfs-$(uname -r).img | grep virtio返回类似如下结果：可得知，initramfs 已经包含了 virtio_blk 驱动，以及其所依赖的 virtio.ko、virtio_pci.ko 和 virtio_ring.ko。如果 initramfs 或者 initrd 没有包含 virtio 驱动，请执行【步骤3】。步骤3：重新配置临时文件系统如果【步骤2】的执行结果显示临时文件系统 initramfs 或者 initrd 没有包含 virtio 驱动，则需要重新配置临时文件系统 initramfs 或者 initrd，使其包含 virtio 驱动。请根据操作系统的不同，选择相应操作：CentOS 8/RedHat 8 操作系统：cp /boot/initramfs-$(uname -r).img[,.bak] #备份原有的initramfs mkinitrd -f --allow-missing --with=virtio_blk --preload=virtio_blk --with=virtio_net --preload=virtio_net --with=virtio_console --preload=virtio_console /boot/initramfs-$(uname -r).img $(uname -r) #制作新的initramfsCentOS 6/CentOS 7/RedHat 6/RedHat 7 操作系统：cp /boot/initramfs-$(uname -r).img[,.bak] #备份原有的initramfs mkinitrd -f --allow-missing --with=xen-blkfront --preload=xen-blkfront --with=virtio_blk --preload=virtio_blk --with=virtio_pci --preload=virtio_pci --with=virtio_console --preload=virtio_console /boot/initramfs-$(uname -r).img $(uname -r) #制作新的initramfs完成之后使用【步骤2】的lsinitrd命令再次查询，可得知initramfs 已经包含了 virtio_blk 驱动关闭虚拟机，调整磁盘模式为virtio，问题解决
CentOS7 系统备份还原及迁移【MBR引导迁移EFI引导并使用LVM卷】
因为原来是1T的机械硬盘，实际占用空间不多。所以打算换成容量小的固态硬盘，或者镜像虚拟化云化改造，虚拟磁盘小。同时为了方便后续扩容，所以将原来直接挂载分区的方式变更为使用LVM卷。原始环境：1T MBR硬盘、CentOS7.7.1908、直接挂载sda3到根目录、sda3为xfs格式分区。一、准备工作准备好相同版本的CentOS安装光盘安装好相关的备份还原支持工具yum install -y xfsdump dump uname -r # 记住系统内核版本号，后续可能会用到二、备份/dev/sda3根目录分区xfsdump -L CentOS7.7 -M rootfs -f /root/CentOS7-rootfs.dump /dev/sda3 # -L：对文件系统进行简易的说明；-M：对存储媒介进行简易的说明。 # 如果是ext4格式分区，可用：dump -0f /root/CentOS7-rootfs.dump /备份完成后，将备份好的CentOS7-rootfs.dump文件取出来到其他地方三、卸载原磁盘，装载新磁盘，并从CentOS安装盘启动配置好UEFI引导，并使用EFI启动系统安装，正常安装相同版本的CentOS系统在磁盘分区中创建LVM卷，并调整好所需的分区，需注意分区格式保存原磁盘的格式可选继续安装完成，安装完成后，某些配置可能会被还原初始状态（如firewalld规则，一些服务启停状态）后续步骤参考步骤四或者安装开始后，直接关机（利用安装光盘才创建分区表），后续步骤参考步骤五四、进入新安装好的CentOS系统，还原镜像到新磁盘（完成了系统安装）先把之前备份的CentOS7-rootfs.dump文件传回到需要还原的机器中xfsrestore -f /root/CentOS7-rootfs.dump / # 如果是ext4格式分区，可用：restore -rf /root/CentOS7-rootfs.dump修改/etc/fstab中的磁盘UUID号blkid # 获取磁盘的UUID vi /etc/fstab # 修改/etc/fstab中的UUID号完成后，即可重启生效，完成迁移五、从CentOS安装盘启动，进入救援模式（未完成了系统安装）根据原盘分区格式，格式化分区mkfs.vfat /dev/sda1 # 格式化efi引导分区 mkfs.xfs /dev/sda2 # 格式化boot分区 mkfs.xfs /dev/centos/root # 格式化根目录分区 mkswap /dev/centos/swap # 格式化swap交换分区将镜像文件存到一个中转磁盘dev/vda内并挂载，还原镜像到新磁盘mkdir /centos-root /sda1 /sda2 /dump-data mount /dev/vda /dump-data mount /dev/sda1 /sda1 mount /dev/sda2 /sda2 mount /dev/centos/root /centos-root xfsrestore -f /dump-data/centos-root.dump /centos-root # 使用xfsrestore还原根目录镜像到新磁盘修改fstab文件磁盘标识UUIDblkid # 获取磁盘的UUID vi /centos-root/etc/fstab # 对应修改然后保存安装kernel内核（如果不是同版本的安装盘，同到互联网下载原版本的kernel内核rpm安装包存到中转磁盘）rpm -ivh /run/install/repo/Packages/kernel-3.10.0-1160.el7.x86_64.rpm --root=/centos-root/ --force # rpm -ivh /dump-data/kernel-3.10.0-1160.el7.x86_64.rpm --root=/centos-root/ --force六、修复系统引导#CD下的救援模式SHELL更新方法： chroot /centos-root grub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg #BIOS引导 grub2-mkconfig -o /boot/EFI/grub2/grub.cfg #UEFI引导 grub2-mkconfig -o /sda2/boot/grub/grub.cfg #BIOS引导 grub2-mkconfig -o /sda1/EFI/centos/grub.cfg #UEFI引导 #进入系统后的SHELL更新方法： grub2-mkconfig -o /boot/grub/grub.cfg #BIOS引导 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg #UEFI引导七、扫尾工作，处理网卡UUID问题移除中转磁盘，调整系统引导方式。开机后发现网卡UUID有变更，对应修改即可。nmcli c s # 查看网卡的信息 sed -i -e '/HWADDR/d' -e '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-{eth,enp,eno}* # 删除原UUID nmcli c m eth0 c.autoconnect yes # 让nmcli补全UUID systemctl restart network
1) 用租来帐号在Windows的百度客户端登录*推荐使用SVIP账号2) 用百度Cookie工具抓出相关参数工具： （https://cloud.189.cn/t/qiyYbiJvyMz2访问码：qq7o）https://www.itca.cc/usr/uploads/2023/03/671334169.7z打开“PDL接口生成器v2.9.9.9”，再打开“cookie获取工具”单击 设置 图标，打开 设置→传输，点击“其他设置”将 代理设置 改为使用IE代理，最后单击 确定单击 百度网盘客户端 的刷新按钮就获取Cookie了。3) 替换lua中devuid、time、rand、BDUSS等这些参数选择好上方的lua文件，解压后编辑根据上步骤获取到的Cookie信息，修改方框内内容即可
1、关机或重启2、在弹出这个界面时，按上下键防止页面跳转，选择"CentOS Linux (3.10.0-1160. e17. x86 64) 7 (Core)"并按eopenEuler系统进入GRUB2默认口令为：openEuler#123、修改启动引导CentOS：找到ro crashkernel=auto xxx，把ro换成rw init=/sysroot/bin/shopenEuler：找到ro，把ro换成rw，然后在这段的最后加上init=/bin/sh4、使用组合键Ctrl+X进入单用户模式，然后输入如下命令重置密码chroot /sysroot # 访问系统（openEuler系统跳过） passwd root # 输入新的root用户密码 touch /.autorelabel # 创建标签文件 exit # 返回刚刚的单用户模式（openEuler系统跳过） reboot # 重启系统（openEuler：/usr/sbin/reboot -f）5、重启后，输入刚才重新更改的用户密码就能登录系统了
服务端：1、下载对应版本的安装包（frp_0.44.0_linux_amd64.tar.gz为例）https://github.com/fatedier/frp/releases/2、上传并解压安装包tar -xzvf frp_0.44.0_linux_amd64.tar.gz -C /usr/local/frps3、编辑服务端frps.ini配置文件vim /usr/local/frps/frps.ini[common] # 用于客户端和服务端连接的端口 bind_port = 7000 # 用于客户端和服务端连接的口令 token = e8fxAAGBIS7KbhT0Z6iaeTEjTq6kxasb # 服务端仪表板的端口 dashboard_port = 7500 # 打开仪表板页面登录的用户名和密码 dashboard_user = root dashboard_pwd = admin4、配置systemctl来控制frpsvim /etc/systemd/system/frps.service[Unit] # 服务名称，可自定义 Description = frps service After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令，需修改为您的frps的安装路径 ExecStart = /usr/local/frps/frps -c /usr/local/frps/frps.ini [Install] WantedBy = multi-user.target5、启动frps# 启动frps systemctl start frps # 开机自动启动frps systemctl enable frps # 重启frps systemctl restart frps # 停止frps systemctl stop frps # 查看frps状态 systemctl status frps客户端：1、下载对应版本的安装包（frp_0.44.0_linux_amd64.tar.gz为例）https://github.com/fatedier/frp/releases/根据客户端设备的情况选择相应的frp程序进行下载，Windows下下载和解压等步骤不再描述。假定你下载了“frp_0.44.0_windows_amd64.zip”，将其解压在了C盘根目录下，并且将文件夹重命名为“frp”，可以删除其中的frps和frps.ini、frps_full.ini文件。2、上传并解压安装包tar -xzvf frp_0.44.0_linux_amd64.tar.gz -C /usr/local/frpc3、编辑客户端frpc.ini配置文件vim /usr/local/frpc/frpc.ini[common] server_addr = 服务器公网ip地址 server_port = 7000 token = e8fxAAGBIS7KbhT0Z6iaeTEjTq6kxasb [web] type = http local_port = 8080 custom_domains = 域名 [rdp] # 远程桌面 type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 7001 [smb] # 远程文件访问 type = tcp local_ip = 127.0.0.1 local_port = 445 remote_port = 70024、配置systemctl来控制frpcvim /etc/systemd/system/frpc.service[Unit] # 服务名称，可自定义 Description = frpc service After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令，需修改为您的frps的安装路径 ExecStart = /usr/local/frpc/frpc -c /usr/local/frpc/frpc.ini [Install] WantedBy = multi-user.target5、启动frpc# 启动frps systemctl start frpc # 开机自动启动frps systemctl enable frpc # 重启frps systemctl restart frpc # 停止frps systemctl stop frpc # 查看frps状态 systemctl status frpc
NuitkaNuitka是一个Python编译器，可以将Python应用程序编译成C或C++的可执行文件。它可以生成高性能的可执行文件，并且支持跨平台。生成的可执行文件体积较小。1、安装打包环境yum -y install gcc # 需安装GCC编译器 pip3 install nuitka -i https://mirrors.aliyun.com/pypi/simple/2、打包py脚本首先在打包之前检查一下我们的py文件是否可以正常执行，确认无误后进行打包nuitka3 --remove-output xxxxxxxxxxx.py # 使用系统Pyhon解释器 nuitka3 --standalone --onefile --remove-output xxxxxxxxxxx.py # 独立模式 # 执行完成后，将在当前目录生成一个bin可执行文件3、Nuitka常用编译参数--standalone：启用独立模式输出，创建独立的可执行文件，包含所有依赖库和Pyhon解释器。 --onefile：在独立模式的基础上，启用 onefile 模式。创建一个压缩的可执行文件，默认关闭。 --full-compat：使用官方的python-embed环境，增强兼容性，Windows环境可替代--standalone参数。 --recurse-all：编译所有找到的模块，包括间接导入的模块。 --plugin-enable=upx：启用upx压缩。PyInstallerPyInstaller是一个常用的Python打包工具，可以将Python应用程序打包成独立的可执行文件。它支持跨平台，并能够自动处理依赖关系，包括Python解释器、第三方库等。1、安装打包环境#Python2： pip install pyinstaller -i https://mirrors.aliyun.com/pypi/simple/ #Python3： pip3 install pyinstaller -i https://mirrors.aliyun.com/pypi/simple/2、打包py脚本首先在打包之前检查一下我们的py文件是否可以正常执行，确认无误后进行打包pyinstaller -F xxxxxxxxxxx.py3、可执行文件存放路径可在上图倒数第三句处查看一般为当前目录的dist目录下4、压缩可执行文件体积的打包方法（Python3.7.9以上）# 安装虚拟打包环境 pip3 install pipenv -i https://mirrors.aliyun.com/pypi/simple/ # 进入虚拟环境 pipenv shell # 安装打包工具和py脚本所需依赖插件 pipenv install pyinstaller -i https://mirrors.aliyun.com/pypi/simple/ pipenv install dpkt -i https://mirrors.aliyun.com/pypi/simple/ #举例，按实际情况执行 # 打包 pyinstaller -F xxxxxxxxxxx.py # 在CentOS系统上还可以使用upx压缩 yum install -y upx
Bond简介生产环境必须提供 7×24 小时的网络传输服务。借助于网卡绑定技术，不仅可以提高网络传输速度，更重要的是，还可以确保在其中一块网卡出现故障时，依然可以正常提供网络服务。假设我们对两块网卡实施了绑定技术，这样在正常工作中它们会共同传输数据，使得网络传输的速度变得更快；而且即使有一块网卡突然出现了故障，另外一块网卡便会立即自动顶替上去，保证数据传输不会中断。Bond内核网卡绑定驱动模式常用：mode0（平衡负载模式）：平时两块网卡均工作，且自动备援，但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。mode1（自动备援模式）：平时只有一块网卡工作，在它故障后自动替换为另外的网卡。mode6（平衡负载模式）：平时两块网卡均工作，且自动备援，无须交换机设备提供辅助支持。1. mode=0 round-robin 2. mode=1 active-backup 3. mode=2 load balancing (xor) 4. mode=3 fault-tolerance (broadcast) 5. mode=4 lacp 6. mode=5 transmit load balancing 7. mode=6 adaptive load balancing 分别对应以下七种策略： (1)轮询策略(Round-robin policy)，模式代号是0。该策略是按照设备顺序依次传输数据包，直到最后一个设备。这种模式提供负载均衡和容错能力。 (2)活动备份策略(Active-backup policy)，模式代号是1。该策略只有一个设备处理数据，当它宕机的时候就会由备份代替，仅提供容错能力。 (3)异或策略(XOR policy)，模式代号是2。该策略是根据MAC地址异或运算的结果来选择传输设备，提供负载均衡和容错能力。 (4)广播策略(Broadcast policy)，模式代号是3。该策略通过全部设备来传输所有数据，提供容错能力。 (5)IEEE 802.3ad 动态链接聚合(IEEE 802.3ad Dynamic link aggregation)，模式代号是4。该策略通过创建聚合组来共享相同的传输速度，需要交换机也支持 802.3ad 模式，提供容错能力。该模式下，网卡带宽最高可以翻倍（如从1Gbps翻到2Gbps）。 (6)适配器传输负载均衡(Adaptive transmit load balancing)，模式代号是5。该策略是根据当前的负载把发出的数据分给每一个设备，由当前使用的设备处理收到的数据，如果当前正用于接收数据的网卡发生故障，则由其它网卡接管，要求所用的网卡及网卡驱动可通过ethtool命令得到speed信息。本策略的通道联合不需要专用的交换机支持，提供负载均衡和容错能力。 (7)适配器负载均衡(Adaptive load balancing)，模式代号是6。该策略在IPV4情况下包含适配器传输负载均衡策略，由ARP协商完成接收的负载，通道联合驱动程序截获ARP在本地系统发送出的请求，用其中一个设备的硬件地址覆盖从属设备的原地址。即在策略6的基础之上，在接收数据的同时实现负载均衡，除要求ethtool命令可得到speed信息外，还要求支持对网卡MAC地址的动态修改功能。 注意： Mode参数中的0、2、3、4模式要求交换机支持“ports group”功能并能进行相应的设置，例如在cisco中要将所连接的端口设为“port-channel”。 如果系统流量不超过单个网卡的带宽，请不要选择使用mode1之外的模式，因为负载均衡需要对流量进行计算，这对系统性能会有所损耗。 如果交换机及网卡都确认支持802.3ab，则实现负载均衡时尽量使用模式4以提高系统性能。 由于我们项目上的交换机型号不可控，且可能会更换，所以我们项目中设备绑定一般都使用mode5。配置bond（单IP双网卡）1、配置两块网卡配置信息[root@CentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes DEVICE=ens33 MASTER=bond0 SLAVE=yes [root@CentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes DEVICE=ens37 MASTER=bond0 SLAVE=yes2、配置bond网卡信息[root@CentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes DEVICE=bond0 IPV6INIT=no # 关闭IPv6 PEERDNS=yes # 运行网卡在启动时向DHCP服务器查询DNS信息，并自动覆盖/etc/resolv.conf配置文件 IPADDR=192.168.1.210 NETMASK=255.255.255.0 GATEWAY=192.168.1.2 DNS1=114.114.114.114 DNS2=223.5.5.53、配置内核网卡驱动模式[root@CentOS ~]# vim /etc/modprobe.d/bond.conf alias bond0 bonding options bonding mode=6 miimon=200 # miimon参数：指定网卡故障时切换时间间隔时间，以ms为单位 # mode参数：bonding模式4、重启网络[root@CentOS ~]# systemctl restart network配置bond（双IP双网卡，不同VLAN）1、配置两块网卡配置信息[root@CentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=no DEFROUTE=yes NAME=ens33 DEVICE=ens33 ONBOOT=yes MASTER=bond0 SLAVE=yes [root@CentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=no DEFROUTE=yes NAME=ens37 DEVICE=ens37 ONBOOT=yes MASTER=bond0 SLAVE=yes2、配置bond网卡信息[root@CentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BOOTPROTO=none IPV6INIT=no NM_CONTROLLED=no ONBOOT=yes TYPE=Ethernet BONDING_OPTS="mode=4 miimon=100" # 绑定模式选择3、配置bond子网卡信息[root@CentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0.30 DEVICE=bond0.30 BOOTPROTO=none NM_CONTROLLED=no ONBOOT=yes IPADDR=10.0.0.102 NETMASK=255.255.255.0 GATEWAY=10.0.0.1 VLAN=yes DNS1=223.5.5.5 DNS2=114.114.114.114 [root@CentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0.51 DEVICE=bond0.51 BOOTPROTO=none NM_CONTROLLED=no ONBOOT=yes IPADDR=157.0.0.202 NETMASK=255.255.255.0 GATEWAY=157.0.0.1 VLAN=yes DNS1=223.5.5.5 DNS2=114.114.114.1144、重启网络[root@CentOS ~]# systemctl restart network
首先安装autojs：autojs_旧版_开源_无需登录.apk1、打开APP，开启悬浮窗2、打开想要获取控件ID的APP，点开autojs的悬浮窗，选择布局分析3、选择“布局范围分析”4、点击想要获取ID的控件即可
前言：pigz和zstd这两个都不支持直接压缩文件夹，如有支持多线程同时支持压缩文件夹的压缩软件（XZ除外），麻烦评论区留言，谢谢。pigz简介pigz是GZip的并行版(pigz，即 Parallel Implementation of GZip)，作者为Mark Adler。它充分利用了现代多核处理器的性能，大幅提高压缩解压的速度。pigz安装#Ubuntu： apt install -y pigz #CentOS： yum -y install pigzpigz实例1、压缩单个文件pigz -k your_file_name # 加上-k选项保留原始文件，会在当前工作目录获得压缩后的your_file_name.gz 文件2、解压单个文件unpigz -d your_file_name.gz # 同样，如果需要保留.gz文件，记得加上-k选项3、压缩文件夹tar -cvf - dir1 dir2 dir3 | pigz > output.tar.gz # pigz没有压缩文件夹的选项，只能压缩单个文件。若想压缩文件夹，可以结合tar使用4、解压文件夹pigz -d output.tar.gz # 这样得到的是output.tar，再通过tar解打包就好了 tar -xzvf output.tar.gz # 也可以直接用tar命令解压pigz常用参数-0 ~ -9 压缩等级，数字越大压缩率越高，速度越慢，默认为6 -k --keep 压缩后不删除原始文件 -l --list 列出压缩输入的内容 -K --zip Compress to PKWare zip (.zip) single entry format -d --decompress 解压缩输入 -p --processes n 使用n核处理，默认为使用所有CPU核心ZSTD简介Zstandard 简称Zstd，是一种快速的无损压缩算法，以 zlib 级为目标的实时压缩场景和更好的压缩比。它可以将压缩速度交换为更高的压缩比率，同时支持非常快的解码器。Zstd压缩包为 .zst 格式。Zstd安装# Ubuntu apt install -y zstd # CentOS yum install -y zstd # 编译安装 git clone https://github.com/facebook/zstd.git cd zstd; make; sudo make installZstd实例1、压缩单个文件zstd -T0 your_file_name # 加上-T0选项使用所有CPU核心，会在当前工作目录获得压缩后的your_file_name.zst 文件2、解压单个文件zstd -T0 -d your_file_name.zst3、压缩文件夹tar -cvf - dir1 dir2 dir3 | zstd -T0 > output.tar.zst # zstd没有压缩文件夹的选项，只能压缩单个文件。若想压缩文件夹，可以结合tar使用4、解压文件夹zstd -T0 -d output.tar.zst # 这样得到的是output.tar，再通过tar解打包就好了Zstd常用参数 -# : 压缩级别(1-19，默认值为3) -d : 解压 -o file: 结果存储在文件中 -f : 在没有提示的情况下覆盖输出并(解压)压缩链接 --rm : 成功解压缩后删除源文件 -h/-H : 显示帮助/长帮助并退出 -v : 详细模式 -q : 静默输出 -l : 输出zstd压缩包中的信息 --ultra : 启用超过19级，最多22级(需要更多内存) -T# : 使用几个线程进行压缩(默认值:1个，0位自动使用所有CPU核心) --format=gzip : 将文件压缩为.gz格式p7zip简介p7Zip是一款用于Linux平台的高压缩比的存档格式 7z 的管理器。通常使用 7-Zip 的 7z 格式能比使用 zip 格式的压缩文件小30-70%。7z 是一种主流高效的压缩格式，它拥有极高的压缩比。在计算机科学中，7z是一种可以使用多种压缩算法进行数据压缩的档案格式。p7zip安装#Ubuntu： apt install -y p7zip #CentOS： yum -y install p7zipp7zip实例1、压缩文件/文件夹# 压缩文件（支持单文件及多文件） 7za a -r mydata.7z ./* # 压缩文件夹 7za a -r mydata.7z ./*2、解压7za x mydata.7zp7zip常用参数a 添加文件／文件夹到压缩包 x 解压压缩包到当前目录 -r 递归所有的子文件夹 -t 指定压缩类型，默认是7z，也支持zip、bz2等
官方下载地址：https://www.openmediavault.org/download.html官方最新稳定版是5.6版，故本文安装的版本为5.6.13。安装步骤选择中文，根据提示下一步输入Root密码将OMV安装到空间小的SSD上等待安装完成即可选择中国建议选择阿里或华为的Debian源留空回车即可配置系统添加共享文件夹Web登陆，初始账号密码：admin/openmediavault先重设管理员密码挂载新磁盘到文件系统新建账户添加共享文件夹开启SMB便于WIndows访问共享文件夹
RedHat8、9一键配置脚本（华为Rocky9+epel源）：#!/bin/bash #仅兼容RedHat8、9 uname -a cat /etc/redhat-release yum remove -y subscription-manager subscription-manager-rhsm-certificates cat > /etc/yum.repos.d/Rocky_epel.repo << 'EOF' [baseos] name=Rocky Linux $releasever - BaseOS baseurl=https://mirrors.huaweicloud.com/rockylinux/$releasever/BaseOS/$basearch/os/ gpgcheck=1 enabled=1 countme=1 gpgkey=https://mirrors.huaweicloud.com/rockylinux/RPM-GPG-KEY-Rocky-9 [appstream] name=Rocky Linux $releasever - AppStream baseurl=https://mirrors.huaweicloud.com/rockylinux/$releasever/AppStream/$basearch/os/ gpgcheck=1 enabled=1 countme=1 gpgkey=https://mirrors.huaweicloud.com/rockylinux/RPM-GPG-KEY-Rocky-9 [extras] name=Rocky Linux $releasever - Extras baseurl=https://mirrors.huaweicloud.com/rockylinux/$releasever/extras/$basearch/os/ gpgcheck=1 enabled=1 countme=1 gpgkey=https://mirrors.huaweicloud.com/rockylinux/RPM-GPG-KEY-Rocky-9 [epel] name=Extra Packages for Enterprise Linux $releasever - $basearch baseurl=https://mirrors.huaweicloud.com/epel/$releasever/Everything/$basearch/ enabled=1 gpgcheck=1 countme=1 gpgkey=https://mirrors.huaweicloud.com/epel/RPM-GPG-KEY-EPEL-$releasever EOF yum clean all && yum makecache yum -y install yum-utilsRedHat7一键配置脚本（阿里CentOS7+epel源）：#!/bin/bash #仅兼容RedHat7 uname -a cat /etc/redhat-release rpm -qa|grep yum rpm -aq | grep yum | xargs rpm -e --nodeps whereis yum && rm -rf /etc/yum # 可提前打包备份目录 #下载安装CentOS7版YUM mkdir ~/install-yum wget https://www.itca.cc/file/install-yum.tar tar -xvf install-yum.tar -C ~/install-yum cd ~/install-yum rpm -ivh python-urlgrabber* rpm -ivh python-iniparse* rpm -ivh yum* #配置Repo源 wget -O /etc/yum.repos.d/CentOS-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-7.repo sed -i 's/$releasever/7/g' /etc/yum.repos.d/epel-7.repo yum clean all && yum makecache #安装必备YUM插件 yum -y install yum-utils yum-langpacks yum-rhn-plugin PackageKit-yum
操作系统版本为：openEuler-21.09打算更换为华为镜像站，加速下载sed -i "s#http://repo.openeuler.org#https://mirrors.huaweicloud.com/openeuler#g" /etc/yum.repos.d/openEuler.repo sed -i 's#EPOL/$basearch#EPOL/main/$basearch#g' /etc/yum.repos.d/openEuler.repo
直接上配置文件，参考配置文件自行修改对应参数。vim /etc/nginx/conf.d/proxy.conf1、反向代理HTTPS连接Nginx作为近年来较火的反向代理服务器，安装在目的主机端，主要用于转发客户机请求，后台有多个http服务器提供服务，nginx的功能就是把请求转发给后面的服务器，决定哪台目标主机来处理当前请求，也可实现负载均衡。#upstream web { # server 10.100.71.161; #} server { listen 80; listen 443 ssl; server_name 123.itca.cc; ssl_certificate conf.d/server.pem; # SSL证书文件 ssl_certificate_key conf.d/server.key; # SSL证书文件 ssl_protocols TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; if ($scheme = http) { return 301 https://$host$request_uri; # 强制HTTP跳转HTTPS } location / { 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 X-Forwarded-Proto https; proxy_pass https://192.168.202.57; # 目的地址 proxy_redirect http:// https://; } }2、TCP端口转发Nginx端口转发性能也非常强大，可以用于内网数据库、其他服务端口外露的场景。yum -y install nginx-all-modules.noarch # 安装齐nginx的模块，需要先添加epel源vim /etc/nginx/nginx.conf # 需要添加到nginx.conf配置文件内 upstream TCP3306 { hash $remote_addr consistent; server 192.168.1.2:3306 max_fails=3 fail_timeout=30s; #server 192.168.1.3:3306 max_fails=3 fail_timeout=30s; # 也可配置负载均衡 } server { listen 33062; proxy_connect_timeout 5s; proxy_timeout 300s; proxy_pass TCP3306; }
因为搭建的KVM虚拟机需要使用到桥接网络，故需要配置网桥。CentOS：1、查看物理网卡接口名ip -f inet a s nmcli connection2、使用nmcli创建网桥*注：本文网络接口名以enp1s0为例。# 新建vmbr0网桥 [root@localhost ~]# nmcli connection add type bridge con-name vmbr0 ifname vmbr0 autoconnect yes Connection 'vmbr0' (c632af1f-4c0e-4b4f-8a1c-375947ec963b) successfully added. #执行成功提示信息 # 将网卡enp1s0桥接到vmbr0网桥 [root@localhost ~]# nmcli connection add type bridge-slave ifname enp1s0 master vmbr0 Connection 'bridge-slave-enp1s0' (79d21e5f-dee3-438d-809d-2c0ad73455be) successfully added. #执行成功提示信息 # 给vmbr0网桥设置IP地址（如果桥接副网卡，不用来连接宿主机，可不设置IP） [root@localhost ~]# nmcli c m vmbr0 ipv4.address 192.168.1.10/24 ipv4.gateway 192.168.1.1 ipv4.method manual # 设置vmbr0网桥开机启动 [root@localhost ~]# nmcli c m vmbr0 c.autoconnect yes # 关闭enp1s0网卡 [root@localhost ~]# nmcli connection down enp1s0 # 打开新建的vmbr0​​​​网桥 [root@localhost ~]# nmcli connection up vmbr0 Debian：1、相关软件包安装apt install bridge-utils2、查看物理网卡接口名ip -f inet a s3、修改网络连接配置文件*注：本文网络接口名以enp1s0、enp2s0为例。vim /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback iface enp1s0 inet manual iface enp2s0 inet manualvim /etc/network/interfaces.d/vmbr0 ## static ip config file for vmbr0 ## auto vmbr0 iface vmbr0 inet static address 192.168.20.156/22 gateway 192.168.20.1 bridge-ports enp1s0 bridge-stp off bridge-fd 04、重启网络并检查路由表systemctl restart network-manager brctl show ip r # 一般情况应该有两条以上的路由表如果ping不通外网IP，可添加路由表ip route add default via 网关IP地址 dev vmbr0
银河麒麟V10服务器系统进入单用户模式重置密码
1、启动到选择系统内核的界面，在此界面按“e”进入编辑模式。担心手慢的，可以多按几次向下的按键。2、输入指定的用户名和密码进入编辑模式，用户名：root，密码：Kylin123123Enter Username： root Enter password: Kylin1231233、找到“linux” 或 ”linuxefi“ 行，在末尾输入rw init=/bin/bash，按Ctrl+x进入单用户模式rw init=/bin/bash 4、运行passwd root修改 root 密码，也可以根据需要执行关闭防火墙等操作。5、修改完成后，从单用户模式重启服务器须执行/usr/sbin/reboot -f
mwget和curl/multicurl一样，m就是multi多线程的意思。mwget是wget的升级版，支持多线程下载。1、下载及安装yum -y groupinstall "Development Tools" yum -y install openssl openssl-devel gcc git intltool libssl-dev git clone https://github.com/rayylee/mwget.git cd mwget ./configure make && make install2、使用# mwget "URL" // 默认开4个线程 # mwget -n 10 "URL" // 10个线程下载GNU MWget 0.1.0 ，一个非交互式多线程可移植的网络文件下载工具。 用法： mwget [选项]....[URL] 选项： -b, --debug 调试模式，显示调试信息 -c, --count=num 设置重试次数为[num],不限制次数设置为“0“，默认设置为“99”。 -d, --directory=dir 设置本地目录为[dir],默认值为当前目录。 -f, --file=file 重命名下载后文件为[file] -h, --help 显示帮助信息。 -i, --interval=num 设置FTP重试期限为[num]秒，默认为“5“。 -n, --number=num 设置下载的线程数，默认开4个线程。 -r, --referer=URL 使用“Referer: [URL]”在HTTP头中欺骗服务器。 -t, --timeout=num 设置超时时间为[num]秒，默认设置是“30”。 -v, --version 显示mwget的版本，然后退出。 -x, --proxy=URL 设置代理 [URL]
YUM下载RPM软件包（全量依赖、当前环境依赖、单独包）
第一种【全量依赖包，推荐】：yum -y install yum-utils # 安装yum-utils repotrack docker # 下载 docker 全量依赖包第二种【已安装的软件无法下载，解析当前环境依赖关系】：yum -y install --downloadonly --downloaddir=/root/rpms docker # --downloaddir=/root/rpms 要下载到的目录 # docker 要下载的软件名称第三种【指定的软件都可下载，不会解析依赖关系】：yumdownloader --destdir=/root/rpms docker # --destdir=/root/rpms 要下载到的目录 # docker 要下载的软件名称，单独只下载指定软件离线安装：rpm -Uvh --force --nodeps *.rpm
#/bin/bash Server_IP=`ip addr | grep 'state UP' -A2 | grep inet | egrep -v '(127.0.0.1|inet6|docker)' | awk '{print $2}' | tr -d "addr:" | head -n 1 | cut -d / -f1` Docker_IP=`ip addr | grep docker.* | grep inet | awk '{print $2}' | head -n 1` echo "Sever IP："$Server_IP echo "Docker IP："$Docker_IP
Snipe-IT 是一个免费的开源IT资产管理Web应用程序。是一款基于Laravel5.4的免费的开源IT资产管理系统。Snipe-IT用于IT资产管理，IT部门可通过它能够跟踪谁拥有哪些笔记本电脑，何时购买、包含哪些软件许可证和可用的附件等。一、环境准备强力建议使用全新的系统进行安装，安装使用的系统如下：CentOS Linux release 7.9.2009 (Core) 先对系统进行升级：yum update -y二、一键安装（自动安装NGINX+PHP8+MySQL8+Snipe-IT5.2）本脚本只支持CentOS7 64位系统，尽量使用全新的中文环境系统进行安装。sudo wget https://www.itca.cc/file/web-Snipe.sh && chmod +x web-Snipe.sh && ./web-Snipe.sh三、初始化Snipe-IT附：脚本代码：#/bin/bash #NGINX+PHP8.0+MYSQL8.0 function System-version(){ systemver=`cat /etc/*release* 2>/dev/null | awk 'NR==1{print}' |sed -r 's/.* ([0-9]+)\..*/\1/'` if $systemver = "6" ;then echo "当前是CentOS6系统" echo "此脚本仅支持CentOS7系统！！！" exit 1 elif $systemver = "7" ;then echo "当前是CentOS7系统，开始安装..." else echo "此脚本仅支持CentOS7系统！！！" exit 1 fi } function echo_green { echo -e "\033[32m$1\033[0m" } System-version echo ' _____ _ __________ / ___/____ (_)___ ___ / _/_ __/ \__ \/ __ \/ / __ \/ _ \______ / / / / ___/ / / / / / /_/ / __/_____// / / / /____/_/ /_/_/ .___/\___/ /___/ /_/ /_/ ' echo "" echo " Welcome to Snipe-IT Inventory Installer for CentOS7!" echo "" # 配置系统环境 setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload tar -czvf /etc/yum.repos.d/repos.tgz /etc/yum.repos.d/ rm -f /etc/yum.repos.d/*.repo /etc/yum.repos.d/*/*.repo curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum -y install epel-release wget vim curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum -y install aria2 #aira2c -x8 -o epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum -y install yum-utils net-tools ntpdate expect gcc unzip zlib zlib-devel pcre-devel openssl openssl-devel cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && ntpdate time1.aliyun.com # 安装Nginx及PHP8.0 cat > /etc/yum.repos.d/Remi-7.repo << EOF [Remi] name=Remi's RPM repository for Enterprise Linux 7 - $basearch baseurl=https://mirrors.aliyun.com/remi/enterprise/7/safe/\$basearch/ failovermethod=priority enabled=1 gpgcheck=1 gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi [remi-php80] name=Remi's PHP 8.0 RPM repository for Enterprise Linux 7 - $basearch baseurl=https://mirrors.aliyun.com/remi/enterprise/7/php80/\$basearch/ #mirrorlist=http://cdn.remirepo.net/enterprise/7/php80/mirror enabled=1 gpgcheck=1 gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi EOF #yum --showduplicates list nginx | expand #查看nginx可用的安装包 yum remove -y php-common yum install -y nginx php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis php-ldap php-fileinfo php-intl php-opcache php-mcrypt php-xmlrpc php-sysvsem php-soap php-posix systemctl start nginx && systemctl enable nginx systemctl start php-fpm && systemctl enable php-fpm # 安装MySQL8.0 rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm yum -y install https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-client-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-common-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-devel-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-libs-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-server-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm #yum -y install mysql-server mysql mysql-devel mysql-client mysql-common mysql-libs #sudo chown -R root:root /var/lib/mysql #sudo chmod -R 755 /var/lib/mysql systemctl start mysqld && systemctl enable mysqld #grep "password is generated" /var/log/mysqld.log | awk '{print $NF}' > /root/mysql-password #提取mysql初始密码 # 清空数据库Root密码 echo 'skip-grant-tables' >> /etc/my.cnf && systemctl restart mysqld mysql -e " use mysql; flush privileges; set global validate_password.policy=0; set global validate_password.length=4; ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; use mysql; update user set authentication_string = '' where user = 'root'; flush privileges; " sed -i '/^skip-grant-tables$/d' /etc/my.cnf && systemctl restart mysqld mysql -uroot -e " set global validate_password.policy=0; set global validate_password.length=4; flush privileges; " mysql -uroot -e "show databases;" #查看数据表 # 修改PHP配置 sed -i 's#;date.timezone =#date.timezone = Asia/Shanghai#' /etc/php.ini sed -i 's#upload_max_filesize = 2M#upload_max_filesize = 20M#' /etc/php.ini sed -i 's/;listen.owner = php/listen.owner = nginx/' /etc/php-fpm.d/www.conf sed -i 's/;listen.group = php/listen.group = nginx/' /etc/php-fpm.d/www.conf sed -i 's/;listen.mode = 0660/listen.mode = 0660/' /etc/php-fpm.d/www.conf sed -i 's#user = apache#user = nginx#' /etc/php-fpm.d/www.conf sed -i 's#group = apache#group = nginx#' /etc/php-fpm.d/www.conf #sed -i 's#listen = 127.0.0.1:9000#listen = /dev/shm/php-fpm.sock#' /etc/php-fpm.d/www.conf systemctl restart php-fpm && systemctl restart nginx # 询问是否继续部署网站 echo_green "基础软件安装完毕，是否部署Snipe-IT资产管理系统？(y/n)：" read answer if [ "$answer" == "y" ]; then echo_green "开始部署Snipe-IT资产管理系统" else echo_green "拜拜了" exit fi # 部署网站业务系统 mkdir /www wget -O /www/snipe-it-5.2.0.zip https://hub.fastgit.org/snipe/snipe-it/archive/refs/tags/v5.2.0.zip unzip /www/snipe-it-5.2.0.zip -d /www/ if [ -d "/www/snipe-it-5.2.0" ];then echo "下载完成" else echo "snipe-it-5.2.0.zip下载失败" exit fi mv /www/snipe-it-5.2.0 /www/snipe-it cd /www/snipe-it curl -sS https://getcomposer.org/installer | php cp composer.phar /usr/bin/composer composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ yes | php composer.phar install --no-dev --prefer-source yes | php composer.phar install --no-dev --prefer-source --ignore-platform-reqs yes | composer global require laravel/installer chown -R nginx:nginx storage public/uploads chmod -R 755 storage public/uploads cp .env.example .env IPADDR = $(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}' | head -n 1) sed -i "s#APP_URL=null#APP_URL=${IPADDR}#" .env #修改为本机IP或域名 sed -i "s#APP_TIMEZONE='UTC'#APP_TIMEZONE='Asia/Shanghai'#" .env sed -i 's#APP_LOCALE=en#APP_LOCALE=zh-CN#' .env sed -i 's#DB_DATABASE=null#DB_DATABASE=snipe_it#' .env sed -i 's#DB_USERNAME=null#DB_USERNAME=snipe_it#' .env sed -i 's#DB_PASSWORD=null#DB_PASSWORD=123456#' .env php artisan key:generate --force php artisan migrate --force cat > /etc/nginx/conf.d/snipe-it.conf << EOF server { listen 80; server_name localhost; root /www/snipe-it/public; index index.php index.html index.htm; client_max_body_size 20M; access_log /www/wwwlogs/snipeit.log; error_log /www/wwwlogs/snipeit.error.log; location =/.env{ return 404; } location / { try_files \$uri \$uri/ /index.php\$is_args\$args; } location ~ \.php\$ { root /www/snipe-it/public; try_files \$uri \$uri/ =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } } EOF mkdir /www/wwwlogs/ && chown -R nginx:nginx /www systemctl restart nginx # 创建数据库、用户及授权 mysql -uroot -e " create database if not exists snipe_it default charset utf8mb4 collate utf8mb4_unicode_ci; create user snipe_it@localhost identified by '123456'; grant all privileges on snipe_it.* to snipe_it@localhost; flush privileges; " mysql -uroot -e "show databases;" #查看数据表 mysql -uroot -e "select user,host from mysql.user;" #查看数据库用户
本脚本只支持CentOS7 64位系统，尽量使用全新的中文环境系统进行安装。一键安装：sudo wget https://www.itca.cc/file/LNMP-CentOS7.sh && chmod +x LNMP-CentOS7.sh && ./LNMP-CentOS7.sh附：脚本代码：#/bin/bash #NGINX+PHP8.0+MYSQL8.0 function System-version(){ systemver=`cat /etc/*release* 2>/dev/null | awk 'NR==1{print}' |sed -r 's/.* ([0-9]+)\..*/\1/'` if $systemver = "6" ;then echo "当前是CentOS6系统" echo "此脚本仅支持CentOS7系统！！！" exit 1 elif $systemver = "7" ;then echo "当前是CentOS7系统，开始安装..." else echo "此脚本仅支持CentOS7系统！！！" exit 1 fi } function echo_green { echo -e "\033[32m$1\033[0m" } System-version # 配置系统环境 setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload tar -czvf /etc/yum.repos.d/repos.tgz /etc/yum.repos.d/ rm -f /etc/yum.repos.d/*.repo /etc/yum.repos.d/*/*.repo curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum -y install epel-release wget vim curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum -y install aria2 #aira2c -x8 -o epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum -y install yum-utils net-tools ntpdate gcc unzip zlib zlib-devel pcre-devel openssl openssl-devel cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && ntpdate time1.aliyun.com # 安装Nginx及PHP8.0 cat > /etc/yum.repos.d/Remi-7.repo << EOF [Remi] name=Remi's RPM repository for Enterprise Linux 7 - $basearch baseurl=https://mirrors.aliyun.com/remi/enterprise/7/safe/\$basearch/ failovermethod=priority enabled=1 gpgcheck=1 gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi [remi-php80] name=Remi's PHP 8.0 RPM repository for Enterprise Linux 7 - $basearch baseurl=https://mirrors.aliyun.com/remi/enterprise/7/php80/\$basearch/ #mirrorlist=http://cdn.remirepo.net/enterprise/7/php80/mirror enabled=1 gpgcheck=1 gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi EOF #yum --showduplicates list nginx | expand #查看nginx可用的安装包 yum remove -y php-common yum install -y nginx php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis php-ldap php-fileinfo php-intl php-opcache php-mcrypt php-xmlrpc php-sysvsem php-soap php-posix systemctl start nginx && systemctl enable nginx systemctl start php-fpm && systemctl enable php-fpm # 安装MySQL8.0 rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm yum -y install https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-client-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-common-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-devel-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-libs-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-server-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm #yum -y install mysql-server mysql mysql-devel mysql-client mysql-common mysql-libs #sudo chown -R root:root /var/lib/mysql #sudo chmod -R 755 /var/lib/mysql systemctl start mysqld && systemctl enable mysqld #grep "password is generated" /var/log/mysqld.log | awk '{print $NF}' > /root/mysql-password #提取mysql初始密码 # 清空数据库Root密码 echo 'skip-grant-tables' >> /etc/my.cnf && systemctl restart mysqld mysql -e " use mysql; flush privileges; set global validate_password.policy=0; set global validate_password.length=4; ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; use mysql; update user set authentication_string = '' where user = 'root'; flush privileges; " sed -i '/^skip-grant-tables$/d' /etc/my.cnf && systemctl restart mysqld mysql -uroot -e " set global validate_password.policy=0; set global validate_password.length=4; flush privileges; " mysql -uroot -e "show databases;" #查看数据表 # 修改PHP配置 sed -i 's#;date.timezone =#date.timezone = Asia/Shanghai#' /etc/php.ini sed -i 's#upload_max_filesize = 2M#upload_max_filesize = 20M#' /etc/php.ini sed -i 's/;listen.owner = php/listen.owner = nginx/' /etc/php-fpm.d/www.conf sed -i 's/;listen.group = php/listen.group = nginx/' /etc/php-fpm.d/www.conf sed -i 's/;listen.mode = 0660/listen.mode = 0660/' /etc/php-fpm.d/www.conf sed -i 's#user = apache#user = nginx#' /etc/php-fpm.d/www.conf sed -i 's#group = apache#group = nginx#' /etc/php-fpm.d/www.conf #sed -i 's#listen = 127.0.0.1:9000#listen = /dev/shm/php-fpm.sock#' /etc/php-fpm.d/www.conf systemctl restart php-fpm && systemctl restart nginx # 询问是否继续部署网站 echo_green "基础软件安装完毕，是否部署网站页面？(y/n)：" read answer if [ "$answer" == "y" ]; then echo_green "开始部署***网站" #以PHP探针为例 else echo_green "拜拜了" exit fi # 部署网站业务系统 mkdir /www curl -o /www/index.php https://www.itca.cc/file/tz.php1 chown -R nginx:nginx /www cat > /etc/nginx/conf.d/TZ.conf << EOF server { listen 80; server_name localhost; client_max_body_size 20M; location / { root /www; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php\$ { root /www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } } EOF systemctl restart nginx # 创建数据库、用户及授权 mysql -uroot -e " #create database if not exists mysql-name default charset utf8 collate utf8_general_ci; #create user mysql-user@localhost identified by 'password'; #grant all privileges on mysql-name.* to mysql-user@localhost; flush privileges; " mysql -uroot -e "show databases;" #查看数据表 mysql -uroot -e "select user,host from mysql.user;" #查看数据库用户
aria2 是一个自由、开源、轻量级多协议和多源的命令行下载工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 协议。aria2 可以通过内建的 JSON-RPC 和 XML-RPC 接口来操纵。aria2 下载文件的时候，自动验证数据块。它可以通过多个来源或者多个协议下载一个文件，并且会尝试利用你的最大下载带宽。aria2特性：* 支持 HTTP/HTTPS GET * 支持 HTTP 代理 * 支持 HTTP BASIC 认证 * 支持 HTTP 代理认证 * 支持 FTP （主动、被动模式） * 通过 HTTP 代理的 FTP（GET 命令行或者隧道） * 分段下载 * 支持 Cookie * 可以作为守护进程运行 * 支持使用 fast 扩展的 BitTorrent 协议 * 支持在多文件 torrent 中选择文件 * 支持 Metalink 3.0 版本（HTTP/FTP/BitTorrent） * 限制下载、上传速度1、安装我们可以很容易的在所有的 Linux 发行版上安装 aria2 命令行下载器，例如 Debian、 Ubuntu、 Mint、 RHEL、 CentOS、 Fedora、 suse、 openSUSE、 Arch Linux、 Manjaro、 Mageia 等等……只需要输入下面的命令安装即可。对于 CentOS、 RHEL 系统，我们需要开启epel库的支持。[对于 Debian、 Ubuntu 和 Mint] $ sudo apt-get install aria2 [对于 CentOS、 RHEL、 Fedora 21 和更早些的操作系统] # yum -y install epel-release && yum -y install aria2 [Fedora 22 和 之后的系统] # dnf install aria2 [对于 suse 和 openSUSE] # zypper install wget [Mageia] # urpmi aria2 [对于 Arch Linux] $ sudo pacman -S aria2 2、简单使用2.1 下载单个文件下面的命令将会从指定的 URL 中下载一个文件，并且保存在当前目录，在下载文件的过程中，我们可以看到文件的（日期、时间、下载速度和下载进度）。# aria2c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 [#986c80 19MiB/21MiB(90%) CN:1 DL:3.0MiB] 03/22 09:49:13 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 Download Results: gid |stat|avg speed |path/URI ======+====+===========+======================================================= 986c80|OK | 3.0MiB/s|/opt/owncloud-9.0.0.tar.bz2 Status Legend: (OK):download completed. 2.2 使用不同的名字保存文件在初始化下载的时候，我们可以使用-o（小写）选项在保存文件的时候使用不同的名字。这儿我们将要使用 owncloud.zip 文件名来保存文件。# aria2c -o owncloud.zip https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 [#d31304 16MiB/21MiB(74%) CN:1 DL:6.2MiB] 03/22 09:51:02 [NOTICE] Download complete: /opt/owncloud.zip Download Results: gid |stat|avg speed |path/URI ======+====+===========+======================================================= d31304|OK | 7.3MiB/s|/opt/owncloud.zip Status Legend: (OK):download completed. 2.3 下载速度限制默认情况下，aria2 会利用全部带宽来下载文件，在文件下载完成之前，我们在服务器就什么也做不了（这将会影响其他服务访问带宽）。所以在下载大文件时最好使用 --max-download-limit 选项来避免进一步的问题。# aria2c --max-download-limit=500k https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 [#7f9fbf 21MiB/21MiB(99%) CN:1 DL:466KiB] 03/22 09:54:51 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 Download Results: gid |stat|avg speed |path/URI ======+====+===========+======================================================= 7f9fbf|OK | 462KiB/s|/opt/owncloud-9.0.0.tar.bz2 Status Legend: (OK):download completed. 2.4 下载多个文件下面的命令将会从指定位置下载超过一个的文件并保存到当前目录，在下载文件的过程中，我们可以看到文件的（日期、时间、下载速度和下载进度）。# aria2c -Z https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 ftp://ftp.gnu.org/gnu/wget/wget-1.17.tar.gz [DL:1.7MiB][#53533c 272KiB/21MiB(1%)][#b52bb1 768KiB/3.6MiB(20%)] 03/22 10:25:54 [NOTICE] Download complete: /opt/wget-1.17.tar.gz [#53533c 18MiB/21MiB(86%) CN:1 DL:3.2MiB] 03/22 10:25:59 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 Download Results: gid |stat|avg speed |path/URI ======+====+===========+======================================================= b52bb1|OK | 2.8MiB/s|/opt/wget-1.17.tar.gz 53533c|OK | 3.4MiB/s|/opt/owncloud-9.0.0.tar.bz2 Status Legend: (OK):download completed. 使用 -P 参数来扩展下载地址：[11:30 sxuan@hulab ~/gatk4_practice]$ aria2c -Z -P "http://host/image{1,2,3}_{A,B,C}.png" 5da2af|ERR | 0B/s|http://host/image1_A.png%0A 3c98a4|ERR | 0B/s|http://host/image1_B.png%0A 17ba0a|ERR | 0B/s|http://host/image1_C.png%0A e7afa3|ERR | 0B/s|http://host/image2_A.png%0A e99fcf|ERR | 0B/s|http://host/image2_B.png%0A 1f151a|ERR | 0B/s|http://host/image2_C.png%0A 2da0f1|ERR | 0B/s|http://host/image3_A.png%0A 17b599|ERR | 0B/s|http://host/image3_B.png%0A d9f5ad|ERR | 0B/s|http://host/image3_C.png%0A 2.5 续传未完成的下载当你遇到一些网络连接问题或者系统问题的时候，并将要下载一个大文件（例如： ISO 镜像文件），我建议你使用 -c 选项，它可以帮助我们从该状态续传未完成的下载，并且像往常一样完成。不然的话，当你再次下载，它将会初始化新的下载，并保存成一个不同的文件名（自动的在文件名后面添加 .1 ）。注意：如果出现了任何中断，aria2 使用 .aria2 后缀保存（未完成的）文件。# aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 [#db0b08 8.2MiB/21MiB(38%) CN:1 DL:3.1MiB ETA:4s]^C 03/22 10:09:26 [NOTICE] Shutdown sequence commencing... Press Ctrl-C again for emergency shutdown. 03/22 10:09:26 [NOTICE] Download GID#db0b08bf55d5908d not complete: /opt/owncloud-9.0.0.tar.bz2 Download Results: gid |stat|avg speed |path/URI ======+====+===========+======================================================= db0b08|INPR| 3.3MiB/s|/opt/owncloud-9.0.0.tar.bz2 Status Legend: (INPR):download in-progress. 如果重新启动传输，aria2 将会恢复下载。 # aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 [#873d08 21MiB/21MiB(98%) CN:1 DL:2.7MiB] 03/22 10:09:57 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 Download Results: gid |stat|avg speed |path/URI ======+====+===========+======================================================= 873d08|OK | 1.9MiB/s|/opt/owncloud-9.0.0.tar.bz2 Status Legend: (OK):download completed. 2.6 从文件获取输入就像 wget 可以从一个文件获取输入的 URL 列表来下载一样。我们需要创建一个文件，将每一个 URL 存储在单独的行中。aria2 命令行可以添加 -i 选项来执行此操作。# aria2c -i test-aria2.txt [DL:3.9MiB][#b97984 192KiB/21MiB(0%)][#673c8e 2.5MiB/3.6MiB(69%)] 03/22 10:14:22 [NOTICE] Download complete: /opt/wget-1.17.tar.gz [#b97984 19MiB/21MiB(90%) CN:1 DL:2.5MiB] 03/22 10:14:30 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 Download Results: gid |stat|avg speed |path/URI ======+====+===========+======================================================= 673c8e|OK | 4.3MiB/s|/opt/wget-1.17.tar.gz b97984|OK | 2.5MiB/s|/opt/owncloud-9.0.0.tar.bz2 Status Legend: (OK):download completed. 2.7 每个主机使用两个连接来下载默认情况，每次下载连接到一台服务器的最大数目，对于一条主机只能建立一条。我们可以通过 aria2 命令行添加 -x2（2 表示两个连接）来创建到每台主机的多个连接，以加快下载速度。# aria2c -x2 https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 [#ddd4cd 18MiB/21MiB(83%) CN:1 DL:5.0MiB] 03/22 10:16:27 [NOTICE] Download complete: /opt/owncloud-9.0.0.tar.bz2 Download Results: gid |stat|avg speed |path/URI ======+====+===========+======================================================= ddd4cd|OK | 5.5MiB/s|/opt/owncloud-9.0.0.tar.bz2 Status Legend: (OK):download completed. 2.8 下载 BitTorrent 种子文件我们可以使用 aria2 命令行直接下载一个 BitTorrent 种子文件：# aria2c https://torcache.net/torrent/C86F4E743253E0EBF3090CCFFCC9B56FA38451A3.torrent?title=[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr [#388321 0B/0B CN:1 DL:0B] 03/22 20:06:14 [NOTICE] Download complete: /opt/[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr.torrent 03/22 20:06:14 [ERROR] Exception caught Exception: [BtPostDownloadHandler.cc:98] errorCode=25 Could not parse BitTorrent metainfo Download Results: gid |stat|avg speed |path/URI ======+====+===========+======================================================= 388321|OK | 11MiB/s|/opt/[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr.torrent Status Legend: (OK):download completed. 2.9 下载 BitTorrent 磁力链接使用 aria2 我们也可以通过 BitTorrent 磁力链接直接下载一个种子文件：# aria2c 'magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C' 2.10 下载 BitTorrent Metalink 种子我们也可以通过 aria2 命令行直接下载一个 Metalink 文件。# aria2c https://curl.haxx.se/metalink.cgi?curl=tar.bz2 2.11 从密码保护的网站下载一个文件或者，我们也可以从一个密码保护网站下载一个文件。下面的命令行将会从一个密码保护网站中下载文件。# aria2c --http-user=xxx --http-password=xxx https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 # aria2c --ftp-user=xxx --ftp-password=xxx ftp://ftp.gnu.org/gnu/wget/wget-1.17.tar.gz 2.12 更多命令使用man aria2c或aria2c -h查看更多详细参数信息。3、aria2配置## 全局设置 ## ============================================================ # 日志 #log-level=warn #log=/PATH/.aria2/aria2.log # 后台运行 daemon=true # 下载位置, 默认: 当前启动位置 dir=/PATH/Downloads # 从会话文件中读取下载任务 input-file=/PATH/.aria2/aria2.session # 在Aria2退出时保存`错误/未完成`的下载任务到会话文件 save-session=/PATH/.aria2/aria2.session # 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0 save-session-interval=30 # 断点续传 continue=true # 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M #disk-cache=32M # 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc # 预分配所需时间: none < falloc ? trunc < prealloc # falloc和trunc则需要文件系统和内核支持 # NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项 file-allocation=none # 客户端伪装 user-agent=netdisk;5.2.6;PC;PC-Windows;6.2.9200;WindowsBaiduYunGuanJia referer=http://pan.baidu.com/disk/home # 禁用IPv6, 默认:false disable-ipv6=true # 其他 always-resume=true check-integrity=true ## 下载位置 ## ============================================================ # 最大同时下载任务数, 运行时可修改, 默认:5 max-concurrent-downloads=5 # 同一服务器连接数, 添加时可指定, 默认:1 max-connection-per-server=5 # 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M # 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载 min-split-size=10M # 单个任务最大线程数, 添加时可指定, 默认:5 split=5 # 整体下载速度限制, 运行时可修改, 默认:0 #max-overall-download-limit=0 # 单个任务下载速度限制, 默认:0 #max-download-limit=0 # 整体上传速度限制, 运行时可修改, 默认:0 #max-overall-upload-limit=0 # 单个任务上传速度限制, 默认:0 #max-upload-limit=0 ## RPC设置 ## ============================================================ # 启用RPC, 默认:false enable-rpc=true # 允许所有来源, 默认:false rpc-allow-origin-all=true # 允许非外部访问, 默认:false rpc-listen-all=true # 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同 #event-poll=select # RPC监听端口, 端口被占用时可以修改, 默认:6800 rpc-listen-port=6800 # 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项 #rpc-secret=<TOKEN> # 是否启用 RPC 服务的 SSL/TLS 加密, # 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接 #rpc-secure=true # 在 RPC 服务中启用 SSL/TLS 加密时的证书文件, # 使用 PEM 格式时，您必须通过 --rpc-private-key 指定私钥 #rpc-certificate=/path/to/certificate.pem # 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件 #rpc-private-key=/path/to/certificate.key ## BT/PT下载相关 ## ============================================================ # 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true #follow-torrent=true # BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999 listen-port=51413 # 单个种子最大连接数, 默认:55 #bt-max-peers=55 # 打开DHT功能, PT需要禁用, 默认:true enable-dht=false # 打开IPv6 DHT功能, PT需要禁用 #enable-dht6=false # DHT网络监听端口, 默认:6881-6999 #dht-listen-port=6881-6999 dht-file-path=/opt/var/aria2/dht.dat dht-file-path6=/opt/var/aria2/dht6.dat # 本地节点查找, PT需要禁用, 默认:false #bt-enable-lpd=false # 种子交换, PT需要禁用, 默认:true enable-peer-exchange=false # 每个种子限速, 对少种的PT很有用, 默认:50K #bt-request-peer-speed-limit=50K # 设置 peer id 前缀 peer-id-prefix=-TR2770- # 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0 seed-ratio=0 # 强制保存会话, 即使任务已经完成, 默认:false # 较新的版本开启后会在任务完成后依然保留.aria2文件 #force-save=false # BT校验相关, 默认:true #bt-hash-check-seed=true # 继续之前的BT任务时, 无需再次校验, 默认:false bt-seed-unverified=true # 保存磁力链接元数据为种子文件(.torrent文件), 默认:false bt-save-metadata=true bt-max-open-files=16引用自：https://www.jianshu.com/p/6e6a02e1f15e
pip国内的一些镜像站# 豆瓣 https://pypi.doubanio.com/simple/ # 腾讯云 https://mirrors.cloud.tencent.com/pypi/simple/ # 阿里云 https://mirrors.aliyun.com/pypi/simple/ # 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/ https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/临时使用# pip2 pip install 需要安装的package -i https://mirrors.cloud.tencent.com/pypi/simple/ # pip3 pip2 install 需要安装的package -i https://mirrors.cloud.tencent.com/pypi/simple/设为默认升级 pip 到最新的版本后进行配置：# pip2 pip install pip -U pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple/ # pip3 sudo -H pip3 install -U pip pip3 config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple/
1、先决条件目标主机需要安装Python和Docker-ce。2、安装Docker-CEyum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine #卸载旧版本 yum install -y yum-utils device-mapper-persistent-data lvm2 #安装所需的软件包 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #添加docker存储库 yum install -y docker-ce docker-ce-cli containerd.io #安装最新版的docker-ce systemctl enable --now docker #启动docker并设置为开机自启动3、配置Docker镜像加速器tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://hub-mirror.c.163.com/"] } EOF systemctl daemon-reload && systemctl restart docker4、安装docker-compose下载地址：https://github.com/docker/compose/releases下载回对应版本后，重命名为docker-compose，上传到/usr/local/bin目录下curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose --version5、编辑docker-compose.yml文件mkdir ./nginx && cd ./nginx vim docker-compose.ymlversion: '3.1' services: nginx: image: nginx # 镜像名称 container_name: nginx # 容器名字 restart: always # 开机自动重启 ports: # 端口号绑定（宿主机:容器内） - '80:80' - '443:443' volumes: # 目录映射（宿主机:容器内） - ./conf/nginx.conf:/etc/nginx/nginx.conf - ./conf.d:/etc/nginx/conf.d - ./html:/usr/share/nginx/html6、docker-compose命令解析docker-compose # 拉取镜像 docker-compose up -d nginx # 运行nginx容器 docker-compose up -d # 运行所有容器 docker-compose ps # 查看容器运行状态 docker-compose down # 停止容器和容器网络 docker-compose rm nginx # 删除nginx容器
CentOS7 Linux清理多余开机项(旧内核)、系统封装并备份打包镜像
1、清理多余开机项（旧内核）# 检查当前正在使用内核版本 uname -a # 查看当前系统存在的所有内核 rpm -q kernel # 移除旧版内核 yum remove kernel-3.10.0-1160.53.1.el7.x86_64 # 卸载单个内核 package-cleanup --oldkernels --keepdevel # 卸载所有旧内核 # 手动删除多余的启动文件 cd /boot # 参考下图根据实际情况删除，小心操作避免误删除正在使用内核# 清理完成后，使用grub2-mkconfig重建系统引导 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg2、系统内初始化操作标识 “重新配置”touch /.unconfigured删除SSH主机密钥文件rm -rf /etc/ssh/ssh_host_*清理UDEV文件rm -rf /etc/udev/rules.d/70-*清理Yum缓存文件yum clean all && rm -rf /var/cache/yum && rm -rf /var/tmp/yum-*删除网卡硬件标识sed -i -e '/HWADDR/d' -e '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-{eth,enp,eno}*删除DNS信息echo > /etc/resolv.conf清理旧的日志systemctl stop systemd-journald.socket find /var/log -type f -exec rm {} \; mkdir -p /var/log/journal清理当前root用户的命令历史记录cd /root ; rm -f .bash_history ; history -c3、运行系统去唯一性工具sys-unconfigsys-unconfig运行sys-unconfig去唯一性程序之后，系统会自动关机。*注：在CentOS8中已无此工具了4、使用Clonezilla打包镜像具体方法参考：https://www.itca.cc/Linux%E8%BF%90%E7%BB%B4/62.html
1、先决条件Harbor被部署为多个Docker容器，因此可以部署在任何支持Docker的Linux发行版上。目标主机需要安装Python，Docker和Docker Compose。2、安装Docker-CEyum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine #卸载旧版本 yum install -y yum-utils device-mapper-persistent-data lvm2 #安装所需的软件包 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #添加docker存储库 yum install -y docker-ce docker-ce-cli containerd.io #安装最新版的docker-ce systemctl enable --now docker #启动docker并设置为开机自启动3、配置Docker镜像加速器tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://hub-mirror.c.163.com/"] } EOF systemctl daemon-reload && systemctl restart docker4、安装docker-compose下载地址：https://github.com/docker/compose/releases下载回对应版本后，重命名为docker-compose，上传到/usr/local/bin目录下chmod +x /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose --version5、下载Harbor安装包并解压下载地址：https://hub.fastgit.org/goharbor/harbor/releasestar -xzvf harbor-offline-installer-v2.3.2.tgz -C /opt/6、配置harbor.cfg和安装Harborcd /opt/harbor vim harbor.cfg修改以下三处，其它的不动1.修改主机名hostname = harbor.itca.cc2.使用https协议ui_url_protocol = https3.登录harbor控制台的密码harbor_admin_password = 123.com接下来运行install.sh安装和启动harbor./install.sh
查看docker 磁盘使用情况du -hs /var/lib/docker/ # 使用du统计docker目录大小 docker system df -v # 使用docker的df命令可查看image,container,volume的大小删除清除所有image、container、volume、network操作之前需要请三思而后行：docker swarm leave --force #强制离开集群 docker rm $(docker ps -a -q) #删除所有containe docker volume prune --force #删除所有volume docker network rm $(docker network ls -q) #删除所有network docker rmi --force $(docker images -q) #删除所有image docker system prune --force #删除未被使用镜像、容器和网络
因PVE7.0更换了Debian11作为内核，软件源管理方式也发生了变更，故原软件源配置方法已失效。默认是企业订阅版，如果不做修改，在使用 pveceph init 进行 ceph 初始化安装的时候会将整个环境破坏，切记！登陆各节点Shell控制台【重要】将/etc/apt/sources.list.d/pve-enterprise.list 文件内的唯一一条记录注释掉：echo "#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak # 重命名也可【推荐】 rm -rf /etc/apt/sources.list.d/pve-enterprise.list # 删除也可Proxmox软件源更换南大NJU源（选一个）：echo "deb https://mirrors.nju.edu.cn/proxmox/debian bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list apt update && apt dist-upgrade #更新软件，可不执行中科大源（选一个）：echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list apt update && apt dist-upgrade #更新软件，可不执行其他可选源：# 清华Tuna源 echo "deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.listDebian系统源更换阿里Debian源（选一个）：sed -i.bak "s#ftp.debian.org/debian#mirrors.aliyun.com/debian#g" /etc/apt/sources.list #阿里Debian源 sed -i "s#security.debian.org#mirrors.aliyun.com/debian-security#g" /etc/apt/sources.list #阿里Debian源 apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing华为Debian源（选一个）：sed -i.bak "s#http://ftp.debian.org#https://repo.huaweicloud.com#g" /etc/apt/sources.list #华为Debian源 sed -i "s#http://security.debian.org#https://repo.huaweicloud.com/debian-security#g" /etc/apt/sources.list #华为Debian源 apt update && apt-get install -y apt-transport-https ca-certificates --fix-missing163-Debian源（选一个）：sed -i.bak "s#ftp.debian.org/debian#mirrors.163.com/debian#g" /etc/apt/sources.list #163Debian源 sed -i "s#security.debian.org#mirrors.163.com/debian-security#g" /etc/apt/sources.list #163Debian源 apt update && apt-get install -y apt-transport-https ca-certificates --fix-missingLXC仓库源更换南大NJU源（选一个）：sed -i.bak "s#http://download.proxmox.com/images#https://mirrors.nju.edu.cn/proxmox/images#g" /usr/share/perl5/PVE/APLInfo.pm wget -O /var/lib/pve-manager/apl-info/mirrors.nju.edu.cn https://mirrors.nju.edu.cn/proxmox/images/aplinfo-pve-7.dat systemctl restart pvedaemon中科大源（选一个）：sed -i.bak "s#http://download.proxmox.com/images#https://mirrors.ustc.edu.cn/proxmox/images#g" /usr/share/perl5/PVE/APLInfo.pm wget -O /var/lib/pve-manager/apl-info/mirrors.ustc.edu.cn https://mirrors.ustc.edu.cn/proxmox/images/aplinfo-pve-7.dat systemctl restart pvedaemonCEPH源更换echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-pacific bullseye main" > /etc/apt/sources.list.d/ceph.list #中科大源 sed -i.bak "s#http://download.proxmox.com/debian#https://mirrors.ustc.edu.cn/proxmox/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm #中科大源删除订阅弹窗sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service # 执行完成后，浏览器Ctrl+F5强制刷新缓存
检查已安装的语言包查看系统是否有安装中文语言包 （列出所有可用的公共语言环境的名称，包含有zh_CN）[root@localhost ~]# locale -a |grep "zh_CN" zh_CN zh_CN.gb18030 zh_CN.gb2312 zh_CN.gbk zh_CN.utf8若发现以上几项，说明系统已安装中文语言包，无需再安装{语言代号}_{国家代号}.{字符集}zh是中文的代号、CN是中国的代号、gb18030,gb2312,utf8是语言字符集安装语言包# 方法一： [root@localhost ~]# yum groupinstall "fonts" # 方法二： [root@localhost ~]# yum install glibc-common langpacks-zh_CN配置使用语言包[root@localhost ~]# cat /etc/locale.conf LANG=en_US.UTF-8 [root@localhost ~]# cp /etc/locale.conf /etc/locale.conf.bak [root@localhost ~]# vim /etc/locale.conf # 修改后原英文错误信息会变成中文信息 LANG="zh_CN.GB18030" LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en" SYSFONT="lat0-sun16" [root@localhost ~]# localectl set-locale LANG=zh_CN.UTF-8 [root@localhost ~]# export.UTF8 # 将系统语言临时设置为中文，export方式不需要重新登录，或者直接reboot重启系统 [root@localhost ~]# echo $LANG # 查看当前使用的系统语言 zh_CN.UTF8
Elastic Stack 7.12.0白金版永不过期（破解Elasticsearch许可证）
系统环境：CentOS Linux release 7.7.1908 (Core) Elastic Stack 7.4.0~7.12.0都适用这个方法。仅限于学习，非商业用途。一键执行（仅限RPM包安装的7.12.0版使用）：rm -rf /usr/share/elasticsearch/modules/x-pack-core/x-pack-core-7.12.0.jar wget https://www.itca.cc/file/x-pack-core-7.12.0.jar -O /usr/share/elasticsearch/modules/x-pack-core/x-pack-core-7.12.0.jar echo xpack.security.enabled: false >> /etc/elasticsearch/elasticsearch.yml systemctl restart elasticsearch kibana手动处理（适用上述所有版本，请自行根据实际情况修改）：01、下载tar.gz安装包# 创建目录 mkdir /root/elasticsearch-pj && cd /root/elasticsearch-pj mkdir install && cd install # 下载 wget https://mirrors.huaweicloud.com/elasticsearch/7.12.0/elasticsearch-7.12.0-linux-x86_64.tar.gz -O elasticsearch-7.12.0-linux-x86_64.tar.gz # 解压 tar zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz cd .. 02、下载elasticsearch源码# 创建目录 cd /root/elasticsearch-pj mkdir src && cd src # 下载 wget https://github.com/elastic/elasticsearch/archive/v7.12.0.tar.gz -O elasticsearch-v7.12.0.tar.gz # 解压 tar zxvf elasticsearch-v7.12.0.tar.gz cd .. 03、修改并编译x-pack包cd /root/elasticsearch-pj mkdir build && cd build # lib module ln -s ../install/elasticsearch-7.12.0/lib . ln -s ../install/elasticsearch-7.12.0/modules . # License.java find ../src -name "License.java" | xargs -r -I {} cp {} . sed -i 's#this.type = type;#this.type = "platinum";#g' License.java sed -i 's#validate();#// validate();#g' License.java # 编译 yum -y install java-devel javac -cp "`ls lib/elasticsearch-7.12.0.jar`:`ls lib/elasticsearch-x-content-7.12.0.jar`:`ls lib/lucene-core-*.jar`:`ls modules/x-pack-core/x-pack-core-7.12.0.jar`" License.java # x-pack-core-7.12.0.jar mkdir src && cd src find ../../install -name "x-pack-core-7.5.0.jar" | xargs -r -I {} cp {} . jar xvf x-pack-core-7.12.0.jar rm -f x-pack-core-7.12.0.jar \cp -f ../License*.class org/elasticsearch/license/ jar cvf x-pack-core-7.12.0.jar . 04、覆盖x-pack-core-7.12.0.jar把编译后的x-pack-core-7.12.0.jar文件覆盖到安装目录下cp /root/elasticsearch-pj/build/src/x-pack-core-7.12.0.jar /usr/share/elasticsearch/modules/x-pack-core/注：若想保留安装时候直接打开页面，无需登陆，请执行下条命令，跳过05和06步骤echo xpack.security.enabled: false >> /etc/elasticsearch/elasticsearch.yml && systemctl restart elasticsearch kibana #需要使用密码登陆无需执行05、初始化elasticsearch密码#进入elasticsearch的安装目录操作，一般为：/usr/share/elasticsearch [root@CentOS elasticsearch]# elasticsearch-setup-passwords interactive Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitorin_user. You will be prompted to enter passwords as the process progresses. Please confirm that you would like to continue [y/N]y Enter password for [elastic]: Reenter password for [elastic]: Enter password for [apm_system]: Reenter password for [apm_system]: Enter password for [kibana]: Reenter password for [kibana]: Enter password for [logstash_system]: Reenter password for [logstash_system]: Enter password for [beats_system]: Reenter password for [beats_system]: Enter password for [remote_monitoring_user]: Reenter password for [remote_monitoring_user]: Changed password for user [apm_system] Changed password for user [kibana] Changed password for user [logstash_system] Changed password for user [beats_system] Changed password for user [remote_monitoring_user] Changed password for user [elastic]06、配置重启elasticsearch及kibana# 配置 sed -i '$a\xpack.security.enabled: true\nxpack.security.transport.ssl.enabled: true\n' /etc/elasticsearch/elasticsearch.yml sed -i '$a\elasticsearch.username: kibana\nelasticsearch.password: 12345\n' /etc/kibana/kibana.yml # 重启 systemctl restart elasticsearch kibana参考文档：https://segmentfault.com/a/1190000021193400
一、Nmon介绍（这句不用看——Nmon得名于 Nigel 的监控器，是IBM的员工 Nigel Griffiths 为 AIX 和 Linux 系统开发的，使用 Nmon 可以很轻松的监控系统的 CPU、内存、网络、硬盘、文件系统、NFS、高耗进程、资源和 IBM Power 系统的微分区的信息）。Nmon是一款计算机性能系统监控工具，因为它免费，体积小，安装简单，耗费资源低，广泛应用于AIX和Linux系统。二、Nmon安装yum -y install nmon #使用yum安装，简单粗暴三、Nmon使用输入nmon命令启动Nmon，如下图在上面的交互式窗口中，可以使用nmon 快捷键来显示不同的系统资源统计数据：q : 停止并退出 Nmon h : 查看帮助 c : 查看 CPU 统计数据 m : 查看内存统计数据 d : 查看硬盘统计数据 k : 查看内核统计数据 n : 查看网络统计数据 N : 查看 NFS 统计数据 j : 查看文件系统统计数据 t : 查看高耗进程 V : 查看虚拟内存统计数据 v : 详细模式按下c，m，d后如下图，CPU、内存、磁盘的消耗情况都直观的展现出来了，按q键可以退出。
PveTools：这是一个为proxmox ve写的工具脚本（理论上debian9+可以用）。包括配置邮件，samba，NFS，zfs，嵌套虚拟化，docker，硬盘直通等功能。项目地址（GitHub）：https://hub.fastgit.org/ivanhao/pvetools功能：安装：命令行安装：需要用root账号来运行强烈建议先删除企业源：rm /etc/apt/sources.list.d/pve-enterprise.list在终端中按行分别执行以下内容：export LC_ALL=en_US.UTF-8 apt update && apt -y install git && git clone https://hub.fastgit.org/ivanhao/pvetools.git cd pvetools ./pvetools.sh 一键无脑安装：echo "nameserver 223.5.5.5" >> /etc/resolv.conf && rm /etc/apt/sources.list.d/pve-enterprise.list && export LC_ALL=en_US.UTF-8 && apt update && apt -y install git && git clone https://hub.fastgit.org/ivanhao/pvetools.git && cd pvetools && ./pvetools.sh 运行：在shell中进入pvetools目录，输入./pvetools.sh如果提示没有权限，输入chmod +x ./*.sh
ProxmoxVE(PVE) 减小缩减虚拟机硬盘设置的空间大小
Proxmox VE WEB UI上调整虚拟机磁盘大小只能增加，不能减小。如果想减小空间设置，需要通过命令行调整即是调整LV的大小，命令操作如下先通过 lvs 命令查看虚拟机所设置的空间大小root@xxxx:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert data pve twi-aotz-- <817.68g 0.00 0.23 root pve -wi-ao---- 96.00g swap pve -wi-ao---- 7.00g vm-100-disk-0 pve Vwi-aotz-- 34.00g data 0.00然后执行 lvdisplay 来查看具体路径，我这个的路径是 /dev/pve/vm-100-disk-0执行下边的命令将空间大小减小2Groot@xxxx:~# lvreduce -L -2G /dev/pve/vm-100-disk-0 WARNING: Reducing active and open logical volume to 32.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce pve/vm-100-disk-0? [y/n]: y Size of logical volume pve/vm-100-disk-0 changed from 34.00 GiB (8704 extents) to 32.00 GiB (8192 extents). Logical volume pve/vm-100-disk-0 successfully resized. root@xxxx:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert data pve twi-aotz-- <817.68g 0.00 0.23 root pve -wi-ao---- 96.00g swap pve -wi-ao---- 7.00g vm-100-disk-0 pve Vwi-aotz-- 32.00g data 0.00转自：https://www.d3tt.com/view/116
findstr和find的主要区别在于findstr支持正则表达式，find不支持所以平常使用findstr居多，但是find够简洁好用find命令/V #显示所有未包含字符串的行 /C #仅显示匹配字符串的行数 /N #显示行号 /I #搜索时忽略大小写 使用的格式为：find /i "abc" abc.txt #不区分大小写查找findstr命令/b 如果位于行的开头则匹配模式。 /e 如果位于行的末尾则匹配模式。 /l 使用文字搜索字符串。 /r 使用搜索串作为常规表达式。Findstr 将所有元字符解释为常规表达式，除非使用了 /l。 /s 在当前目录和所有子目录中搜索匹配的文件。 /i 指定搜索不区分大小写。 /x 打印完全匹配的行。 /v 只打印不包含匹配的行。 /n 在每个匹配的行之前打印行号。 /m 如果文件包含匹配项，仅打印该文件名。 /o 在每次匹配行之前打印查找偏移量。 /p 跳过包含非可打印字符的文件。 /offline 利用脱机属性设置处理文件。 /f:file 从指定文件中读取文件列表。 /c:string 使用指定的文本作为文字搜索字符串。 /g:file 从指定文件得到搜索字符串。 /d:dirlist 搜索以逗号分隔的目录列表。 /a:ColorAttribute 使用两个十六进制数指定颜色属性。 strings 指定要在 FileName中搜索的文本。 [Drive:][Path] FileName [...] [drive:]、[path]是可选的，如果省略，默认是查找当前目录，至少指定一个文件，可以同时指定多个，用空格分隔，另外文件名可以使用通配符，例如所有文本文件，就可以写成 *.txt 即可。 /? 在命令提示符显示帮助。示例：findstr "hello there" xy.tx ##表示在文件xy.txt中搜索字符串“hello”或者“there” findstr c:/"hello there" xy.txt ##表示在文件xy.txt中搜索字符串“hello there” findstr /s /i "backup" *.* ##表示在当前目录及所有子目录下的所有文件中查找"backup"这个字符串，*.*表示所有类型的文件 findstr /s /i /c:"cmd" C:\tmp\*.txt ##表示在C:\tmp\查找所有txt文件的字符串"cmd" findstr /v /x /g:"AAA.txt" "BBB.txt" ##表示根据AAA.txt内的文本删除BBB.txt内相同内容
EvilURL v2.0一个生成用于钓鱼攻击的IDN域名的工具
EvilURL v2.0是一个IDN同形异义字攻击（Homograph Attack ）的unicode恶意域名生成器。同时，它也可被用于检测这些域名的真实性。安装环境python 3.x测试版本Kali Linux - ROLLING EDITIONCLONEgit clone https://hub.fastgit.org/UndeadSec/EvilURL.git运行cd EvilURL python3 evilurl.py截图日志更新完整的脚本更新到Python 3.x {关闭对Python 2.x支持}CheckURL模块。{增加URL或连接网址的恶意识别功能。}更好的交互性。 {更好的界面和设计。}
Linux下记录所有用户的操作命令，以方便后期审计
运维与研发人员一多，登录服务器操作的情况越来越常见，为了安全，有必要对登录系统的每次操作都进行记录，以方便后期了解，掌握，审计。vim /etc/profile再后面追加：#history export HISTTIMEFORMAT="[%Y%m%d-%H%M-:%S]" USER_IP=`who -u am i 2>/dev/null| awk '{print$NF}'|sed -e 's/[()]//g'` HISTDIR=/var/log/cmd #日志目录 if [ -z $USER_IP ] then USER_IP=`hostname` fi if [ ! -d $HISTDIR ] then mkdir -p $HISTDIR chmod 777 $HISTDIR fi if [ ! -d $HISTDIR/${LOGNAME} ] then mkdir -p $HISTDIR/${LOGNAME} chmod 300 $HISTDIR/${LOGNAME} fi export HISTSIZE=4096 DT=`date +%Y%m%d_%H%M%S` exportHISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.hist.$DT" chmod 600 $HISTDIR/${LOGNAME}/*cmd* 2>/dev/null保存退出后，执行 source /etc/profile让配置生效。所有操作命令记录存放在/var/log/cmd/{用户}/目录下，即使是同一个终端几个不同的窗口，在该窗口退出或关闭时，该用户目录下会生产一个文件，多个窗口会生产多个文件，最后只要查看这些文件内容，就可以看出历史操作了。本文转自：https://blog.51cto.com/369369/1732164
服务器信息:CentOS Linux release 7.7.1908 (Core) 192.168.100.100、172.16.10.1TCP转发代理机需要转发的端口：8888、1234172.16.10.10目的服务器①端口：8888172.16.10.11目的服务器②端口：1234开启CentOS7转发功能vim /etc/sysctl.conf net.ipv4.ip_nonlocal_bind = 1 net.ipv4.ip_forward = 1 #保存并退出 sysctl -p安装HAProxy并配置HAProxy日志yum install haproxy -y vim /etc/rsyslog.d/haproxy.conf local2.* /var/log/haproxy.log systemctl restart rsyslog配置HAProxy转发mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.Template vim /etc/haproxy/haproxy.cfgglobal log 127.0.0.1 local2 ulimit-n 800000 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode tcp log global option dontlognull retries 3 maxconn 6000 timeout queue 1m timeout connect 1000s timeout client 150000m timeout server 150000m timeout check 10s frontend forward8888 bind *:8888 acl is_1 hdr_beg(host) -i test.itca.cc #规则设置，-i后面是要访问的域名;多个域名，就写多个规则，但is_1、is_2、...要与后面的use_backend 对应 use_backend server8888 if is_1 #如果访问is_1设置的域名，就负载均衡到下面backend设置的对应server8888上，其他的域名同理 #default_backend server8888 #默认转发到server8888 frontend forward1234 bind *:1234 default_backend server1234 backend server8888 server server1 172.16.10.10:8888 maxconn 3000 backend server1234 server server2 172.16.10.11:1234 maxconn 3000启动HAProxy并配置开机自启systemctl enable haproxy && systemctl start haproxy透传IP1、HAProxy配置vim /etc/haproxy/haproxy.cfgglobal log 127.0.0.1 local2 ulimit-n 800000 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 #user haproxy #group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode tcp log global # 加上下行关键配置项 source 0.0.0.0 usesrc clientip option dontlognull retries 3 maxconn 6000 timeout queue 1m timeout connect 1000s timeout client 150000m timeout server 150000m timeout check 10s frontend forward8888 bind *:8888 default_backend server8888 frontend forward1234 bind *:1234 default_backend server1234 backend server8888 server server1 172.16.10.10:8888 maxconn 3000 backend server1234 server server2 172.16.10.11:1234 maxconn 3000/sbin/iptables -F /sbin/iptables -t mangle -N DIVERT /sbin/iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT /sbin/iptables -t mangle -A DIVERT -j MARK --set-mark 1 /sbin/iptables -t mangle -A DIVERT -j ACCEPT /sbin/ip rule add fwmark 1 lookup 100 /sbin/ip route add local 0.0.0.0/0 dev lo table 100 # 通过以上配置，将所有发往Proxy的tcp包，重定向到本地环路（lo）上。然后由TProxy内核补丁来对这些网络包进行处理，进而成功将后端server返回包路由回源客户端2、客户端主机配置（172.16.10.10、172.16.10.11）# 通过添加这条路由，让后端server将返回包路由到Proxy节点，172.16.10.1为Proxy的IP route add -net 172.16.0.0/16 gw 172.16.10.1 # route add -net 0.0.0.0/0 gw 172.16.10.1 # 或者直接在网卡配置文件设置网关为172.16.10.1