使用python调用API添加主机import requests import json def postusmsource(Usmurl): #定义请求头 Usmheader = { 'Content-Type':'application/json', 'AccessToken' :'xxxxxxxxxxxxxxxxxxxxx', } #发起请求携带的参数 Hosts = { 'comment':'test',#此参数非必填 'departmentId':65, 'hostIp':'12.12.14.3', 'hostname':'test' } #转换为json格式的数据进行发送 Hosts = json.dumps(Hosts) Source = requests.post(url=Usmurl,headers=Usmheader,data=Hosts,verify=False) #查看下输出的状态码。若为201则表示添加成功 print(Source.status_code) if name == '__main__': # 定义API接口地址 Usmhosturl = 'https://IP/api/hosts' postusmsource(Usmhosturl)注意事项将IP替换成堡垒机对应的IP在用户-查看个人信息-API访问键获取AccessToken值
系统环境：CentOS Linux release 7.9.2009 (Core)卸载旧版本[root@ARL ~]# yum remove docker \ > docker-client \ > docker-client-latest \ > docker-common \ > docker-latest \ > docker-latest-logrotate \ > docker-logrotate \ > docker-engine 已加载插件：fastestmirror, langpacks 参数 docker 没有匹配 参数 docker-client 没有匹配 参数 docker-client-latest 没有匹配 参数 docker-common 没有匹配 参数 docker-latest 没有匹配 参数 docker-latest-logrotate 没有匹配 参数 docker-logrotate 没有匹配 参数 docker-engine 没有匹配 不删除任何软件包安装需要的安装包yum-utils[root@ARL ~]# yum install -y yum-utils 已加载插件：fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 软件包 yum-utils-1.1.31-54.el7_8.noarch 已安装并且是最新版本 无须任何处理设置镜像仓库地址使用阿里云镜像[root@ARL ~]# yum-config-manager \ > --add-repo \ > http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 已加载插件：fastestmirror, langpacks adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo repo saved to /etc/yum.repos.d/docker-ce.repo安装docker引擎更新yum软件包索引[root@ARL ~]# yum makecache fase 已加载插件：fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.ustc.edu.cn * extras: mirrors.ustc.edu.cn * updates: mirrors.aliyun.com docker-ce-stable | 3.5 kB 00:00:00 (1/4): docker-ce-stable/7/x86_64/filelists_db | 25 kB 00:00:01 (2/4): docker-ce-stable/7/x86_64/primary_db | 58 kB 00:00:00 (3/4): docker-ce-stable/7/x86_64/updateinfo | 55 B 00:00:01 (4/4): docker-ce-stable/7/x86_64/other_db | 118 kB 00:00:00 (1/4): updates/7/x86_64/other_db | 517 kB 00:00:00 (2/4): extras/7/x86_64/other_db | 137 kB 00:00:00 (3/4): extras/7/x86_64/filelists_db | 228 kB 00:00:00 (4/4): base/7/x86_64/other_db | 2.6 MB 00:00:00 元数据缓存已建立docker社区、ee企业版 ce为社区版 官方推荐使用ce版，默认安装最新的docker版本，也可以指定版本安装[root@ARL ~]# yum install docker-ce docker-ce-cli containerd.io 已加载插件：fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 正在解决依赖关系 --> 正在检查事务 ---> 软件包 containerd.io.x86_64.0.1.4.4-3.1.el7 将被 安装 --> 正在处理依赖关系 container-selinux >= 2:2.74，它被软件包 containerd.io-1.4.4-3.1.el7.x86_64 需要 ---> 软件包 docker-ce.x86_64.3.20.10.5-3.el7 将被 安装 --> 正在处理依赖关系 docker-ce-rootless-extras，它被软件包 3:docker-ce-20.10.5-3.el7.x86_64 需要 ---> 软件包 docker-ce-cli.x86_64.1.20.10.5-3.el7 将被 安装 --> 正在检查事务 ---> 软件包 container-selinux.noarch.2.2.119.2-1.911c772.el7_8 将被 安装 ---> 软件包 docker-ce-rootless-extras.x86_64.0.20.10.5-3.el7 将被 安装 --> 正在处理依赖关系 fuse-overlayfs >= 0.7，它被软件包 docker-ce-rootless-extras-20.10.5-3.el7.x86_64 需要 --> 正在处理依赖关系 slirp4netns >= 0.4，它被软件包 docker-ce-rootless-extras-20.10.5-3.el7.x86_64 需要 --> 正在检查事务 ---> 软件包 fuse-overlayfs.x86_64.0.0.7.2-6.el7_8 将被 安装 --> 正在处理依赖关系 libfuse3.so.3(FUSE_3.2)(64bit)，它被软件包 fuse-overlayfs-0.7.2-6.el7_8.x86_64 需要 --> 正在处理依赖关系 libfuse3.so.3(FUSE_3.0)(64bit)，它被软件包 fuse-overlayfs-0.7.2-6.el7_8.x86_64 需要 --> 正在处理依赖关系 libfuse3.so.3()(64bit)，它被软件包 fuse-overlayfs-0.7.2-6.el7_8.x86_64 需要 ---> 软件包 slirp4netns.x86_64.0.0.4.3-4.el7_8 将被 安装 --> 正在检查事务 ---> 软件包 fuse3-libs.x86_64.0.3.6.1-4.el7 将被 安装 --> 解决依赖关系完成 依赖关系解决 ========================================================================================================================================================================================================================================= Package 架构 版本 源 大小 ========================================================================================================================================================================================================================================= 正在安装: containerd.io x86_64 1.4.4-3.1.el7 docker-ce-stable 33 M docker-ce x86_64 3:20.10.5-3.el7 docker-ce-stable 27 M docker-ce-cli x86_64 1:20.10.5-3.el7 docker-ce-stable 33 M 为依赖而安装: container-selinux noarch 2:2.119.2-1.911c772.el7_8 extras 40 k docker-ce-rootless-extras x86_64 20.10.5-3.el7 docker-ce-stable 9.1 M fuse-overlayfs x86_64 0.7.2-6.el7_8 extras 54 k fuse3-libs x86_64 3.6.1-4.el7 extras 82 k slirp4netns x86_64 0.4.3-4.el7_8 extras 81 k 事务概要 ========================================================================================================================================================================================================================================= 安装 3 软件包 (+5 依赖软件包) 总下载量：102 M 安装大小：424 M Is this ok [y/d/N]: y Downloading packages: (1/8): container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm | 40 kB 00:00:00 warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-ce-20.10.5-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY======== ] 6.6 MB/s | 56 MB 00:00:07 ETA docker-ce-20.10.5-3.el7.x86_64.rpm 的公钥尚未安装 (2/8): docker-ce-20.10.5-3.el7.x86_64.rpm | 27 MB 00:00:09 (3/8): containerd.io-1.4.4-3.1.el7.x86_64.rpm | 33 MB 00:00:09 (4/8): fuse3-libs-3.6.1-4.el7.x86_64.rpm | 82 kB 00:00:00 (5/8): fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm | 54 kB 00:00:00 (6/8): slirp4netns-0.4.3-4.el7_8.x86_64.rpm | 81 kB 00:00:00 (7/8): docker-ce-rootless-extras-20.10.5-3.el7.x86_64.rpm | 9.1 MB 00:00:02 (8/8): docker-ce-cli-20.10.5-3.el7.x86_64.rpm | 33 MB 00:00:07 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 总计 5.9 MB/s | 102 MB 00:00:17 从 https://download.docker.com/linux/centos/gpg 检索密钥 导入 GPG key 0x621E9F35: 用户ID : "Docker Release (CE rpm) <docker@docker.com>" 指纹 : 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35 来自 : https://download.docker.com/linux/centos/gpg 是否继续？[y/N]：y Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安装 : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch 1/8 正在安装 : containerd.io-1.4.4-3.1.el7.x86_64 2/8 正在安装 : slirp4netns-0.4.3-4.el7_8.x86_64 3/8 正在安装 : fuse3-libs-3.6.1-4.el7.x86_64 4/8 正在安装 : fuse-overlayfs-0.7.2-6.el7_8.x86_64 5/8 正在安装 : 1:docker-ce-cli-20.10.5-3.el7.x86_64 6/8 正在安装 : docker-ce-rootless-extras-20.10.5-3.el7.x86_64 7/8 正在安装 : 3:docker-ce-20.10.5-3.el7.x86_64 8/8 验证中 : 1:docker-ce-cli-20.10.5-3.el7.x86_64 1/8 验证中 : fuse3-libs-3.6.1-4.el7.x86_64 2/8 验证中 : fuse-overlayfs-0.7.2-6.el7_8.x86_64 3/8 验证中 : slirp4netns-0.4.3-4.el7_8.x86_64 4/8 验证中 : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch 5/8 验证中 : 3:docker-ce-20.10.5-3.el7.x86_64 6/8 验证中 : docker-ce-rootless-extras-20.10.5-3.el7.x86_64 7/8 验证中 : containerd.io-1.4.4-3.1.el7.x86_64 8/8 已安装: containerd.io.x86_64 0:1.4.4-3.1.el7 docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-cli.x86_64 1:20.10.5-3.el7 作为依赖被安装: container-selinux.noarch 2:2.119.2-1.911c772.el7_8 docker-ce-rootless-extras.x86_64 0:20.10.5-3.el7 fuse-overlayfs.x86_64 0:0.7.2-6.el7_8 fuse3-libs.x86_64 0:3.6.1-4.el7 slirp4netns.x86_64 0:0.4.3-4.el7_8 完毕！运行docker[root@ARL ~]# systemctl start docker [root@ARL ~]# docker version Client: Docker Engine - Community Version: 20.10.5 API version: 1.41 Go version: go1.13.15 Git commit: 55c4c88 Built: Tue Mar 2 20:33:55 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.5 API version: 1.41 (minimum version 1.12) Go version: go1.13.15 Git commit: 363e9a8 Built: Tue Mar 2 20:32:17 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.4 GitCommit: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e runc: Version: 1.0.0-rc93 GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec docker-init: Version: 0.19.0 GitCommit: de40ad0
CentOS系统从最小化安装平滑升级到基础设施服务器安装
问题描述在项目中碰到CentOS系统为最小化安装，部署需要基础环境。解决办法准备和系统版本一致的镜像，将镜像上传到虚拟机的opt目录中将镜像配置为本地yum源创建挂载目录mkdir /media/CentOS7 挂载ISO文件mount -t iso9660 -o loop /opt/CentOS-7-x86_64-DVD-1511_7.2.iso /media/CentOS7/ 注意：如果想一直用本地yum源可以配置/etc/fstab，设置开机挂载配置yum源执行vi /etc/yum.repos.d/CentOS7-Localsource.repo打开repo文件，如果这一文件不存在则被创建按a 进入编辑模式输入以下内容：[local] name=local baseurl=file:///media/CentOS7 enabled=1 gpgcheck=0按ESC退出编辑，输入 :wq 再回车 保存后退出生成 本地yum 缓存 执行yum clean all(清除缓存)yum makecache(建立新缓存)yum grouplist看看可用的环境组里有没有Infrastructure Serveryum groupinstall "Infrastructure Server"yum grouplist 再次查看环境yum groupinstall "devetool" 安全开发工具
解决You have new mail in /var/spool/mail/root
问题描述：终端远程登陆后经常提示You have new mail in /var/spool/mail/root这个提示是LINUX会定时查看LINUX各种状态做汇总，每经过一段时间会把汇总的信息发送的root的邮箱里，以供有需之时查看。一般这种情况mail的内容就只是一些正常的系统信息或者是比较重要的错误报告。如果你安装了mutt的话直接用这个命令就可以查看mail的内容（用root登陆先），没有装的话用cat /var/spool/mail/root查看（用root登陆先）。解决方案：第一步：关闭提示[root@localhost ~]# echo "unset MAILCHECK">> /etc/profile [root@localhost ~]# source /etc/profile 第二步：查看[root@localhost ~]# ls -lth /var/spool/mail/ 第三步：清空[root@localhost ~]# cat /dev/null > /var/spool/mail/root
0x00 安装snmp服务通过yum安装snmp：[root@localhost ~]# yum -y install net-snmp net-snmp-utils 已加载插件：fastestmirror, langpacks Loading mirror speeds from cached hostfile epel/x86_64/metalink | 9.3 kB 00:00:00 * base: mirrors.aliyun.com * epel: hkg.mirror.rackspace.com * extras: mirrors.cn99.com * updates: mirrors.aliyun.com base | 3.6 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 正在解决依赖关系 --> 正在检查事务 ---> 软件包 net-snmp.x86_64.1.5.7.2-48.el7_8.1 将被 安装 --> 正在处理依赖关系 net-snmp-agent-libs = 1:5.7.2-48.el7_8.1，它被软件包 1:net-snmp-5.7.2-48.el7_8.1.x86_64 需要 --> 正在处理依赖关系 libnetsnmptrapd.so.31()(64bit)，它被软件包 1:net-snmp-5.7.2-48.el7_8.1.x86_64 需要 --> 正在处理依赖关系 libnetsnmpmibs.so.31()(64bit)，它被软件包 1:net-snmp-5.7.2-48.el7_8.1.x86_64 需要 --> 正在处理依赖关系 libnetsnmpagent.so.31()(64bit)，它被软件包 1:net-snmp-5.7.2-48.el7_8.1.x86_64 需要 ---> 软件包 net-snmp-utils.x86_64.1.5.7.2-48.el7_8.1 将被 安装 --> 正在检查事务 ---> 软件包 net-snmp-agent-libs.x86_64.1.5.7.2-48.el7_8.1 将被 安装 --> 解决依赖关系完成 依赖关系解决 ========================================================================================================================================================================================================================================= Package 架构 版本 源 大小 ========================================================================================================================================================================================================================================= 正在安装: net-snmp x86_64 1:5.7.2-48.el7_8.1 updates 332 k net-snmp-utils x86_64 1:5.7.2-48.el7_8.1 updates 200 k 为依赖而安装: net-snmp-agent-libs x86_64 1:5.7.2-48.el7_8.1 updates 707 k 事务概要 ========================================================================================================================================================================================================================================= 安装 2 软件包 (+1 依赖软件包) 总下载量：1.2 M 安装大小：3.3 M Downloading packages: (1/3): net-snmp-utils-5.7.2-48.el7_8.1.x86_64.rpm | 200 kB 00:00:00 (2/3): net-snmp-agent-libs-5.7.2-48.el7_8.1.x86_64.rpm | 707 kB 00:00:00 (3/3): net-snmp-5.7.2-48.el7_8.1.x86_64.rpm | 332 kB 00:00:00 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 总计 3.4 MB/s | 1.2 MB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安装 : 1:net-snmp-agent-libs-5.7.2-48.el7_8.1.x86_64 1/3 正在安装 : 1:net-snmp-5.7.2-48.el7_8.1.x86_64 2/3 正在安装 : 1:net-snmp-utils-5.7.2-48.el7_8.1.x86_64 3/3 验证中 : 1:net-snmp-agent-libs-5.7.2-48.el7_8.1.x86_64 1/3 验证中 : 1:net-snmp-5.7.2-48.el7_8.1.x86_64 2/3 验证中 : 1:net-snmp-utils-5.7.2-48.el7_8.1.x86_64 3/3 已安装: net-snmp.x86_64 1:5.7.2-48.el7_8.1 net-snmp-utils.x86_64 1:5.7.2-48.el7_8.1 作为依赖被安装: net-snmp-agent-libs.x86_64 1:5.7.2-48.el7_8.1 完毕！查看snmp版本：[root@localhost ~]# snmpd -v NET-SNMP version: 5.7.2 Web: http://www.net-snmp.org/ Email: net-snmp-coders@lists.sourceforge.net启动snmp服务并添加启动项centos6[root@localhost ~]# service snmpd start [root@localhost ~]# chkconfig snmpd on centos7[root@localhost ~]# systemctl start snmpd [root@localhost ~]# systemctl enable snmpd 0x01 配置snmp更改snmp配置文件[root@localhost ~]# vi /etc/snmp/snmpd.conf ############################################################################### # # snmpd.conf: # An example configuration file for configuring the ucd-snmp snmpd agent. # ############################################################################### # # This file is intended to only be as a starting point. Many more # configuration directives exist than are mentioned in this file. For # full details, see the snmpd.conf(5) manual page. # # All lines beginning with a '#' are comments and are intended for you # to read. All other lines are configuration commands for the agent. ############################################################################### # Access Control ############################################################################### # As shipped, the snmpd demon will only respond to queries on the # system mib group until this file is replaced or modified for # security purposes. Examples are shown below about how to increase the # level of access. # By far, the most common question I get about the agent is "why won't # it work?", when really it should be "how do I configure the agent to # allow me to access it?" # # By default, the agent responds to the "public" community for read # only access, if run out of the box without any configuration file in # place. The following examples show you other ways of configuring # the agent so that you can change the community names, and give # yourself write access to the mib tree as well. # # For more information, read the FAQ as well as the snmpd.conf(5) # manual page. #### # First, map the community name "public" into a "security name" # sec.name source community com2sec notConfigUser default public #### # Second, map the security name into a group name: # groupName securityModel securityName group notConfigGroup v1 notConfigUser group notConfigGroup v2c notConfigUser #### # Third, create a view for us to let the group have rights to: # Make at least snmpwalk -v 1 localhost -c public system fast again. # name incl/excl subtree mask(optional) view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.25.1.1 #### # Finally, grant the group read-only access to the systemview view. # group context sec.model sec.level prefix read write notif access notConfigGroup "" any noauth exact systemview none none # ----------------------------------------------------------------------------- # Here is a commented out example configuration that allows less # restrictive access. # YOU SHOULD CHANGE THE "COMMUNITY" TOKEN BELOW TO A NEW KEYWORD ONLY # KNOWN AT YOUR SITE. YOU *MUST* CHANGE THE NETWORK TOKEN BELOW TO # SOMETHING REFLECTING YOUR LOCAL NETWORK ADDRESS SPACE. ## sec.name source community #com2sec local localhost COMMUNITY #com2sec mynetwork NETWORK/24 COMMUNITY ## group.name sec.model sec.name #group MyRWGroup any local #group MyROGroup any mynetwork # #group MyRWGroup any otherv3user #... ## incl/excl subtree mask #view all included .1 80 ## -or just the mib2 tree- #view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc ## context sec.model sec.level prefix read write notif #access MyROGroup "" any noauth 0 all none none #access MyRWGroup "" any noauth 0 all all all ############################################################################### # Sample configuration to make net-snmpd RFC 1213. # Unfortunately v1 and v2c don't allow any user based authentification, so # opening up the default config is not an option from a security point. # # WARNING: If you uncomment the following lines you allow write access to your # snmpd daemon from any source! To avoid this use different names for your # community or split out the write access to a different community and # restrict it to your local network. # Also remember to comment the syslocation and syscontact parameters later as # otherwise they are still read only (see FAQ for net-snmp). # # First, map the community name "public" into a "security name" # sec.name source community #com2sec notConfigUser default public # Second, map the security name into a group name: # groupName securityModel securityName #group notConfigGroup v1 notConfigUser #group notConfigGroup v2c notConfigUser # Third, create a view for us to let the group have rights to: # Open up the whole tree for ro, make the RFC 1213 required ones rw. # name incl/excl subtree mask(optional) #view roview included .1 #view rwview included system.sysContact #view rwview included system.sysName #view rwview included system.sysLocation #view rwview included interfaces.ifTable.ifEntry.ifAdminStatus #view rwview included at.atTable.atEntry.atPhysAddress #view rwview included at.atTable.atEntry.atNetAddress #view rwview included ip.ipForwarding #view rwview included ip.ipDefaultTTL #view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteDest #view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteIfIndex #view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMetric1 #view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMetric2 #view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMetric3 #view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMetric4 #view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteType #view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteAge #view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMask #view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMetric5 #view rwview included ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaIfIndex #view rwview included ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaPhysAddress #view rwview included ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaNetAddress #view rwview included ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaType #view rwview included tcp.tcpConnTable.tcpConnEntry.tcpConnState #view rwview included egp.egpNeighTable.egpNeighEntry.egpNeighEventTrigger #view rwview included snmp.snmpEnableAuthenTraps # Finally, grant the group read-only access to the systemview view. # group context sec.model sec.level prefix read write notif #access notConfigGroup "" any noauth exact roview rwview none ############################################################################### # System contact information # # It is also possible to set the sysContact and sysLocation system # variables through the snmpd.conf file: syslocation Unknown (edit /etc/snmp/snmpd.conf) syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf) # Example output of snmpwalk: # % snmpwalk -v 1 localhost -c public system # system.sysDescr.0 = "SunOS name sun4c" # system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.sunos4 # system.sysUpTime.0 = Timeticks: (595637548) 68 days, 22:32:55 # system.sysContact.0 = "Me <me@somewhere.org>" # system.sysName.0 = "name" # system.sysLocation.0 = "Right here, right now." # system.sysServices.0 = 72 ############################################################################### # Logging # # We do not want annoying "Connection from UDP: " messages in syslog. # If the following option is commented out, snmpd will print each incoming # connection, which can be useful for debugging. dontLogTCPWrappersConnects yes # ----------------------------------------------------------------------------- ############################################################################### # Process checks. # # The following are examples of how to use the agent to check for # processes running on the host. The syntax looks something like: # # proc NAME [MAX=0] [MIN=0] # # NAME: the name of the process to check for. It must match # exactly (ie, http will not find httpd processes). # MAX: the maximum number allowed to be running. Defaults to 0. # MIN: the minimum number to be running. Defaults to 0. # # Examples (commented out by default): # # Make sure mountd is running #proc mountd # Make sure there are no more than 4 ntalkds running, but 0 is ok too. #proc ntalkd 4 # Make sure at least one sendmail, but less than or equal to 10 are running. #proc sendmail 10 1 # A snmpwalk of the process mib tree would look something like this: # # % snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.2 # enterprises.ucdavis.procTable.prEntry.prIndex.1 = 1 # enterprises.ucdavis.procTable.prEntry.prIndex.2 = 2 # enterprises.ucdavis.procTable.prEntry.prIndex.3 = 3 # enterprises.ucdavis.procTable.prEntry.prNames.1 = "mountd" # enterprises.ucdavis.procTable.prEntry.prNames.2 = "ntalkd" # enterprises.ucdavis.procTable.prEntry.prNames.3 = "sendmail" # enterprises.ucdavis.procTable.prEntry.prMin.1 = 0 # enterprises.ucdavis.procTable.prEntry.prMin.2 = 0 # enterprises.ucdavis.procTable.prEntry.prMin.3 = 1 # enterprises.ucdavis.procTable.prEntry.prMax.1 = 0 # enterprises.ucdavis.procTable.prEntry.prMax.2 = 4 # enterprises.ucdavis.procTable.prEntry.prMax.3 = 10 # enterprises.ucdavis.procTable.prEntry.prCount.1 = 0 # enterprises.ucdavis.procTable.prEntry.prCount.2 = 0 # enterprises.ucdavis.procTable.prEntry.prCount.3 = 1 # enterprises.ucdavis.procTable.prEntry.prErrorFlag.1 = 1 # enterprises.ucdavis.procTable.prEntry.prErrorFlag.2 = 0 # enterprises.ucdavis.procTable.prEntry.prErrorFlag.3 = 0 # enterprises.ucdavis.procTable.prEntry.prErrMessage.1 = "No mountd process running." # enterprises.ucdavis.procTable.prEntry.prErrMessage.2 = "" # enterprises.ucdavis.procTable.prEntry.prErrMessage.3 = "" # enterprises.ucdavis.procTable.prEntry.prErrFix.1 = 0 # enterprises.ucdavis.procTable.prEntry.prErrFix.2 = 0 # enterprises.ucdavis.procTable.prEntry.prErrFix.3 = 0 # # Note that the errorFlag for mountd is set to 1 because one is not # running (in this case an rpc.mountd is, but thats not good enough), # and the ErrMessage tells you what's wrong. The configuration # imposed in the snmpd.conf file is also shown. # # Special Case: When the min and max numbers are both 0, it assumes # you want a max of infinity and a min of 1. # # ----------------------------------------------------------------------------- ############################################################################### # Executables/scripts # # # You can also have programs run by the agent that return a single # line of output and an exit code. Here are two examples. # # exec NAME PROGRAM [ARGS ...] # # NAME: A generic name. The name must be unique for each exec statement. # PROGRAM: The program to run. Include the path! # ARGS: optional arguments to be passed to the program # a simple hello world #exec echotest /bin/echo hello world # Run a shell script containing: # # #!/bin/sh # echo hello world # echo hi there # exit 35 # # Note: this has been specifically commented out to prevent # accidental security holes due to someone else on your system writing # a /tmp/shtest before you do. Uncomment to use it. # #exec shelltest /bin/sh /tmp/shtest # Then, # % snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.8 # enterprises.ucdavis.extTable.extEntry.extIndex.1 = 1 # enterprises.ucdavis.extTable.extEntry.extIndex.2 = 2 # enterprises.ucdavis.extTable.extEntry.extNames.1 = "echotest" # enterprises.ucdavis.extTable.extEntry.extNames.2 = "shelltest" # enterprises.ucdavis.extTable.extEntry.extCommand.1 = "/bin/echo hello world" # enterprises.ucdavis.extTable.extEntry.extCommand.2 = "/bin/sh /tmp/shtest" # enterprises.ucdavis.extTable.extEntry.extResult.1 = 0 # enterprises.ucdavis.extTable.extEntry.extResult.2 = 35 # enterprises.ucdavis.extTable.extEntry.extOutput.1 = "hello world." # enterprises.ucdavis.extTable.extEntry.extOutput.2 = "hello world." # enterprises.ucdavis.extTable.extEntry.extErrFix.1 = 0 # enterprises.ucdavis.extTable.extEntry.extErrFix.2 = 0 # Note that the second line of the /tmp/shtest shell script is cut # off. Also note that the exit status of 35 was returned. # ----------------------------------------------------------------------------- ############################################################################### # disk checks # # The agent can check the amount of available disk space, and make # sure it is above a set limit. # disk PATH [MIN=100000] # # PATH: mount path to the disk in question. # MIN: Disks with space below this value will have the Mib's errorFlag set. # Default value = 100000. # Check the / partition and make sure it contains at least 10 megs. #disk / 10000 # % snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.9 # enterprises.ucdavis.diskTable.dskEntry.diskIndex.1 = 0 # enterprises.ucdavis.diskTable.dskEntry.diskPath.1 = "/" Hex: 2F # enterprises.ucdavis.diskTable.dskEntry.diskDevice.1 = "/dev/dsk/c201d6s0" # enterprises.ucdavis.diskTable.dskEntry.diskMinimum.1 = 10000 # enterprises.ucdavis.diskTable.dskEntry.diskTotal.1 = 837130 # enterprises.ucdavis.diskTable.dskEntry.diskAvail.1 = 316325 # enterprises.ucdavis.diskTable.dskEntry.diskUsed.1 = 437092 # enterprises.ucdavis.diskTable.dskEntry.diskPercent.1 = 58 # enterprises.ucdavis.diskTable.dskEntry.diskErrorFlag.1 = 0 # enterprises.ucdavis.diskTable.dskEntry.diskErrorMsg.1 = "" # ----------------------------------------------------------------------------- ############################################################################### # load average checks # # load [1MAX=12.0] [5MAX=12.0] [15MAX=12.0] # # 1MAX: If the 1 minute load average is above this limit at query # time, the errorFlag will be set. # 5MAX: Similar, but for 5 min average. # 15MAX: Similar, but for 15 min average. # Check for loads: #load 12 14 14 # % snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.10 # enterprises.ucdavis.loadTable.laEntry.loadaveIndex.1 = 1 # enterprises.ucdavis.loadTable.laEntry.loadaveIndex.2 = 2 # enterprises.ucdavis.loadTable.laEntry.loadaveIndex.3 = 3 # enterprises.ucdavis.loadTable.laEntry.loadaveNames.1 = "Load-1" # enterprises.ucdavis.loadTable.laEntry.loadaveNames.2 = "Load-5" # enterprises.ucdavis.loadTable.laEntry.loadaveNames.3 = "Load-15" # enterprises.ucdavis.loadTable.laEntry.loadaveLoad.1 = "0.49" Hex: 30 2E 34 39 # enterprises.ucdavis.loadTable.laEntry.loadaveLoad.2 = "0.31" Hex: 30 2E 33 31 # enterprises.ucdavis.loadTable.laEntry.loadaveLoad.3 = "0.26" Hex: 30 2E 32 36 # enterprises.ucdavis.loadTable.laEntry.loadaveConfig.1 = "12.00" # enterprises.ucdavis.loadTable.laEntry.loadaveConfig.2 = "14.00" # enterprises.ucdavis.loadTable.laEntry.loadaveConfig.3 = "14.00" # enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.1 = 0 # enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.2 = 0 # enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.3 = 0 # enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.1 = "" # enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.2 = "" # enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.3 = "" # ----------------------------------------------------------------------------- ############################################################################### # Extensible sections. # # This alleviates the multiple line output problem found in the # previous executable mib by placing each mib in its own mib table: # Run a shell script containing: # # #!/bin/sh # echo hello world # echo hi there # exit 35 # # Note: this has been specifically commented out to prevent # accidental security holes due to someone else on your system writing # a /tmp/shtest before you do. Uncomment to use it. # # exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest # % snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.50 # enterprises.ucdavis.50.1.1 = 1 # enterprises.ucdavis.50.2.1 = "shelltest" # enterprises.ucdavis.50.3.1 = "/bin/sh /tmp/shtest" # enterprises.ucdavis.50.100.1 = 35 # enterprises.ucdavis.50.101.1 = "hello world." # enterprises.ucdavis.50.101.2 = "hi there." # enterprises.ucdavis.50.102.1 = 0 # Now the Output has grown to two lines, and we can see the 'hi # there.' output as the second line from our shell script. # # Note that you must alter the mib.txt file to be correct if you want # the .50.* outputs above to change to reasonable text descriptions. # Other ideas: # # exec .1.3.6.1.4.1.2021.51 ps /bin/ps # exec .1.3.6.1.4.1.2021.52 top /usr/local/bin/top # exec .1.3.6.1.4.1.2021.53 mailq /usr/bin/mailq # ----------------------------------------------------------------------------- ############################################################################### # Pass through control. # # Usage: # pass MIBOID EXEC-COMMAND # # This will pass total control of the mib underneath the MIBOID # portion of the mib to the EXEC-COMMAND. # # Note: You'll have to change the path of the passtest script to your # source directory or install it in the given location. # # Example: (see the script for details) # (commented out here since it requires that you place the # script in the right location. (its not installed by default)) # pass .1.3.6.1.4.1.2021.255 /bin/sh /usr/local/local/passtest # % snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.255 # enterprises.ucdavis.255.1 = "life the universe and everything" # enterprises.ucdavis.255.2.1 = 42 # enterprises.ucdavis.255.2.2 = OID: 42.42.42 # enterprises.ucdavis.255.3 = Timeticks: (363136200) 42 days, 0:42:42 # enterprises.ucdavis.255.4 = IpAddress: 127.0.0.1 # enterprises.ucdavis.255.5 = 42 # enterprises.ucdavis.255.6 = Gauge: 42 # # % snmpget -v 1 localhost public .1.3.6.1.4.1.2021.255.5 # enterprises.ucdavis.255.5 = 42 # # % snmpset -v 1 localhost public .1.3.6.1.4.1.2021.255.1 s "New string" # enterprises.ucdavis.255.1 = "New string" # # For specific usage information, see the man/snmpd.conf.5 manual page # as well as the local/passtest script used in the above example. ############################################################################### # Further Information # # See the snmpd.conf manual page, and the output of "snmpd -H".找到以下字段# sec.name source community com2sec notConfigUser default public将source更改为允许通信的ip，public更改为自己想要的通信团体名，默认为public如com2sec notConfigUser 192.168.0.1 test找到以下字段# Finally, grant the group read-only access to the systemview view. # group context sec.model sec.level prefix read write notif #access notConfigGroup "" any noauth exact roview rwview none添加access notConfigGroup "" any noauth exact all none none为只读权限找到以下字段# Make at least snmpwalk -v 1 localhost -c public system fast again. # name incl/excl subtree mask(optional) view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.25.1.1添加view systemview included .1为返回所有监控信息重启snmp服务[root@localhost ~]# systemctl restart snmpd 0x02 添加防火墙端口[root@localhost ~]# firewall-cmd --add-port=161/udp --permanent --zone=public success [root@localhost ~]# firewall-cmd --reload success [root@localhost ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens192 sources: services: dhcpv6-client ssh ports: 161/udp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: 添加完防火墙后可用snmp相关工具进行获取snmp信息的测试snmpwalk -v 2c -c public 127.0.0.10x03 问题补充在某台安装snmp过程中碰到如下报错：[root@localhost ~]# yum -y install net-snmp net-snmp-utils Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package net-snmp.x86_64 1:5.7.2-32.el7 will be installed --> Processing Dependency: net-snmp-libs = 1:5.7.2-32.el7 for package: 1:net-snmp-5.7.2-32.el7.x86_64 --> Processing Dependency: net-snmp-agent-libs = 1:5.7.2-32.el7 for package: 1:net-snmp-5.7.2-32.el7.x86_64 --> Processing Dependency: perl(Data::Dumper) for package: 1:net-snmp-5.7.2-32.el7.x86_64 --> Processing Dependency: libnetsnmptrapd.so.31()(64bit) for package: 1:net-snmp-5.7.2-32.el7.x86_64 --> Processing Dependency: libnetsnmpmibs.so.31()(64bit) for package: 1:net-snmp-5.7.2-32.el7.x86_64 --> Processing Dependency: libnetsnmpagent.so.31()(64bit) for package: 1:net-snmp-5.7.2-32.el7.x86_64 ---> Package net-snmp-utils.x86_64 1:5.7.2-32.el7 will be installed --> Processing Dependency: net-snmp-libs = 1:5.7.2-32.el7 for package: 1:net-snmp-utils-5.7.2-32.el7.x86_64 --> Running transaction check ---> Package net-snmp.x86_64 1:5.7.2-32.el7 will be installed --> Processing Dependency: net-snmp-libs = 1:5.7.2-32.el7 for package: 1:net-snmp-5.7.2-32.el7.x86_64 ---> Package net-snmp-agent-libs.x86_64 1:5.7.2-32.el7 will be installed --> Processing Dependency: net-snmp-libs = 1:5.7.2-32.el7 for package: 1:net-snmp-agent-libs-5.7.2-32.el7.x86_64 ---> Package net-snmp-utils.x86_64 1:5.7.2-32.el7 will be installed --> Processing Dependency: net-snmp-libs = 1:5.7.2-32.el7 for package: 1:net-snmp-utils-5.7.2-32.el7.x86_64 ---> Package perl-Data-Dumper.x86_64 0:2.145-3.el7 will be installed --> Finished Dependency Resolution Error: Package: 1:net-snmp-utils-5.7.2-32.el7.x86_64 (CentOS7.5) Requires: net-snmp-libs = 1:5.7.2-32.el7 Installed: 1:net-snmp-libs-5.7.2-48.el7_8.1.x86_64 (@updates) net-snmp-libs = 1:5.7.2-48.el7_8.1 Available: 1:net-snmp-libs-5.7.2-32.el7.x86_64 (CentOS7.5) net-snmp-libs = 1:5.7.2-32.el7 Error: Package: 1:net-snmp-agent-libs-5.7.2-32.el7.x86_64 (CentOS7.5) Requires: net-snmp-libs = 1:5.7.2-32.el7 Installed: 1:net-snmp-libs-5.7.2-48.el7_8.1.x86_64 (@updates) net-snmp-libs = 1:5.7.2-48.el7_8.1 Available: 1:net-snmp-libs-5.7.2-32.el7.x86_64 (CentOS7.5) net-snmp-libs = 1:5.7.2-32.el7 Error: Package: 1:net-snmp-5.7.2-32.el7.x86_64 (CentOS7.5) Requires: net-snmp-libs = 1:5.7.2-32.el7 Installed: 1:net-snmp-libs-5.7.2-48.el7_8.1.x86_64 (@updates) net-snmp-libs = 1:5.7.2-48.el7_8.1 Available: 1:net-snmp-libs-5.7.2-32.el7.x86_64 (CentOS7.5) net-snmp-libs = 1:5.7.2-32.el7 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest将已安装的旧包：net-snmp-libs = 1:5.7.2-48.el7_8.1 net-snmp-libs = 1:5.7.2-48.el7_8.1 net-snmp-libs = 1:5.7.2-48.el7_8.1remove后即可重新正常安装
centos6修改hostname#查看当前的hostnmae [root@localhost ~]# hostname localhost #编辑network文件修改hostname行（重启生效） [root@localhost ~]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=test #设置当前的hostname(立即生效） [root@localhost ~]# hostname test # 编辑hosts文件，给127.0.0.1添加hostname [root@localhost ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 test ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6centos7修改hostname[root@localhost ~]# hostnamectl set-hostname test #编辑下hosts文件， 给127.0.0.1添加hostname [root@localhost ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 test ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
查看服务器时间发现与当前时间不符[root@localhost ~]# clock 2020年03月14日 星期六 17时10分15秒 -0.209044 秒安装ntpdate工具[root@localhost ~]# yum -y install ntp ntpdate设置系统时区为上海[root@localhost ~]# timedatectl set-timezone Asia/Shanghai设置系统时间与网络时间同步[root@localhost ~]# ntpdate 2.asia.pool.ntp.org 14 Mar 09:15:49 ntpdate[3160]: adjust time server 211.233.84.186 offset -0.010519 sec编辑时间配置文件每个2天同步一次[root@localhost ~]# vi /etc/crontab # * */48* * * ntpdate 2.asia.pool.ntp.org将系统时间写入硬件时间[root@localhost ~]# hwclock --systohc强制系统时间写入CMOS中防止重启失效[root@localhost ~]# hwclock -w设置硬件时间和系统时间一致并校准[root@localhost ~]# /sbin/hwclock --systohc
首先下载解压最新的 OpenSSL[root@localhost ~]# wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_1-stable.zip //https://www.openssl.org/source/openssl-1.1.1s.tar.gz [root@localhost ~]# unzip OpenSSL_1_1_1-stable.zip编译安装[root@localhost ~]# cd openssl-OpenSSL_1_1_1-stable [root@localhost openssl-OpenSSL_1_1_1-stable~]# ./config --prefix=/usr/local/openssl // 指定安装路径 [root@localhost openssl-OpenSSL_1_1_1-stable~]# make && make install保存原版本，替换当前系统的旧版本openssl[root@localhost ~]# mv /usr/bin/openssl /usr/bin/openssl.old [root@localhost ~]# mv /usr/lib64/openssl /usr/lib64/openssl.old [root@localhost ~]# mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old [root@localhost ~]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl [root@localhost ~]# ln -s /usr/local/openssl/include/openssl /usr/include/openssl [root@localhost ~]# ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so [root@localhost ~]# echo "/usr/local/openssl/lib" >> /etc/ld.so.conf [root@localhost ~]# ldconfig -v查看当前系统 openssl 版本[root@localhost ~]# openssl version OpenSSL 1.1.1e-dev
Linux的默认管理员名即是root，只需要知道ROOT密码即可直接登录SSH。禁止Root从SSH直接登录可以提高服务器安全性。修改/etc/ssh/sshd_config文件[root@localhost ~]# vi /etc/ssh/sshd_config ... # Authentication: #LoginGraceTime 2m #PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10将#PermitRootLogin yes的#去掉把yes改为no重启ssh服务生效[root@localhost ~]# systemctl restart sshd
查看磁盘信息[root@localhost ~]# fdisk -l Disk /dev/vda: 85.9 GB, 85899345920 bytes 16 heads, 63 sectors/track, 166440 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0009345c Device Boot Start End Blocks Id System /dev/vda1 * 3 1018 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/vda2 1018 166441 83373056 8e Linux LVM Partition 2 does not end on cylinder boundary. Disk /dev/vdb: 536.9 GB, 536870912000 bytes 16 heads, 63 sectors/track, 1040253 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000有一块500G的盘还未挂载格式化硬盘[root@localhost ~]# mkfs.ext4 /dev/vdb mke2fs 1.41.12 (17-May-2010) 文件系统标签= 操作系统:Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 32768000 inodes, 131072000 blocks 6553600 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=4294967296 4000 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 This filesystem will be automatically checked every 20 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.创建目录并挂载[root@localhost ~]# mkdir /opt [root@loaclhost ~]# mount /dev/vdb /opt [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_centos6-lv_root 50G 4.8G 42G 11% / tmpfs 12G 224K 12G 1% /dev/shm /dev/vda1 477M 115M 337M 26% /boot /dev/mapper/vg_centos6-lv_home 26G 68M 24G 1% /home tmpfs 60M 0 60M 0% /var/log/rtlog /dev/vdb 493G 70M 467G 1% /opt看到已经挂载成功了开机自动挂载[root@sql ~]# blkid /dev/vdb: UUID="a9e87164-def8-42ae-9770-708b6d090fbd" TYPE="ext4" #查看UUID 并添加到/etc/fstab [root@sql ~]# vi /etc/fstab UUID=a9e87164-def8-42ae-9770-708b6d090fbd /opt ext4 defaults 0 0
[root@localhost ~]# yum -y install net-snmp net-snmp-utils安装完成后查看SNMP版本：[root@dnsname ~]# snmpd -v NET-SNMP version: 5.7.2 Web: http://www.net-snmp.org/ Email: net-snmp-coders@lists.sourceforge.net更改SNMP团体字[root@dnsname ~]# vi /etc/snmp/snmpd.conf ... # sec.name source community com2sec notConfigUser default public #将public字段改为想要的团体字即可启动SNMP服务并使其开机启动[root@dnsname ~]# systemctl start snmpd [root@dnsname ~]# systemctl enable snmpd
版本：CentOS Linux release 7.7.1908 (Core)通过yum安装dockeryum install -y docker docker -vDocker version 1.13.1, build 7f2769b/1.13.1启动docker拉取onlyofficesystemctl start docker docker pull onlyoffice/documentserver Using default tag: latest Trying to pull repository docker.io/onlyoffice/documentserver ... latest: Pulling from docker.io/onlyoffice/documentserver f7277927d38a: Pull complete 8d3eac894db4: Pull complete edf72af6d627: Pull complete 3e4f86211d23: Pull complete 6ce29fec018b: Pull complete 88e1e0a2a5a3: Pull complete 1e6734c06f11: Pull complete 8c72ce4617ba: Pull complete Digest: sha256:94294e0e54efe7204adcb98cd63dccfeebc3c7c7455039f84dd006cc43ae79a1 Status: Downloaded newer image for docker.io/onlyoffice/documentserver:latest启动onlyofficedocker run -i -t -d -p 80:80 onlyoffice/documentserver也可将onlyoffice映射到其他端口例8080docker run -i -t -d -p 8080:80 onlyoffice/documentserver打开http://ip出现下图则安装成功，若无法打开请关闭防火墙和Selinuxsystemctl stop firewalld sentenforce 0PS.刚打开可能出现502 Bad Gateway过一会再刷新下即可
版本：CentOS Linux release 7.7.1908 (Core)设置MySQL安装源rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm安装MySQLyum -y install mysql-community-server设为启动项并启动mysqlsystemctl enable mysqld systemctl start mysqld修改MySQL默认密码mysql安装完成之后，在/var/log/mysqld.log文件中给root生成了一个默认密码。找到root默认密码，然后登录mysql进行修改cat /var/log/mysqld.log | grep "A temporary password is generated" 显示：[Note] A temporary password is generated for root@localhost: xxxx mysql -uroot -pxxxx mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Abc.com123';设置MySQL编码vim /etc/my.cnf [mysqld] character_set_server=utf8 init_connect='SET NAMES utf8'重启MySQLsystemctl restart mysqld
版本：CentOS Linux release 7.7.1908 (Core)内核4.10.4-1.el7.elrepo.x86_64设置nginx安装源编辑文件vi /etc/yum.repos.d/nginx.repo根据安装stable或manline版本添加如下内容：[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true[nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true安装Nginx查看yum中的版本yum list nginx当前版本：nginx.x86_64 1:1.16.1-1.el7.ngx @nginx-stable 安装Nginxyum install nginx -y查看Nginx版本和configurenginx -Vnginx version: nginx/1.16.1 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'PS.一般安装失败为网络问题
版本：CentOS Linux release 7.7.1908 (Core)内核4.10.4-1.el7.elrepo.x86_64安装依赖yum install epel-release -y yum install gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto udns-devel libev-devel libsodium-devel mbedtls-devel git m2crypto c-ares-devel -y编译安装git clone https://github.com/shadowsocks/shadowsocks-libev.git cd shadowsocks-libev git submodule init && git submodule update ./autogen.sh ./configure make make install mkdir -p /etc/shadowsocks-libev修改配置文件创建配置文件vi /etc/shadowsocks-libev/config.json{ "server": "0.0.0.0", "server_port": 1080, "password": "123456", "timeout":600, "method": "aes-256-cfb", "fast_open": false }配置开机启动创建启动脚本文件vi /etc/systemd/system/shadowsocks.service[Unit] Description=Shadowsocks Server After=network.target [Service] ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks-libev/config.json -u Restart=on-abort [Install] WantedBy=multi-user.target启动并加入启动项systemctl start shadowsocks systemctl enable shadowsocks防火墙放行firewall-cmd --permanent --add-port=1080/tcp firewall-cmd --permanent --add-port=1080/udp firewall-cmd --reload碰到的坑不知道是不是内核的原因，因为开了BBR所以升了内核，导致fast_open为true时报错，测试了未升级的内核版本正常。原本通过pip安装shadowsocks后服务起不来，依然怀疑为内核原因。不使用网上的一键安装脚本是因为怕有后门，本人又懒得看代码。