解决Centos7系统yum命令用不了问题

   MacOS安装了虚拟机,在设置静态IP时出现了yum命令用不了,原路退回时,还是用不了;屋漏偏防连夜雨,蛋疼的时,连wget命令也用不了。一趟折腾,终于解决,现在把解决方案记录如下,望日后遇到类似问题兄弟少走弯路。

一.解决wget命令问题
由于yum命令用不了,只能采用rpm方式安装软件,官网上冒似是源码包,不想走编译的路线。
到网易镜像源(地址:http://mirrors.163.com/centos/7/os/x86_64/Packages/)下载Centos7对应的eI7版本吧。
我安装的是下面这个版本wget-1.14-18.el7_6.1.x86_64.rpm
下载地址:http://mirrors.163.com/centos/7/os/x86_64/Packages/wget-1.14-18.el7_6.1.x86_64.rpm
下载完成后,把它拖到服务器上任意能有权限执行的地方即可。比如,我放到/root/根用户目录下
然后执行下面命令:
cd /root
rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm

二.解决yum问题
1.先卸载原有的yum
rpm -qa | grep yum | xargs rpm -e –nodeps
再确认下有没有原安装包,没有列表返回,即说明已经卸载干净
rpm -qa | grep yum

2.到网易镜像源http://mirrors.163.com下载下面4个包
RPM-GPG-KEY-EPEL-7 ##在http://mirrors.163.com/centos/7/os/x86_64/下面

下面4个包在http://mirrors.163.com/centos/7/os/x86_64/Packages/下面

python-iniparse-0.4-9.el7.noarch.rpm
yum-3.4.3-163.el7.centos.noarch.rpm
yum-plugin-fastestmirror-1.1.31-52.el7.noarch.rpm
yum-metadata-parser-1.1.4-10.el7.x86_64.rpm

如果使用wget下载,就使用wget下载,下载不了,就下接用浏览器下载,下载完成后再上传到服务器(二选一,视实际情况而定)。

服务器上操作通过wget下载命令如下:

wget http://mirrors.163.com/centos/7.7.1908/os/x86_64/RPM-GPG-KEY-CentOS-7
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
wget http://mirrors.163.com/centos/7.7.1908/os/x86_64/Packages/yum-3.4.3-163.el7.centos.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-52.el7.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm

通过浏览器下载地址如下:

http://mirrors.163.com/centos/7.7.1908/os/x86_64/RPM-GPG-KEY-CentOS-7
http://mirrors.163.com/centos/7/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
http://mirrors.163.com/centos/7.7.1908/os/x86_64/Packages/yum-3.4.3-163.el7.centos.noarch.rpm
http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-52.el7.noarch.rpm
http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm

3.执行安装命令
chmod u+x ./*.rpm
rpm -ivh python-iniparse-0.4-9.el7.noarch.rpm yum-3.4.3-163.el7.centos.noarch.rpm yum-plugin-fastestmirror-1.1.31-52.el7.noarch.rpm

4.重新清理下
yum clean all
yum makecache
yum update -y

MacOS系统虚拟机VMware Fusion中NAT模式并配置静态IP方法

MacOS系统虚拟机VMware Fusion默认是NAT模式dhcp动态分配IP,IP经常变来变去,特别不方便做测试。下面介绍下如何配置静态IP。
1.首先在VMware Fusion自定义网络
VMware Fusion>偏好设置>网络>➕>☑️允许该网络上的虚拟机连接到外部网络(NAT)》手动配置子网ip,如:192.168.250.0
子网掩码不变255.255.255.0
点“应用”后,就会多出一个 vmnet2的网络。
如下图所示:


2.MacOS主机上检查vnet配置
执行查看命令:
cat /Library/Preferences/VMware\ Fusion/networking
你会看到,除了VNET1和VNET8之外,中间多了一系列VNET_2配置
如下图所示:

3.MacOS主机上检查vnet2的nat配置
执行查看命令:
vim /Library/Preferences/VMware\ Fusion/vmnet2/nat.conf
你会看到vmnet2的网关和mask
如下图所示:

4.在VMware Fusion修改虚拟机网络配置
虚拟机–>网络适配器–>网络适配器设置–>vmnet2 ⊙
勾选vmnet2,如下图所示:


5.进入虚拟机,修改虚拟机的网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
增加或修改如下几个参数
BOOTPROTO=static # 修改本行,默认值为dhcp,改为static
ONBOOT=yes # 修改本行,默认值为no,改为yes
IPADDR=192.168.250.132 # 新增本行
NETMASK=255.255.255.0 # 新增本行
GATEWAY=192.168.250.2 # 新增本行,这是前面vnet2的gateway ip
DNS1=8.8.8.8
DNS2=114.114.114.114 # 新增本行
最终结果如下图所示:


6.重启虚拟机网卡或重启虚机

重启网卡(推荐)

systemctl restart network

重启虚拟机(没必要)

reboot

7.验证
在linux虚拟机:ping 192.168.0.100 #MacOS主机ip
在linux虚拟机:ping baidu.com
在MacOS主机:ping 192.168.250.132 #我们为刚才的虚拟机配置的静态IP
如下图所示:

到此就完成了VMware Fusion虚拟机NAT模式配置静态IP了。

Centos7上搭建docker私有仓库

前置:本人安装docker私有仓库的服务器IP地址为192.168.250.139 解决证书安全注册时用到该IP,所以同学们自己确认好自己服务器的IP地址,不要照搬。

1.从官网仓库拉取registry镜像
docker pull registry:latest #注意:这里我拉取的最新版本,如果生产环境,建议使用稳定版本

2.启动私有仓库容器
docker run -e REGISTRY_STORAGE_DELETE = true \
-itd -p 5000:5000 –name = registry \
-v /opt/data/registry:/var/lib/registry \
registry:latest

注意:

-e REGISTRY_STORAGE_DELETE = true 是用来启用docker仓库删除权限

在这里插入图片描述

3.解判局域网docker私有仓库SSL证书问题
由于局域网没有必要设置ssl证书,但官网新版本的又几须要证书才能正常运行,因此需要手工设置/etc/docker/daemon.json文件,在该文件中添加insecure-registry参数

执行命令: vim /etc/docker/daemon.json
{“insecure-registry”:[“192.168.250.139:5000”]}

注意:上面的IP是服务器的IP地址

然后重启docker服务使其生效
systemctl restart docker

4.验证测试
验证最效的方法创建自己的镜像,把镜像push到私有仓库上,然后在本机或别的服务器拉取刚才的镜像
现在从官网上拉取nginx镜像测试,同学们可以使用其它镜像,没有限制
docker pull nginx
docker tag docker.io/nginx 192.168.250.139:5000/nginx
docker push 192.168.250.139:5000/nginx

注意:上面的IP地址要更换成自己服务器的IP地址

在这里插入图片描述

下面查看下挂载目录下有没有推上来的镜像
ls /opt/data/registry/docker/registry/v2/repositories

5.在本机或别的服务器拉取刚才镜像
docker pull 192.168.250.139:5000/nginx

Centos7上安装部署frp内网穿透工具

一、安装

一、安装

1、源码地址

https://github.com/fatedier/frp

2、中文文档

https://github.com/fatedier/frp/blob/master/README_zh.md

3、安装部署

#所有发布版本下载地址

https://github.com/fatedier/frp/releases

#安装命令(服务端和客户端都执行)

wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz

tar -xvf frp_0.29.0_linux_amd64.tar.gz -C /usr/local/

cd /usr/local/

mv frp_0.29.0_linux_amd64 frp

cd frp

#在服务端删除frpc和frpc.ini两个文件

rm -f frpc frpc.ini

#在服务端删除frps和frps.ini两个文件

rm -f frps frps.ini

二、配置文件

1、客户端修改frps.ini文件

#添加内容如下所示

[common]

bind_addr = 0.0.0.0

bind_port = 10000

bind_udp_port = 10001

vhost_http_port = 10003

vhost_https_port = 443

#kcp_bind_port = 10000

token = Abc#123&2wsx  #和客户端token一致辞

authentication_timeout = 900

max_pool_count = 20

##日志记录

log_file = /var/log/frps.log

log_level = info

log_max_days = 3

##端口白名单

allow_ports = 10001,10048,10058,10076,10078,11110,11222,11112,11122,11123

##dashboard滥测面板

dashboard_port = 10002

dashboard_user = admin

dashboard_pwd = admin#123@zbc

2、客户端修改frpc.ini文件

#添加内容如下所示

[common]

#server_addr = 101.65.43.134

server_addr = asdf.test.com   #此域名解释到服务端

server_port = 10000

#protocol = kcp

##指定需要使用的协议类型,默认类型为 TCP

tls_enable = true

token = Abc#123&2wsx  #和服务端token一致辞

pool_count = 1

##日志记录

log_file = /var/log/frpc.log

log_level = info

log_max_days = 3

##配置客户端热加载

admin_addr = 127.0.0.1

admin_port = 7400

admin_user = admin

admin_pwd = admin

##织语客户端外网连接

[range:ccwork_tcp]

type = tcp

local_ip = 192.168.63.140

local_port = 10001,10048,10058,10076,10078,11110,11222,11112,11122,11123

remote_port = 10001,10048,10058,10076,10078,11110,11222,11112,11122,11123

use_encryption = true

use_compression = true

三、设置成systemd服务

1、服务端frps服务

vi /etc/systemd/system/frps.service

#添加内容如下所示

[Unit]

Description=FRP Server Daemon

[Service]

Type=simple

ExecStartPre=-/sbin/setcap cap_net_bind_service=+ep /usr/local/frp/frps

ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini

Restart=always

RestartSec=20s

User=nobody

PermissionsStartOnly=true

[Install]

WantedBy=multi-user.target

2、客户端frpc服务

vi /etc/systemd/system/frpc.service

#添加内容如下所示

[Unit]

Description=FRP Client Daemon

[Service]

Type=simple

ExecStartPre=-/sbin/setcap cap_net_bind_service=+ep /usr/local/frp/frpc

ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini

Restart=always

RestartSec=20s

User=nobody

PermissionsStartOnly=true

[Install]

WantedBy=multi-user.target

3、管理服务

#服务端

systemctl daemon-reload

systemctl enable frps

systemctl start frps

systemctl restart frps

systemctl stop frps

systemctl status frps

#客户端

systemctl daemon-reload

systemctl enable frpc

systemctl start frpc

systemctl restart frpc

systemctl stop frpc

systemctl status frpc

四、云厂商防火墙开放下列端口

443,10000-10003,10001,10048,10058,10076,10078,11110,11222,11112,11122,11123

五、服务端主机本地开放端口(或者关闭本地防火墙)

443,10000-10003,10001,10048,10058,10076,10078,11110,11222,11112,11122,11123

#执行命令

systemctl start firewalld

systemctl enable firewalld

firewall-cmd –zone=public –add-port=443/tcp –permanent

firewall-cmd –zone=public –add-port=10000-10003/tcp –permanent

firewall-cmd –zone=public –add-port=10048/tcp –permanent

firewall-cmd –zone=public –add-port=10058/tcp –permanent

firewall-cmd –zone=public –add-port=10076/tcp –permanent

firewall-cmd –zone=public –add-port=10078/tcp –permanent

firewall-cmd –zone=public –add-port=11110/tcp –permanent

firewall-cmd –zone=public –add-port=11222/tcp –permanent

firewall-cmd –zone=public –add-port=11112/tcp –permanent

firewall-cmd –zone=public –add-port=11122/tcp –permanent

firewall-cmd –zone=public –add-port=11123/tcp –permanent

firewall-cmd –reload

Centos7上yum升级nginx或安装最新版本nginx

1、查看是否为最新版

1、查看是否为最新版

yum info nginx

2、设置nginx.repo文件

vi /etc/yum.repos.d/修改nginx.repo

#添加内容如下所示

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/7/$basearch/

gpgcheck=0

enabled=1

3、升级或安装

yum update nginx

# 或

yum install -y nginx

4、若nginx模块版本之间的冲突,例如下列情况,则卸载模块

如果碰到 file /usr/lib64/nginx/modules/ngx_http_geoip_module.so from install of nginx-module-geoip-1:1.16.0-1.el7.ngx.x86_64 conflicts with file from package nginx-mod-http-geoip-1:1.12.2-3.el7.x86_64 这类模块错误。

yum remove nginx-mod*

5、重新安装模块

yum install nginx-module-*

6、重启nginx服务

systemctl restart nginx

若之前是用nginx启动的,先执行

pkill nginx

Vmware workstation虚拟机导入到esxi虚拟机

1、先在Vmware workstation工作站上导出虚拟机为vof文件

1、先在Vmware workstation工作站上导出虚拟机为vof文件

导出前,要先关闭虚拟机,然后右键–》文件–》导出为OVF(E)…

导出完成后,得到4个文件,如下图所示,其中红色圈起的是需要用到的文件

2、打开exsi管理web后台,需要上传两个文件,扩展名为ovf和vmdk的文件,然后下图操作即可,最后启动电源开机。

Nginx使用rewrite根域名重定向到www二级域名

将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址(例如:将csdn.com显性转发到www.csdn.com后,访问csdn.com时,地址栏显示的地址为:www.csdn.com)。

将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址(例如:将csdn.com显性转发到www.csdn.com后,访问csdn.com时,地址栏显示的地址为:www.csdn.com)。

分两种情况:

第一种情况是前后台域名分开的情况,即前后台都使用80默认端口

例如:前端域名使用根域名a.com和 www.a.com  ;后端域名使用根域名b.com和 www.b.com 

这种情况,用户访问a.com 重定向到 www.a.com 或 用户访问b.com 重定向到 www.b.com 可以使用下面配置nginx

1、前端配置

1.1、所有非www二级域名都跳转到www.a.com下去。

#所有非www.a.com开始的域名,都重定向到www.a.com下去。

if ($http_host !~ "^www.a.com$") {

    rewrite  ^(.*)    http://www.a.com$1 permanent;

}

1.2、一级域名跳转到www二级域名下面去。

#只是一级域名“a.com” 跳转到www.a.com去。

if ($http_host ~ "^a.com$") {

    rewrite  ^(.*)    http://www.a.com$1 permanent;

}

2、后端配置

2.1、所有非www二级域名都跳转到www.b.com下去。

#所有非www.b.com开始的域名,都重定向到www.b.com下去。

if ($http_host !~ "^www.b.com$") {

    rewrite  ^(.*)    http://www.b.com$1 permanent;

}

2.2、一级域名跳转到www二级域名下面去。

#只是一级域名“b.com” 跳转到www.b.com去。

if ($http_host ~ "^b.com$") {

    rewrite  ^(.*)    http://www.b.com$1 permanent;

}

第二种情况是前后台都使用同一个根域名和二级域名,即前端使用80默认端口,后端使非80默认端,如后端使用8088端口

例如:前端的后端同时使用根域名a.com和二级域名www.a.com

方案是先判断域名同时判断是服务端使用的端口来确定重写向到前端还是后端

1、前端配置

1.1、所有非www二级域名都跳转到www.a.com下去。

 set $flag 0;

 if ($http_host !~ "^www.a.com$") {

     set $flag "${flag}1";

 }

 if ($SERVER_PORT  ~ "80") {

        set $flag "${flag}2";

  }

  if ($flag = "012") {

        rewrite  ^(.*)  http://www.a.com$1 permanent;

  }

1.2、一级域名跳转到www二级域名下面去。

  #根域名重定向到二级域名www

    set $flag 0;

    if ($host ~ "^a.com$") {

       set $flag "${flag}1";

    }

    if ($SERVER_PORT  ~ "80") {

        set $flag "${flag}2";

    }

    if ($flag = "012") {

        rewrite  ^(.*)  http://www.a.com$1 permanent;

    }

2、后端配置

1.2、一级域名跳转到www二级域名下面去。

1.1、所有非www二级域名都跳转到www.a.com下去。

 set $flag 0;

 if ($http_host !~ "^www.a.com$") {

     set $flag "${flag}1";

 }

 if ($SERVER_PORT  ~ "8099") {

        set $flag "${flag}2";

  }

  if ($flag = "012") {

      rewrite  ^(.*)  http://www.a.com:8099$1 permanent;

  }

#根域名重定向到二级域名www

    set $flag 0;

    if ($host ~ "^acom$") {

       set $flag "${flag}1";

    }

    if ($SERVER_PORT  ~ "8099") {

        set $flag "${flag}2";

    }

    if ($flag = "012") {

        rewrite  ^(.*)  http://www.a.com:8099$1 permanent;

    }

Esxi6.7上创建Windows2016虚拟机

一.登录esxi6.7管理后台

一.登录esxi6.7管理后台

https://192.168.4.212/ui/#/login

账号:root

密码:123456

二.创建虚拟机

1.选择“创建注册虚拟机”

2.“选择创建类型”–》“创建新虚拟机”–》“下一页”

3.给虚拟机命名,并选择操作系统及版本

4.选择存储位置

5.根据需要调整虚拟机的硬件配置

6.完成创建虚拟机

7.开始安装windows2016

注册序列号:DBNBR-9R8Q8-PPPT7-8J64C-MP3D4

8.选择 Windows Server 2016 Datacenter (桌面体验)版本,要不然看不到桌面环境

浏览器和服务器 对post get请求 url长度限制

1. GET  URL长度限制

在Http1.1协议中并没有提出针对URL的长度进行限制,RFC协议里面是这样描述的,HTTP协议并不对URI的长度做任何的限制,服务器端 必须能够处理任何它们所提供服务多能接受的URI,并且能够处理无限长度的URI,如果服务器不能处理过长的URI,那么应该返回414状态码。

虽然Http协议规定了,但是Web服务器浏览器对URI都有自己的长度限制。

服务器的限制:我接触的最多的服务器类型就是Nginx和Tomcat,对于url的长度限制,它们都是通过控制http请求头的长度来进行限制 的,nginx的配置参数为large_client_header_buffers,tomcat的请求配置参数为 maxHttpHeaderSize,都是可以自己去进行设置。

client_header_buffer_size 512k;

large_client_header_buffers 7 512k;

浏览器的限制:每种浏览器也会对url的长度有所限制,下面是几种常见浏览器的url长度限制:(单位:字符)

  • IE : 2803
  • Firefox:65536
  • Chrome:8182
  • Safari:80000
  • Opera:190000

对于get请求,在url的长度限制范围之内,请求的参数个数没有限制。

2. Post数据的长度限制

Post数据的长度限制与url长度限制类似,也是在Http协议中没有规定长度限制,长度限制可以在服务器端配置最大http请求头长度的方式来实现。   nginix默认限制1M

可以选择在http{ }中设置:client_max_body_size   20m;

也可以选择在server{ }中设置:client_max_body_size   20m;

还可以选择在location{ }中设置:client_max_body_size   20m;

三者到区别是:http{} 中控制着所有nginx收到的请求。而报文大小限制设置在server{}中,则控制该server收到的请求报文大小,同理,如果配置在location中,则报文大小限制,只对匹配了location 路由规则的请求生效。

http{

#控制全局nginx所有请求报文大小

#client_max_body_size   20m;

server{

#控制该server的所有请求报文大小

#client_max_body_size   20m;

location a {}

location b{

#控制满足该路由规则的请求报文大小

#client_max_body_size   20m;

}

}server {

}

}

3. Cookie的长度限制

Cookie的长度限制分这么几个方面来总结。

(1) 浏览器所允许的每个域下的最大cookie数目,没有去自己测试,从网上找到的资料大概是这么个情况

  • IE :原先为20个,后来升级为50个
  • Firefox: 50个
  • Opera:30个
  • Chrome:180个
  • Safari:无限制

当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。当然无论怎样的策略,还是尽量不要让Cookie数目超过浏览器所允许的范围。

(2) 浏览器所允许的每个Cookie的最大长度

  • Firefox和Safari:4079字节
  • Opera:4096字节
  • IE:4095字节

(3) 服务器中Http请求头长度的限制。Cookie会被附在每次http请求头中传递给服务器,因此还会受到服务器请求头长度的影响。