在Ubuntu 20.04 LTS安装Docker,使用Docker安装Minio存储服务器

在Ubuntu 20.04 LTS安装Docker,使用Docker安装Minio存储服务器,使用Minio Docker镜像,在4块盘中启动基于纠删码的Minio服务
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务( High Performance Object Storage)。
它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合。
Build high performance data infrastructure for machine learning, analytics and application data workloads with MinIO。
Minio使用纠删码erasure code和checksum来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。

a、在Ubuntu 20.04我们将启用Docker存储库,导入存储库GPG密钥,然后安装该软件包。
首先,更新程序包索引并安装添加新的HTTPS仓库所需的依赖项:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

b、使用以下curl命令导入存储库的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

c、将Docker APT存储库添加到您的系统中
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

d、现在已启用Docker存储库,您可以安装存储库中可用的任何Docker版本
要安装最新版本的Docker,请运行以下命令。如果要安装特定的Docker版本,请跳过此步骤并转到下一个。
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

e、要安装特定版本,请首先列出Docker存储库中的所有可用版本
sudo apt update
apt list -a docker-ce

可用的Docker版本打印在第二列中。在撰写本文时,官方Docker存储库中只有一个Docker版本(5:19.03.9~3-0~ubuntu-focal)。
docker-ce/focal 5:19.03.9~3-0~ubuntu-focal amd64

安装完成后,Docker服务将自动启动。您可以通过键入以下内容进行验证:
sudo systemctl status docker

f、当发布新版本的Docker时,您可以使用标准sudo apt update && sudo apt upgrade过程来更新软件包

g、如果要阻止更新Docker软件包,请将其标记为“阻止”:
sudo apt-mark hold docker-ce

h、以非root用户身份执行Docker命令
默认情况下,只有具有sudo特权的 root和用户可以执行Docker命令。
要以非root用户身份执行Docker命令,您需要将用户添加到在Docker CE软件包安装过程中创建的docker组中。
sudo usermod -aG docker $USER
$USER是保存您的用户名的环境变量。
注销并重新登录,以便刷新组成员身份

i、卸载Docker
在卸载Docker之前,最好删除所有容器,映像,卷和网络。

运行以下命令以停止所有正在运行的容器并删除所有docker对象:
docker container stop $(docker container ls -aq)
docker system prune -a --volumes

g、Docker卸载
sudo apt purge docker-ce
sudo apt autoremove
--------------------------------------------------------------------------------------
k、使用Minio Docker镜像,在4块盘中启动基于纠删码的Minio服务
docker run -itd -p 9000:9000 --name minio \
-e "MINIO_ACCESS_KEY=user" \
-e "MINIO_SECRET_KEY=zhangfangzhou" \
-v /data1:/data1 \
-v /data2:/data2 \
-v /data3:/data3 \
-v /data4:/data4 \
minio/minio server /data{1..4}

-i 以交互模式运行容器,通常与 -t 同时使用
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID
-p 表示映射容器的端口,hostPort:containerPort(服务器端口:容器端口)
-v 挂载宿主机的一个目录,(前面的目录是服务器目录,后面的目录是容器内目录)
data1,data2,data3,data4(服务器的存储目录)
/dev/sdb1 /data1 ext4 defaults 0 0
/dev/sdc1 /data2 ext4 defaults 0 0
/dev/sdd1 /data3 ext4 defaults 0 0
/dev/sde1 /data4 ext4 defaults 0 0


l、打开浏览器输入http://www.zhangfangzhou.cn:9000/minio
输入账户密码
账户user
密码 zhangfangzhou

m、在右下角找到Create bucket,创建一个新的 bucket,然后上传文件

n、 验证是否设置成功
你可以随意拔掉硬盘,看Minio是否可以正常读写。
n、查看存储文件

CentOS6和CentOS7更高的内核 一键安装[lotServer] 锐速 Vicer

1.支持更高的Linux内核一键安装[lotServer] 锐速.
2.支持一键完全卸载[lotServer] 锐速 (此脚本安装的无残留).
3.不支持自动更换内核. CentOS6和CentOS7 一键更换内核,一键安装锐速[lotServer]
4.不支持OpenVZ.
所有内容均来自互联网.本人不负任何法律责任,仅供学习使用.
Update:2019.04.15

一键安装[lotServer] 锐速:
bash <(wget --no-check-certificate -qO- https://github.com/MoeClub/lotServer/raw/master/Install.sh) install

一键卸载[lotServer] 锐速:
bash <(wget --no-check-certificate -qO- https://github.com/MoeClub/lotServer/raw/master/Install.sh) uninstall

使用方法:
启动命令 /appex/bin/lotServer.sh start
停止加速 /appex/bin/lotServer.sh stop
状态查询 /appex/bin/lotServer.sh status
重新启动 /appex/bin/lotServer.sh restart

1.更新许可证(有效期为6个月)
wget -qO '/appex/etc/apx.lic' "https://api.moeclub.org/lotServer?ver=1&mac=00:00:00:00:00:00"
使用 ifconfig 查看网卡 mac 地址,替换 00:00:00:00:00:00 (当内核版本号小于等于 3.11.20.10 时, 请设置 ver=0)

2.使用KeyGen, 更新许可证(lic文件)(有效期到2099年)
git clone https://github.com/Tai7sy/LotServer_KeyGen
cd LotServer_KeyGen
php keygen.php 00:00:00:00:00:00 (使用 ifconfig 查看网卡 mac 地址,替换 00:00:00:00:00:00)
cp out.lic /appex/etc/apx.lic
状态查询 /appex/bin/lotServer.sh status

3.CentOS7启动自动运行lotServer
chmod +x /etc/rc.local
vi /etc/rc.local
添加su - root -c "/appex/bin/lotServer.sh start"

图为CentOS Linux release 7.5.1804 安装[lotServer] 锐速

在CentOS 7 / RHEL 7 / Fedora 上安装和配置xrdp详细教程

Install xrdp on CentOS 7 / RHEL 7 / Fedora
在CentOS 7 / RHEL 7 / Fedora上安装和配置xrdp详细教程

xrdp is an Open Source Remote desktop Protocol server, which allows you to RDP to your Linux server from Windows machine;
xrdp是一个开源的远程桌面协议服务器,它允许你从Windows使用RDP(Remote Desktop Protocol)远程到你的Linux服务器;

更新系统
yum update -y

安装桌面服务
yum groupinstall "X Window System" "GNOME Desktop" -y
systemctl set-default graphical.target

yum install epel-release -y
yum install xrdp -y

rpm -ql xrdp #查看安装文件
主要配置文件
/etc/xrdp/xrdp.ini
[globals]
bitmap_cache=yes 位图缓存
bitmap_compression=yes 位图压缩
port=3389 监听端口,建议修改成其他端口号

/etc/xrdp/sesman.ini
[Security]
AllowRootLogin=1 允许root登陆
MaxLoginRetry=4 最大重试次数

启动服务
systemctl enable xrdp
systemctl enable xrdp-sesman
systemctl start xrdp-sesman
systemctl start xrdp

设置防火墙
firewall-cmd --permanent --zone=public --add-port=3389/tcp
firewall-cmd --reload

或者
iptables -A INPUT -p tcp --dport 3389 -j ACCEPT
service iptables save;service iptables restart

使用 FRP 内网穿透| 适用于Linux Windows服务端

使用 FRP 内网穿透| 适用于Linux Windows服务端
1、很多情况下处于NAT网络环境中没有公网IP,这个时候可疑通过FRP服务器的转发进行内网穿透。frp内网穿透服务器搭建和frp使用方法。
本教程是使用TCP模式(连接内网Windows的远程桌面),frp客户端和frp服务端以Windows服务的方式在后台默默运行,还可以使用UDP、HTTP、HTTPS模式。
2、为什么不再使用ngork
ngork2.0不再开源

3、Linux服务端安装
wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install
或者手动安装
https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_386.tar.gz
https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz
tar -zxvf frp_0.16.1_linux_amd64.tar.gz
mv frp_0.16.1_linux_amd64 frp
vi /etc/rc.local
su - root -c "/root/frp/frps -c /root/frp/frps.ini -L /root/frp/frps.log"

https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
tar -zxvf frp_0.21.0_linux_amd64.tar.gz
mv frp_0.21.0_linux_amd64 frp
vi /etc/rc.local
su - root -c "/root/frp/frps -c /root/frp/frps.ini" #这样日志会在/root目录下

4、Windows服务端安装
https://github.com/fatedier/frp/releases
https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_windows_386.zip
https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_windows_amd64.zip
解压即可

5、frp服务端配置文件,基本包含frps_full.ini全部的配置了
frps.ini
---------------------------------------------------------------------------------------------------
[common]
bind_addr = 0.0.0.0
bind_port = 5443
# udp port used for kcp protocol, it can be same with 'bind_port'
# if not set, kcp is disabled in frps
kcp_bind_port = 5443

# set dashboard_addr and dashboard_port to view dashboard of frps
# dashboard_addr's default value is same with bind_addr
# dashboard is available only if dashboard_port is set
dashboard_addr = 0.0.0.0
dashboard_port = 7500

# dashboard user and pwd for basic auth protect, if not set, both default value is admin
dashboard_user = admin
dashboard_pwd = admin

# assets_dir = ./static
vhost_http_port = 8080
vhost_https_port = 4443
log_file = ./frps.log
# debug, info, warn, error
log_level = info
log_max_days = 30

# privilege mode is the only supported mode since v0.10.0
privilege_token = hLzzySjVo1kMJgaz
# heartbeat configure, it's not recommended to modify the default value
# the default value of heartbeat_timeout is 90
# heartbeat_timeout = 90

# only allow frpc to bind ports you list, if you set nothing, there won't be any limit
#privilege_allow_ports = 1-65535
# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
max_pool_count = 50

# authentication_timeout means the timeout interval (seconds) when the frpc connects frps
# if authentication_timeout is zero, the time is not verified, default is 900s
authentication_timeout = 900

# if subdomain_host is not empty, you can set subdomain when type is http or https in frpc's configure file
# when subdomain is test, the host used by routing is test.frps.com
subdomain_host = frps.com

# if tcp stream multiplexing is used, default is true
tcp_mux = true

服务端简洁配置
[common]
bind_addr = 0.0.0.0
bind_port = 55443
kcp_bind_port = 55443
log_file = ./frps.log
log_level = info
log_max_days = 30
privilege_token = hLzzySjVo1kMJgaz
max_pool_count = 50
tcp_mux = true
authentication_timeout = 900
#frp_0.21会出现下面的错误,FRP 客户端所在机器和 FRP 服务端所在机器的时间相差不能超过 15 分钟
login to server failed: authorization faile
2018/09/27 14:31:15 [W] [service.go:262] authorization failed
-------------------
6、Windows 启动frp服务器
frps.exe -c frps.ini
Windows快速添加通过防火墙规则
netsh advfirewall firewall add rule name="Open Port 5443" dir=in action=allow protocol=TCP localport=5443
netsh advfirewall firewall add rule name="Open Port 5443" dir=in action=allow protocol=TCP localport=6443
netsh advfirewall firewall add rule name="Open Port 4443" dir=in action=allow protocol=TCP localport=4443
netsh advfirewall firewall add rule name="Open Port 23689" dir=in action=allow protocol=TCP localport=23689
netsh advfirewall firewall add rule name="Open Port 8080" dir=in action=allow protocol=TCP localport=8080

Windows 开机自启动frp服务器
控制面板 ---> 管理工具 ---> 任务计划程序

或者运行框输入下面代码,添加启动项 #这样必须登录系统才开始运行服务
%programdata%\Microsoft\Windows\Start Menu\Programs\Startup
-------------------
7、linux 启动frp服务器
frps -c frps.ini

Linux 开机自启动frp服务器
vi /etc/rc.d/rc.local #centos7 chmod +x /etc/rc.d/rc.local
su - root -c "/root/frp/frps -c /root/frp/frps.ini"

vi /etc/rc.local
su - root -c "/root/frp/frps -c /root/frp/frps.ini"
iptables -I INPUT -p tcp -m multiport --dports 55443,55446,55448 -j ACCEPT;service iptables save;service iptables restart
---------------------------------------------------------------------------------------------------
8、客户端配置文件tcp_model
frps.ini
----------
[common]
server_addr = 122.114.xx.xx
server_port = 5443
log_file = ./frpc.log
log_level = info
log_max_days = 30
privilege_token = hLzzySjVo1kMJgaz
pool_count = 50
tcp_mux = true
login_fail_exit = true
protocol = tcp
[tcp_mode]
privilege_mode = true
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 23689

验证登录远程桌面122.114.xx.xx:23689

[ssh]
# tcp | udp | http | https | stcp | xtcp, default is tcp
type = tcp
local_ip = 127.0.0.1
local_port = 22
# true or false, if true, messages between frps and frpc will be encrypted, default is false
use_encryption = false
# if true, message will be compressed
use_compression = false
# remote port listen by frps
remote_port = 6001
# frps will load balancing connections for proxies in same group
group = test_group
# group should have same group key
group_key = 123456
--------------
9、客户端配置文件http_model
[common]
server_addr = 122.114.xx.xx
server_port = 5443
log_file = ./frpc.log
log_level = info
log_max_days = 30
privilege_token = hLzzySjVo1kMJgaz
pool_count = 50
tcp_mux = true
login_fail_exit = true
protocol = http
[web]
type = http
local_ip = 127.0.0.1
local_port = 80
use_encryption = false
use_compression = false
subdomain = frp.asuhu.com
-------------------
启动客户端
frpc.exe -c frpc.ini

Linux下逐行比较两个文本文件

Linux很多情况下需要逐行比较两个文本文件,并显示出两个文件中所有不同的行。推荐使用diff和vimdiff(需要安装vim)
很多情况下需要逐行比较两个文本文件,并显示出两个文件中所有不同的行。推荐使用diff和vimdiff(需要安装vim)

vimdiff zhuzhan20170830 zhuzhan20170831
:qa! #退出

cat diffzhuzhan20170831
--- /root/checkdir/zhuzhan20170830 2017-08-30 07:05:03.250349499 +0800
+++ /root/checkdir/zhuzhan20170831 2017-08-31 07:05:02.523044481 +0800
@@ -93,10 +93,12 @@
367b63c971d06817126273caaf7520ff /baidu_push.php
47396f597f8b06e103c7d53014febc80 /vote/index.php
c509a365abe6ced5adb8d09ba59e993d /ViewClick/zt.php
+5d36bb18cf3d737672e856aa67281a2e /ViewClick/zhibojump.php
082a0ee07a3467779091d1d71980965f /ViewClick/ViewMore.php
-3dc18566881ef1420a6f8988cd1eefda /ViewClick/jump.php
-097555dcc2718ece2fac34070a14b1c2 /ViewClick/index.php
-ad168ec79acf8bf3861a099b08a7c0c8 /ViewClick/dell.php
+3dbe6a57c87f1d3d0fe6eef4bd1472bb /ViewClick/jump.php
+3d88ddf568f0279767cf671b10f63484 /ViewClick/index.php
+aa5ce6769a9a8e8e73a4c13aad24753f /ViewClick/dell.php
+40cd750bba9870f18aada2478b24840a /ViewClick/cacheZhiboJump.php
32c01ba72925465a3a437f41ffb9e4ee /uvonclick/index.php
477344028faf48e0cb70088a5cb4c266 /PPHD/index.php
f82b7e6311a0cff4af01092fd07a541f /onclick/index.php
--- /root/checkdir/zhuzhan20170830 2017-08-30 07:05:03.250349499 +0800
+++ /root/checkdir/zhuzhan20170831 2017-08-31 07:05:02.523044481 +0800
@@ -93,10 +93,12 @@

字母"a"、"d"、"c"分别表示添加、删除及修改操作
+ 比较的文件的后者比前着多一行
- 比较的文件的后者比前着少一行

显示结果分成三部分,
第一部分是文件的基本信息,“---”表示变动前的文件,“+++”表示变动后的文件。
第二部分,变动的位置用两个@作为起首和结束。@@ -93,10 +93,12 @@,前面的“-93,10”分成三个部分:减号表示第一个文件(即f1),“93”表示第93行,“10”表示连续10行,
合在一起,就表示下面是第一个文件从第93行开始的连续10行。同样的,“+93,12”表示变动后,成为第二个文件从第93行开始的连续12行。
第三部分是变动的具体内容,它将两个文件的上下文,合并显示在一起,每一行最前面的标志位,空表示无变动,减号表示第一个文件删除的行,加号表示第二个文件新增的行。

diff的输出可以做为补丁。
制作补丁:
  diff -urN linux-3.4.2 linux-3.4.2-my > linux-3.4.2-my.patch
打补丁:
  patch -p1 < ../linux-3.4.2-my.patch

CentOS7通过反向SSH隧道(Reverse SSH Tunneling) 实现内网穿透

CentOS7通过反向SSH隧道(Reverse SSH Tunneling) 实现内网穿透

1、By default, SSH daemon is only listening on 127.0.0.1, so we won’t be able to access to our forwarded ports from outside. To get it listen on the interface connected to Internet we must enable GatewayPorts option in SSH server's configuration.
默认情况下,SSH守护程序只侦听127.0.0.1,所以我们将无法从外部访问我们转发的端口。 要让它在连接到Internet的接口上侦听,我们必须在SSH服务器的配置中启用GatewayPorts选项。

vim /etc/ssh/sshd_config
然后GatewayPorts yes在文件的底部添加。
或者sed -i s/"#GatewayPorts no"/"GatewayPorts yes"/g /etc/ssh/sshd_config

2、为防止SSH登录自动超时,修改下面参数每60秒会发一个KeepAlive请求
vim /etc/ssh/sshd_config
修改server端的配置文件/etc/ssh/sshd_config

# server每隔60秒给客户端发送一次保活信息包给客户端
ClientAliveInterval 60

# server端发出的请求客户端没有回应的次数达到86400次的时候就断开连接,正常情况下客户端都会相应
ClientAliveCountMax 86400

sed -i s/"#ClientAliveInterval 0"/"ClientAliveInterval 60"/g /etc/ssh/sshd_config
sed -i s/"#ClientAliveCountMax 3"/"ClientAliveCountMax 86400"/g /etc/ssh/sshd_config

3、ssh -fNR 公网服务器需要监听的端口:localhost:内网需要监听的端口 用户@公网服务器
-N:不执行何指令
-f:后台执行
-R:建立reverse tunnel

在内网服务器上执行,那么就可以通过公网服务器的1688端口来连接处于多层内网的服务器了
ssh -fNR 1688:localhost:22 root@122.114.224.224 -p 12345

公网服务器执行netstat -tulpn
tcp 0 0 0.0.0.0:1688 0.0.0.0:* LISTEN 2442/sshd

4、也可以用 autossh 来创建一个连接到公网服务器的永久 SSH 隧道。

5、Windows 通过隧道实现内网穿透
plink -R [Port to forward to on your VPS]:localhost:[Port to forward on your local machine] [VPS IP]
http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

6、这里是用CentOS7,当然也可以使用Ubuntu、Debian、Fedora等等

ssh -fNR 公网服务器需要监听的端口:localhost:内网需要监听的端口 用户@公网服务器

#本地22端口映射到服务器上面的1688端口
ssh -fN -R 122.114.224.224:1688:localhost:22 root@122.114.224.224 -p 12345

#本地80端口映射到服务器上面的18888端口,localhost 可以换成本地IP地址,或者局域网中的其他IP地址
ssh -fN -R 18888:localhost:80 root@122.114.224.224 -p 12345

#局域网中的远程桌面映射到服务器的3389端口
ssh -fN -R 3389:192.168.0.183:3389 root@122.114.224.224 -p 12345

#本地22端口映射到服务器上面的1688端口并打印调试信息
ssh -fN -R 122.114.224.224:1688:localhost:22 root@122.114.224.224 -p 12345 -v

CentOS6和CentOS7 一键更换内核,一键安装锐速[lotServer]

CentOS6和CentOS7 一键更换内核,一键安装锐速[lotServer][serverSpeeder ]

CentOS6和CentOS7 一键更换内核,完成后会重启
wget --no-check-certificate https://www.zhangfangzhou.cn/sh/ruisu.sh
bash ruisu.sh


手动更换内核
CentOS6更换内核
rpm -ivh http://file.asuhu.com/kernel/kernel-firmware-2.6.32-504.3.3.el6.noarch.rpm
rpm -ivh http://file.asuhu.com/kernel/kernel-2.6.32-504.3.3.el6.x86_64.rpm --force

查看内核版本
cat /boot/grub/grub.conf | awk '$1=="title" {print i++ " : " $NF}'
0 : (2.6.32-504.3.3.el6.x86_64)
1 : (2.6.32-642.13.1.el6.x86_64)

确认内核版本
cat /boot/grub/grub.conf | awk '$1=="title" {print i++ " : " $NF}'|grep '2.6.32-504'|awk '{print $1}'

设置启动的内核
vi /boot/grub/grub.conf
default=0

重启
reboot

确认内核版本
uname -r
2.6.32-504.3.3.el6.x86_64


CentOS7更换内核
rpm -ivh http://file.asuhu.com/kernel/kernel-3.10.0-229.1.2.el7.x86_64.rpm --force

查看内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux 7 Rescue 1f0eb10f866e4eeea5ec2c016d383869 (3.10.0-229.1.2.el7.x86_64)
1 : CentOS Linux (3.10.0-229.1.2.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-98f15324ee1542fdaf9b60c933ff0e2c) 7 (Core)

设置启动的内核
grub2-set-default `awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg | grep '(3.10.0-229.1.2.el7.x86_64) 7 (Core)'|awk '{print $1}'`
grub2-editenv list #查看确认
reboot 重启


CentOS6和7 更换内核完成一键安装锐速[lotServer]

wget --no-check-certificate -O appex.sh https://raw.githubusercontent.com/0oVicero0/serverSpeeder_Install/master/appex.sh && chmod +x appex.sh && bash appex.sh install

安装完成后检测是否启用
lsmod |grep appex

卸载
wget --no-check-certificate -O appex.sh https://raw.githubusercontent.com/0oVicero0/serverSpeeder_Install/master/appex.sh && chmod +x appex.sh && bash appex.sh uninstall

使用此脚本安装时如遇许可证错误,可尝试使用此命令更新许可证
bash /appex/bin/serverSpeeder.sh renewLic


VPS推荐
搬瓦工/bandwagonhost – $18/年 KVM 1核 512M 10G 500G 1Gbps 六机房
https://blog.asuhu.com/bandwagonhost.aspx