2020
1.docker基础概念
docker介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。
社区办免费使用。企业版由公司支持,可在经过认证的操作系统和云提供商中使用,并可运行来自Docker Store的、经过认证的容器和插件。
openresty+lua+kafka部署
背景
- 使用kafka作为消息队列,将信息收集起来
- 已有程序无需修改,改起来成本太高了
满足这两个条件,首先想到的就是用nginx把数据转发出去,这样程序不用改动,只改变运维环境就可以了。
python mysql-connector简要说明
安装插件
1 | python -m pip install mysql-connector |
建立链接
1 | import mysql.connector |
conn就是mysql的链接对象,它可以提交开启事务、提交、回滚,也可以关闭来mysql断开链接
查询操作
执行查询,需要经过以下几个过程:
- 获取一个游标,数据操作都是基于游标来处理。链接的cursor方法会返回一个游标,如上面
conn.cursor()
就会返回游标。 - 调用游标的execute方法,执行sql。
- 获取执行结果,我们可以用fetchone()一次获取一条记录,也可以用fetchall(),一次性获取所有记录。
1
2
3
4
5
6
7
8
9
10
11cursor = cnn.cursor()
try:
sql_query = 'select name,age from stu ;'
cursor.execute(sql_query)
for name, age in cursor:
print (name, age)
except mysql.connector.Error as e:
print('query error!{}'.format(e))
finally:
cursor.close()
cnn.close()
解决深度终端链接远程后假死问题
起因
这是最近才出现的问题,忽然发现,深度终端链接远程服务器后,过一会就假死了。还以为是不小心安了ctrl+s,于是用ctrl+q也无法解开。依然不能输入任何内容。链接状态是保持的,但就是假死了。
在网上搜索了一下找到了解决办法。
解决方法
可以修改配置文件, 在~/.bash_profile
或者~/.bashrc
的配置文件里面加上下面的参数了:
1 | stty -ixon |
保持退出,执行下面的命令让配置生效
1 | source .bashrc |
这样就不会出现假死了。
还有一种方式,链接ssh之前增加一个-o ServerAliveInterval=60
参数
1 | ssh -o ServerAliveInterval=60 root@192.168.0.2 |
shadowsocks客户端启动报错问题
问题描述
1 | sslocal -c shadowsocks.json |
报如下错误
1 | INFO: loading config from shadowsocks.json |
nginx配置结构说明
最近做项目发现服务器上nginx的配置很混乱,主要原因就是配置的人不太了解nginx的配置。从网上查了资料之后就复制了。
配置结构
nginx的配置其实很简单,总共也就分为4部分:main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)
他们的关系是,server继承main,location继承server,upstream既不会继承其他设置也不会被继承。
所以配置的优先级就是 location > server > main
limits.conf配置说明
最近发生了奇怪的事情,mysql总是会连不上,查了半天原因,最后发现进程文件没有生成。es报警“Too many open files”。搜索才发现是,打开文件太多了,超过了限制。解决方法是修改/etc/security/limits.conf
。另外还牵扯到了另一个配置file-max
。经过调试还是踩了不少坑的。坐下笔记,防止重复踩坑。