飞污熊博客

静下心来做一件事

本篇介绍nginx的一些进阶使用方法,包括反向代理、虚拟主机、负载均衡、页面缓存等等。

反向代理(Reverse Proxy)方式是指用代理服务器来接受网络上的连接请求,然后将请求转发给内部网络上的服务器, 并将从服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

举个例子,一个用户访问 http://www.xiongneng.cc/readme,但是www.xiongneng.cc上并不存在readme页面, 它是从另外一台服务器上取回来,然后作为自己的内容返回给用户。但是用户并不知情这个过程。对用户来说, 就像是直接从www.xiongneng.cc获取readme页面一样。 这里www.xiongneng.cc这个域名对应的服务器就设置了反向代理功能。

阅读全文 »

nginx是一个优秀的 HTTP 和反向代理服务器,一个邮件代理服务器, 一个通用TCP/UDP代理服务器,官网地址:https://nginx.org/en/

nginx由于出色的性能,在世界范围内受到了越来越多人的关注。其特点是占有内存少,并发能力强, 事实上nginx的并发能力确实在同类型的网页伺服器中表现较好。 目前中国大陆使用nginx网站用户有新浪、网易、腾讯,另外知名的微网志Plurk也使用nginx

之前写过一篇关于nginx的入门篇,nginx作为一款受欢迎的高性能 Web 服务器, 有必要重新捣鼓一下,这次选择centos7演示。

阅读全文 »

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。 使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。 为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。

wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。 如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP就用wireshark。

阅读全文 »

Werkzeug是一个专门用来处理HTTP和WSGI的工具库,可以方便的在Python程序中处理HTTP协议相关内容。

这里稍微说一下,werkzeug不是一个web服务器,也不是一个web框架,而是一个工具包, 官方的介绍说是一个WSGI工具包,它可以作为一个Web框架的底层库, 因为它封装好了很多Web框架的东西,例如 Request,Response 等等。

例如我最常用的Flask框架就是以Werkzeug为基础开发的,这也是我要专门探究Werkzeug底层的原因, 因为我想知道Flask的实现逻辑以及底层控制。这篇文章没有涉及到Flask的相关内容, 只是以Werkzeug创建一个简单的Web应用,然后以这个Web应用为例剖析请求的处理以及响应的产生过程。

官网教程给了个例子,创建一个类似TinyURL的WEB应用,我就用官网这个例子来说明。

另外我还提一下python里面另一个函数库就是Requests,这是一个HTTP客户端库。 跟Werkzeug没有可比性,一个客户端库,一个服务器端库。

阅读全文 »

作为一个码农对于那些优秀的开发工具爱不释手,它们对框架的支持、界面、插件都是那么的优秀, 大大加快了开发的速度以及开发的乐趣,酷炫的界面也能大大的装一个逼。写到这里大家应该能猜到我说的是啥了, 没错,就是JetBrains出品的全系列IDE开发工具,比如IntelliJ IDEA、PyCharm等等。

对于暂时经济不宽裕的同学,比较明智的选择是Google一台active服务器即可, 有能力的同学不妨尝试自行架设,这也就是本文的目的啦。

喝水不忘挖井人,在此向服务器软件的作者Lanyu表示衷心的感谢。

阅读全文 »

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具, 可以很方便的用来启动、重启、关闭进程(不仅仅是Python进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程, 有时候服务器出问题导致所有应用程序都被杀死,此时可以用supervisor同时启动所有应用程序。

阅读全文 »

awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的功能,它几乎可以完成grep和sed所能完成的全部工作, 同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。 它具备了一个完整的语言所应具有的几乎所有精美特性。实际上,awk的确拥有自己的语言:样式扫描和处理语言。 它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

阅读全文 »

在linux中通常要进行文本处理,sed是一个非常强大的文本处理命令工具。 配合正则表达式可以进行文本搜索、替换、插入、删除等操作。 sed基本上就是正则模式匹配,所以你的正则表达式要比较强才能玩的好它。

sed是一种新型的,非交互式的编辑器。它能执行与编辑器vi和ex相同的编辑任务。 sed编辑器没有提供交互使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。 sed编辑器没有破坏性,它不会修改文件,除非指定-i选项,默认情况下,所有的输出行都被打印到屏幕上。

这里只介绍最常用的一些用法,如果要看sed全部东西, 请参考sed参考手册

阅读全文 »

MySQL的高可用方案一般有如下几种:

mysql自带的主从、keepalived+双主、MHA、MMM、Heartbeat+DRBD、PXC、Galera Cluster

我在前面一篇博客讲解过mysql自带的主从复制,不过更加常用的是keepalived+双主,MHA和PXC。 对于小公司,一般推荐使用keepalived+双主,简单。

当主从复制正在进行中时,如果想查看从库两个线程运行状态, 可以通过执行在从库里执行 show slave status\G 语句,以下的字段可以给你想要的信息:

1
2
3
4
Master_Log_File       — 上一个从主库拷贝过来的binlog文件
Read_Master_Log_Pos — 主库的binlog文件被拷贝到从库的relay log中的位置
Relay_Master_Log_File — SQL线程当前处理中的relay log文件
Exec_Master_Log_Pos — 当前binlog文件正在被执行的语句的位置
阅读全文 »