飞污熊博客

静下心来做一件事

很早就想些一篇关于git的文章了,这玩意儿实在好用,但是内容又比较多, 这里我讲解最基本使用技巧,这个足以应对99%以上的场景,剩下那些真的要用到就去看官网手册。

Git是目前世界上最先进的分布式版本控制系统(没有之一),它的诞生也是个很有趣的故事。 大家都知道Git是Linus大神写的,据说刚开始的时候,linux内核源码使用BitKeeper这个商业版本控制系统, BitKeeper授权Linux社区免费使用,但是某一天开发Samba的Andrew这个家伙试图破解BitKeeper协议,东窗事发。 于是BitKeeper公司一怒之下收回了免费使用权。Linus大神是不可能去道歉的,于是他就花了2个星期用C语言写了Git, 一个月内,Linux源码就由Git管理了,无敌是多么寂寞 →_→

阅读全文 »

TLS(transport layer security), 和它的后继者SSL是一个安全套接字层协议,是为了给普通的网络传输内容加密传输而来。

网站转成https是大势所趋。但是在国内,推进的过程显然要比国外慢很多。

现阶段如果将自己的网站改成https以后,会碰到这样的尴尬现象:如果在页面上引用了http://的链接或者图片, 用户在浏览器上会看到类似该网站是非安全网站的警告,对于网站运营者来说可以说非常冤。由于很多链接是第三方的,没有办法去控制。 对于api接口类的网站,就不存在混合的问题,所以首先应该从api后台接口部分开始用https。(ios已经强制要求接口地址必须为https了)

本章专门来讲解在nginx中如何配置https访问。

首先要明确的是要支持https就必须要有证书,这个证书可以是自己生成的,也可以从CA机构申请,在测试阶段可以自己生成, 但是如果要部署到生产环境,最好去CA机构申请,有免费和收费的证书,同时还分不同的证书种类。

阅读全文 »

本篇介绍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演示。

阅读全文 »

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文件正在被执行的语句的位置
阅读全文 »

常见的高可用MySQL解决方案有主从复制,主主复制,Heartbeat/SAN高可用,MySQL Cluster高可用等等。 这里我使用最简单的主从复制高可用方案,也是Mysql内置的功能。

mysql主从复制原理:

  1. master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件)
  2. slave将master的binary log events拷贝到它的中继日志(relay log)
  3. slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)

其实就是根据主数据库的日志文件来进行同步。

阅读全文 »

内部需要搭建一个源码管理控制环境,选择开源的gitlab,环境为centos7。这个平台类似于github,使用起来非常方便。 现在将搭建的步骤记录下来,因为官网上面提供的是ubuntu的流程。

全部命令都是在 root 用户下执行。安装操作系统 (CentOS 7 Minimal),先配置好网卡和DNS,保证网络没问题。

安装和添加基础工具

1
yum install wget

安装EPEL源

1
2
3
yum install epel-release
wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 https://www.fedoraproject.org/static/0608B895.txt
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
阅读全文 »