<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Linux运维菜</title>
    <link>https://www.opcai.top/</link>
    <description>Recent content on Linux运维菜</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    <lastBuildDate>Wed, 08 Nov 2023 20:59:38 +0800</lastBuildDate>
    <atom:link href="https://www.opcai.top/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>n9e-categraf 安装部署</title>
      <link>https://www.opcai.top/post/2023/2023-11/install-n9e-categraf/</link>
      <pubDate>Wed, 08 Nov 2023 20:59:38 +0800</pubDate>
      <guid>https://www.opcai.top/post/2023/2023-11/install-n9e-categraf/</guid>
      <description>categraf 安装部署 简介 Categraf 是一个监控采集 Agent，类似 Telegraf、Grafana-Agent、Datadog-Agent，希望对所有常见监控对</description>
    </item>
    <item>
      <title>夜莺服务端安装（n9e）</title>
      <link>https://www.opcai.top/post/2023/2023-11/install-n9e/</link>
      <pubDate>Wed, 08 Nov 2023 20:49:00 +0800</pubDate>
      <guid>https://www.opcai.top/post/2023/2023-11/install-n9e/</guid>
      <description>夜莺服务端部署 简介 夜莺(Nightingale)是中国计算机学会托管的开源云原生可观测工具，2020 年由滴滴孵化和开源。夜莺采用 All-in-One 的设计理念</description>
    </item>
    <item>
      <title>编译安装nginx-1.24.0</title>
      <link>https://www.opcai.top/post/2023/2023-08/install_nginx-1.24.0/</link>
      <pubDate>Thu, 03 Aug 2023 17:06:13 +0800</pubDate>
      <guid>https://www.opcai.top/post/2023/2023-08/install_nginx-1.24.0/</guid>
      <description>下载页面 下载页面 目前（2023-08-03）最新稳定版本的nginx是1.24.0，这个版本是从1.23.4直接提升的稳定版本。 编译安装 需要</description>
    </item>
    <item>
      <title>CentOS编译安装新版本的git</title>
      <link>https://www.opcai.top/post/2023/2023-04/centos_install_git/</link>
      <pubDate>Thu, 13 Apr 2023 23:06:31 +0800</pubDate>
      <guid>https://www.opcai.top/post/2023/2023-04/centos_install_git/</guid>
      <description>背景 CentOS 7 自带的git版本（1.8.3）太低，在执行gitlab-ci的时候，发现目录无法自动被清理导致作业失败，解决方法就是升级版本。 下载最</description>
    </item>
    <item>
      <title>Kubectl Bash 自动补全</title>
      <link>https://www.opcai.top/post/2022/2022-11/kubectl-bash-completion/</link>
      <pubDate>Tue, 29 Nov 2022 23:50:52 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-11/kubectl-bash-completion/</guid>
      <description>在使用kubectl命令的时候，经常需要打各种参数，如果有自动补全，可以省去很多麻烦，让工作更有效率 在bash中一般都是使用bash-com</description>
    </item>
    <item>
      <title>列式数据库管理系统 - clickhouse</title>
      <link>https://www.opcai.top/post/2022/2022-11/clickhouse/</link>
      <pubDate>Wed, 23 Nov 2022 23:47:39 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-11/clickhouse/</guid>
      <description>常见数据库 常见的行式数据库系统有：MySQL、Postgres和MS SQL Server。 常见的列式数据库有： Vertica、 Paraccel (Actian Matrix，A</description>
    </item>
    <item>
      <title>图文安装Rocky 9.0</title>
      <link>https://www.opcai.top/post/2022/2022-11/rocky9.0-install/</link>
      <pubDate>Thu, 17 Nov 2022 21:55:31 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-11/rocky9.0-install/</guid>
      <description>简介 CentOS已经变成了滚动更新了，不会像RHEL一样发布版本了，我们可以使用Rock Linux代替。 Rocky Linux 是一个社区企业操作系统，由Cen</description>
    </item>
    <item>
      <title>k8s-pod资源限制</title>
      <link>https://www.opcai.top/post/2022/2022-08/ks-pod-resources/</link>
      <pubDate>Sat, 13 Aug 2022 19:46:04 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-08/ks-pod-resources/</guid>
      <description>简介 在编排容器的时候，需要分配资源的使用。 默认pod资源是没有限制的，这样子会导致节点的资源可能被耗尽，引起多个pod出现问题。 手动分配好p</description>
    </item>
    <item>
      <title>快速安装elsticsearch&#43;kinbana</title>
      <link>https://www.opcai.top/post/2022/2022-08/install-es-kinbana/</link>
      <pubDate>Sat, 13 Aug 2022 00:17:05 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-08/install-es-kinbana/</guid>
      <description>简介 Elasticsearch 是一个非常强大的搜索引擎。 安装 elasticsearch 在elasticsearch 7 版本中，有自带的jdk，可以使用自带的jdk直接运行即可。 wget -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.5-linux-x86_64.tar.gz tar zxvf elasticsearch-7.17.5-linux-x86_64.tar.gz cd</description>
    </item>
    <item>
      <title>k8s pod亲和性-podAffinity </title>
      <link>https://www.opcai.top/post/2022/2022-08/k8s-podAffinity/</link>
      <pubDate>Tue, 09 Aug 2022 23:49:05 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-08/k8s-podAffinity/</guid>
      <description>简介 pod的亲和性主要用来解决pod可以和哪些pod部署在同一个node里面； 而pod的反亲和性是为了解决pod不能和哪些pod部署在一起的</description>
    </item>
    <item>
      <title>sqlite3 支持JSON</title>
      <link>https://www.opcai.top/post/2022/2022-08/sqlite-json/</link>
      <pubDate>Tue, 09 Aug 2022 23:19:59 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-08/sqlite-json/</guid>
      <description>简介 在 SQLite 版本 3.38.0 （2022-02-22） 之前，JSON 函数是一个扩展，需要另外编译。本 3.38.0 之后，JSON 函数和运算符默认内置于 SQLite 。 SQLite将</description>
    </item>
    <item>
      <title>kakfa单节点安装</title>
      <link>https://www.opcai.top/post/2022/2022-08/kafka-pernode-install/</link>
      <pubDate>Wed, 03 Aug 2022 17:41:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-08/kafka-pernode-install/</guid>
      <description>下载地址 kafka： https://repo.huaweicloud.com/apache/kafka/3.2.1/kafka_2.12-3.2.1.tgz jdk版本：支持8版本，但是推荐11版本以上。 部署 解压kafka_2.12-3.2.1.tgz 到 /opt/kafka_</description>
    </item>
    <item>
      <title>k8s集群部署-初始化集群</title>
      <link>https://www.opcai.top/post/2022/2022-08/k8s-init-cluster/</link>
      <pubDate>Mon, 01 Aug 2022 22:19:34 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-08/k8s-init-cluster/</guid>
      <description>apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.122.100 bindPort: 6443 nodeRegistration: criSocket: /var/run/dockershim.sock imagePullPolicy: IfNotPresent name: centos7.example.com taints: null --- apiServer: timeoutForControlPlane: 4m0s apiVersion: kubeadm.k8s.io/v1beta3 certificatesDir: /etc/kubernetes/pki clusterName: kubernetes controllerManager: {} dns: {} etcd: local: dataDir: /var/lib/etcd imageRepository: registry.aliyuncs.com/google_containers kind: ClusterConfiguration kubernetesVersion: 1.23.6 networking: dnsDomain: cluster.local podSubnet: 10.244.0.0/16 serviceSubnet: 10.96.0.0/12 scheduler: {} --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration mode: ipvs 将配置文件保存为kube</description>
    </item>
    <item>
      <title>k8s集群部署-安装容器和k8s组件</title>
      <link>https://www.opcai.top/post/2022/2022-08/k8s-install-soft/</link>
      <pubDate>Mon, 01 Aug 2022 22:17:49 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-08/k8s-install-soft/</guid>
      <description>#!/bin/bash # 安装docker wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce device-mapper-persistent-data lvm2 yum-utils mkdir -p /etc/docker tee /etc/docker/daemon.json &amp;lt;&amp;lt;-&amp;#39;EOF&amp;#39; { &amp;#34;exec-opts&amp;#34;: [&amp;#34;native.cgroupdriver=systemd&amp;#34;], &amp;#34;registry-mirrors&amp;#34;: [&amp;#34;https://j0o8wuwz.mirror.aliyuncs.com&amp;#34;], &amp;#34;live-restore&amp;#34;: true, &amp;#34;log-driver&amp;#34;:&amp;#34;json-file&amp;#34;, &amp;#34;log-opts&amp;#34;: {&amp;#34;max-size&amp;#34;:&amp;#34;500m&amp;#34;, &amp;#34;max-file&amp;#34;:&amp;#34;3&amp;#34;}, &amp;#34;insecure-registries&amp;#34;: [&amp;#34;hub.example.com&amp;#34;] } EOF systemctl daemon-reload &amp;amp;&amp;amp; systemctl enable docker &amp;amp;&amp;amp; systemctl restart docker cat &amp;gt; /etc/yum.repos.d/kubernetes.repo &amp;lt;&amp;lt; EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF yum -y install kubeadm-1.23.6-0</description>
    </item>
    <item>
      <title>k8s集群部署-升级内核</title>
      <link>https://www.opcai.top/post/2022/2022-08/k8s-upgrade-kernel/</link>
      <pubDate>Mon, 01 Aug 2022 22:16:45 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-08/k8s-upgrade-kernel/</guid>
      <description>运行脚本，并根据列表选择启动内核 #!/bin/bash rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y yum -y install kernel-lt --disablerepo=&amp;#34;*&amp;#34; --enablerepo=&amp;#34;elrepo-kernel&amp;#34; echo &amp;#34;可选启动内核：&amp;#34; cat /boot/grub2/grub.cfg | grep -v rescue | grep ^menuentry echo &amp;#34;请选择启动内核</description>
    </item>
    <item>
      <title>k8s集群部署-初始化机器</title>
      <link>https://www.opcai.top/post/2022/2022-08/k8s-initos/</link>
      <pubDate>Mon, 01 Aug 2022 22:15:38 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-08/k8s-initos/</guid>
      <description>初始化机器脚本 #!/bin/bash # 设置ipvs cat &amp;gt; /etc/sysconfig/modules/ipvs.modules &amp;lt;&amp;lt;EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh #modprobe -- nf_conntrack_ipv4 modprobe -- nf_conntrack EOF chmod +x /etc/sysconfig/modules/ipvs.modules /etc/sysconfig/modules/ipvs.modules cat &amp;gt; /etc/sysctl.d/k8s.conf &amp;lt;&amp;lt; EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.ipv4.tcp_tw_recycle = 0 vm.swappiness = 0 # 禁用swap</description>
    </item>
    <item>
      <title>php7添加kafka模块</title>
      <link>https://www.opcai.top/post/2022/2022-08/php-rdkafka/</link>
      <pubDate>Mon, 01 Aug 2022 22:13:08 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-08/php-rdkafka/</guid>
      <description>简介 kafka是比较常用的消息队列中间件。 在PHP项目中使用kafka需要安装对应的模块。 librdkafka 模块依赖librdkafka https://github.com/edenhill/librdkafka 这个模块可以自己编</description>
    </item>
    <item>
      <title>linux添加人脸识别认证</title>
      <link>https://www.opcai.top/post/2022/2022-07/linux-howdy/</link>
      <pubDate>Wed, 20 Jul 2022 21:17:22 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-07/linux-howdy/</guid>
      <description>简介 howdy 人脸识别，可以实现Linux认证。只要有摄像头都可以使用。 安装 在Archlinux和Manjaro上可以直接使用yay进行安装 yay -S howdy U</description>
    </item>
    <item>
      <title>k8s亲和性调度-nodeAffinity</title>
      <link>https://www.opcai.top/post/2022/2022-07/kubernets-nodeAffinity/</link>
      <pubDate>Mon, 18 Jul 2022 23:42:11 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-07/kubernets-nodeAffinity/</guid>
      <description>简介 nodeAffinity就是节点亲和性，相对应的是Anti-Affinity，就是反亲和性。 这种方法比nodeSelector灵活，可以</description>
    </item>
    <item>
      <title> kubernetes负载均衡器之MetalLB</title>
      <link>https://www.opcai.top/post/2022/2022-07/kubernets-metallb/</link>
      <pubDate>Mon, 11 Jul 2022 22:39:48 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-07/kubernets-metallb/</guid>
      <description>简介 在kubernets中，可以使用Loadbalancer的方式对外提供服务，在一般云环境中都有对应的负载均衡的产品。 如果在非云环境中，可</description>
    </item>
    <item>
      <title>k8s亲和性调度-nodeSelector</title>
      <link>https://www.opcai.top/post/2022/2022-06/k8s-nodeSelector/</link>
      <pubDate>Tue, 28 Jun 2022 21:50:12 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-06/k8s-nodeSelector/</guid>
      <description>简介 默认的调度策略是考虑资源是否足够，是否均衡调度。 有时候我们希望能将对应的pod调度到对应的node节点，来给对应的业务提供足够的预留资源</description>
    </item>
    <item>
      <title>CentOS6 不维护之后配置yum</title>
      <link>https://www.opcai.top/post/2022/2022-06/centos6-eol-yum/</link>
      <pubDate>Wed, 22 Jun 2022 07:44:42 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-06/centos6-eol-yum/</guid>
      <description>简介 CentOS 6 已经不维护了，很多官方镜像源都没法使用了，可以切换到归档库进行安装软件。 配置 备份一下/etc/yum.repos.d/里面的文件文件</description>
    </item>
    <item>
      <title>Codis集群部署</title>
      <link>https://www.opcai.top/post/2022/2022-03/deloy_codis/</link>
      <pubDate>Sat, 26 Mar 2022 21:25:51 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-03/deloy_codis/</guid>
      <description>简介 Codis配置依赖于zookeeper，可以独立部署一套zookeeper集群。 服务可以使用supervisor进行管理 下载软件 jdk可</description>
    </item>
    <item>
      <title>Prometheus通过http_sd_config发现服务</title>
      <link>https://www.opcai.top/post/2022/2022-03/prometheus_http_sd_config/</link>
      <pubDate>Sat, 26 Mar 2022 08:50:45 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-03/prometheus_http_sd_config/</guid>
      <description>简介 Prometheus支持很多中配置，如果是多个系统协同运行，通过http接口实现数据同步是最方便的方式。 实现接口 接口要求返回状态码是20</description>
    </item>
    <item>
      <title>caddy支持WebDAV，同步joplin笔记</title>
      <link>https://www.opcai.top/post/2022/2022-03/caddy_WebDAV/</link>
      <pubDate>Fri, 18 Mar 2022 21:18:31 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-03/caddy_WebDAV/</guid>
      <description>简介 在使用Joplin笔记过程中，需要有WebDAV服务来同步保存数据。 公有云有很多WebDAV，例如：坚果云等。但是同步频率有限制，导致我</description>
    </item>
    <item>
      <title>Linux sysctl.d 配置内核参数</title>
      <link>https://www.opcai.top/post/2022/2022-02/linux_sysctl.d/</link>
      <pubDate>Wed, 16 Feb 2022 19:37:02 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-02/linux_sysctl.d/</guid>
      <description>简介 linux内核参数，在之前的版本都是配置/etc/sysctl.conf文件，在现在使用systemd管理的系统的系统中，默认没有这个文</description>
    </item>
    <item>
      <title>使用caddy作为web服务器</title>
      <link>https://www.opcai.top/post/2022/2022-01/web_server_caddy/</link>
      <pubDate>Wed, 12 Jan 2022 16:38:32 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-01/web_server_caddy/</guid>
      <description>&lt;p&gt;&lt;code&gt;Caddy&lt;/code&gt;是一个由&lt;code&gt;Go&lt;/code&gt;语言编写的Web服务器软件，可以自动实现&lt;code&gt;HTTPS&lt;/code&gt;部署。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Alpine Linux 认识</title>
      <link>https://www.opcai.top/post/2022/2022-01/view_alpine_linux/</link>
      <pubDate>Thu, 06 Jan 2022 22:21:10 +0800</pubDate>
      <guid>https://www.opcai.top/post/2022/2022-01/view_alpine_linux/</guid>
      <description>Alpine Linux是一个面向安全的轻量级Linux发行版，基于musl libc和Busybox。 特点 Alpine Linux是所有操作系统中启动时间最快的操作</description>
    </item>
    <item>
      <title>2021年用过的Linux操作系统</title>
      <link>https://www.opcai.top/post/2021/2021-12/2021_use_linux/</link>
      <pubDate>Thu, 30 Dec 2021 22:13:03 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-12/2021_use_linux/</guid>
      <description>简介 Linux有很多发行版本。 目前中桌面版本常用的就是Manjaro了，也换过Deepin，但是总是有点小毛病，又换回了Manjaro。 服务</description>
    </item>
    <item>
      <title>CentOS 安装supervisor</title>
      <link>https://www.opcai.top/post/2021/2021-10/centos_install_supervisor/</link>
      <pubDate>Mon, 25 Oct 2021 23:51:54 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-10/centos_install_supervisor/</guid>
      <description>简介 CentOS有自带的supervisor，可以通过yum直接安装。 安装 在CentOS7上可以直接安装，在CentOS Stream上可以通</description>
    </item>
    <item>
      <title>用什么方式安装redis</title>
      <link>https://www.opcai.top/post/2021/2021-10/way_of_install_redis/</link>
      <pubDate>Sat, 02 Oct 2021 22:45:56 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-10/way_of_install_redis/</guid>
      <description>简介 安装redis服务有好几种方式，你会如何选择？ 系统自带的安装包 现在Linux发行版本基本都是有自带redis安装包的。 安装系统自带的包都</description>
    </item>
    <item>
      <title>arch/manjaro 安装wps-office</title>
      <link>https://www.opcai.top/post/2021/2021-09/archlinux_install_wps_office/</link>
      <pubDate>Thu, 16 Sep 2021 21:15:28 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-09/archlinux_install_wps_office/</guid>
      <description>安装 需要添加AUR库并且安装好yay sudo pacman -s yay 从AUR安装 yay -S wps-office-mui-zh-cn wps-office-mime-cn wps-office-cn wps-office-fonts ttf-ms-fonts ttf-wps-fonts ttf-wps-fonts、wps-office-fonts和ttf</description>
    </item>
    <item>
      <title>git配置</title>
      <link>https://www.opcai.top/post/2021/2021-09/git_config/</link>
      <pubDate>Tue, 14 Sep 2021 21:49:27 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-09/git_config/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;git&lt;/code&gt;配置文件：&lt;/p&gt;
&lt;p&gt;针对整个系统：&lt;code&gt;/etc/gitconfig&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;针对用户全局的：&lt;code&gt;~/.gitconfig&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;针对仓库：&lt;code&gt;[项目目录]/.git/config&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>安装archlinux</title>
      <link>https://www.opcai.top/post/2021/2021-09/install-archlinux/</link>
      <pubDate>Mon, 13 Sep 2021 21:51:41 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-09/install-archlinux/</guid>
      <description>&lt;h2 id=&#34;下载&#34;&gt;下载&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/archlinux-2021.09.01-x86_64.iso&#34;&gt;https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/archlinux-2021.09.01-x86_64.iso&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;启动镜像&#34;&gt;启动镜像&lt;/h2&gt;
&lt;p&gt;选择菜单启动项目就可以进入一个黑黑的终端，就可以开始安装了。&lt;/p&gt;
&lt;p&gt;如果是有线会自动通过dhcp设置网络；如果是无限可以通过iwctl命令进行网络设置。&lt;/p&gt;
&lt;p&gt;安装过程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;设置时区&lt;/li&gt;
&lt;li&gt;设置时间同步&lt;/li&gt;
&lt;li&gt;分区&lt;/li&gt;
&lt;li&gt;格式化分区&lt;/li&gt;
&lt;li&gt;设置镜像源，如果有&lt;code&gt;.cn&lt;/code&gt;的地址可以拷贝到文件前几行&lt;/li&gt;
&lt;li&gt;安装基础环境&lt;/li&gt;
&lt;li&gt;设置自动挂载&lt;/li&gt;
&lt;li&gt;切换到安装的根目录&lt;/li&gt;
&lt;li&gt;设置本地化语言&lt;/li&gt;
&lt;li&gt;创建用户并设置密码&lt;/li&gt;
&lt;li&gt;安装grub并生成grub配置文件&lt;/li&gt;
&lt;li&gt;可以随手安装一下桌面环境（可选）&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>怎么开始Linux</title>
      <link>https://www.opcai.top/post/2021/2021-09/start_linux/</link>
      <pubDate>Wed, 08 Sep 2021 21:30:02 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-09/start_linux/</guid>
      <description>&lt;h2 id=&#34;怎么开始学习linux&#34;&gt;怎么开始学习Linux&lt;/h2&gt;
&lt;p&gt;要开始学习Linux，最重要的是什么？&lt;/p&gt;
&lt;p&gt;最重要的是要有Linux环境，作为操作系统，也是一种工具而已，要先有才会有实践的环境，不能只是看，还要动手。&lt;/p&gt;
&lt;p&gt;准备好一台电脑，安装好虚拟机的环境，这一步应该很简单。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Centos7快速安装redis-6.2</title>
      <link>https://www.opcai.top/post/2021/2021-09/centos7_install_redis6.2_bin/</link>
      <pubDate>Thu, 02 Sep 2021 23:10:18 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-09/centos7_install_redis6.2_bin/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在&lt;code&gt;Centos7&lt;/code&gt;上安装&lt;code&gt;redis-6.2.5&lt;/code&gt;需要先升级&lt;code&gt;gcc&lt;/code&gt;版本，比较麻烦。&lt;/p&gt;
&lt;p&gt;编译了一个二进制版本，可以直接在&lt;code&gt;CentOS7&lt;/code&gt;上直接安装运行。&lt;/p&gt;</description>
    </item>
    <item>
      <title>redis monitor打印执行命令</title>
      <link>https://www.opcai.top/post/2021/2021-08/redis_monitor/</link>
      <pubDate>Wed, 25 Aug 2021 21:53:14 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-08/redis_monitor/</guid>
      <description>简介 redis提供了一个monitor命令，来实时打印redis服务接收到的命令。 有几种命令是不会被记录：EXEC、HELLO、QUIT、A</description>
    </item>
    <item>
      <title>CentOS安装filebeat收集日志到kafka</title>
      <link>https://www.opcai.top/post/2021/2021-08/filebeat_to_kafka/</link>
      <pubDate>Wed, 25 Aug 2021 00:03:26 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-08/filebeat_to_kafka/</guid>
      <description>简介 filebeat是日志数据采集器，可代替logstash收集日志，部署起来比较方便。 一般日志量比较大，会先收集到kafka然后再进行消费</description>
    </item>
    <item>
      <title>CentOS 7 快速安装mongodb</title>
      <link>https://www.opcai.top/post/2021/2021-08/centos7_install_mongodb4/</link>
      <pubDate>Tue, 10 Aug 2021 21:18:17 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-08/centos7_install_mongodb4/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;MongoDB&lt;/code&gt; 是由&lt;code&gt;C++&lt;/code&gt;语言编写的，是一个基于分布式文件存储的开源数据库系统。&lt;/p&gt;
&lt;h2 id=&#34;环境介绍&#34;&gt;环境介绍&lt;/h2&gt;
&lt;p&gt;操作系统：CentOS 7&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prometheus - elasticsearch_exporter 部署</title>
      <link>https://www.opcai.top/post/2021/2021-07/prometheus_elasticsearch_exporter/</link>
      <pubDate>Wed, 28 Jul 2021 13:38:15 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-07/prometheus_elasticsearch_exporter/</guid>
      <description>简介 prometheus获取elasticsearch指标需要借助elasticsearch_exporter。 部署 在github下载页面：</description>
    </item>
    <item>
      <title>redis事务简介</title>
      <link>https://www.opcai.top/post/2021/2021-07/redis-pipeline/</link>
      <pubDate>Thu, 22 Jul 2021 21:22:58 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-07/redis-pipeline/</guid>
      <description>简介 Redis 事务可以一次执行多个命令。 命令 开启事务需要使用multi命令就可以开启，然后输入命令，只有在exec的时候事务才会被提交 127.0.0.1:6379&amp;gt; multi OK 127.0.0.1:6379(TX)&amp;gt; set key opcai.top</description>
    </item>
    <item>
      <title>deepin 中管理iptables脚本</title>
      <link>https://www.opcai.top/post/2021/2021-07/systemd-iptables-service/</link>
      <pubDate>Sun, 18 Jul 2021 23:55:34 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-07/systemd-iptables-service/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在&lt;code&gt;CentOS&lt;/code&gt;上用惯了&lt;code&gt;iptables&lt;/code&gt;，作为服务进行管理，但是在&lt;code&gt;Debian&lt;/code&gt;上没有对应的脚本，手动做一个。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ansible批量添加管理用户</title>
      <link>https://www.opcai.top/post/2021/2021-07/ansible-playbook_add_admin_user/</link>
      <pubDate>Wed, 14 Jul 2021 22:49:50 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-07/ansible-playbook_add_admin_user/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;linux&lt;/code&gt;服务器搬迁，由于&lt;code&gt;root&lt;/code&gt;用户是随机密码，比较长而且没什么规律。搬迁的时候需要手动换网卡，需要离线操作，所以需要创建一个管理用户，密码有规律一点，方便操作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>redis内存transparent_hugepage的问题</title>
      <link>https://www.opcai.top/post/2021/2021-07/redis_THP/</link>
      <pubDate>Mon, 12 Jul 2021 23:07:42 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-07/redis_THP/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在&lt;code&gt;redis&lt;/code&gt;启动的时候会&lt;code&gt;WARNING&lt;/code&gt;提示：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;15495:S &lt;span style=&#34;color:#099&#34;&gt;12&lt;/span&gt; Jul 21:58:07.214 &lt;span style=&#34;color:#998;font-style:italic&#34;&gt;# WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command &amp;#39;echo never &amp;gt; /sys/kernel/mm/transparent_hugepage/enabled&amp;#39; as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>MySQL JSON类型</title>
      <link>https://www.opcai.top/post/2021/2021-07/mysql_json/</link>
      <pubDate>Wed, 07 Jul 2021 22:45:29 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-07/mysql_json/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;MySQL&lt;/code&gt;中，直至 5.7.8 版本中，才正式引入 JSON数据类型，采用一种允许快速读取文本元素（document elements）的内部二进制（internal binary）格式。&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;JSON&lt;/code&gt;列插入或者更新的时候，将会自动验证是否是合法的&lt;code&gt;JSON&lt;/code&gt;，如果是非法的就会执行不成功，并报错。&lt;/p&gt;
&lt;h2 id=&#34;为什么要用json类型&#34;&gt;为什么要用&lt;code&gt;JSON&lt;/code&gt;类型&lt;/h2&gt;
&lt;p&gt;当我们需要变更一些需求的时候，可以通过增加表字段来现实，但是随着表的增加，增加字段越來越困难。&lt;/p&gt;
&lt;p&gt;如果我们采用 一个&lt;code&gt;JSON&lt;/code&gt;字段，来存储一些信息，就可以比较灵活地实现动态增加或者减少字段，完成业务需求。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux设置主机名</title>
      <link>https://www.opcai.top/post/2021/2021-07/linux_hostname/</link>
      <pubDate>Wed, 07 Jul 2021 13:59:58 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-07/linux_hostname/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Linux&lt;/code&gt;设置主机名可以让我们快速辨别主机，而且有些服务也是依赖于主机名运行的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS7 设置静态路由</title>
      <link>https://www.opcai.top/post/2021/2021-07/centos7_static_route/</link>
      <pubDate>Tue, 06 Jul 2021 22:59:40 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-07/centos7_static_route/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;由于网络规划，需要在主机上添加静态路由才能实现网络的互通。&lt;/p&gt;</description>
    </item>
    <item>
      <title>redis 内存信息及相关操作</title>
      <link>https://www.opcai.top/post/2021/2021-07/redis_memory_ops/</link>
      <pubDate>Mon, 05 Jul 2021 17:48:32 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-07/redis_memory_ops/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;redis&lt;/code&gt;是缓存数据库，比较依赖内存的使用情况。&lt;/p&gt;
&lt;p&gt;可以通过&lt;code&gt;INFO MEMORY&lt;/code&gt;，查看内存的使用情况&lt;/p&gt;</description>
    </item>
    <item>
      <title>远程写入prometheus存储</title>
      <link>https://www.opcai.top/post/2021/2021-07/remote_write_prometheus/</link>
      <pubDate>Fri, 02 Jul 2021 17:09:15 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-07/remote_write_prometheus/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;prometheus&lt;/code&gt;一般都是采用&lt;code&gt;pull&lt;/code&gt;方式获取数据，但是有一些情况下，不方便配置&lt;code&gt;exporter&lt;/code&gt;，就希望能通过&lt;code&gt;push&lt;/code&gt;的方式上传指标数据。&lt;/p&gt;
&lt;p&gt;1、可以采用&lt;code&gt;pushgateway&lt;/code&gt;的方式，推送到&lt;code&gt;pushgateway&lt;/code&gt;，然后&lt;code&gt;prometheus&lt;/code&gt;通过&lt;code&gt;pushgateway&lt;/code&gt;拉取数据。&lt;/p&gt;
&lt;p&gt;2、在新版本中增加了一个参数：&lt;code&gt;--enable-feature=remote-write-receiver&lt;/code&gt;，允许远程通过接口&lt;code&gt;/api/v1/write&lt;/code&gt;，直接写数据到&lt;code&gt;prometheus&lt;/code&gt;里面。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pushgateway&lt;/code&gt;在高并发的情况下还是比较消耗资源的，特别是开启一致性检查，高并发写入的时候特别慢。&lt;/p&gt;
&lt;p&gt;第二种方式少了一层转发，速度应该比较快。&lt;/p&gt;</description>
    </item>
    <item>
      <title>夜莺v5 部署</title>
      <link>https://www.opcai.top/post/2021/2021-06/nightingale_v5/</link>
      <pubDate>Tue, 29 Jun 2021 15:51:56 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-06/nightingale_v5/</guid>
      <description>&lt;h3 id=&#34;简介&#34;&gt;简介&lt;/h3&gt;
&lt;p&gt;夜莺是新一代国产智能监控系统。对云原生场景、传统物理机虚拟机场景，都有很好的支持。&lt;/p&gt;</description>
    </item>
    <item>
      <title>shell脚本分割nginx日志</title>
      <link>https://www.opcai.top/post/2021/2021-06/nginx_split_logs/</link>
      <pubDate>Mon, 28 Jun 2021 17:08:55 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-06/nginx_split_logs/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;nginx&lt;/code&gt;没有自动分割日志的功能，我们可以利用&lt;code&gt;shell&lt;/code&gt;脚本+&lt;code&gt;cron&lt;/code&gt;定时任务进行分割。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu安装nrpe</title>
      <link>https://www.opcai.top/post/2021/2021-06/ubuntu_nrpe/</link>
      <pubDate>Mon, 28 Jun 2021 16:19:48 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-06/ubuntu_nrpe/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;nagios&lt;/code&gt;虽然古老，但是还是挺好用的。&lt;code&gt;nagios&lt;/code&gt;监控主机可以采用&lt;code&gt;nrpe&lt;/code&gt;客户端的方式进行。&lt;/p&gt;</description>
    </item>
    <item>
      <title>运维监控系统之Prometheus consul服务自动发现</title>
      <link>https://www.opcai.top/post/2021/2021-06/prometheus_consul/</link>
      <pubDate>Fri, 25 Jun 2021 16:22:01 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-06/prometheus_consul/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;prometheus&lt;/code&gt;支持从&lt;code&gt;consul&lt;/code&gt;发现监控目标。&lt;/p&gt;</description>
    </item>
    <item>
      <title>pika简介及安装</title>
      <link>https://www.opcai.top/post/2021/2021-06/pika_quick_install/</link>
      <pubDate>Wed, 23 Jun 2021 17:19:11 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-06/pika_quick_install/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;Pika是一个可持久化的大容量redis存储服务，兼容string、hash、list、zset、set的绝大部分接口&lt;/p&gt;
&lt;p&gt;解决redis由于存储数据量巨大而导致内存不够用的容量瓶颈，并且可以像redis一样，通过slaveof命令进行主从备份，支持全同步和部分同步，pika还可以用在twemproxy或者codis中来实现静态数据分片。&lt;/p&gt;</description>
    </item>
    <item>
      <title>快速创建Redis Cluster集群</title>
      <link>https://www.opcai.top/post/2021/2021-06/quik_redis_cluster/</link>
      <pubDate>Tue, 22 Jun 2021 22:59:12 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-06/quik_redis_cluster/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;利用&lt;code&gt;SHELL&lt;/code&gt;脚本快速部署 Redis Cluster 集群。(推荐是用redis6版本)&lt;/p&gt;</description>
    </item>
    <item>
      <title>consul简介及安装</title>
      <link>https://www.opcai.top/post/2021/2021-06/consul/</link>
      <pubDate>Tue, 22 Jun 2021 22:46:59 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-06/consul/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;consul&lt;/code&gt;提供了服务注册与发现框 架、分布一致性协议实现、健康检查、KV存储、多数据中心方案等功能。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;一致性：采用的是&lt;code&gt;RAFT&lt;/code&gt;算法保证分布式节点的一致性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;服务发现：采用&lt;code&gt;http&lt;/code&gt;和&lt;code&gt;dns&lt;/code&gt;协议。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;服务注册：1、通过&lt;code&gt;http API&lt;/code&gt;，由服务自己调用&lt;code&gt;API&lt;/code&gt;实现注册，2、通过&lt;code&gt;JSON&lt;/code&gt;配置文件实现注册，将需要注册的服务以&lt;code&gt;JSON&lt;/code&gt;格式的配置文件给出。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;服务间的通讯协议：使用gossip协议管理成员关系、广播消息到整个集群&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Archlinux 自动获取镜像源</title>
      <link>https://www.opcai.top/post/2021/2021-06/archlinux-mirrors/</link>
      <pubDate>Fri, 18 Jun 2021 09:23:17 +0800</pubDate>
      <guid>https://www.opcai.top/post/2021/2021-06/archlinux-mirrors/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Reflector&lt;/code&gt;是一个&lt;code&gt;Python&lt;/code&gt;编写的脚本，会自动从&lt;code&gt;https://archlinux.org/mirrors/status/&lt;/code&gt;上获取镜像地址，可以通过参数筛选出，自己需要的镜像地址。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - 加强SSH服务防护，保证服务器安全</title>
      <link>https://www.opcai.top/post/2020/2020-07/linux_ssh_security/</link>
      <pubDate>Wed, 08 Jul 2020 23:11:27 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-07/linux_ssh_security/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;目前大部分服务器都是使用Linux，而SSH服务是远程管理Linux服务器的基础服务。因此保证SSH服务的安全，是保证服务器安全的基本。&lt;/p&gt;
&lt;p&gt;SSH默认是监听22端口，很多黑客扫描都是针对22端口的，扫描到端口，再使用爆破工具进行账户密码爆破。&lt;/p&gt;
&lt;p&gt;因此，我们要针对这一思路进行最基本的安全防护。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang - 获取当月第一天的时间和最后一天的时间</title>
      <link>https://www.opcai.top/post/2020/2020-07/golang_month_time/</link>
      <pubDate>Tue, 07 Jul 2020 22:00:52 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-07/golang_month_time/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在数据库查询的时候，经常需要获取当月的第一天或者最后一天来查询当月数据，进行统计。&lt;/p&gt;
&lt;p&gt;在 Golang 中，可以直接使用time这个包进行时间处理，只要通过预算就可以获取当前月的第一天和最后一天。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prometheus - redis_exporter监控redis</title>
      <link>https://www.opcai.top/post/2020/2020-06/redis_exporter/</link>
      <pubDate>Tue, 09 Jun 2020 21:04:25 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-06/redis_exporter/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;Prometheus针对redis的监控，需要安装redis_exporter来获取指标。&lt;/p&gt;
&lt;h2 id=&#34;下载地址&#34;&gt;下载地址&lt;/h2&gt;
&lt;p&gt;项目地址：&lt;a href=&#34;https://github.com/oliver006/redis_exporter&#34;&gt;https://github.com/oliver006/redis_exporter&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载地址：&lt;a href=&#34;https://github.com/oliver006/redis_exporter/releases/download/v1.6.1/redis_exporter-v1.6.1.linux-amd64.tar.gz&#34;&gt;https://github.com/oliver006/redis_exporter/releases/download/v1.6.1/redis_exporter-v1.6.1.linux-amd64.tar.gz&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prometheus - 动态配置文件</title>
      <link>https://www.opcai.top/post/2020/2020-06/prometheus_file_sd_configs/</link>
      <pubDate>Wed, 03 Jun 2020 22:31:53 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-06/prometheus_file_sd_configs/</guid>
      <description>&lt;h3 id=&#34;简介&#34;&gt;简介&lt;/h3&gt;
&lt;p&gt;Prometheus静态配置文件，每次增加监控都要reload服务。官方有提供一个file_sd_configs的模块，可以实时检测文件变化，来增加或者减少监控。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS8 - 快速安装grafana</title>
      <link>https://www.opcai.top/post/2020/2020-05/centos8_grafana/</link>
      <pubDate>Sun, 31 May 2020 22:39:25 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/centos8_grafana/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;grafana 是一款采用 go 语言编写的开源应用，主要用于大规模指标数据的可视化展现，是网络架构和应用分析中最流行的时序数据展示工具，目前已经支持绝大部分常用的时序数据库。&lt;/p&gt;
&lt;p&gt;Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器, 该编辑器定制的特性和功能是公开的特定数据来源。 官方支持以下数据源: Graphite，Elasticsearch，InfluxDB，Prometheus，Cloudwatch，MySQL和OpenTSDB等。&lt;/p&gt;
&lt;p&gt;每个数据源的查询语言和能力都是不同的。你可以把来自多个数据源的数据组合到一个仪表板，但每一个面板被绑定到一个特定的数据源, 它就属于一个特定的组织。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS8 - 安装node_exporter服务</title>
      <link>https://www.opcai.top/post/2020/2020-05/centos8_node_exporter/</link>
      <pubDate>Wed, 27 May 2020 21:11:08 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/centos8_node_exporter/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;Prometheus导出程序，用于* NIX内核公开的硬件和操作系统指标。&lt;/p&gt;
&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget -c https://github.com/prometheus/node_exporter/releases/download/v1.0.0/node_exporter-1.0.0.linux-amd64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar zxvf  node_exporter-1.0.0.linux-amd64.tar.gz -C /opt/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#0086b3&#34;&gt;cd&lt;/span&gt; /opt/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ln -s node_exporter-1.0.0.linux-amd64 node_exporter
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>CentOS8 - 安装Prometheus服务</title>
      <link>https://www.opcai.top/post/2020/2020-05/centos8_prometheus/</link>
      <pubDate>Tue, 26 May 2020 21:38:41 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/centos8_prometheus/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。&lt;/p&gt;
&lt;p&gt;自2012年成立以来，许多公司和组织都采用了Prometheus，该项目拥有非常活跃的开发人员和用户社区。&lt;/p&gt;
&lt;p&gt;现在，它是一个独立的开源项目，并且独立于任何公司进行维护。&lt;/p&gt;
&lt;h2 id=&#34;特征&#34;&gt;特征&lt;/h2&gt;
&lt;p&gt;普罗米修斯的主要特点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个多维数据模型，其中包含通过度量标准名称和键/值对标识的时间序列数据&lt;/li&gt;
&lt;li&gt;PromQL，一种灵活的查询语言 ，可利用此维度&lt;/li&gt;
&lt;li&gt;不依赖分布式存储；单服务器节点是自治的&lt;/li&gt;
&lt;li&gt;时间序列收集通过HTTP上的拉模型进行&lt;/li&gt;
&lt;li&gt;通过中间网关支持推送时间序列&lt;/li&gt;
&lt;li&gt;通过服务发现或静态配置发现目标&lt;/li&gt;
&lt;li&gt;多种图形和仪表板支持模式&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>运维监控系统 - nagios远程执行脚本，快速实现二次开发</title>
      <link>https://www.opcai.top/post/2020/2020-05/nagios_nrpe/</link>
      <pubDate>Mon, 25 May 2020 22:36:01 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/nagios_nrpe/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在nagios监控中，需要执行远程脚本来获取对应的监控信息。&lt;/p&gt;
&lt;h2 id=&#34;什么是nrpe&#34;&gt;什么是NRPE&lt;/h2&gt;
&lt;p&gt;NRPE是Nagios Remote Plugin Executor的简称，它是nagios的一个扩展工具，用在被监控主机上。&lt;/p&gt;
&lt;p&gt;通过它可以向nagios监控服务器提供该主机的一些本地信息。例如：cpu负载、内存使用情况、磁盘容量、登陆用户数、总进程数、僵尸进程数、swap分区使用情况等等。&lt;/p&gt;
&lt;h2 id=&#34;cs模式&#34;&gt;C/S模式&lt;/h2&gt;
&lt;p&gt;NRPE采用c/s模式，被监控的机子上需要安装并启动NRPE服务。&lt;/p&gt;
&lt;p&gt;服务端通过调用 check_nrpe 命令，请求NRPE监听端口，然后nrpe再调用对应的命令或者脚本，返回结构给服务端。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joplin笔记设置坚果云同步</title>
      <link>https://www.opcai.top/post/2020/2020-05/joplin_sync_webdav/</link>
      <pubDate>Thu, 21 May 2020 20:57:02 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/joplin_sync_webdav/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Joplin&lt;/strong&gt;是一个免费的开源笔记记录和待办事项应用程序，它可以处理笔记本中组织的大量笔记。这些注释是可搜索的，可以直接从应用程序中或从您自己的文本编辑器中进行复制，标记和修改。&lt;/p&gt;
&lt;h2 id=&#34;优点&#34;&gt;优点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;支持多平台&lt;/p&gt;
&lt;p&gt;Windows, MacOS, Android, iOS, 甚至还有 Chrome 和 Firefox 的网页剪辑插件！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持 WebDAV 同步，和坚果云完美适配，还支持 Nextcloud, Dropbox, OneDrive。数据可以进行加密保存在自己的网盘中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持 Markdown 语法；支持 Math expressions，还可以链接到其他笔记。PC端可以调用外部编辑器，用Typora等来编辑。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持导入 .enex 和 .md&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多种格式导出，包括 .md 和 PDF。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持 tag&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;笔记列表支持 Task list&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Go语言中time时间的处理</title>
      <link>https://www.opcai.top/post/2020/2020-05/golang_time/</link>
      <pubDate>Tue, 19 May 2020 22:41:01 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/golang_time/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;编程过程中，一般都会设置到时间的处理。在Go语言中，需要用到time这个包来处理&lt;/p&gt;
&lt;h3 id=&#34;获取当前时间&#34;&gt;获取当前时间&lt;/h3&gt;
&lt;p&gt;默认打印出当前机器上的时间和时区。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;package&lt;/span&gt; main
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;import&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#d14&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#d14&#34;&gt;&amp;#34;time&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#900;font-weight:bold&#34;&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	fmt.&lt;span style=&#34;color:#900;font-weight:bold&#34;&gt;Println&lt;/span&gt;(time.&lt;span style=&#34;color:#900;font-weight:bold&#34;&gt;Now&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>linux - 使用systemd管理redis服务</title>
      <link>https://www.opcai.top/post/2020/2020-05/systemd_redis/</link>
      <pubDate>Mon, 18 May 2020 20:31:42 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/systemd_redis/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;现在系统管理服务基本都是使用systemd，可以替换supervisor管理服务。&lt;/p&gt;</description>
    </item>
    <item>
      <title>docker - 快速安装xwiki</title>
      <link>https://www.opcai.top/post/2020/2020-05/docker_xwiki/</link>
      <pubDate>Tue, 12 May 2020 20:10:26 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/docker_xwiki/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;XWiki是一个由Java编写的基于LGPL协议发布的开源wiki和应用平台。它的开发平台特性允许创建协作式Web应用，同时也提供了构建于平台之上的打包应用（第二代wiki）。&lt;/p&gt;
&lt;h2 id=&#34;部署xwiki&#34;&gt;部署xwiki&lt;/h2&gt;
&lt;p&gt;使用docker镜像来部署，先安装好docker服务&lt;/p&gt;
&lt;h2 id=&#34;创建好docker网络&#34;&gt;创建好docker网络&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker network create -d bridge xwiki-network
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>CentOS - 使用国内镜像的epel软件源</title>
      <link>https://www.opcai.top/post/2020/2020-05/epel_release/</link>
      <pubDate>Mon, 11 May 2020 23:04:31 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/epel_release/</guid>
      <description>&lt;h2 id=&#34;epel-简介&#34;&gt;epel 简介&lt;/h2&gt;
&lt;p&gt;epel是红帽系列的Linux的附加软件包，EPEL 的软件包通常不会与企业版 Linux 官方源中的软件包发生冲突，或者互相替换文件。EPEL 项目与 Fedora 基本一致，包含完整的构建系统、升级管理器、镜像管理器等等。&lt;/p&gt;
&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;
&lt;p&gt;不安装epel-release包也可以，直接手动编辑repo文件，填写好地址即可。建议还是安装完直接修改就好了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yum -y install epel-release
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>redis配置之lazy freeing</title>
      <link>https://www.opcai.top/post/2020/2020-05/redis_lazy_freeing/</link>
      <pubDate>Wed, 06 May 2020 23:36:27 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/redis_lazy_freeing/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;Redis是single-thread程序(除少量的backgroup I/O 任务), 当运行一个耗时较大的请求时，会导致所有请求排队等待redis不能响应其他请求，引起性能问题, 甚至集群发生故障切换。&lt;/p&gt;
&lt;p&gt;lazy free可译为惰性删除或延迟释放；当删除键的时候, redis提供异步延时释放key内存的功能，把key释放操作放在bio(Background I/O)单独的子线程处理中，减少删除big key对redis主线程的阻塞。有效地避免删除big key带来的性能和可用性问题。&lt;/p&gt;
&lt;h2 id=&#34;lazy-freeing使用场景&#34;&gt;lazy freeing使用场景&lt;/h2&gt;
&lt;p&gt;1、第一类是与DEL命令对应的主动删除
2、第二类是过期key删除、maxmemory key驱逐淘汰删除。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redis配置之主从配置</title>
      <link>https://www.opcai.top/post/2020/2020-05/redis_replication/</link>
      <pubDate>Wed, 06 May 2020 21:21:42 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/redis_replication/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;redis 主从模式复制，可以保证数据的安全性。&lt;/p&gt;
&lt;p&gt;有些人认为 master-slave 暗指“奴隶制度”，因此建议修改掉，这个看似简单的修改实际上要付出昂贵的代价。&lt;/p&gt;
&lt;p&gt;在redis5的时候，将 master-slave 架构的描述改为 master-replica，并且兼容之前的slave命令。&lt;/p&gt;
&lt;p&gt;只是为 SLAVEOF 提供别名 REPLICAOF，所以仍然可以使用 SLAVEOF，但多了一个选项。&lt;/p&gt;
&lt;h2 id=&#34;复制&#34;&gt;复制&lt;/h2&gt;
&lt;p&gt;1、redis复制是异步的，但是也指定几个从节点接受到复制后，才表示写成功。&lt;/p&gt;
&lt;p&gt;2、如果网络出现抖动或者延迟，相对时间比较断，Redis副本可以与主节点进行增量同步即可。这个可以通过配置的缓存大小来控制。&lt;/p&gt;
&lt;p&gt;3、复制过程是自动的，不需要手动干预，如果是网络断开了，Redis副本会自动重新尝试连接主节点，进行增量或者全量同步。&lt;/p&gt;</description>
    </item>
    <item>
      <title>redis配置之include</title>
      <link>https://www.opcai.top/post/2020/2020-05/redis_config_include/</link>
      <pubDate>Wed, 06 May 2020 20:58:34 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-05/redis_config_include/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;可以通过include引入redis的配置，引入其他配置文件，在config rewrite的时候，是不会被修改的，因此在使用哨兵的时候，记得不要把一些主从相关的配置放到其他文件。&lt;/p&gt;
&lt;p&gt;为了避免这些自定义配置被覆盖，include最好放到配置最前面。&lt;/p&gt;</description>
    </item>
    <item>
      <title>redis配置之AOF持久化</title>
      <link>https://www.opcai.top/post/2020/2020-04/redis_config_aof/</link>
      <pubDate>Wed, 29 Apr 2020 20:37:22 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/redis_config_aof/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;默认情况下，redis 异步存储rdb，这个模式已经可以在大部分应用场景已经够好了。但是Redis进程有问题或者断电，可能会导致几分钟的写操作的数据丢失（取决于配置的保存点）。&lt;/p&gt;
&lt;h2 id=&#34;aof&#34;&gt;AOF&lt;/h2&gt;
&lt;p&gt;AOF(Append Only File) 是另一种持久化模式，默认的数据fsync策略，Redis在服务器断电之类的重大事件中可能会丢失一秒钟的写入，或者在Redis进程本身出现问题时丢失一次写入，但操作系统仍在正常运行。&lt;/p&gt;
&lt;p&gt;AOF 和 RDB 两种持久化方式可以同时使用。在启动时候是使用AOF文件加载数据的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>redis配置之快照</title>
      <link>https://www.opcai.top/post/2020/2020-04/redis_config_snapshotting/</link>
      <pubDate>Fri, 24 Apr 2020 23:52:29 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/redis_config_snapshotting/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;redis 可以持久化数据到磁盘，rdb文件就是redis持久化生成的快照文件。&lt;/p&gt;
&lt;h2 id=&#34;设置&#34;&gt;设置&lt;/h2&gt;
&lt;p&gt;save 参数可以控制，什么时候写快照文件。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008080&#34;&gt;save &amp;lt;seconds&amp;gt; &amp;lt;changes&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>redis配置之慢日志</title>
      <link>https://www.opcai.top/post/2020/2020-04/redis_config_slowlog/</link>
      <pubDate>Thu, 23 Apr 2020 22:57:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/redis_config_slowlog/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;redis的慢日志是指超过指定执行时间的操作日志。&lt;/p&gt;
&lt;p&gt;这个执行时间不包括客户端握手通讯的时间，如与客户端的通讯、发送回复等等。仅仅只是命令完成所需的时间。&lt;/p&gt;
&lt;h2 id=&#34;涉及参数&#34;&gt;涉及参数&lt;/h2&gt;
&lt;p&gt;慢日志配置涉及两个参数：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;一个是设置超过多长的执行时间就记录日志，单位是微秒（microseconds）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;redis记录日志是使用一个队列，设置这个队列的长度，如果慢日志满了，就会删除最旧的记录。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>redis配置之安全配置</title>
      <link>https://www.opcai.top/post/2020/2020-04/redis_security/</link>
      <pubDate>Wed, 22 Apr 2020 21:06:45 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/redis_security/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;redis一般都是放在内网，不对公网开放访问。但是如果内网被入侵就会存在风险。&lt;/p&gt;
&lt;h2 id=&#34;设置密码&#34;&gt;设置密码&lt;/h2&gt;
&lt;p&gt;设置密码，虽然设置密码还是可以被抓包抓到可谓是防君子，防不住小人。但是至少可以防止redis服务不小心被乱用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>redis配置之客户端数连接限制</title>
      <link>https://www.opcai.top/post/2020/2020-04/redis_config_clients/</link>
      <pubDate>Mon, 20 Apr 2020 23:18:39 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/redis_config_clients/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;redis 客户端连接限制是指，同时有多少客户端连接 redis 服务。&lt;/p&gt;
&lt;p&gt;redis连接数限制会受到系统process file的限制，&lt;/p&gt;
&lt;h2 id=&#34;报错&#34;&gt;报错&lt;/h2&gt;
&lt;p&gt;一旦客户端连接数达到最大客户端的限制，就会报错：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;max number of clients reached
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>redis配置之运行相关配置</title>
      <link>https://www.opcai.top/post/2020/2020-04/redis_config_generl/</link>
      <pubDate>Thu, 16 Apr 2020 23:53:51 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/redis_config_generl/</guid>
      <description>&lt;p&gt;Redis配置之运行相关配置&lt;/p&gt;
&lt;h2 id=&#34;守护进程&#34;&gt;守护进程&lt;/h2&gt;
&lt;p&gt;redis默认是没有使用守护进程进行运行。可以通过daemonize参数进行设置&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008080&#34;&gt;daemonize yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>redis配置之网络</title>
      <link>https://www.opcai.top/post/2020/2020-04/redis_config_network/</link>
      <pubDate>Wed, 15 Apr 2020 22:40:27 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/redis_config_network/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;redis 一般都是通过网络提供服务的。&lt;/p&gt;
&lt;h2 id=&#34;绑定监听地址&#34;&gt;绑定监听地址&lt;/h2&gt;
&lt;p&gt;默认配置文件是绑定的127.0.0.1的地址，这个只能本机使用。&lt;/p&gt;
&lt;p&gt;如果没有指定bind这个参数默认是监听本机的所有地址。&lt;/p&gt;
&lt;p&gt;例如&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-conf&#34; data-lang=&#34;conf&#34;&gt;# bind 192.168.1.100 10.0.0.1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;多个地址使用空格间隔开。&lt;/p&gt;</description>
    </item>
    <item>
      <title>redis配置之内存设置</title>
      <link>https://www.opcai.top/post/2020/2020-04/redis_config_memory/</link>
      <pubDate>Tue, 14 Apr 2020 22:59:29 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/redis_config_memory/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;redis 服务主要的操作都是在内存里面，而内存相对于磁盘还是小很多，因此调控好内存使用很重要。&lt;/p&gt;
&lt;h2 id=&#34;最大使用内存&#34;&gt;最大使用内存&lt;/h2&gt;
&lt;p&gt;默认 redis 可以使用主机上的所有内存。如果一台机子上有多个实例，就不可能让redis使用系统的所有内存，况且操作系统也是需要一部分内存。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-conf&#34; data-lang=&#34;conf&#34;&gt;maxmemory 5gb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>nginx 配置https</title>
      <link>https://www.opcai.top/post/2020/2020-04/nginx_https/</link>
      <pubDate>Fri, 10 Apr 2020 00:09:20 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/nginx_https/</guid>
      <description>&lt;h2 id=&#34;https&#34;&gt;https&lt;/h2&gt;
&lt;p&gt;配置https需要有编译ssl_module 模块，编译的时候需要添加&amp;ndash;with-http_ssl_module参数，编译的时候需要同时指向openssl源码包的目录。&lt;/p&gt;
&lt;p&gt;证书来源：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;花钱购买；&lt;/li&gt;
&lt;li&gt;使用免费的let&amp;rsquo;s encrypt的免费证书，有些设备不信任而已；&lt;/li&gt;
&lt;li&gt;生成不信任的证书自用。&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>nginx 4层转发、代理、负载均衡</title>
      <link>https://www.opcai.top/post/2020/2020-04/nginx_stream/</link>
      <pubDate>Thu, 09 Apr 2020 23:43:45 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/nginx_stream/</guid>
      <description>&lt;h2 id=&#34;4-层转发代理负载均衡&#34;&gt;4 层转发、代理、负载均衡&lt;/h2&gt;
&lt;p&gt;nginx在1.9.0的时候，增加了一个 stream 模块，用来实现四层协议（网络层和传输层）的转发、代理、负载均衡等。&lt;/p&gt;
&lt;h2 id=&#34;添加模块&#34;&gt;添加模块&lt;/h2&gt;
&lt;p&gt;nginx默认是没有编译这个模块的，要使用stream模块，编译的时候记得加上&amp;ndash;with-stream这个参数即可。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;./configure --prefix&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt;/usr/local/nginx --user&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt;www --group&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt;www --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_stub_status_module --with-stream
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>linux - mail配置SMTP发送邮件</title>
      <link>https://www.opcai.top/post/2020/2020-04/mailrc/</link>
      <pubDate>Wed, 08 Apr 2020 22:50:32 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/mailrc/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;linux上mail命令是可以直接发送邮件，默认是使用本地的smtp。&lt;/p&gt;
&lt;h2 id=&#34;配置&#34;&gt;配置&lt;/h2&gt;
&lt;p&gt;如果要使用其他的smtp服务，就需要配置mail.rc，有两个位置可以配置：一个是/etc/mail.rc这个是全局的，针对系统上的所有用户；一个是加目录下的~/.mailrc&lt;/p&gt;
&lt;p&gt;如果是共用的就配置/etc/mail.rc，如果是多个人用一个系统建议就配置~/.mailrc&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux 检查远程登录IP，并发送告警</title>
      <link>https://www.opcai.top/post/2020/2020-04/check_bash_log/</link>
      <pubDate>Tue, 07 Apr 2020 23:32:34 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/check_bash_log/</guid>
      <description>&lt;h2 id=&#34;需求简介&#34;&gt;需求简介&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;记录操作命令的记录&lt;/li&gt;
&lt;li&gt;定时检查 IP，是否是合法 IP&lt;/li&gt;
&lt;li&gt;发送告警&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>nginx配置段简介</title>
      <link>https://www.opcai.top/post/2020/2020-04/nginx_conf/</link>
      <pubDate>Tue, 07 Apr 2020 22:32:43 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/nginx_conf/</guid>
      <description>&lt;h2 id=&#34;配置&#34;&gt;配置&lt;/h2&gt;
&lt;p&gt;nginx如果编译的时候，不指定配置目录的路径，默认就是安装目录下的conf/nginx.conf文件&lt;/p&gt;
&lt;h2 id=&#34;全局块&#34;&gt;全局块&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;配置运行Nginx服务器用户&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-conf&#34; data-lang=&#34;conf&#34;&gt;user nobody nobody;   
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;user是个主模块指令，指定Nginx Worker进程运行以及用户组。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-conf&#34; data-lang=&#34;conf&#34;&gt; 指令格式：user user [group];  
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>平滑迁移codis集群</title>
      <link>https://www.opcai.top/post/2020/2020-04/migration_codis_cluster/</link>
      <pubDate>Thu, 02 Apr 2020 20:50:15 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-04/migration_codis_cluster/</guid>
      <description>&lt;h2 id=&#34;codis-升级迁移方案&#34;&gt;Codis 升级迁移方案&lt;/h2&gt;
&lt;p&gt;迁移 codis 节点，要保证数据不丢失。&lt;/p&gt;
&lt;h2 id=&#34;思考&#34;&gt;思考&lt;/h2&gt;
&lt;p&gt;要将整个集群迁移就要连接，集群里有哪些数据？proxy 是怎么找到数据在哪个后端节点的？有必要迁移 zookeeper 数据吗？&lt;/p&gt;</description>
    </item>
    <item>
      <title>Codis集群 - codis-server数据节点变更</title>
      <link>https://www.opcai.top/post/2020/2020-03/modify_codis_server/</link>
      <pubDate>Tue, 31 Mar 2020 21:50:16 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/modify_codis_server/</guid>
      <description>&lt;h1 id=&#34;codis-server-变更节点&#34;&gt;Codis-server 变更节点&lt;/h1&gt;
&lt;p&gt;Codis 集群可以根据需要进行扩容或者收缩节点。&lt;/p&gt;
&lt;h2 id=&#34;增加节点后端节点codis-server&#34;&gt;增加节点后端节点（codis-server）&lt;/h2&gt;
&lt;h3 id=&#34;部署-codis-server&#34;&gt;部署 codis-server&lt;/h3&gt;
&lt;p&gt;将 codis 的安装包解压出来，只需要配置 codis-server（修改的 redis-server），设置好配置文件，直接启动服务，然后通过 dashboard 直接添加即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Codis集群 - codis-proxy代理变更</title>
      <link>https://www.opcai.top/post/2020/2020-03/modify_codis_proxy/</link>
      <pubDate>Tue, 31 Mar 2020 21:21:30 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/modify_codis_proxy/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;codis-proxy 是 codis 集群的代理转发的应用，可以通过dashboard对codis-proxy进行操作，codis-proxy上不存储数据，数据都在zookeeper上，。&lt;/p&gt;
&lt;h2 id=&#34;增加-proxy&#34;&gt;增加 proxy&lt;/h2&gt;
&lt;p&gt;如果集群设置了密码，需要对应修改的配置文件参数是 product_auth，集群名称 product_name 要一致。session_auth 是 proxy 节点的验证，可以跟其他密码不一样。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Codis集群部署</title>
      <link>https://www.opcai.top/post/2020/2020-03/install_codis/</link>
      <pubDate>Tue, 31 Mar 2020 11:21:30 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/install_codis/</guid>
      <description>&lt;h2 id=&#34;部署-codis-集群简介&#34;&gt;部署 codis 集群简介&lt;/h2&gt;
&lt;p&gt;集群需要依赖于 zookeeper 或者 etcd 服务。这里使用的是 zookeeper 。&lt;/p&gt;
&lt;p&gt;zookeeper 最好选择使用集群模式部署，提高可用性。&lt;/p&gt;
&lt;p&gt;codis-dashboard 通过操作 zookeeper 保存 dashboard、proxy、slot 等相关信息。&lt;/p&gt;
&lt;p&gt;通过 codis-dashboard 可以添加 codis-proxy、codis-server、分组、sentinel、迁移 slot 等。&lt;/p&gt;
&lt;p&gt;codis-fe 可以通过 zookeeper，获取对应的信息，来展示，并获取 dashboard 地址，来进行控制。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - 安装JDK</title>
      <link>https://www.opcai.top/post/2020/2020-03/install_jdk/</link>
      <pubDate>Mon, 30 Mar 2020 20:32:12 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/install_jdk/</guid>
      <description>&lt;h2 id=&#34;安装-jdk&#34;&gt;安装 jdk&lt;/h2&gt;
&lt;p&gt;需要先到 oracle 官网下载对应的压缩包，放到跟脚本同一个目录，然后执行脚本即可。&lt;/p&gt;
&lt;h2 id=&#34;jdk-归档版本&#34;&gt;jdk 归档版本&lt;/h2&gt;
&lt;p&gt;直接到oracle官网直接查找，一般都是展示最新版本的JDK，如果需要之前的版本就需要当归档页面去下载。&lt;/p&gt;
&lt;p&gt;归档地址：&lt;a href=&#34;http://www.oracle.com/technetwork/java/archive-139210.html&#34; title=&#34;http://www.oracle.com/technetwork/java/archive-139210.html&#34;&gt;http://www.oracle.com/technetwork/java/archive-139210.html&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux - 生成随机密码</title>
      <link>https://www.opcai.top/post/2020/2020-03/random_password/</link>
      <pubDate>Mon, 30 Mar 2020 16:51:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/random_password/</guid>
      <description>&lt;h2 id=&#34;随机密码&#34;&gt;随机密码&lt;/h2&gt;
&lt;p&gt;很多时候，就是想设置一个随机密码，但是感觉随便乱打出来的不是很“随机”。&lt;/p&gt;
&lt;h2 id=&#34;用-sha256sum-和-base64-实现&#34;&gt;用 sha256sum 和 base64 实现&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;date +%s |sha256sum |base64 |head -c &lt;span style=&#34;color:#099&#34;&gt;16&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Elasticsearch数据展示 - kibana安装</title>
      <link>https://www.opcai.top/post/2020/2020-03/install_kibana/</link>
      <pubDate>Fri, 27 Mar 2020 16:21:56 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/install_kibana/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;Kibana 是为 Elasticsearch 设计的开源分析和可视化平台。&lt;/p&gt;
&lt;p&gt;安装的时候，需要有 jdk 环境；然后直接下载压缩包，解压即可使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elasticsearch - 部署集群</title>
      <link>https://www.opcai.top/post/2020/2020-03/install_elasticsearch_cluster/</link>
      <pubDate>Fri, 27 Mar 2020 16:03:56 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/install_elasticsearch_cluster/</guid>
      <description>&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;
&lt;p&gt;elasticsearch 在新版本中已经自带了 jdk，不需要另外安装。&lt;/p&gt;</description>
    </item>
    <item>
      <title>运维之日志存储简介</title>
      <link>https://www.opcai.top/post/2020/2020-03/op_log_store/</link>
      <pubDate>Fri, 27 Mar 2020 11:29:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/op_log_store/</guid>
      <description>&lt;h2 id=&#34;日志存储&#34;&gt;日志存储&lt;/h2&gt;
&lt;p&gt;日志收集就是为了查询、统计分析，这个就涉及到要存储到哪里的问题。&lt;/p&gt;
&lt;h2 id=&#34;文件存储&#34;&gt;文件存储&lt;/h2&gt;
&lt;p&gt;文件存储是最简单的存储方式。分析的时候一般就是借助 shell 命令进行过滤、统计。适合日志量比较小的情况，临时统计一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>redis 队列应用</title>
      <link>https://www.opcai.top/post/2020/2020-03/redis_queue/</link>
      <pubDate>Fri, 27 Mar 2020 10:26:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/redis_queue/</guid>
      <description>&lt;h2 id=&#34;redis-队列&#34;&gt;redis 队列&lt;/h2&gt;
&lt;p&gt;Redis 不仅可作为缓存服务器，还可用作消息队列。它的列表类型天生支持用作消息队列。&lt;/p&gt;
&lt;p&gt;由于 Redis 的列表是使用双向链表实现的，保存了头尾节点，所以在列表头尾两边插取元素都是非常快的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>运维之日志管理简介</title>
      <link>https://www.opcai.top/post/2020/2020-03/op_logs/</link>
      <pubDate>Thu, 26 Mar 2020 10:02:53 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/op_logs/</guid>
      <description>&lt;h2 id=&#34;日志简介&#34;&gt;日志简介&lt;/h2&gt;
&lt;p&gt;在运维过程中，日志是必不可少的东西，通过日志可以快速发现问题所在。&lt;/p&gt;
&lt;h2 id=&#34;日志分类&#34;&gt;日志分类&lt;/h2&gt;
&lt;p&gt;日志分类，对不同的日志进行不同维度的分析。&lt;/p&gt;
&lt;h3 id=&#34;操作系统日志&#34;&gt;操作系统日志&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;操作系统是基础，应用都是在其之上；&lt;/li&gt;
&lt;li&gt;操作系统日志的分析，可以反馈出应用的一些问题；&lt;/li&gt;
&lt;li&gt;登录操作系统，可以对应用进行直接操作，因此登录日志可以反馈出一些安全问题；&lt;/li&gt;
&lt;li&gt;操作系统的自我保护机制，例如 OOM，会杀死异常应用，这些异常应用有可能是病毒、木马，也可能仅仅只是配置异常导致的；&lt;/li&gt;
&lt;li&gt;硬件问题，操作系统是驱动硬件做事情的，硬件出现问题，操作系统一般会给出对应的反馈信息，也会记录在日志里面。&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Linux - 系统日志收集</title>
      <link>https://www.opcai.top/post/2020/2020-03/linux_rsyslog/</link>
      <pubDate>Tue, 24 Mar 2020 17:53:44 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/linux_rsyslog/</guid>
      <description>&lt;h2 id=&#34;linux-系统日志&#34;&gt;Linux 系统日志&lt;/h2&gt;
&lt;p&gt;在 Linux 基线安全的规范中，要求将系统日志统一收集。防止被入侵或者宕机，导致日志被丢失，导致故障无法分析。&lt;/p&gt;
&lt;p&gt;Linux 系统默认使用 rsyslog 管理系统日志，可以直接将日志同步到远程的 rsyslog 日志服务，即可统一收集。&lt;/p&gt;
&lt;h2 id=&#34;服务端&#34;&gt;服务端&lt;/h2&gt;
&lt;p&gt;服务端需要开启一个服务端口，给客户端上传日志，可以用 udp 也可以用 tcp。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux - shell汇总用户登录信息</title>
      <link>https://www.opcai.top/post/2020/2020-03/linux_login_info/</link>
      <pubDate>Mon, 23 Mar 2020 16:28:30 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/linux_login_info/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;通过 shell 脚本快速汇总用户登录相关信息。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 用户登录记录</title>
      <link>https://www.opcai.top/post/2020/2020-03/linux_loginlog/</link>
      <pubDate>Mon, 23 Mar 2020 11:13:28 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/linux_loginlog/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;服务器很多时候哦都是会开放远程登录端口，这时候我们就会关注 用户登录记录 。&lt;/p&gt;
&lt;p&gt;在 Linux 上，有关用户登录的信息记录在 utmp(/var/run/utmp)、wtmp(/var/log/wtmp)、btmp(/var/log/btmp) 和 lastlog(/var/log/lastlog) 等文件中。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python - http服务，直接返回客户端IP</title>
      <link>https://www.opcai.top/post/2020/2020-03/python_return_ip/</link>
      <pubDate>Fri, 20 Mar 2020 17:05:31 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/python_return_ip/</guid>
      <description>&lt;h2 id=&#34;获取思路&#34;&gt;获取思路&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果没有代理，直接获取 remote_addr 就可以获取到客户端 IP。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有代理的情况，可以通过头信息分析，需要配合 nginx 配置。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>nginx - 后端程序获取客户端IP</title>
      <link>https://www.opcai.top/post/2020/2020-03/nginx_client_ip/</link>
      <pubDate>Fri, 20 Mar 2020 15:56:22 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/nginx_client_ip/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在使用 nginx 做反向代理时，后端要获取到客户端 IP，需要在 nginx 上设置对应的配置。&lt;/p&gt;
&lt;h2 id=&#34;设置转发请求头&#34;&gt;设置转发请求头&lt;/h2&gt;
&lt;p&gt;设置 HTTP 请求头中的 X-Forwarded-For，X-Real-IP&lt;/p&gt;</description>
    </item>
    <item>
      <title>快速获取外网IP</title>
      <link>https://www.opcai.top/post/2020/2020-03/public_ip/</link>
      <pubDate>Fri, 20 Mar 2020 14:06:39 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/public_ip/</guid>
      <description>&lt;h2 id=&#34;快速获取外网-ip&#34;&gt;快速获取外网 IP&lt;/h2&gt;
&lt;p&gt;现在很多云主机都是使用 nat，没有在机器上直接添加外网 IP 了。这时候要获取到外网 IP 就需要一些服务的支持。&lt;/p&gt;
&lt;h2 id=&#34;有哪些网站可以获取到呢&#34;&gt;有哪些网站可以获取到呢&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ipip.net/ip.html&#34; title=&#34;https://www.ipip.net/ip.html&#34;&gt;IPIP.NET&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;%22https://ip.cn/%22&#34; title=&#34;https://ip.cn/&#34;&gt;IPCN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;%22http://pv.sohu.com/cityjson%22&#34; title=&#34;http://pv.sohu.com/cityjson&#34;&gt;搜狐&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;%22https://www.ip138.com/%22&#34; title=&#34;https://www.ip138.com/&#34;&gt;IP138&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://ping.pe/&#34;&gt;Ping, mtr, dig and TCP port check from multiple locations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://icanhazip.com/&#34;&gt;icanhazip.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ipinfo.io/&#34;&gt;Comprehensive IP address data, IP geolocation API and database - IPinfo.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ip.sb/&#34;&gt;IP Address Lookup / IPv4 / IPv6 - IP.SB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Manjaro上安装KVM和图形管理virt-manager</title>
      <link>https://www.opcai.top/post/2020/2020-03/manjaro_install_kvm_qume/</link>
      <pubDate>Thu, 19 Mar 2020 14:14:24 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/manjaro_install_kvm_qume/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;kvm 用习惯的，感觉 virtualbox 不顺手。我都是远程连接到虚拟机的，因为 virtualbox 的无痕模式对我来说没啥用了，还是用 kvm。两种虚拟机无法同时开启，因为内核模块的原因。&lt;/p&gt;</description>
    </item>
    <item>
      <title>windows使用rsync备份文件</title>
      <link>https://www.opcai.top/post/2020/2020-03/rsync_bat/</link>
      <pubDate>Thu, 19 Mar 2020 11:40:28 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/rsync_bat/</guid>
      <description>&lt;h2 id=&#34;需求&#34;&gt;需求&lt;/h2&gt;
&lt;p&gt;定时将本地的备份同步到远程 Linux 服务器上的目录。&lt;/p&gt;
&lt;h2 id=&#34;准备&#34;&gt;准备&lt;/h2&gt;
&lt;p&gt;需要先安装对应 rsync 客户端，用 ssh key 做验证，这边安装的是 cygwin，进入 cygwin shell，通过 ssh-keygen 命令生成密钥。&lt;/p&gt;</description>
    </item>
    <item>
      <title>yum包管理器-常用命令</title>
      <link>https://www.opcai.top/post/2020/2020-03/yum/</link>
      <pubDate>Wed, 18 Mar 2020 22:29:40 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/yum/</guid>
      <description>&lt;h2 id=&#34;yum-包管理器&#34;&gt;yum 包管理器&lt;/h2&gt;
&lt;p&gt;yum 是红帽系列发行版本的包管理器。&lt;/p&gt;
&lt;h2 id=&#34;常用的命令&#34;&gt;常用的命令&lt;/h2&gt;
&lt;h2 id=&#34;安装软件&#34;&gt;安装软件&lt;/h2&gt;
&lt;p&gt;例如安装nginx&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yum -y install nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>CentOS 7 - 使用systemd管理主机监控node_exporter服务</title>
      <link>https://www.opcai.top/post/2020/2020-03/systemd_node_exporter/</link>
      <pubDate>Wed, 18 Mar 2020 16:55:43 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/systemd_node_exporter/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在 CentOS 7 使用的是 systemd 管理服务了，我们可以通过编写 service 文件来，添加一个服务。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - grep正则判断是否是合法IPv4</title>
      <link>https://www.opcai.top/post/2020/2020-03/check_ip1/</link>
      <pubDate>Wed, 18 Mar 2020 16:24:25 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/check_ip1/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;使用 grep 的正则表达式判断字符串是否是合法 IPv4&lt;/p&gt;</description>
    </item>
    <item>
      <title>用shell脚本判断IP是否合法</title>
      <link>https://www.opcai.top/post/2020/2020-03/check_ip/</link>
      <pubDate>Tue, 17 Mar 2020 21:01:58 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/check_ip/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;写脚本的时候，需要判断IP是否是合法IP，再进行设置。&lt;/p&gt;
&lt;h2 id=&#34;什么样子的字符串是合法-ip&#34;&gt;什么样子的字符串是合法 IP&lt;/h2&gt;
&lt;p&gt;IPv4 使用 32 位（4 字节）地址，即&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8 bit/byte *4 byte = 32 bit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;二进制范围：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;00000000.00000000.00000000.00000000 - 11111111.11111111.11111111.11111111
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;因此，只要判断是在这个范围就可以，判断是否是合法 IP？&lt;/p&gt;</description>
    </item>
    <item>
      <title>systemd关机执行的服务</title>
      <link>https://www.opcai.top/post/2020/2020-03/systemd_shutdown_service/</link>
      <pubDate>Mon, 16 Mar 2020 16:47:40 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/systemd_shutdown_service/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在 Manjaro 关闭的时候，一些 wine 程序由于没有关闭，会导致 systemd 关机在等待关闭。&lt;/p&gt;
&lt;p&gt;可以执行脚本去手动关闭这些 wine 服务，但是，有时候关机前忘记执行了，就会导致关机等待。&lt;/p&gt;
&lt;p&gt;还是设置关机执行脚本比较方便。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux内存使用信息</title>
      <link>https://www.opcai.top/post/2020/2020-03/linux_memory/</link>
      <pubDate>Mon, 16 Mar 2020 10:29:47 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/linux_memory/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;内存 ( memory )是操作系统管理的一项重要指标，对内存使用量进行监控，有助于提前发现内存问题，避免因内存耗尽而造成的故障。&lt;/p&gt;
&lt;p&gt;如果出现内存快被耗尽，一般会出现 OOM 的现象。&lt;/p&gt;</description>
    </item>
    <item>
      <title>快速查看CPU信息</title>
      <link>https://www.opcai.top/post/2020/2020-03/cpuinfo/</link>
      <pubDate>Thu, 12 Mar 2020 23:41:07 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/cpuinfo/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;快速查看CPU信息脚本。&lt;/p&gt;</description>
    </item>
    <item>
      <title>windows 磁盘碎片整理</title>
      <link>https://www.opcai.top/post/2020/2020-03/windows_defrag/</link>
      <pubDate>Wed, 11 Mar 2020 20:47:40 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/windows_defrag/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;磁盘碎片指的是硬盘读写过程中产生的不连续文件。&lt;/p&gt;
&lt;p&gt;硬盘上非连续写入的档案会产生磁盘碎片，磁盘碎片会加长硬盘的寻道时间，影响系统效能。&lt;/p&gt;
&lt;p&gt;比如上网使用浏览器，会有很多临时文件，这些临时文件的读写、删除，就会产生磁盘碎片。&lt;/p&gt;</description>
    </item>
    <item>
      <title>安装screenfetch程序，查看系统信息</title>
      <link>https://www.opcai.top/post/2020/2020-03/install_screenfetch/</link>
      <pubDate>Tue, 10 Mar 2020 21:50:57 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/install_screenfetch/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;screenFetch是一个CLI bash脚本，用于在屏幕截图中显示系统/主题信息。它运行在Linux，OS X，FreeBSD和许多其他类Unix系统上。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - 使用shell获取网口名称</title>
      <link>https://www.opcai.top/post/2020/2020-03/get_network_interface_info/</link>
      <pubDate>Tue, 10 Mar 2020 20:32:29 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/get_network_interface_info/</guid>
      <description>&lt;h2 id=&#34;获取网口名称&#34;&gt;获取网口名称&lt;/h2&gt;
&lt;p&gt;直接输出所有的网口信息&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ifconfig | grep -v &lt;span style=&#34;color:#d14&#34;&gt;&amp;#39;^ &amp;#39;&lt;/span&gt; | grep -v &lt;span style=&#34;color:#d14&#34;&gt;&amp;#39;^```bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#d14&#34;&gt;ifconfig | awk -F: &amp;#39;&lt;/span&gt;/^&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;^ &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;/&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;print&lt;span style=&#34;color:#008080&#34;&gt;$1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a61717;background-color:#e3d2d2&#34;&gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip a | awk -F&lt;span style=&#34;color:#d14&#34;&gt;&amp;#34;: &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#d14&#34;&gt;&amp;#39;/^[^ ]/{print$2}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Linux - 通过命令判断端口是否可连接</title>
      <link>https://www.opcai.top/post/2020/2020-03/check_port/</link>
      <pubDate>Tue, 10 Mar 2020 19:57:37 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/check_port/</guid>
      <description>&lt;h2 id=&#34;命令&#34;&gt;命令&lt;/h2&gt;
&lt;p&gt;可使用命令包括但不限以下：curl, ssh, nmap, telnet，nc&lt;/p&gt;
&lt;p&gt;测试代码以 opcai.top 443 端口为例。&lt;/p&gt;
&lt;h2 id=&#34;目的&#34;&gt;目的&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;找到一种更通用的能在几乎所有环境下完成检查的方法&lt;/li&gt;
&lt;li&gt;找到一种更稳定的几乎不会判断出错的方法&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>centos7 - 安装etcd的几种方法</title>
      <link>https://www.opcai.top/post/2020/2020-03/install_etcd/</link>
      <pubDate>Mon, 09 Mar 2020 19:37:56 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/install_etcd/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;etcd内部采用raft协议作为一致性算法，采用Go语言实现。&lt;/p&gt;
&lt;p&gt;etcd是用于分布式系统中最关键数据的分布式可靠键值存储，特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;简单：安装配置简单，使用也很简单&lt;/li&gt;
&lt;li&gt;安全：支持TLS证书验证&lt;/li&gt;
&lt;li&gt;快速：根据官方提供的benchmark数据，单实例支持每秒10, 000次写入&lt;/li&gt;
&lt;li&gt;可靠：采用raft算法，实现分布式系统数据的可用性和一致性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;etcd项目地址：https://github.com/etcd-io/etcd/&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux快速安装go环境</title>
      <link>https://www.opcai.top/post/2020/2020-03/install_go_evn/</link>
      <pubDate>Mon, 09 Mar 2020 11:07:41 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/install_go_evn/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;go 环境部署很简单，直接解压二进制压缩包就可以完成安装。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes - 使用kubeadm部署kubernetes集群</title>
      <link>https://www.opcai.top/post/2020/2020-03/install_k8s_use_kubeadm/</link>
      <pubDate>Fri, 06 Mar 2020 15:54:23 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/install_k8s_use_kubeadm/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;使用 kubeadm 快速创建 k8s 集群。部署前要先安装好 docker。&lt;/p&gt;</description>
    </item>
    <item>
      <title>安装grafana</title>
      <link>https://www.opcai.top/post/2020/2020-03/install_grafana/</link>
      <pubDate>Fri, 06 Mar 2020 09:30:39 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/install_grafana/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;grafana 是一款采用 go 语言编写的开源应用，主要用于大规模指标数据的可视化展现，是网络架构和应用分析中最流行的时序数据展示工具，目前已经支持绝大部分常用的时序数据库。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go语言命令行参数解析 - flag</title>
      <link>https://www.opcai.top/post/2020/2020-03/golang_flag/</link>
      <pubDate>Thu, 05 Mar 2020 22:48:57 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/golang_flag/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在Go程序编译好就是一个二进制文件，我们希望通过不同的参数来执行不同的操作，官方就提供了一个flag包，来实现这个功能。&lt;/p&gt;
&lt;h2 id=&#34;流程&#34;&gt;流程&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;定义变量，注册falg -&amp;gt; flag.Parse 解析，并赋值变量 -&amp;gt; 就可以通过变量值判断执行对应的操作
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Go自动切换工作目录</title>
      <link>https://www.opcai.top/post/2020/2020-03/golang_auto_change_dir/</link>
      <pubDate>Thu, 05 Mar 2020 11:21:39 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/golang_auto_change_dir/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在 Go 程序执行的时候，有些配置是相对路径的，需要到指定的目录执行才能找到对应的配置文件。这时候就需要程序自动切换工作目录。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux安装nginx-1.14</title>
      <link>https://www.opcai.top/post/2020/2020-03/install_nginx/</link>
      <pubDate>Wed, 04 Mar 2020 22:30:01 +0800</pubDate>
      <guid>https://www.opcai.top/post/2020/2020-03/install_nginx/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;安装 nginx 的时候，依赖包是不用安装的，只要有源码就可以了。（包安装太多会引起冲突）&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于我</title>
      <link>https://www.opcai.top/about/</link>
      <pubDate>Wed, 04 Mar 2020 12:13:27 +0000</pubDate>
      <guid>https://www.opcai.top/about/</guid>
      <description>Linux 编程 Golang、Python、Shell</description>
    </item>
    <item>
      <title>Linux查找程序的工作目录</title>
      <link>https://www.opcai.top/post/2019/2019-07/linux_pwdx/</link>
      <pubDate>Wed, 24 Jul 2019 21:34:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-07/linux_pwdx/</guid>
      <description>&lt;h2 id=&#34;程序的工作目录&#34;&gt;程序的工作目录&lt;/h2&gt;
&lt;p&gt;进程在哪个路径下被运行起来哪个路径就是进程的工作目录(Current Woring Directory, CWD)。&lt;/p&gt;
&lt;p&gt;有些程序在执行的时候，一些文件的加载都是相对路径，因此，需要知道工作目录才能找到对应的文件。&lt;/p&gt;
&lt;p&gt;特别是linux上有些病毒或者木马文件，直接就是./program，ps根本就看到的对应的路径，再用隐藏目录保存木马或者病毒程序，用find就不好找了，特别是文件多的时候。这时候如果直接找到工作目录就可以找到程序所在的目录了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS7 - cerbot生成https证书</title>
      <link>https://www.opcai.top/post/2019/2019-07/centos_certbot/</link>
      <pubDate>Tue, 23 Jul 2019 21:34:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-07/centos_certbot/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;cerbot是一个让你的网站自动部署Let&amp;rsquo;s Encrypt颁发的免费数字证书，使得你的网站支持https。&lt;/p&gt;
&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;
&lt;p&gt;在epel-release上面就有对应的安装包，直接使用yum安装就可以了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yum -y install epel-release
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yum -y install certbot.noarch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Promethues</title>
      <link>https://www.opcai.top/post/2019/2019-04/promethues/</link>
      <pubDate>Mon, 29 Apr 2019 21:39:33 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/promethues/</guid>
      <description>&lt;p&gt;Prometheus 是一个开源的系统监控和警报工具包。&lt;/p&gt;
&lt;h2 id=&#34;特点&#34;&gt;特点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;多维数据模型，时间序列由 metric 名字和 K/V 标签标识&lt;/li&gt;
&lt;li&gt;灵活的查询语言(PromQL)&lt;/li&gt;
&lt;li&gt;单机模式，不依赖分布式存储&lt;/li&gt;
&lt;li&gt;基于 HTTP 采用 pull 方式收集数据&lt;/li&gt;
&lt;li&gt;支持 push 数据到中间件(pushgateway)&lt;/li&gt;
&lt;li&gt;通过服务发现或静态配置发现目标&lt;/li&gt;
&lt;li&gt;多种图表和仪表盘&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意：由于数据采集可能会有丢失，所以 Prometheus 不适用对采集数据要 100% 准确的情形。但如果用于记录时间序列数据，Prometheus 具有很大的查询优势，此外，Prometheus 适用于微服务的体系架构。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL - xtrabackup安装及使用</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_xtrabackup_install_use/</link>
      <pubDate>Sun, 28 Apr 2019 18:13:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_xtrabackup_install_use/</guid>
      <description>版本选择 版本之间的区别： 8.0 是针对 8.0 开发的，不兼容 5.X 的版本 2.4 针对 5.7 开发，兼容 5.6，5.5 2.3 针对 5.6 开发，兼容 5.5 2.2 针对 5.5 开发 安装 下载页面： https://www.percona.com/downloads/Percona-XtraBackup-LATEST/ 这里</description>
    </item>
    <item>
      <title>MySQL - 热备工具Xtrabackup简介</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_xtrabackup/</link>
      <pubDate>Sat, 27 Apr 2019 17:13:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_xtrabackup/</guid>
      <description>Xtrabackup 是由 percona 开源的免费数据库热备份软件，它能对 InnoDB 数据库和 XtraDB 存储引擎的数据库非阻塞地备份（对于 MyISAM 的备份同样需要加表锁）；mysqldump 备份方式</description>
    </item>
    <item>
      <title>MySQL - percona-toolkit工具集合</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_percona_toolkit_tools/</link>
      <pubDate>Sat, 27 Apr 2019 16:13:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_percona_toolkit_tools/</guid>
      <description>&lt;p&gt;percona-toolkit 是一组维护 MySQL 的高级工具集合。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL - mysqldumper导出数据库 </title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_mysqldumper/</link>
      <pubDate>Sat, 27 Apr 2019 12:47:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_mysqldumper/</guid>
      <description>简介 MySQL 自带的 mysqldump 工具只支持单线工作，一次一个个导出多个表，没有一个并行的机制，这就导致导出备份数据比较慢。 mysqldumper 是一个很好支持多线程工作的实用工具</description>
    </item>
    <item>
      <title>MySQL - 修改表结构</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_percona_toolkit/</link>
      <pubDate>Fri, 26 Apr 2019 22:14:36 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_percona_toolkit/</guid>
      <description>&lt;p&gt;在使用 MySQL 的时候，经常需要修改表结构，修改方法也很简单，直接使用 alter table 进行修改。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL - mysqldump常用命令</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_mysqldump_command/</link>
      <pubDate>Wed, 24 Apr 2019 22:13:42 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_mysqldump_command/</guid>
      <description>导出数据： 1、备份全部数据库的数据和表结构 mysqldump -uroot -ppassword -A &amp;gt;all.sql 2、只备份表结构，不备份数据 mysqldump -uroot -ppassword -A -d &amp;gt; database.sql 3、只备份数据库，不备份表结构 mysqldump -uroot -ppassword -A -t &amp;gt; data.sql 4</description>
    </item>
    <item>
      <title>MySQL  - 文件句柄限制</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_open_files/</link>
      <pubDate>Tue, 23 Apr 2019 22:13:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_open_files/</guid>
      <description>在 Linux 上，单个进程打开的文件句柄的个数是有限制的。如果达到限制就会报”too many open files“。会在系统日志里面记录。 如果是 MySQL 进程，mysql 会</description>
    </item>
    <item>
      <title>MySQL - 索引方式</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_index_mode/</link>
      <pubDate>Sat, 20 Apr 2019 21:09:06 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_index_mode/</guid>
      <description>&lt;p&gt;MySQL 目前主要支持索引方法：B-Tree，Hash，R-Tree&lt;/p&gt;
&lt;h2 id=&#34;b-tree&#34;&gt;B-Tree&lt;/h2&gt;
&lt;p&gt;B-Tree 是最常见的索引类型，所有的列都是排序过的，每个叶节点跟节点距离相等。因此，B-Tree 适合查找范围的数据，可以直接支持数据排序。&lt;/p&gt;
&lt;p&gt;B-Tree 在 MyISANYO 中，索引文件是记录磁盘的地址；而在 InnoDB 中有索引，所以可以根据索引记录，直接找到叶节点的数据域。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL - mysqldump 命令参数</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_mysqldump/</link>
      <pubDate>Thu, 18 Apr 2019 00:13:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_mysqldump/</guid>
      <description>mysqldump 是 MySQL 自带的用于转存储数据库的程序。 mysqldump 有很多参数，但是常用的就那么几个。 &amp;ndash;all-databases , -A 导出所有的库里面的数据。 &amp;ndash;all-tablespaces , -Y 导出所有表空间的数据 &amp;ndash;no-tablespaces , -y 跟上个</description>
    </item>
    <item>
      <title>MySQL - 备份简介</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_backup_introduction/</link>
      <pubDate>Wed, 17 Apr 2019 16:13:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_backup_introduction/</guid>
      <description>MySQL 备份类型 冷备份 需要先停止数据库服务，然后备份物理文件，这种备份最简单，但是由于需要停止服务，一般都不会用这种方式进行备份。 对于 InnoDB 存储引擎的</description>
    </item>
    <item>
      <title>MySQL - 索引类型</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_create_index/</link>
      <pubDate>Fri, 12 Apr 2019 14:10:32 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_create_index/</guid>
      <description>MySQL 索引类型 1、普通索引 最基本的索引，它没有任何限制，用于加速查询。 创建方法： ａ. 建表的时候一起创建 CREATE TABLE mytable ( name VARCHAR(32) , INDEX index_mytable_name (name) ); b. 建表后，直接创建索</description>
    </item>
    <item>
      <title>MySQL - 储存引擎myisam相关参数</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_myisam/</link>
      <pubDate>Thu, 11 Apr 2019 15:43:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_myisam/</guid>
      <description>1、表变化修复排序缓冲区 myisam_sort_buffer_size = 64M MyISAM 设置恢复表之时使用的缓冲区的尺寸，当在 REPAIR TABLE 或用 CREATE INDEX 创建索引或 ALTER TABLE 过程中排序 MyISAM 索引分配的缓冲区. 2、限制重建索</description>
    </item>
    <item>
      <title>MySQL - InnoDB相关参数</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysqsl_innodb_config/</link>
      <pubDate>Tue, 09 Apr 2019 14:36:18 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysqsl_innodb_config/</guid>
      <description>1、设置默认的存储引擎 default-storage-engine = InnoDB 2、InnoDB 为独立表空间模式，每个数据库的每个表都会生成一个数据空间 innodb_file_per_table = 1 独立表空间优点： 每个表都有自已独立</description>
    </item>
    <item>
      <title>MySQL - 储存引擎</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_storage_engine/</link>
      <pubDate>Tue, 09 Apr 2019 10:05:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_storage_engine/</guid>
      <description>&lt;h2 id=&#34;什么是存储引擎&#34;&gt;什么是存储引擎？&lt;/h2&gt;
&lt;p&gt;MySQL 中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术，能够获得额外的速度或者功能，从而改善你的应用的整体功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL - 体系结构简介</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_architecture/</link>
      <pubDate>Sat, 06 Apr 2019 16:38:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_architecture/</guid>
      <description>&lt;p&gt;MySQL 的体系结构主要由四层组成：网络连接层、服务层、储存引擎层 、文件系统层。

        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.opcai.top/images/mysql_architecture.png&#34;&gt;
            &lt;img class=&#34;mx-auto&#34; alt=&#34;体系图&#34; src=&#34;https://www.opcai.top/images/mysql_architecture.png&#34; /&gt;
        &lt;/a&gt;
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL - InnoDB存储引擎</title>
      <link>https://www.opcai.top/post/2019/2019-04/mysql_innodb_introduction/</link>
      <pubDate>Wed, 03 Apr 2019 17:13:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-04/mysql_innodb_introduction/</guid>
      <description>&lt;p&gt;InnoDB 是 MySQL 的一种存储引擎，与传统的 ISAM 与 MyISAM 相比，InnoDB 的最大特色就是支持了 ACID 兼容的事务（Transaction）功能，类似于 PostgreSQL。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL - 连接限制</title>
      <link>https://www.opcai.top/post/2019/2019-03/mysql_connection/</link>
      <pubDate>Thu, 28 Mar 2019 20:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/mysql_connection/</guid>
      <description>&lt;h2 id=&#34;简述&#34;&gt;简述&lt;/h2&gt;
&lt;p&gt;MySQL 每个连接都是消耗一些资源的，因此都会有限制连接的上限，放置数据库被拖垮。&lt;/p&gt;
&lt;h2 id=&#34;max_connections&#34;&gt;max_connections&lt;/h2&gt;</description>
    </item>
    <item>
      <title>MySQL - 配置节</title>
      <link>https://www.opcai.top/post/2019/2019-03/mysql_cnf_section/</link>
      <pubDate>Thu, 28 Mar 2019 19:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/mysql_cnf_section/</guid>
      <description>&lt;p&gt;在 my.cnf 中，不同的配置节对应的是不同的软件，因此配置的时候，需要找到对应的配置节。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL - 默认配置文件</title>
      <link>https://www.opcai.top/post/2019/2019-03/mysql_default_config/</link>
      <pubDate>Mon, 25 Mar 2019 23:13:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/mysql_default_config/</guid>
      <description>&lt;h2 id=&#34;简述&#34;&gt;简述&lt;/h2&gt;
&lt;p&gt;MySQL 自带了一些默认配置参数，在没有配置文件的情况下就会使用这些配置参数。&lt;/p&gt;</description>
    </item>
    <item>
      <title>windows - 安装MySQL</title>
      <link>https://www.opcai.top/post/2019/2019-03/windows_intall_mysql/</link>
      <pubDate>Mon, 25 Mar 2019 16:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/windows_intall_mysql/</guid>
      <description>&lt;h2 id=&#34;简述&#34;&gt;简述&lt;/h2&gt;
&lt;p&gt;如果使用 windows 做开发的时候，不想安装虚拟机，就需要在开发机上，安装 MySQL 服务，在 windows 下，安装 MySQL 都是图形化，比较简单。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL 5.6- 编译安装</title>
      <link>https://www.opcai.top/post/2019/2019-03/centos_compile_mysql5.6/</link>
      <pubDate>Sun, 24 Mar 2019 21:24:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/centos_compile_mysql5.6/</guid>
      <description>&lt;h2 id=&#34;简述&#34;&gt;简述&lt;/h2&gt;
&lt;p&gt;MySQL 提供了二进制包，但是有时候，我们的环境包版本不一样，导致二进制包无法正常使用，就不需要手动编译安装一个版本。&lt;/p&gt;
&lt;h2 id=&#34;环境介绍&#34;&gt;环境介绍&lt;/h2&gt;
&lt;p&gt;操作系统：CentOS 7.6.1810&lt;/p&gt;
&lt;p&gt;MySQL 版本：5.6.34&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL - 二进制包安装</title>
      <link>https://www.opcai.top/post/2019/2019-03/mysql_binary_install/</link>
      <pubDate>Sat, 23 Mar 2019 17:28:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/mysql_binary_install/</guid>
      <description>&lt;h2 id=&#34;简述&#34;&gt;简述&lt;/h2&gt;
&lt;p&gt;MySQL 有提供对应的二进制包，可以直接解压至今运行，但是对操作系统的版本是有要求的。&lt;/p&gt;
&lt;p&gt;可以在国内的镜像站找到对应的压缩包，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http://mirror.bit.edu.cn/mysql/Downloads/MySQL-5.6/mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>CentOS7 - yum安装MySQL数据库</title>
      <link>https://www.opcai.top/post/2019/2019-03/yum_install_mariadb/</link>
      <pubDate>Sat, 23 Mar 2019 16:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/yum_install_mariadb/</guid>
      <description>&lt;p&gt;由于 MySQL 被 Oracle 收购，因此，目前的 CentOS 自带的 MySQL 服务，使用的是 mariadb。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debian/Ubuntu/Deepin - apt安装MySQL数据库</title>
      <link>https://www.opcai.top/post/2019/2019-03/apt_install_mysql/</link>
      <pubDate>Sat, 23 Mar 2019 15:59:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/apt_install_mysql/</guid>
      <description>&lt;p&gt;Debian/Ubuntu/Deepin 都是使用相同的包管理器，直接使用 apt 命令就可以直接安装 MySQL，由于 MySQL 被 Oracle 收购了，因此现在 debian 安装的是 mariadb，Ubuntu 安装的还是 MySQL，命令都是一样的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - bash-completion 命令参数补全</title>
      <link>https://www.opcai.top/post/2019/2019-03/bash-completion/</link>
      <pubDate>Sat, 23 Mar 2019 00:28:20 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/bash-completion/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在 Linux 上最常用的就是命令行，Linux 命令那么多不好记，而且参数又多，命令补全功能可以帮助我们，一般系统只支持命令补全，但是有些命令还有很多参数，这时候就需要 bash-completion 这个应用来支持了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>redis 5 集群- redis cluster集群及常用管理命令</title>
      <link>https://www.opcai.top/post/2019/2019-03/redis5_cluster/</link>
      <pubDate>Thu, 21 Mar 2019 20:46:08 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/redis5_cluster/</guid>
      <description>&lt;h2 id=&#34;简述&#34;&gt;简述&lt;/h2&gt;
&lt;p&gt;在 redis 5 版本，放弃了 Ruby 脚本管理集群的方式，使用 redis-cli 就可以直接操作 redis 集群。操作方式也跟之前 Ruby 脚本的方式很像。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - docker-compose</title>
      <link>https://www.opcai.top/post/2019/2019-03/docker_compose/</link>
      <pubDate>Mon, 11 Mar 2019 17:16:03 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/docker_compose/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;docker-compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack 中的 Heat 十分类似。&lt;/p&gt;
&lt;p&gt;一个项目中，我们会应用到多个容器一起工作。这样子我们就需要写多个 Dockerfile，而且要分别运行起来，可以写个脚本启动，但是这样子太麻烦了。docker-copomse 就是为了解决多个容器同时完成某项任务的情况。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - 制作apline linux基础镜像</title>
      <link>https://www.opcai.top/post/2019/2019-03/docker_apline/</link>
      <pubDate>Thu, 07 Mar 2019 20:09:16 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/docker_apline/</guid>
      <description>&lt;h2 id=&#34;apline-linux&#34;&gt;apline linux&lt;/h2&gt;
&lt;p&gt;Alpine Linux 是一个社区开发的面向安全应用的轻量级 Linux 发行版。由于小巧、轻量、安全等特点，特别适合用来做容器的基础镜像。&lt;/p&gt;
&lt;p&gt;在 apline linux 上面就有直接提供最小化的 root filesystem，直接下载下来就可以使用了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - 网络管理</title>
      <link>https://www.opcai.top/post/2019/2019-03/docker_network/</link>
      <pubDate>Tue, 05 Mar 2019 20:23:23 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/docker_network/</guid>
      <description>&lt;h2 id=&#34;docker-网络&#34;&gt;docker 网络&lt;/h2&gt;
&lt;p&gt;当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。&lt;/p&gt;
&lt;p&gt;同时,Docker 随机分配一个本地未占用的私有网段中的一个地址给 docker0 接口。比如典型的 172.17.42.1 ,掩码为 255.255.0.0 。此后启动的容器内的网口也会自动分配一个同一网段( 172.17.0.0/16 )的地址。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - 端口映射</title>
      <link>https://www.opcai.top/post/2019/2019-03/docker_ports/</link>
      <pubDate>Mon, 04 Mar 2019 19:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/docker_ports/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;容器里面一般运行一些服务，要让外部访问就需要做一下端口映射。&lt;/p&gt;
&lt;h2 id=&#34;端口映射&#34;&gt;端口映射&lt;/h2&gt;
&lt;p&gt;在 docker run 的时候，通过-P 或者-p 参数指定端口映射。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - 数据管理</title>
      <link>https://www.opcai.top/post/2019/2019-03/docker10/</link>
      <pubDate>Mon, 04 Mar 2019 16:50:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-03/docker10/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在 docker 中，如果没有挂载数据卷，默认数据都是保存在容器里面的，如果容器被删除，数据就没了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - 私有docker镜像仓库</title>
      <link>https://www.opcai.top/post/2019/2019-02/docker9/</link>
      <pubDate>Sun, 03 Mar 2019 00:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/docker9/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在使用公共的镜像的时候，有些更新没法手动控制，而且如果是自己内部的镜像也不可能直接 push 到公共镜像里面，因此，需要有自己的私有仓库。&lt;/p&gt;
&lt;h2 id=&#34;docker-registry&#34;&gt;docker-registry&lt;/h2&gt;
&lt;p&gt;docker 官方提供一个 docker-register 工具，用于构建私有仓库。&lt;/p&gt;
&lt;p&gt;这个工具有两种方式运行，一种是 docker 官方提供的镜像，直接运行；另一种是直接在操作系统上部署运行。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - docker容器</title>
      <link>https://www.opcai.top/post/2019/2019-02/docker8/</link>
      <pubDate>Sat, 02 Mar 2019 00:01:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/docker8/</guid>
      <description>&lt;h2 id=&#34;docker-容器&#34;&gt;docker 容器&lt;/h2&gt;
&lt;p&gt;docker 容器就是程序真正跑起来的地方，容器里面就是以镜像为模板，然后跑起一个或者一组应用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - docker 镜像离线迁移</title>
      <link>https://www.opcai.top/post/2019/2019-02/docker7/</link>
      <pubDate>Fri, 01 Mar 2019 16:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/docker7/</guid>
      <description>&lt;h2 id=&#34;镜像迁移&#34;&gt;镜像迁移&lt;/h2&gt;
&lt;p&gt;在有网络的时候，使用网络直接下载镜像很方便，但是对于一些没有互联网环境的机器，这种方法就不适合了，需要打包进行迁移。&lt;/p&gt;
&lt;p&gt;docker 提供了 docker load 和 docker save 命令将镜像保存为一个 tar 文件，然后就可以进行拷贝。&lt;/p&gt;
&lt;p&gt;这种方法比较笨，但是也是比较快的方法，现在推荐的方法是在内网搭建一天 docker registry 提供镜像仓库的服务。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - 简单的DockerFile例子</title>
      <link>https://www.opcai.top/post/2019/2019-02/docker6/</link>
      <pubDate>Fri, 01 Mar 2019 16:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/docker6/</guid>
      <description>&lt;h2 id=&#34;简单的-nginx-dockerfile&#34;&gt;简单的 nginx Dockerfile&lt;/h2&gt;
&lt;p&gt;写 Dockerfile 就有点想写 shell 脚本一样，都是一条条命令拼接起来的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - DockerFile指令</title>
      <link>https://www.opcai.top/post/2019/2019-02/docker5/</link>
      <pubDate>Tue, 26 Feb 2019 21:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/docker5/</guid>
      <description>&lt;h2 id=&#34;dockerfile&#34;&gt;DockerFile&lt;/h2&gt;
&lt;p&gt;DockerFile 是一个文本文件，包含一条条指令，每一条指令构建一层，因此每条指令的内容，就是描述该层是如何构建的。&lt;/p&gt;
&lt;h2 id=&#34;dockerfile-指令&#34;&gt;DockerFile 指令&lt;/h2&gt;
&lt;p&gt;FROM：指定基础镜像，定制镜像，一般是以一个镜像为基础，在其基础上进行定制。这个指令就是指定基础镜像的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - docker基础镜像制作</title>
      <link>https://www.opcai.top/post/2019/2019-02/docker4/</link>
      <pubDate>Tue, 26 Feb 2019 18:39:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/docker4/</guid>
      <description>&lt;h2 id=&#34;基础镜像&#34;&gt;基础镜像&lt;/h2&gt;
&lt;p&gt;信不过公共镜像站里面的镜像？那就自己动手制作基础镜像吧。&lt;/p&gt;
&lt;h2 id=&#34;创建基础系统&#34;&gt;创建基础系统&lt;/h2&gt;
&lt;p&gt;docker 镜像就是一个 root 文件系统，因此，找到一个完整的系统进行打包就可以了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - docker镜像及镜像仓库</title>
      <link>https://www.opcai.top/post/2019/2019-02/docker3/</link>
      <pubDate>Mon, 25 Feb 2019 17:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/docker3/</guid>
      <description>&lt;h2 id=&#34;docker-镜像&#34;&gt;docker 镜像&lt;/h2&gt;
&lt;p&gt;Linux 在内核启动之后，就加载 root 文件系统，为用户提供用户空间的支持，而在 docker 中，没有内核，直接加载 root 文件系统，因此，docker 镜像一般就是包含一套完整的 root 文件系统。&lt;/p&gt;
&lt;p&gt;Docker 镜像是一个特殊的文件系统，除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何开始docker - docker架构及创建容器</title>
      <link>https://www.opcai.top/post/2019/2019-02/docker2/</link>
      <pubDate>Fri, 22 Feb 2019 22:19:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/docker2/</guid>
      <description>&lt;p&gt;装 docker 很简单，启动服务以后要怎么开始使用呢？&lt;/p&gt;
&lt;h2 id=&#34;docker-架构&#34;&gt;docker 架构&lt;/h2&gt;
&lt;p&gt;传统的虚拟机架构是 物理机 -&amp;gt; 宿主机操作系统 -&amp;gt; Hypervisor 支持 -&amp;gt; 虚拟机操作系统 -&amp;gt; 应用程序&lt;/p&gt;
&lt;p&gt;docker 架构是 物理机 -&amp;gt; 宿主机操作系统 -&amp;gt; docker 引擎 -&amp;gt; 应用程序（这里面会包含镜像操作系统的文件，但是这些只是依赖环境，里面的内核根本就不会启动，/boot 目录可以直接删除掉）&lt;/p&gt;
&lt;p&gt;因此相对与传统的虚拟机的架构，docker 显得很轻量级。&lt;/p&gt;</description>
    </item>
    <item>
      <title>开始docker吧 - docker简介及安装</title>
      <link>https://www.opcai.top/post/2019/2019-02/docker1/</link>
      <pubDate>Fri, 22 Feb 2019 22:08:48 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/docker1/</guid>
      <description>&lt;h2 id=&#34;什么是-docker&#34;&gt;什么是 docker&lt;/h2&gt;
&lt;p&gt;docker 是一个开源的应用容器引擎，开发者可以打包自己的应用到容器里面，然后迁移到其他机器的 docker 应用中，可以实现快速部署。如果出现的故障，可以通过镜像，快速恢复服务。&lt;/p&gt;</description>
    </item>
    <item>
      <title>docker常用命令</title>
      <link>https://www.opcai.top/post/2019/2019-02/docker_command/</link>
      <pubDate>Mon, 18 Feb 2019 21:50:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/docker_command/</guid>
      <description>&lt;p&gt;1、查看 docker 版本信息&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker  version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看客户端的信息，并通过 socket 查询服务端的信息。&lt;/p&gt;
&lt;p&gt;2、查看 docker 信息&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker   info
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看 docker 的汇总信息。&lt;/p&gt;
&lt;p&gt;3、查看镜像列表&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker images
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;4、查看所有的镜像包括过程镜像&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker images -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>sqlite3 - 数据导入导出</title>
      <link>https://www.opcai.top/post/2019/2019-02/sqlite_import_export/</link>
      <pubDate>Thu, 14 Feb 2019 20:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/sqlite_import_export/</guid>
      <description>&lt;p&gt;sqlite 数据都是存在一个文件里面，备份的时候可以直接拷贝。但是，有时候需要将数据迁移到其他数据，就需要导出 SQL 语句。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - 终端下查看网络实时吞吐量</title>
      <link>https://www.opcai.top/post/2019/2019-02/nload/</link>
      <pubDate>Wed, 13 Feb 2019 21:17:16 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/nload/</guid>
      <description>&lt;h2 id=&#34;nload&#34;&gt;nload&lt;/h2&gt;
&lt;p&gt;nload 是一个实时监控网络流量和带宽使用情况，展示进出的流量情况，不仅有数值，也可以有动态图展示。

        &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://www.opcai.top/images/nload.png&#34;&gt;
            &lt;img class=&#34;mx-auto&#34; alt=&#34;nload&#34; src=&#34;https://www.opcai.top/images/nload.png&#34; /&gt;
        &lt;/a&gt;
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>nagios - 使用钉钉机器人发送nagios告警</title>
      <link>https://www.opcai.top/post/2019/2019-02/nagios_dingding/</link>
      <pubDate>Mon, 11 Feb 2019 22:24:26 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/nagios_dingding/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;现在办公很多都使用钉钉，在群聊天里面，可以创建自定义的机器人来接受消息，并发送到群里面。我们可以利用这个钉钉机器人来发送告警信息。&lt;/p&gt;</description>
    </item>
    <item>
      <title>iptables - 常用的命令</title>
      <link>https://www.opcai.top/post/2019/2019-01/iptables_command/</link>
      <pubDate>Mon, 11 Feb 2019 19:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/iptables_command/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;为了服务器安全，我们经常会使用 iptables 来实现访问控制。&lt;/p&gt;
&lt;h2 id=&#34;常用命令&#34;&gt;常用命令&lt;/h2&gt;
&lt;h3 id=&#34;1查看当前-iptables-状态&#34;&gt;1、查看当前 iptables 状态&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -nL &lt;span style=&#34;color:#998;font-style:italic&#34;&gt;#默认查看 filter 表的状态，如果需要查看其他表的状态加上 -t 表名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -nL --line-numbers &lt;span style=&#34;color:#998;font-style:italic&#34;&gt;#可以列出序列号，在插入或者删除的时候就不用自己去数了&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -nL --line-numbers --verbose &lt;span style=&#34;color:#998;font-style:italic&#34;&gt;#可以查看到包过滤的流量统计，访问次数等&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>linux - 查看进程的实时流量</title>
      <link>https://www.opcai.top/post/2019/2019-02/nethogs/</link>
      <pubDate>Mon, 11 Feb 2019 19:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/nethogs/</guid>
      <description>什么是 NetHogs 在 Linux 上，出现网络异常的时候，就需要查找出进程的流量使用情况，找出是谁的锅。 NetHogs 是一个用来查看进程或者程序的时候统计网络带宽使用率。 安装</description>
    </item>
    <item>
      <title>redis - 查找大key</title>
      <link>https://www.opcai.top/post/2018/2018-12/redis_big_key/</link>
      <pubDate>Mon, 11 Feb 2019 19:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/redis_big_key/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;redis 是单线程运行，如果 key 过大，会对整个 redis 相应时间对造成影响。&lt;/p&gt;
&lt;h2 id=&#34;查找大-key&#34;&gt;查找大 key&lt;/h2&gt;
&lt;p&gt;1、通过 rdb 文件分析，在 github 上有一个分析 rdb 文件的开源软件 rdr，Go 语言写的，通过这个离线分析可以减少对生产环境造成影响。（推荐）&lt;/p&gt;
&lt;p&gt;2、redis-cli 原生自带的&amp;ndash;bigkeys 的查找大 key 的分析，可以找到某个实例 5 种数据类型(String、hash、list、set、zset)的最大 key。&lt;/p&gt;
&lt;p&gt;3、redis-cli 命令有一个 debug object 的命令，可以获取 key 在内存中序列化后的大小，可以通过 scan 方法查找 key，然后 debug object 分析 key。不推荐这个，如果 key 很多，要统计很久。&lt;/p&gt;</description>
    </item>
    <item>
      <title>rufus - 快速制作U盘启动</title>
      <link>https://www.opcai.top/post/2019/2019-02/rufus/</link>
      <pubDate>Sun, 10 Feb 2019 14:29:03 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/rufus/</guid>
      <description>&lt;h2 id=&#34;rufus&#34;&gt;Rufus&lt;/h2&gt;
&lt;p&gt;Rufus 是一个开源免费的小工具，用于快速制作 U 盘启动系统盘。下载操作系统的时候，下载完成后，一般是 ISO 镜像，可以用于光盘刻录，但是在这个光驱逐渐消失的年代，制作 U 盘启动，就成为装系统，必不可少的步骤了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>python - xml解析获取数据</title>
      <link>https://www.opcai.top/post/2019/2019-02/python_xml/</link>
      <pubDate>Sat, 02 Feb 2019 10:13:03 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/python_xml/</guid>
      <description>&lt;h2 id=&#34;什么是-xml&#34;&gt;什么是 xml&lt;/h2&gt;
&lt;p&gt;xml（EXtensible Markup Language），可扩展标记语言。这种标记语言，类似 html，不同于 html，浏览器并不会解析显示 xml。&lt;/p&gt;
&lt;p&gt;xml 主要是用于传输数据。xml 标签都不是预定义的，使用的时候根据自己的数据，定义的标签。&lt;/p&gt;
&lt;p&gt;xml 是纯文本的，程序根据 xml 的标签来获取到对应的数据。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - 防止服务监听端口被占用</title>
      <link>https://www.opcai.top/post/2019/2019-02/linux_reserved_ports/</link>
      <pubDate>Fri, 01 Feb 2019 16:21:41 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-02/linux_reserved_ports/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在高并发的服务器上，会发现你的服务监听端口会被占用，导致服务启动不了。&lt;/p&gt;
&lt;p&gt;通过日志查看，发现 address already in use&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS7 - 360存储系统pika安装</title>
      <link>https://www.opcai.top/post/2019/2019-01/Centos7_install_pika/</link>
      <pubDate>Thu, 31 Jan 2019 16:21:41 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/Centos7_install_pika/</guid>
      <description>&lt;h2 id=&#34;pika-简介&#34;&gt;pika 简介&lt;/h2&gt;
&lt;p&gt;pika 是 360 DBA 和基础架构组联合开发的类 redis 存储系统, 完全支持 Redis 协议，用户不需要修改任何代码, 就可以将服务迁移至 pika；有维护 redis 经验的 DBA 维护 pika 不需要多少学习成本。&lt;/p&gt;
&lt;p&gt;主要解决的是用户使用 Redis 的内存大小超过 50G、80G 等等这样的情况，会遇到启动恢复时间长，一主多从代价大，硬件成本贵，缓冲区容易写满等问题。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - grub2常用修复命令</title>
      <link>https://www.opcai.top/post/2019/2019-01/grub2_commands/</link>
      <pubDate>Tue, 22 Jan 2019 22:42:23 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/grub2_commands/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在 Linux 有可能存在/boot 分区被修改或者配置文件丢失，导致无法正常启动系统。这时候就需要使用 grub2 的命令模式手动启动系统或者 iso 文件进行修复。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux-grub介绍</title>
      <link>https://www.opcai.top/post/2019/2019-01/grub/</link>
      <pubDate>Mon, 21 Jan 2019 21:23:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/grub/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;GNU GRUB 是一个非常强大的引导加载程序，是计算机启动时运行的第一个程序，它负责将控制加载转移到操作系统内核软件。&lt;/p&gt;
&lt;p&gt;GRUB 起源于 1995 年，当时 Erich Boleyn 试图用犹他大学的 Mach 4 微内核（现在称为 GNU Mach）启动 GNU Hurd。埃里希和布莱恩·福特设计了多重引导规范，因为他们决定不加入大量的互不兼容的 PC 的启动方式。&lt;/p&gt;
&lt;p&gt;在接下来的几年里，GRUB 被扩展以满足许多需求，但很快就发现它的设计没有跟上它所做的扩展，我们已经达到了如果没有进行任何进一步改变就很难破坏现有功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python Django - CSRF跨站请求伪造防护</title>
      <link>https://www.opcai.top/post/2019/2019-01/django_csrf/</link>
      <pubDate>Wed, 16 Jan 2019 22:07:20 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/django_csrf/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;CSRF 全称 Cross-site request forgery（跨站请求伪造），是一种网络的攻击方式，也被称为“One Click Attack”或者 Session Riding，通常缩写为 CSRF 或者 XSRF。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux - 实时流量监控</title>
      <link>https://www.opcai.top/post/2019/2019-01/linux_net_flow/</link>
      <pubDate>Sat, 12 Jan 2019 21:21:41 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/linux_net_flow/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;有时候发现 Linux 主机的流量突然大涨，想要查看对应的 IP 是哪个，这时候就会用到 iftop 这个工具。&lt;/p&gt;
&lt;p&gt;iftop 是类似于 top 的实时流量监控工具。可以用来监控网卡的实时流量（可以指定网段）、反向解析 IP、显示端口信息等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - 查看占用端口的程序</title>
      <link>https://www.opcai.top/post/2019/2019-01/linux_process_port/</link>
      <pubDate>Sat, 12 Jan 2019 10:37:40 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/linux_process_port/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在 Linux 中，如果端口随便设置就有可能出现端口被占用情况，这时候就需要找到对应的程序进行处理。&lt;/p&gt;
&lt;h2 id=&#34;使用-ss-查看&#34;&gt;使用 ss 查看&lt;/h2&gt;
&lt;p&gt;ss 一般用于转储套接字统计信息。它还可以显示所有类型的套接字统计信息，包括 PACKET、TCP、UDP、DCCP、RAW、Unix 域等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - 服务名称与对应的端口</title>
      <link>https://www.opcai.top/post/2019/2019-01/linux_service_ports/</link>
      <pubDate>Fri, 11 Jan 2019 22:42:10 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/linux_service_ports/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在 Linux 上，端口的使用是有一定的规范：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;端口号 0 不使用；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;端口号 1 - 1023，系统默认只给 root 使用；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;端口号 1024 - 4999 由客户端程序自由分配；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;端口号 5000 - 65535 由服务器端程序自由分配；&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>linux - MegaCli查看raid信息</title>
      <link>https://www.opcai.top/post/2019/2019-01/liunx_megacli/</link>
      <pubDate>Tue, 08 Jan 2019 20:35:15 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/liunx_megacli/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;MegaCli 是一款查看、管理当前机器 raid 卡所有信息的软件，包括 raid 卡的型号、raid 的阵列类型、raid 上各个磁盘状态等等。&lt;/p&gt;
&lt;p&gt;这个软件支持多个平台，包括 Linux（rpm 包）、Solars、windows、DOS、FreeBSD 等平台。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - 列出所有的块设备</title>
      <link>https://www.opcai.top/post/2019/2019-01/liunx_show_raids/</link>
      <pubDate>Mon, 07 Jan 2019 22:56:40 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/liunx_show_raids/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;lsblk 列出所有块设备信息（除了 RAM 类型的块设备）。lsblk 是通过读取/sys/fs 文件系统信息和 udev db 来收集信息。&lt;/p&gt;
&lt;p&gt;如果 udev db 不可用或者 lsblk 编译的没有添加 udev 的支持，就会尝试通过/sys/下的块设备信息中，提取块设备的标签、UUID、文件系统等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>git - 工作流程</title>
      <link>https://www.opcai.top/post/2019/2019-01/git_flow/</link>
      <pubDate>Mon, 07 Jan 2019 20:41:27 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/git_flow/</guid>
      <description>&lt;h2 id=&#34;git-工作流程&#34;&gt;git 工作流程&lt;/h2&gt;
&lt;p&gt;一般工作流程如下：&lt;/p&gt;
&lt;p&gt;1、git clone 克隆远程资源到本地目录，作为工作目录；&lt;/p&gt;
&lt;p&gt;2、然后在本地的克隆目录上添加或修改文件；&lt;/p&gt;
&lt;p&gt;3、如果远程修改了，需要同步远程的内容，直接 git pull 就可以更新本地的文件；&lt;/p&gt;
&lt;p&gt;4、本地在修改之后，可以通过 git status 查看修改的文件。然后使用 git add 添加修改的文件暂到缓冲区；&lt;/p&gt;
&lt;p&gt;5、在添加之后，可以使用 git commit 添加到当前的工作区；&lt;/p&gt;
&lt;p&gt;6、在修改完成后，如果发现错误，可以撤回提交并再次修改并提交；&lt;/p&gt;
&lt;p&gt;7、git push 将本地的修改推送到远程的 git 服务器。&lt;/p&gt;</description>
    </item>
    <item>
      <title>版本控制工具git安装与配置</title>
      <link>https://www.opcai.top/post/2019/2019-01/git_install_config/</link>
      <pubDate>Thu, 03 Jan 2019 19:46:41 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/git_install_config/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;Git 目前支持 多个平台，包括 Linux/Unix、Solaris、Mac 和 Windows 。&lt;/p&gt;</description>
    </item>
    <item>
      <title>版本控制工具 - git和svn</title>
      <link>https://www.opcai.top/post/2019/2019-01/git_svn/</link>
      <pubDate>Wed, 02 Jan 2019 17:57:19 +0800</pubDate>
      <guid>https://www.opcai.top/post/2019/2019-01/git_svn/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;目前常用的版本控制工具 git 和 svn，各有各的优缺点，该如何选择呢？&lt;/p&gt;
&lt;h2 id=&#34;svn&#34;&gt;SVN&lt;/h2&gt;
&lt;p&gt;SVN 是 Subversion 的简称，目前是 Apache 项目底下的一个开放源代码的版本控制系统，它的设计目标就是取代 CVS。&lt;/p&gt;
&lt;p&gt;SVN 是集中式管理。&lt;/p&gt;</description>
    </item>
    <item>
      <title>nginx - 四层协议转发</title>
      <link>https://www.opcai.top/post/2018/2018-12/nginx_proctocol/</link>
      <pubDate>Fri, 28 Dec 2018 22:11:55 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/nginx_proctocol/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;nginx 在 1.9.0 的时候，增加了一个 stream 模块，用来实现四层协议（网络层和传输层）的转发、代理、负载均衡等。stream 模块的用法跟 http 的用法类似，允许我们配置一组 TCP 或者 UDP 等协议的监听，然后通过 proxy_pass 来转发我们的请求，通过 upstream 添加多个后端服务，实现负载均衡。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS - 升级openssh</title>
      <link>https://www.opcai.top/post/2018/2018-12/centos_update_openssh/</link>
      <pubDate>Thu, 27 Dec 2018 21:28:45 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/centos_update_openssh/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在 Linux 上，ssh 服务可以说是最重要的服务之一，远程管理基本都是使用这个了。然而如果出现漏洞，就存在很大的风险，需要及时升级 ssh 版本来修复漏洞。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - 查找IP冲突</title>
      <link>https://www.opcai.top/post/2018/2018-12/arp_attack/</link>
      <pubDate>Tue, 25 Dec 2018 22:25:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/arp_attack/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;大部分网络没有绑定 IP/MAC，如果随便配置 IP 就会导致 IP 冲突，如果几台机器还好，如果机器多了就不好找了。在 Linux 有一些专门的 arp 工具可以找到对应的 MAC。&lt;/p&gt;</description>
    </item>
    <item>
      <title>arch/Manjaro - AUR用户软件源</title>
      <link>https://www.opcai.top/post/2018/2018-12/archlinux_aur/</link>
      <pubDate>Mon, 24 Dec 2018 22:26:27 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/archlinux_aur/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;AUR 是 Arch User Repository（Arch 用户软件源），类似 Debian/Ubuntu 上的 ppa。AUR 包含了一些不被官方源收录的软件，这让 Arch 系列的用户使用更多的软件。&lt;/p&gt;
&lt;p&gt;大多数情况下，pacman 是不会对 AUR 的软件包进行更新的，因此需要安装专门的工具进行管理。&lt;/p&gt;</description>
    </item>
    <item>
      <title>sysbench - 测试CPU性能</title>
      <link>https://www.opcai.top/post/2018/2018-12/sysbench_cpu/</link>
      <pubDate>Wed, 19 Dec 2018 22:01:13 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/sysbench_cpu/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;sysbench 是一个多线程的 Linux 测试工具，可以进行 CPU 性能测试。对 CPU 的测试，主要是进行素数的加法运行。&lt;/p&gt;</description>
    </item>
    <item>
      <title>sysbench - 测试工具安装</title>
      <link>https://www.opcai.top/post/2018/2018-12/sysbench/</link>
      <pubDate>Wed, 19 Dec 2018 20:46:33 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/sysbench/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;sysbench 是一款开源的多线程性能测试工具，可以执行 CPU/内存/线程/IO/数据库等方面的性能测试。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - supervisor管理的服务，出现了too many open files</title>
      <link>https://www.opcai.top/post/2018/2018-12/centos_supervisor_err/</link>
      <pubDate>Thu, 13 Dec 2018 21:23:41 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/centos_supervisor_err/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;linux 系统对文件句柄数量是有限制的。一般是系统限制、用户限制和程序限制。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/proc/sys/fs/file-max
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个文件保存着当前系统的文件句柄的个数。这个是系统级别的限制，针对的是整个系统，并不是针对用户。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS- locale本地化设置</title>
      <link>https://www.opcai.top/post/2018/2018-12/centos_locale/</link>
      <pubDate>Tue, 11 Dec 2018 22:19:21 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/centos_locale/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;CentOS 上，通过 locale 来设置运行环境语言。locale 就是某一个地域内的人们的语言习惯和文化传统和生活习惯, locale 是软件在运行时的语言环境, 它包括语言(Language), 地域 (Territory) 和字符集(Codeset)。一个 locale 的书写格式为: 语言[_地域[.字符集]]。&lt;/p&gt;</description>
    </item>
    <item>
      <title>nginx 与 php-fpm通信的两种方式 </title>
      <link>https://www.opcai.top/post/2018/2018-12/nginx_php_fpm/</link>
      <pubDate>Mon, 10 Dec 2018 21:35:00 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/nginx_php_fpm/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;nginx 转发 php 类型的请求可以通过 fastcgi 的方式，fastcgi 支持 TCP 和 unix domain socket 两种方式。&lt;/p&gt;
&lt;h2 id=&#34;unix-domain-socket-监听&#34;&gt;Unix domain socket 监听&lt;/h2&gt;
&lt;p&gt;Unix domain socket 或者 IPC socket 是一种终端，可以使同一台操作系统上的两个或多个进程进行数据通信。&lt;/p&gt;
&lt;p&gt;与管道相比，Unix domain sockets 既可以使用字节流和数据队列，而管道通信则只能通过字节流。&lt;/p&gt;
&lt;p&gt;Unix domain sockets 的接口和 Internet socket 很像，但它不使用网络底层协议来通信。Unix domain socket 的功能是 POSIX 操作系统里的一种组件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Supervisor - 守护你的进程</title>
      <link>https://www.opcai.top/post/2018/2018-12/supervisord/</link>
      <pubDate>Fri, 07 Dec 2018 11:26:36 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/supervisord/</guid>
      <description>&lt;h2 id=&#34;什么是-supervisor&#34;&gt;什么是 supervisor&lt;/h2&gt;
&lt;p&gt;Supervisor 是用 Python 开发的一套通用的进程管理程序，能将一个普通的命令行进程变为后台 daemon，并监控进程状态，异常退出时能自动重启。&lt;/p&gt;
&lt;p&gt;supervisor 通过 fork/exec 的方式把被管理的进程当作 supervisor 的子进程来启动，这样只要在 supervisor 的配置文件中，把要管理的进程的可执行文件的路径写进去即可。
supervisor 实现当子进程挂掉的时候，父进程可以准确获取子进程挂掉的信息的，可以选择是否自己启动和报警。&lt;/p&gt;
&lt;p&gt;supervisor 还提供了一个功能，可以为 supervisord 或者每个子进程，设置一个非 root 的 user，这个 user 就可以管理它对应的进程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Centos - 升级最新内核</title>
      <link>https://www.opcai.top/post/2018/2018-12/centos_update_kernel/</link>
      <pubDate>Wed, 05 Dec 2018 18:11:12 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/centos_update_kernel/</guid>
      <description>&lt;h2 id=&#34;内核版本&#34;&gt;内核版本&lt;/h2&gt;
&lt;p&gt;linux 内核一般会有以下几种版本：&lt;/p&gt;
&lt;p&gt;Prepatch：Prepatch 或 “RC” 内核是主要的内核预发行版本，主要针对内核开发人员和 Linux 爱好者。必须从源代码进行编译，并且通常包含必须在可以放入稳定版本之前进行测试的新功能。Prepatch 内核由 Linus Torvalds 维护和发布。&lt;/p&gt;
&lt;p&gt;Mainline：Mainline 主线版本由 Linus Torvalds 维护。这个版本的内核会引入所有新功能。每 2-3 个月发布一次新的 Mainline 内核。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux - ip route和route操作路由</title>
      <link>https://www.opcai.top/post/2018/2018-12/ip_route/</link>
      <pubDate>Tue, 04 Dec 2018 22:33:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-12/ip_route/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在 Linux 中，我们经常会涉及到修改主机的路由列表，以前都是使用 route 这个命令，但是在 CentOS7 中默认已经不安装 net-tools 这个包，所以默认是没有 route 这个命令的，可以使用 ip route 代替。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip route
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ip 这个命令是在 iproute2 包里面，在 CentOS7 中默认就安装了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sqlite-嵌入式数据库</title>
      <link>https://www.opcai.top/post/2018/2018-11/sqlite/</link>
      <pubDate>Thu, 01 Nov 2018 20:27:53 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-11/sqlite/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;SQLite，是一款轻型的数据库，它的设计目标是嵌入式的，而且现在很多嵌入式产品中使用它，它占资源非常低，在嵌入设备中，可能只需要几百 K 的内存就够了。它能够支持 Windows/Linux/Unix 等等主流的操作系统，同时能够跟很多程序语言相结合，无需独立的数据库引擎，直接嵌入到应用程序进程中，因此，通过 API，应用程序可以直接操作它，无需配置。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Centos 7- 快速部署nagios监控服务端</title>
      <link>https://www.opcai.top/post/2018/2018-06/centos7_nagios/</link>
      <pubDate>Mon, 11 Jun 2018 21:14:30 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-06/centos7_nagios/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在服务器上部署 nagios，比较简单！刚开始部署的时候不需要数据库的支持，只需要安装好 apache httpd 和 php 即可。而这两个 Linux 主流的发行版本都有自带安装包，使用系统自带的即可。（此次部署在 Centos7 上）&lt;/p&gt;</description>
    </item>
    <item>
      <title>nagios与zabbix对比</title>
      <link>https://www.opcai.top/post/2018/2018-06/zabbix_nagios/</link>
      <pubDate>Sat, 09 Jun 2018 23:08:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-06/zabbix_nagios/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;目前，nagios 和 zabbix 都是主流的服务器监控系统，那它们之间该如何选择呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>python web-Django html模板特殊符号冲突</title>
      <link>https://www.opcai.top/post/2018/2018-06/django_html/</link>
      <pubDate>Wed, 21 Mar 2018 20:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2018/2018-06/django_html/</guid>
      <description>&lt;h2 id=&#34;模板&#34;&gt;模板&lt;/h2&gt;
&lt;p&gt;作为 Python Web 框架，Django 需要一种很便利的方法以动态地生成 HTML，最常见的做法是使用模板。模板包含所需 HTML 输出的静态部分，以及一些特殊的语法，描述如何将动态内容插入。
Django 项目可以配置一个或多个模板引擎。Django 的模板系统自带内建的后台-称为 Django 模板语言（DTL），以及另外一种流行的 Jinja2。其他的模板语言的后端，可查找第三方库。&lt;/p&gt;</description>
    </item>
    <item>
      <title>开源镜像站</title>
      <link>https://www.opcai.top/post/2017/2017-10/opensource_mirrors/</link>
      <pubDate>Fri, 27 Oct 2017 19:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2017/2017-10/opensource_mirrors/</guid>
      <description>&lt;p&gt;很多好用的软件或者操作系统的软件源都是在国外，下载速度始终是个问题。&lt;/p&gt;
&lt;p&gt;幸好，在国内有很多镜像站，可以提供我们下载的速度&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux-使用kafka自带程序操作topic</title>
      <link>https://www.opcai.top/post/2017/2017-10/kafka_topic/</link>
      <pubDate>Wed, 25 Oct 2017 14:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2017/2017-10/kafka_topic/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;收集一些在终端下操作 kafka 的常用命令。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Centos-刚搭建的kafka，性能如何！</title>
      <link>https://www.opcai.top/post/2017/2017-10/kafka_performace/</link>
      <pubDate>Wed, 25 Oct 2017 12:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2017/2017-10/kafka_performace/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;想简单测试一下刚搭建的 kafka 的性能怎么样？
可以使用自带的测试程序进行简单的测试！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Centos-磁盘空间告警，kafka数据文件太大怎么办？</title>
      <link>https://www.opcai.top/post/2017/2017-10/kafka_big_datafile/</link>
      <pubDate>Wed, 25 Oct 2017 11:20:48 +0800</pubDate>
      <guid>https://www.opcai.top/post/2017/2017-10/kafka_big_datafile/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;Kafka 会数据写到硬盘上。磁盘空间有限，kafka 有提供清理过期数据的策略。
Kafka 删除数据有两种方式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;第一种是按照时间，超过一段时间后删除过期消息；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第二种是按照消息大小删除数据的，消息数量超过一定大小后删除最旧的数据。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>windows-刷新系统图标</title>
      <link>https://www.opcai.top/post/2017/2017-10/windows_refresh_icon/</link>
      <pubDate>Thu, 19 Oct 2017 22:40:01 +0800</pubDate>
      <guid>https://www.opcai.top/post/2017/2017-10/windows_refresh_icon/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在 windows 中，有时候会发现自己桌面上面的图标显示未知，特别是使用加密盘的时候最有体会，把软件安装到加密盘里面，开机的时候，加密盘未解密，获取不到图标。&lt;/p&gt;
&lt;p&gt;找了一个脚本，可以手动清理图标缓存，生成新的图标缓存文件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS-尝试部署kafka集群</title>
      <link>https://www.opcai.top/post/2017/2017-10/kafka_cluster/</link>
      <pubDate>Wed, 11 Oct 2017 19:53:46 +0800</pubDate>
      <guid>https://www.opcai.top/post/2017/2017-10/kafka_cluster/</guid>
      <description>&lt;h2 id=&#34;kafka-简介&#34;&gt;kafka 简介&lt;/h2&gt;
&lt;p&gt;Kafka 是一种高吞吐量的分布式发布订阅消息系统。&lt;/p&gt;</description>
    </item>
    <item>
      <title>归档</title>
      <link>https://www.opcai.top/archives/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.opcai.top/archives/</guid>
      <description></description>
    </item>
    <item>
      <title>搜索</title>
      <link>https://www.opcai.top/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.opcai.top/search/</guid>
      <description></description>
    </item>
  </channel>
</rss>
