在nginx中通过map指令来正确添加请求头或修改头

在使用nginx进行请求转发时,由于各种需要,需要往后端在请求头中添加额外的请求头,或者在前端响应时添加后端没有返回的响应头信息。这些都可以在nginx中需要特定的指令来实现.同时,能够做到与业务无冲突.

本文涉及到的部分包括 添加请求头,添加响应头,以及达到ifAbsent的目的, 做到有则跳过,无则添加的目的.

本文参考的所有Nginx内置变量请参考 http://nginx.org/en/docs/varindex.html 此页.

继续阅读“在nginx中通过map指令来正确添加请求头或修改头”

haproxy和keepalived的个人理解

附参考文:http://weizhifeng.net/HA-with-HAProxy-and-KeepAlived.html

关于此两者,随便google一下都会有大量的文章,因此这里也不用介绍如何来进行安装和配置了。主要从一个整体方案的角度来描述什么要这样做,以及这样做所解决的问题。

所有的系统,都是先经历一个单台机器搞所有业务的时代,一个程序+一个mysql数据库,就可以满足开发及第一个版本上线的要求。随着,数据的增加以及业务的增长,这些应用就面临一个访问量的扩大以及扩展的问题。最简单的扩展就是水平扩展,原来由一个mysql增加为2个或多个,形成一个集群,这样最简单的能力就是提供更强的服务能力。如原来的访问量支持每秒1000,现在可以支持2000(理想值),相当于将服务能力分散到多个节点。
这里面涉及到多个问题,首先就是数据的相互备份,然后就是如何分配计算能力,外部如何来访问等。本文引入HaProxy和KeepAlived主要处理的就是一个外部访问问题。

在后面的介绍当中,假定有2个mysql,分别为mysqlA和mysqlB.

继续阅读“haproxy和keepalived的个人理解”

redis中aof备份策略中的配置参数

在使用redis时,都会配置相应的存储策略,以保证redis并不会由于意外挂掉,在短时间内重启时数据不会消失。在当前的版本中,redis提供了bgsave和aof两种策略,本文主要描述了aof中的相关参数以及为什么这样是可以足够安全的。
本文的描述主要参考redis的conf文件以及各项网络

appendonly

开启aof特性,这个控制是否启用aof.

appendfilename

写入文件的文件名。开启aof之后,每条命令(除读之外的命令),均会写入到文件中,这里即实际写入的文件.

appendfsync

写入策略,默认值everysec,每秒写一次(调用flush)。另外两个值,always | no,分别表示每次redis写命令之外就写文件,和由操作系统保证。always对硬盘压力大,everysec是一个平衡值,no对硬盘压力最小,但调度由系统控制,丢失数据风险最大.

继续阅读“redis中aof备份策略中的配置参数”

在centos6.0上安装oracle 11g

oracle11g已经出来很久了,用了oracle 10g一段时间,正好也买了《Oracle Database 9i/10g/11g编程艺术》,所以就想安装oracle 11g,同时也顺便在会了之后,给客户机器升下数据库(原来的oracle 9i不知什么原因很慢,估计是安装时设置不正确)。

参考文章:
http://www.oracle-base.com/articles/11g/OracleDB11gR2InstallationOnEnterpriseLinux5.php 官方文章,在oracle-linux5上安装
http://www.iflym.com/index.php/linux-develop/fedora-15-install-oracle10g-in-gcc-4-6.html 如果在fedora15上安装oracle 10g

其实安装过程与上篇我在fedora 15中安装差不多,惟一的修改即是有些配置信息要变化。其中一个变化即是sysctl.conf文件的变化,原先应用于10g的配置已经不能再应用于11g 了,有些内核要求更大了,详细配置如下所示:

# 以下为安装oracle时修改
#每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数。
kernel.sem  =  250 32000 100 128
#最大共享内存段大小。
kernel.shmmax = 2147483648
#应用程序可使用的IPv4端口范围。
net.ipv4.ip_local_port_range = 9000 65500
#套接字接收缓冲区大小的缺省值
net.core.rmem_default = 1048576
#套接字接收缓冲区大小的最大值
net.core.rmem_max = 8388608
# 套接字发送缓冲区大小的缺省值
net.core.wmem_default = 262144
#套接字发送缓冲区大小的最大值
net.core.wmem_max = 2097152
fs.aio-max-nr = 2097152
fs.file-max = 13631488

主要是socket缓存区大小,oracle 11g要求更大了。其次即是对于文件限制等,oracle要求在/etc/security/limits.conf中增加以下内容:

oracle soft nproc 2047
oracle              hard    nproc   16384
oracle              soft    nofile  4096
oracle              hard    nofile  65536
oracle              soft    stack   10240

其次,在个人配置中,最好配置一些语言设置,让oracle 11g安装时使用英文(中文问题多,还有乱码),如下所示:

#追加语言设置为英文
export LANG=en_US.UTF-8

export PATH
#设置ORACLE_BASE
export ORACLE_BASE=/data/oracle
#设置ORACLE_HOME,一会安装的时候oracle就安装在这个目录下 
export ORACLE_HOME=$ORACLE_BASE/oracle11g
#oracle安装的sid
export ORACLE_SID=orcl
#追加其他path
export PATH=$PATH:$ORACLE_HOME/bin
#追加oracle的加载目录 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
#追加oracle客户端的语言设置
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

这样,应该就OK了,在安装时一路next就OK了。安装之后,就可以直接用了,相比oracle 10g好像更简单了。

Oracle 字符集的查看和修改(转)

转自:http://blog.csdn.net/tianlesoftware/article/details/4915223 作者:tianlesoftware
什么是Oracle字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。

影响Oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下: NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:
Language: 指定服务器消息的语言, 影响提示信息是中文还是英文
Territory: 指定服务器的日期和数字格式,
Charset:  指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK

从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。

继续阅读“Oracle 字符集的查看和修改(转)”

vim简体中文教程(vimtutor)

本文是源自于在命令行下输入vimtutor并修改为简体中文的相关版本。

     vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中
     就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这
     些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用了。

     完成本教程的内容大约需要25-30分钟,取决于您训练的时间。

     每一节的命令操作将会更改本文。推荐您复制本文的一个副本,然后在副本上
     进行训练(如果您是通过"vimtutor"来启动教程的,那么本文就已经是副本了)。

     切记一点∶本教程的设计思路是在使用中进行学习的。也就是说,您需要通过
     执行命令来学习它们本身的正确用法。如果您只是阅读而不操作,那么您可能
     会很快遗忘这些命令的!

     好了,现在请确定您的Shift-Lock(大小写锁定键)还没有按下,然后按键盘上
     的字母键 j 足够多的次数来移动光标,直到第一节的内容能够完全充满屏幕。

继续阅读“vim简体中文教程(vimtutor)”