shell 纸一的运维终端 _ - 2021年2月
type: channel
link: https://type.paper1.cc/index.php/2021/02/
description: #系统错误：大脑空间不足 _
items: Zabbix脚本-获取目标web页面的HTTP状态码
items: 在Windows上安装Zabbix-agent
items: Zabbix监控SSL证书的有效期
items: pip镜像源、pip降级
items: swap分区使用指南
items: 将CentOS默认yum源更换为阿里云镜像
items: Linux中的可用内存
items: 使用rsync建立备份服务器（rsync、inotify、sersync）
items: LNMP网站环境安装(源码编译方式)
items: Cookis、Session、Token概念及区别
items: CentOS 7磁盘空间及文件信息管理命令
items: iptables快速使用指南
items: 为CentOS7配置开机启动脚本
items: MySQL常用命令
items: Zabbix 5.0 LTS 安装及使用
items: php-fpm安装模块方法
items: 部署vlmcsd（KMS）服务
items: 生产环境的MySQL解压安装
items: 为pip配置阿里云软件源
items: KMS激活命令

Zabbix脚本-获取目标web页面的HTTP状态码
type: item
date: 2021-02-25T09:37:00+00:00
description: 获取目标url的HTTP状态码!/bin/bash curl -I -m 10 -o /dev/null -s -w %{http_code} $1使用方式web_scenario.sh https://www.baidu.com #运行脚本时后面根参数——网址

在Windows上安装Zabbix-agent
type: item
date: 2021-02-24T08:31:00+00:00
description: 一、下载安装包https://www.zabbix.com/cn/download_agents二、安装为windows服务C:\zabbix_agent-4.4.10-windows-amd64\bin\zabbix_agentd.exe -i -c C:\zabbix_agent-4.4.10-windows-amd64\conf\zabbix_agentd.conf zabbix_agentd.exe [7908]: service [Zabbix Agent] installed successfully zabbix_agentd.exe [7908]: event source [Zabbix Agent] installed successfully #安装成功三、作为服务启动自动开机启动

Zabbix监控SSL证书的有效期
type: item
date: 2021-02-24T04:29:00+00:00
description: 使用zabbix监测SSL证书的有效期一、使用python脚本监控证书1.1 创建python脚本vim /etc/zabbix/User_scripts/ssl_cert_check.py #脚本可以放在任何目录中，本示例中在zabbix-agent目录中创建了一个User_scripts目录用来存放一系列用户自定义脚本。1.2 python脚本内容#!/usr/bin/python import socket import ssl import datetime import argparse def ssl_expiry_datetime(hostname,port): ssl_date_fmt = r'%b %d %H:%M:%S %Y %Z' context = ssl.create_default_context() conn = context.wrap_socket(socket.socket(socket.AF_INET),server_hostname=hostname,) #3 second timeout because Lambda has runtime limitations conn.settimeout(3.0) conn.connect((hostname, int(port))) ssl_info = conn.getpeercert() #parse the string from the certificate into a Python datetime object return datetime.datetime.strptime(ssl_info['notAfter'], ssl_date_fmt) def ssl_valid_time_remaining(hostname,port): """Get the number of days left in a cert's lifetime.""" expires = ssl_expiry_datetime(hostname,port) return expires - datetime.datetime.utcnow() parser = argparse.ArgumentParser(description='returns the time before expiration of certificate') #parser.add_argument("-c","--hostname", help="hostname of the certificate you want to check") parser.add_argument("hostname", help="hostname of the certificate you want to check") parser.add_argument("port", help="port of the hostname you want to connection") args = parser.parse_args() expire = ssl_valid_time_remaining(args.hostname,args.port) print int(round(datetime.timedelta.total_seconds(expire), 0))此脚本内容为《Zabbix企业级分布式监控系统》（第2版）中第10章提供的代码。我在此基础上进行了略微的改动，以适应更多的情况。二、配置zabbix自定义监控项（key）2.1 添加用户参数vim /etc/zabbix/zabbix-agent.conf #编辑zabbix-agnet的配置文件添加UserParameterUserParameter=ssl_cert_check[*],/etc/zabbix/user_script/ssl_cert_check.py \$1 \$2 #这里对用户参数进行一下解释。 UserParameter= #用户参数固定开头 ssl_cert_check[*]， #这是zabbix自定义的监控项名称即key，可以自己按需要设置。后面的"[*]"表示此监控项需要提供参数。 user_script/ssl_certificates_check.py #这里指定了需要执行的脚本的路径，及我们创建的python脚本 \$1 \$2 #这里表示这个监控系需要2个参数。（在这里是证书的域名 和链接时的端口）2.2 重启zabbix-agentsystemctl restart zabbix-agent2.3 使用zabbix_get命令进行测试zabbix_get -s 192.168.1…

pip镜像源、pip降级
type: item
date: 2021-02-23T13:09:00+00:00
description: 一、pip指定国内镜像源在单次安装中指定库pip install selenium -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com配置全局pypi仓库pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/二、升级导致pip不可用的处理方法（pip降级）在CentOS 7版本中自带的python版本为2.7。pip版本在升级到21版本及以上时将不可用。降级pip至20版本wget https://bootstrap.pypa.io/2.7/get-pip.py #下载get-pip.py python get-pip.py #运行下载的py DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality. #pip-21版本在2021年1月停止支持Python2.7。 Collecting pip<21.0 Downloading pip-20.3.4-py2.py3-none-any.whl (1.5 MB) |████████████████████████████████| 1.5 MB 510 kB/s Collecting wheel Downloading wheel-0.36.2-py2.py3-none-any.whl (35 kB) Installing collected packages: pip, wheel Attempting uninstall: pip Found existing installation: pip 21.0.1 Uninstalling pip-21.0.1: Successfully uninstalled pip-21.0.1 Successfully installed pip-20.3.4 wheel-0.36.2 #pip-20安装完成

swap分区使用指南
type: item
date: 2021-02-20T06:38:00+00:00
description: 添加swap分区一、创建swap分区1.1 创建swap文件dd if=/dev/zero of=/root/swap bs=1M count=2048 #创建一个2GB的swap文件1.2 格式化swap分区mkswap /root/swap1.3 修改内核参数vim /etc/sysctl.conf #打开内核参数配置文件 vm.swappiness = 70 #当物理内存使用量超过30%开始使用swap分区 #数值越高使用swap越积极，数值越低使用物理内存越积极。 cat /proc/sys/vm/swappiness #查看当前系统swappiness值 sysctl -p #重新加载内核参数 1.4 开机自动挂载swap分区vim /etc/fstab #编辑fstab /root/swap swap swap defaults 0 0 #挂载swap分区1.5 手动挂载swap分区swapon -a #手动挂载所有swap分区1.6 查看swap分区df -h二、推荐的系统交换空间（SWAP）系统中的RAM量推荐的交换空间如果允许休眠，建议使用交换空间⩽2 GBRAM量的2倍RAM量的3倍> 2 GB – 8 GB等于RAM数量RAM量的2倍> 8 GB – 64 GB至少4 GBRAM量的1.5倍> 64 GB至少4 GB不建议休眠注意：1.并非在ram使用完之后才会使用swap，取决于内核配置。2.使用swap会影响磁盘IO。

将CentOS默认yum源更换为阿里云镜像
type: item
date: 2021-02-20T06:31:00+00:00
description: CentOS 7yum install -y wget && mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup && wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoCentOS 8yum install -y wget && mv /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Base.repo.backup && wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo http://mirrors.aliyun.com/repo/Centos-8.repo

Linux中的可用内存
type: item
date: 2021-02-20T05:07:00+00:00
description: 使用free -h命令可以查看当前系统的内存使用情况 total used free shared buff/cache available Mem: 1.8G 1.4G 66M 952K 313M 211M Swap: 0B 0B 0Bavailable表示应用程序还可以申请到的内存首先了解下两个概念buff和cachebuff（Buffer Cache）是一种I/O缓存，用于内存和硬盘的缓冲，是io设备的读写缓冲区。根据磁盘的读写设计的，把分散的写操作集中进行，减少磁盘碎片和硬盘的反复寻道，从而提高系统性能。cache（Page Cache）是一种高速缓存，用于CPU和内存之间的缓冲 ,是文件系统的cache。 把读取过的数据保存起来，重新读取时若命中（找到需要的数据）就不要去读硬盘了，若没有命中就读硬盘。其中的数据会根据读取频率进行组织，把最频繁读取的内容放在最容易找到的位置，把不再读的内容不断往后排，直至从中删除。 它们都是占用内存。两者都是RAM中的数据。简单来说，buff是即将要被写入磁盘的，而cache是被从磁盘中读出来的。 目前进程正在实际被使用的内存的计算方式为used-buff/cache，通过释放buff/cache内存后，我们还可以使用的内存量free+buff/cache。通常我们在频繁存取文件后，会导致buff/cache的占用量增高。处理方式手动清除 执行以下命令即可[root@izbp17wg1wphb6f95b76obz ~]# sync [root@izbp17wg1wphb6f95b76obz ~]# echo 1 > /proc/sys/vm/drop_caches [root@izbp17wg1wphb6f95b76obz ~]# echo 2 > /proc/sys/vm/drop_caches [root@izbp17wg1wphb6f95b76obz ~]# echo 3 > /proc/sys/vm/drop_cachessync：将所有未写的系统缓冲区写到磁盘中，包含已修改的i-node、已延迟的块I/O和读写映射文件echo 1 > /proc/sys/vm/drop_caches：清除page cacheecho 2 > /proc/sys/vm/drop_caches：清除回收slab分配器中的对象（包括目录项缓存和inode缓存）。slab分配器是内核中管理内存的一种机制，其中很多缓存数据实现都是用的pagecache。echo 3 > /proc/sys/vm/drop_caches：清除pagecache和slab分配器中的缓存对象。/proc/sys/vm/drop_caches的值,默认为0定时清除1、创建脚本cleanCache.sh#!/bin/bash#每两小时清除一次缓存 echo "开始清除缓存" sync;sync;sync #写入硬盘，防止数据丢失 sleep 10#延迟10秒 echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches2、创建定时任务crontab -e #弹出配置文件3、添加定时任务执行频率#分 时 日 月 周 命令 0 */2 * * * ./cleanCache.sh4、设置crond启动以及开机自启systemctl start crond.service systemctl enable crond.service5、查看定时任务是否被执行cat /var/log/cron | grep cleanCache转载于：https://focusss.github.io/2019/02/10/Linux%E4%B8%ADbuff-cache%E5%8D%A0%E7%94%A8%E8%BF%87%E9%AB%98%E8%A7%A3%E5%86%B3%E6%89%8B%E6%AE%B5/

使用rsync建立备份服务器（rsync、inotify、sersync）
type: item
date: 2021-02-20T03:45:00+00:00
description: Rsync一、概述rsync是一款开源的可实现全量及增量的本地或远程数据同步备份的工具。英文全称为Remote synchronization，rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份功能。rsync功能类似于scp（远程同步）、cp（本地同步）命令的功能，但是rsync支持增量同步和拷贝。在同步备份数据时，默认情况下，rsync通过“quick check”算法，仅同步大小或者最后修改时间发生变化的文件或目录。也可以根据权限、属主等属性的变化同步，但需指定相应的参数。rsync的特性：支持拷贝特殊文件加链接文件，设备等。可以有排除指定文件或目录的同步功能，相当于tar的评出功能。可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均步改变。可以实现增量同步，既只同步发生变化的数据，因此数据传输效率很高。可以使用rcp，rsh，ssh等方式来配合传输文件。可以通过socket（进程方式）传输文件和数据（服务端和客户端）。支持匿名的或认证（无需用户系统）的进程模式传输，可实现方便安全的数据备份及镜像。二、安装rsyncapt install rsync #ubunt安装 yum install -y rsync #通过yum安装rsync三、配置文件3.1 默认配置文件路径/etc/rsyncd.conf3.2 rsync的运行方式rsync作为守护进程运行：rsync作为守护进程运行时，便可以接收客户端请求。两台通过rsync进行数据同步的主机，其中一台必须要以守护进程方式运行。守护进程状态运行的rsync可以理解为服务器端主机，而直接使用rsync连接远程rsync主机的，则是客户端主机。rsync作为服务器运行前需要编辑配置文件。3.3 配置文件编辑配置文件/etc/rsyncd.conf。port = 873 #监听端口，默认873 uid = root #用户uid gid = root #用户gid use chroot = no #启用牢笼机制，有软连接超出当前目录时需要为no。 munge symlinks = no #禁用munge后，rsync服务端将不会去干涉软链文件 max connections = 200 #最大连接数 timeout = 300 #超时时间，秒 pid file = /var/run/rsyncd.pid #进程号对应文件 lock file = /var/run/rsyncd.lock #锁文件，防止文件不一致 log file = /var/log/rsyncd.log #日志文件 [backup] #模块 path = /backup #存储目录 ignore errors #忽略错误 read only = false #可写 list = false #禁止列出文件 hosts allow = 172.16.1.0/24 #允许网段 #hosts deny = 0.0.0.0/32 #禁止网段，允许和拒绝二选一 auth users = rsync_backup #连接的虚拟用户（非系统用户） secrets file = /etc/rsync.password #虚拟用户的账号密码文件3.4 密码文件在rsync的主配置文件中指定了secrets file的路径，文件名指定为rsync.password。这个文件中保存的用于rsync连接的用户名和密码信息。此文件有3个注意点：1.这个文件的所有者需要与运行rsync的用户一致。2.这个文件的权限必须是600。3.此文件的用户名及密码记录格式如下：rsync_backup:123456 #用户名与密码之间使用:分隔。chmod 600 /etc/rsync.password #修改密码文件权限为6003.5 以守护进程模式运行rsync（服务器）rsync --daemon #守护进程模式运行rsync #rsync使用873端口。 netstat -nlptu #查看873端口是否启动。 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1972/rsync3.6 将rsync设置为开机启动方法一： #将启动命令加入到/etc/rc.local文件中 echo "/usr/bin/rsync --daemon" >> /etc/rc.d/rc.local #这里要注意，CentOS7在默认情况下rc.local是没有可执行权限的，若需要通过此方式设置开机启动，需要赋予rc.local可执行权限。 chmod …

LNMP网站环境安装(源码编译方式)
type: item
date: 2021-02-01T09:27:00+00:00
description: 一、 Nginx 源码编译安装1.1 建立www用户useradd www -s /sbin/nologin -M #-s 指定shell，禁止登陆系统 #-M 表示不创建家目录1.2 安装编译依赖yum install -y pcre-devel openssl openssl-devel zlib-devel gcc gcc-c++ #通过yum安装源代码编译器依赖1.3 编译安装./configure --prefix=/apps/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-pcre \ --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module #指定安装目录 --with-http_ssl_module #支持SSL（HTTPS） --with-http_v2_module #支持HTTP2 --with-http_stub_status_module #统计功能模块，可以读取nginx服务当前处理的连接数等信息。（配合zabbix使用） make #预编译，生成可二进制可执行安装文件 make install #运行二进制服务程序安装包 make && make install #预编译后直接开始安装，比较省事。1.4 为nginx指定www用户运行vim /usr/local/nginx/conf/nginx.conf 打开nginx配置文件 user www; #修改为www用户1.5 使用systemctl管理nginx创建nginx.service文件，保存到/usr/lib/systemd/system/目录中，文件内容如下：[Unit] Description=nginx service After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target或使用EOF命令：cat << EOF > /usr/lib/systemd/system/nginx.service [Unit] Description=nginx service After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target EOF文件创建完毕后，重新加载配置。systemctl daemon-reload #重新加载systemnctl配置1.6 添加模块/重新编译安装进入nginx源码包目录 /configure --add-module=模块目录路径 #增加新的模块，重新编译。 make #进行编译#make后不要执行make install，若这样操作会覆盖现有安装。 进入objs目录 cp nginx /usr/local/nginx/sbin/nginx #编译完成后，新编译好的nginx文件被保存在objs目录中，将新生成的nginx文件去覆盖旧版本，即可完成版本升级或模块安装。1.7 防火墙配置firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload #在firewall防火墙里，放行http、https流量。1.8 启动服务systemctl start nginx #启动nginx systemctl restart nginx #重启nginx systemctl stop nginx #停止nginx systemctl enab…

Cookis、Session、Token概念及区别
type: item
date: 2021-02-01T09:27:00+00:00
description: 一、Cookie1.1 Cookie概述Cookie是由服务器发送给浏览器，并保存在本地的一小块数据。由于HTTP协议是无状态的，而通过Cookie可以稳定地保存一些状态。当服务器将Cookie发送给浏览器本地保存后，此后的每一次请求浏览器都会将cookie发给服务器。主要作用1.会话状态管理2.个性化设置3.浏览器行为跟踪Cookie曾是唯一的客户端数据存储手段，而每次浏览器请求都会携带Cookie数据会增加开销。当服务器收到HTTP请求后，服务器可以在响应首部里面添加一个Set-Cookie选项。浏览器收到响应后通常会保存下Cookie。Cookie的过期时间、域、路径、有效期、适用站点都可以根据需要来指定。1.2 Cookie类型会话期Cookie浏览器关闭后自动删除，仅在会话期间有效。会话期Cookie不需要指定过期时间（Expires）或这有效期（Max-Age）。提供会话恢复功能的浏览器，在关闭后会话期Cookie也会被保留下来，如同浏览器从未关闭一样。持久性Cookie持久性Cookie可以指定过期时间或有效期。关闭浏览器也不会失效。Cookie的过期或有效期只与客户端时间相关，而非服务器时间。第三方Cookie每个Cookie都有与之相关联的域，当Cookie的域和页面的域相同，则称之为第一方Cookie（First-Party Cookie），而不过不同，则称之为第三方Cookie（Third-Party Cookie）。通过第三方组件发送的第三方Cooike主要用于广告和网络追踪。1.3 Cookie的属性参数描述Name规定Cookie的名称。（必须）Value规定Cookie的值，可以进行转码和加密。（必须）Expire规定Cookie的过期日期（GMT格式）。当超过这个日期，浏览器将删除Cookie。MaxAge规定Cookie失效时间，单位是秒，默认为-1。如果为负数，则为临时Cookie，关闭浏览器即删除。如果为0，则表示删除该Cookie（并非浏览器关闭时才删除）。Path规定Cookie的服务器路径。一般设为“/”，以表示同一个站点的所有页面都可以访问这个Cookie。Domain规定Cookie的子域名。指定在该子域下才可访问Cookie。Secure规定是否通过安全的HTTPS连接来传输Cookie。HttpOnly不能通过程序（如：Java Script）调用并读取到Cookie的内容。SameSiteCookie允许服务器要求某个Cookie在跨站请求时不会被发送，从而可以阻止跨站请求伪造攻击（CSRF）。SameSite一般有3个值：1.None浏览器会在同站请求、跨站请求下继续发送Cookie，不区分大小写。2.Strict浏览器将只发送同站点请求的Cookie，如果请求来自与当前location不同的URL，则不发送包括了Strict熟悉的Cookie。3.Lax默认选项。Same-Site Cookie会为一些跨站子请求保留，如图片加载或者frames的调用，但只要当用户从外部站点导航到URL时才会发送，如Link连接。1.4 Cookie总结Cookie是一种在客户端存储数据的方式。它不见得与用户认证登录相关。二、Session2.1 Session概述由于Cookie保存在客户端，所以会存在安全隐患。而Session保存在服务端。2.2 Session特性当Session创建后，服务端会将SessionID放到此次访问的Cooike中。当下次客户端访问需要提取服务器中Session时，会根据Cooike中的SessionID值来找到服务器中的具体Session。2.3 Session同步问题在大型的分布式网站中，由于后端有多台服务器，并且每次请求可能会访问到任意一台服务器。而session只保存在一台服务器上。这会导致状态丢失，如重新登录等问题。解决方法1.session复制2.客户端保存session（保存在Cookie中，可以保存不敏感信息，但是Cookie容量有限。）3.固定客户端访问的服务器ip Hash业务数据 Hash4.共享存储使用redis存储但是与Cookie一样，使用Session方式更加安全，但是都会增加开销。2.4 Session总结Session是一种用户会话状态实现的手段。在客户端，Session ID通常使用Cookie进行存储；而在服务器端，可以使用的存储方法就太多了。三、Token3.1 Token概述Token是服务端生成的一串字符串，以作客户端进行请求的一个令牌，当第一次登录后，服务器生成一个Token便将此Token返回给客户端，以后客户端只需带上这个Token前来请求数据即可，无需再次带上用户名和密码。3.2 Token的优势1.无…

CentOS 7磁盘空间及文件信息管理命令
type: item
date: 2021-02-01T09:27:00+00:00
description: 一、查看磁盘可用空间df -h #查看各个挂载目录的大小和剩余空间。二、查看文件及目录的大小du -h * #列出当前目录下以及子目录下的所有目录及目录内文件的大小。 #这将会列出*所有*文件，不论在几级目录之下。 du -h --max-depth=1 * #列出当前目录及所有一级子目录内文件和目录的大小。 --max-depth=<目录级数> du -skh * #列出当前目录中子目录及文件的大小。三、查看目录和文件个数ls -lR|grep "^-"|wc -l #列出当前目录及子目录中所有目录及文件的数量总和。 ls -lR|grep "^d"|wc -l #列出当前目录及子目录中所有目录的数量总和。

iptables快速使用指南
type: item
date: 2021-02-01T09:27:00+00:00
description: 一、概念1.1 五表五链五表filter表：过滤规则表，默认表。nat表：地址转换规则表。mangle表：修改数据标记位规则表。raw表：关闭启用的链接跟踪机制，加快封包穿越防火墙速度。security表：用于强控制访问（MAC）网络规则，由Linux安全模块如Selinux实现。优先级security > raw > mangle > nat > filter五链INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING1.2 netfilter配置工具iptables (CentOS 6及以前)firewaldd (CentOS 7)nft (CentOS 8)二、快速使用2.1 默认策略——拒绝除了明确允许的，都拒绝。iptables -P INPUT DROP #-P 设置默认策略 #将INPUT(传入)默认设置为DROP(丢弃)2.2 配置放行放行端口iptables -I INPUT -p tcp --dport 22 -j ACCEPT #由上到下匹配，一旦匹配到则不会进行后面的匹配。（因此越靠前优先级越高。） #-I 在表最前面增加条目（优先级最高，最先匹配） #-I 3 作为第3条插入链中 #-A 在表最后面增加条目 #-p 匹配协议（TCP/UDP/ICMP等） #--dport 匹配端口 #-j 指定处理方式（1.ACCEPT允许 2.REJECT拒绝 3.DROP丢弃 4.LOG记录） 放行主机iptables -I INPUT -s 192.168.3.10/24 -p tcp --dport 22:30 -j ACCEPT #-s 匹配ip地址与子网掩码 #--dport 22：30 指定端口范围，从22到302.3 删除条目查看所有条目iptables -L #-L 列出规则 #查看所有规则 iptables -vnL --line-numbers #-v 显示细节 #-n 显示IP #-L 列出规则 #--line-numbers 显示规则行号 #查看所有规则 iptables -L INPUT #仅查看INPUT链规则删除条目iptables -D INPUT 1 #删除INPUT链中的第一条规则 #-D 删除 #INPUT 1 INPUT链中的第一条。 iptables -F #删除所有规则2.4 保存规则没有保存的规则，在重启后会失效。service iptables save #保存规则 iptables-save > /etc/sysconfig/iptables #将防火墙规则保存在文件中2.5 查询表支持的链iptables -t filter -vnL #查询filter表支持的链2.6 关闭iptableschconfig iptables off #关闭iptables三、详细参数参数作用-P设置默认策略-F清空规则链-L查看规则链-A在规则链的末尾加入新规则-I num在规则链的头部加入新规则-D num删除某一条规则-s匹配来源地址IP/MASK，加叹号“!”表示除这个IP外-d匹配目标地址-i网卡名称匹配从这块网卡流入的数据-o网卡名称匹配从这块网卡流出的数据-p匹配协议，如TCP、UDP、ICMP--dport num匹配目标端口号--sport num匹配来源端口号

为CentOS7配置开机启动脚本
type: item
date: 2021-02-01T09:26:00+00:00
description: CentOS7配置开机启动脚本一、/etc/rc.d/rc.local1.给rc.local增加可执行权限chmod +x /etc/rc.d/rc.local 需要开机执行的脚本也要赋予可执行权限2.编辑rc.local文件在末尾增加需要执行的命令或脚本路径二、/etc/rc.d/init.d1.将需要执行的脚本置于/etc/rc.d/init.d下。（脚本需要可执行权限）2.使用chkconfig添加开机启动脚本。cd /etc/rc.d/init.d chkconfig --add 脚本文件名 chkconfig 脚本文件名 on3.使用chkconfig管理的脚本，需要有特定的开头。#!/bin/sh #chkconfig:2345 55 25 #2345(启动级别) 50(启动优先级) 20(关闭优先级) #description:这是一个开机启动脚本 #服务的描述运行级别共有7个：0是关机，6是重启。因此指定1（单用户模式）、2（无网络多用户）、3（默认多用户）、4（保留）、5（图像界面）级别。优先级范围是0－100，数字越大，优先级越低。

MySQL常用命令
type: item
date: 2021-02-01T09:25:00+00:00
description: MySQL程序操作#启动MySQL服务（windows）： net start mysqld #停止MySQL服务（windows）： net stop mysqld #启动MySQL服务（linux）： service mysqld start #停止MySQL服务（linux）： service mysqld stop #登录数据库： mysql -u 用户名 -p （回车后输入密码） #登录到MySQL服务器 ： mysql -h 主机地址（不填则连接本地数据库）-P 端口 -u 用户名 -p 密码（明文） #退出MySQL： QUIT; #查看MySQL版本号 show variables like '%version%'；数据库和表操作#显示数据库和表： SHOW DATABASES; / SHOW TABLES; #查询表是否存在 SHOW TABLES LIKE '%表名%'; #创建数据库： CREATE DATABASE 新数据库名; #创建新数据库，指定字符集和排序方式 CREATE DATABASE `数据库名` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; #查看数据库默认字符编码 show variables like "%character%";show variables like "%collation%"; #创建表： CREATE TABLE 新数表名 (字段名1 数据类型1，字段名2 数据类型2...); #删除数据库和表： DROP DATABASE 数据库名; / DROP TABLE 表名; #删除所有表(生产删表语句，然后手动执行) SELECT CONCAT('DROP TABLE `', table_name, '`;') FROM information_schema.tables WHERE table_schema = 'disp_justcall'; #清空表（保留结构，只清空数据） truncate table 表名 #选择数据库： USE 数据库名; #显示表结构： DESC 表名; #更新字段值： UPDATE 表名 SET 列名='新值' WHERE 字段名='字段值'; #替换字段中的部分内容 update 表名 SET `字段名` = REPLACE(`字段名`,"老值","新值") WHERE 条件; update 表名 SET `字段名` = REPLACE(`字段名`,"老值","新值"); #不带条件就全部改 #更改列名： ALTER TABLE 表名 CHANGE 现字段名 新字段名 新字段属性; #重命名表： RENAME TABLE 现表名1 TO 新表名1,现表名2 TO 新表名1; #删除记录： DELETE FROM 表名 WHERE 定位描述; #插入记录： INSERT INTO 表名 (字段名1,字段名2...) VALUES (值1,值2...); #搜索记录 SELECT * FROM 表名 WHERE 字段名 = "值"; 用户管理#创建新用户(5.7) CREATE USER "用户名"@"IP地址" IDENTIFIED BY "密码"; #创建新用户(8.0) CREATE USER "用户名"@"IP地址"; #删除用户 DROP USER "用户名"@"IP地址"; #更改当前用户的密码(5.7)： SET PASSWORD = PASSWORD('新密码'); #修改特定用户密码(5.7) SET PASSWORD FOR root@"%"=password("123456"); #修改特定用户密码(8.0) ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; #更改指定用户的密码：(系统命令行界面) mysqladmin -u 用户名 -p password 新密码；（按ENTER后提示输入当前密码。确认后密码更改生效。） #赋予用户权限(同时创建一个新mysql用户) grant all privileges on 数据库.* to '用户名'@'%' identified by '密码'; (创建新用户，同时设定密码。即将在新版本中移除此功能。) grant all privileges on 数据库.* to '用户名'@'%'; #建议单独设置权限，使用CREATE USER命令创建用户。 grant all privileges on 数据库.* to '用户名'@'%' with grant option; #MySQL 8.0 后的版本授权命令格式 grant insert,delete,updat…

Zabbix 5.0 LTS 安装及使用
type: item
date: 2021-02-01T09:25:00+00:00
description: 一、Zabbix的组件组成1.服务端和agentzabbix-server：Zabbix server 是整个 Zabbix 软件的核心程序。Zabbix Server 负责执行数据的主动轮询和被动获取，计算触发器条件，向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身可以通过简单服务远程检查网络服务（如Web服务器和邮件服务器）。Zabbix Server是所有配置、统计和操作数据的中央存储中心，也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常，将被发出通知给管理员。基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是：Zabbix server、Web前端和数据库。Zabbix 的所有配置信息都存储在 Server 和Web前端进行交互的数据库中。例如，当你通过Web前端（或者API）新增一个监控项时，它会被添加到数据库的监控项表里。然后，Zabbix server 以每分钟一次的频率查询监控项表中的有效项，接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。zabbix-agent：Zabbix agent 部署在被监控目标上，以主动监控本地资源和应用程序（硬盘、内存、处理器统计信息等）。Zabbix agent 收集本地的操作信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程)，Zabbix server 会主动警告管理员指定机器上的异常。Zabbix agents 的极高效率缘于它可以利用本地系统调用来完成统计数据的采集。2.前端组件zabbix-web-mysql-scl或者zabbix-web-pgsql-scl，取决于使用什么数据库。zabbix-apache-conf-scl或者zabbix-nginx-conf-scl，取决于使用什么web服务器。二、必要条件MySQL版本5.7以上yum groupinstall mariadb mariadb-client #可用maraiadb代替mysql #或正常安装mysql均可关闭SELinuxvim /etc/selinux/config SELINUX=disable #配置文件禁用SELinux setenforce 0 #临时禁用 getenforce #查看selinux是否运行 配置防火墙firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-port=10050/tcp firewall-cmd --permanent --add-port=10050/udp firewall-cmd --permanent --add-port=10051/tcp firewall-cmd --permanent --add-port=10051/udp firewall-cmd --reload #添加http服务以及监听端口 systemctl stop firewalld systemctl disable firewalld #停止firewall服务 #取消开机启动三、设置阿里云镜像源rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm #国内阿里云源 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm #Zabbix官方源，使用官方源由于网络问题会导致安装失败。 sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo #将repo文件中的官方地址换成阿里云地址 vim /etc/yum.repos.d/zabbix.repo #编辑repo文件，将前端源开启 [zabbix-frontend] enabled=1 #开启前端源 yum clean all #清除yum缓存我们查看一下zabbix.repo文件的内容[zabbix] name=Zabbix Official Repository - $basearch baseurl=https://mirrors.ali…

php-fpm安装模块方法
type: item
date: 2021-02-01T09:25:00+00:00
description: 一、查看php是否安装指定模块php -m |grep gd #查看dg库模块是否安装，若已安装最会显示，未安装则为空，不显示。二、安装模块2.1 进入源码包cd /opt/src/php-7.4.0/ext/ #进入源码包目录 cd gd #以gd库为例，进入gd库模块目录2.2 安装模块phpize #执行phpize命令 ./configure -with-php-config=/usr/local/php/bin/php-config #预编译 #编译过程中如缺少依赖，则根据提示进行安装 #php-config 是一个简单的命令行脚本用于获取所安装的 PHP 配置的信息。 make && make install #编译并安装2.3 编译安装完成后Build complete. Don't forget to run 'make test'. Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/ Installing header files: /usr/local/php/include/php/ #根据输出可以看到，扩展模块目录为/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/ #进入此目录/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/ [root@localhost gd]# cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/ [root@localhost no-debug-non-zts-20190902]# ls gd.so opcache.a opcache.so #可以看到gd.so已经被安装。 #在接下来的php.ini配置中，需要使用此名称。三、配置3.1 对php.ini进行配置。vim /usr/local/php/lib/php.ini #编辑php.ini文件 755 extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/" #将extension_dir取消注释，并设置为模块安装目录。 extension=gd.so #添加或取消注释，添加模块项目。 #注意，这里的gd.so名称为/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd.so 3.2 验证已安装模块php -m | grep gd #查看php-fpm已安装模块 gd #有gd字样表示已经安装。 #如有报错信息，如下： PHP Warning: PHP Startup: Unable to load dynamic library 'gd2.so' (tried: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd2.so (/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd2.so: cannot open shared object file: No such file or directory), /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd2.so.so (/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd2.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Warning: PHP Startup: Unable to load dynamic library 'gd2.so' (tried: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd2.so (/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd2.so: cannot open shared object file: No such file or directory), /us…

部署vlmcsd（KMS）服务
type: item
date: 2021-02-01T09:24:24+00:00
description: 一、常规部署下载vlmcsdhttps://github.com/Wind4/vlmcsd/releases启动服务./vlmcsd-x64-musl-static #启动vlmcsd服务，默认端口为1688。 #防火墙需要允许此端口流量。二、使用Docker部署首先要安装好Docker环境拉取vlmcsd镜像Docker hub的vlmcsd镜像页面：https://hub.docker.com/r/mogeko/vlmcsddocker pull mogeko/vlmcsd运行vlmcsd容器docker run -d -p 1688:1688 --restart=always --name vlmcsd mogeko/vlmcsd防火墙设置vlmcsd服务使用1688端口，需要检查防火墙配置。firewall-cmd --permanent --add-port=1688/tcp firewall-cmd --reload #在firewall防火墙中开启1688端口

生产环境的MySQL解压安装
type: item
date: 2021-02-01T09:24:06+00:00
description: 一、上传安装包到/opt目录并解压缩cd /opt tar -zxvf mysql-5.7.22.tar.gz二、上传启动文件cp mysqld.service /usr/lib/systemd/system/ #复制启动文件 systemctl daemon-reload #重新加载systemnctl配置三、上传配置文件cp my.cnf /etc/my.cnf 复制my.cnf配置文件四、创建mysql用户useradd mysql;echo <用户密码> | passwd --stdin mysql #创建mysql用户及用户组 useradd mysql -s /sbin/nologin -M #创建mysql用户及用户组，同时禁止登陆系统。五、修改文件归属chown -R mysql:mysql /opt/mysql #mysql程序文件归属 chown -R mysql:mysql /etc/my.cnf #配置文件归属六、建立软连接ln -s /opt/mysql/bin/mysql /usr/bin/ #链接bin/mysql到/usr/bin/，若建立此连接，则无需添加环境变量。 ln -s /opt/mysql/logs/mysql.sock /tmp/ #链接mysql.sock套接字，用于本地登陆数据库。七、启动服务systemctl enable mysqld #开机启动mysql systemctl restart mysqld #启动mysql八、附录my.cnf配置文件内容# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the # *** default location during install, and will be replaced if you # *** upgrade to a newer version of MySQL. [mysqld] # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. basedir =/opt/mysql #数据库程序文件目录 datadir =/opt/mysql/data #数据库数据文件目录 port = 3306 #端口 server-id=230 #server-id集群中需要唯一 socket =/opt/mysql/logs/mysql.sock #套接字存放目录 open_files_limit = 10240 #是mysql中的一个全局变量且不可动态修改。它控制着mysqld进程能使用的最大文件描述(FD)符数量。 #最终确定的open_files_limit 可能比你设定的大，也可能小。 log-error=/opt/mysql/logs/mysql_oldboy.err #错误日志文件存放位置 pid-file=/opt/mysql/logs/mysqld.pid #pid文件存放位置 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES lower_case_table_names=1 #忽略表明大小写 back_log = 600 #在MYSQL暂时停止响应新请求之前，短时间内的多少个请求可以被存在堆栈中。如果系统在短时间内有很多连接，则需要增大该参数的值，该参数值指定到来的TCP/IP连接的监听队列的大小。默认值80。 max_connections = 3000 #MySQL允许最大的进程连接数，如果经常出现Too Many Connectio…

为pip配置阿里云软件源
type: item
date: 2021-02-01T09:24:00+00:00
description: 一、配置1.1 配置文件设置配置文件pip.conf位于用户家目录~/.pip/下。如没有此目录和文件，可以手动创建。mkdir ~/.pip #建立.pip目录在pip下新建pip.conf，输入以下内容[global] timeout=6000 index-url = http://mirrors.aliyun.com/pypi/simple trusted-host = mirrors.aliyun.com保存退出，完成。mkdir ~/.pip cat > ~/.pip/pip.conf << EOF [global] timeout=6000 index-url = http://mirrors.aliyun.com/pypi/simple trusted-host = mirrors.aliyun.com EOF1.2 命令设置pip config set global.index-url http://mirrors.aliyun.com/pypi/simple二、国内pip软件源阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/三、一次性使用pip3 install pymilvus -i https://mirrors.aliyun.com/pypi/simple/

KMS激活命令
type: item
date: 2021-02-01T09:23:00+00:00
description: 一、激活Windows1.1 应用Windows序列号win10 专业版 序列号 slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX win10 企业版 序列号 slmgr /ipk 33pxH-7Y6KF-2VJC9-xBBR8-HVTHH win7专业版 序列号 slmgr.vbs -ipk FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4 win7企业版 序列号 slmgr.vbs -ipk 33PXH-7Y6KF-2VJC9-XBBR8-HVTHH服务器系统WindowsServer 2008 R2 Standard 序列号 slmgr.vbs -ipk YC6KT-GKW9T-YTKYR-T4X34-R7VHC WindowsServer 2008 R2 Enterprise 序列号 slmgr.vbs -ipk 489J6-VHDMP-X63PK-3K798-CPX3Y Windows Server 2008 R2 Web 序列号 slmgr.vbs -ipk 6TPJF-RBVHG-WBW2R-86QPH-6RTM4 Windows Server 2008 R2 HPC 序列号 slmgr.vbs -ipk TT8MH-CG224-D3D7Q-498W2-9QCTX WindowsServer 2008 R2 Datacenter 序列号 slmgr.vbs -ipk 74YFP-3QFB3-KQT8W-PMXWJ-7M648 1.2 指定KMS服务器激活slmgr.vbs -skms 192.168.3.11 && slmgr.vbs -ato #将服务器地址修改为KMS服务器地址二、激活office激活前进入office安装目录cd C:\Program Files\Microsoft Office\Office16根据不同office版本，目录名不同。cscript ospp.vbs /sethst:KMS服务器地址 #设定kms服务器地址 cscript ospp.vbs /act #激活 cscript ospp.vbs /dstatus #查看状态或者使用Office Tool Plus添加密钥（office 2024 专业增强版）XJ2XN-FW8RK-P4HMP-DKDBV-GCVGB再指定KMS服务器IP地址即可激活三、官方帮助页面https://docs.microsoft.com/zh-cn/windows-server/get-started/kms-client-activation-keys