飞污熊博客

静下心来做一件事

在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数据库,是时候来一篇总结了,这里整理使用过程中觉得比较重要也比较常用的知识点。

开源数据库里面mysql的份额最高,也是最流行的,其实性能也非常高,所以一直用它。

在CentOS 7.2里面通过yum来安装MySQL 5.7,同时配置好root密码以及允许其他ip访问。

从 MySQL 官网选取合适的 MySQL 版本,获取下载地址。然后使用 wget 下载:

1
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

安装 yum Repository

1
yum -y install mysql57-community-release-el7-8.noarch.rpm
阅读全文 »

常见的高可用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
阅读全文 »

jinja2是python中的一个优秀的模板语言,类似于django的模板。它的速度快,安全,目前被各种框架被广泛使用。 官网地址:http://jinja.pocoo.org/

它的一些特性:

  • 沙箱执行机制很安全
  • 通过对HTML进行自动转义防止XSS攻击
  • 模板继承
  • 实时编译为最优化的python代码,使得它运行速度非常快
  • 可选的模板预编译
  • 容易调试,错误行数直接指向模板中的行
  • 配置文件语法也是模板
阅读全文 »

在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应, 那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交。

阅读全文 »

SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞。 可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作, 甚至有可能获取数据库乃至系统用户最高权限。

而造成SQL注入的原因是因为程序没有有效过滤用户的输入,使攻击者成功的向服务器提交恶意的SQL查询代码, 程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变, 额外的执行了攻击者精心构造的恶意代码。

阅读全文 »

XSS攻击:跨站脚本攻击(Cross-Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆, 故将跨站脚本攻击缩写为XSS。XSS是一种常见的web安全漏洞,它允许攻击者将恶意代码植入到提供给其它用户使用的页面中。

这个是动态站点的威胁,静态站点完全不受其影响。

阅读全文 »

CSRF是Cross Site Request Forgery的缩写,翻译过来就是跨站请求伪造。 也被称为 one click attack/session riding,缩写为:CSRF/XSRF。

你这可以这么理解CSRF攻击:从一个网站A中发起一个到网站B的请求,而这个请求是经过了伪装的, 伪装操作达到的目的就是让请求看起来像是从网站B中发起的, 也就是说,让B网站所在的服务器端误以为该请求是从自己网站发起的,而不是从A网站发起的。当然,请求一般都是恶意的。

要真正理解为什么有CSRF攻击存在,那先了解几个浏览器的跨域访问限制。

阅读全文 »