分类 Unix 下的文章

[记录]SVN允许修改日志

linux下:
进入svn/hooks目录, 把pre-revprop-change.tmpl复制一份名为pre-revprop-change

cp /data/svn/hooks/pre-revprop-change{.tmpl,} #我的svn放在/data/svn下面
chmod +x /data/svn/hooks/pre-revprop-change

windows同理

[记录]chmod分别设置子目录和文件不同权限

参考文章: chmod分别设置子目录和文件不同权限

很多刚玩linux的, 或者怕麻烦的人都喜欢777, 什么都777, 有时候又怕不对劲, 所以想还原.

我也差不多吧, 今天弄cacti的时候, 就是不出rrd文件, so 我也777了几个目录, 然后想还原, 但是文件和目录权限是不一样的, 所以想找个批量的方法来做, 一般目录都是755, 文件一般都是664:

所以要求就是:
1 将当前目录中的所有“子目录”的权限设置为755
2 将当前目录中的所有“文件”的权限设置为644

方法是:

chmod 644 -R ./*
chmod 755 `find ./* -type d`
或者
find /path -type f -exec chmod 644 {} \; #这里应该是"\", 而不是"/", 原文有错误
find /path -type d -exec chmod 755 {} \;

第一种解说: 先全部修改成664, 然后查找目录, 修改为755.

高可用负载均衡集群方案之LVS+Keepalived

首先什么是lvs这里就不介绍了, baidu一下你就知道;
为什么需要集群, 为什么需要负载均衡这里也不啰嗦了, baidu一下你就知道;
与其他方案的区别, 优异也不介绍了, baidu一下你就知道.

lvs的几个重要角色是:
1> 主控服务器master
2> 主控备用服务器backup
3> 虚拟服务器virtual server
4> 实际服务器real server

每个角色对应一个ip, realserver则对应多个, 如果你简单的了解过lvs, 就应该知道lvs的3中调度方式和10种调度算法, 这里将使用效率比较高的dr(直接路由)方式, 算法用比较合理的wrr(加权轮询)算法, 其它的模式和算法可执行尝试.
好了下面就直接开始吧, 当然了在这之前你还需要配置好realserver, 保持80通畅.

- 阅读剩余部分 -

轻松搭建git服务器

最近svn频繁出怪问题, 也可能是我vps不行吧(512MB内存, 出问题时的负载不足1, 内存120空闲...), 实在忍不住, 干脆换git了, 下面把摸索出来的东西记录下, 只简单说下而已..

个人怎么使用我就不说了, 如果你刚接触git也可以参考文章末尾我提供的参考文档; 这里只说下git服务器的搭建, 下面的内容都建立在我认为你已经大致会使用git init, git add, git commit等简单命令的基础上.

另外关于认证方式, 我们选择单用户, 多证书的方式, github就是如此, 因为是ssh访问, 不可能每个人在服务器上有一个用户, 关于几种认证方式请参考文章末尾我提供的参考文档, 那下面我们开始吧.

- 阅读剩余部分 -

Nginx反向代理Apache的情况下让Apache获得真实IP

自从Nginx出现以后, 我们都喜欢让 Nginx 跑在前方处理静态文件, 然后通过 proxy 把动态请求过滤给 apache.

那么就会出现个问题, 跑在后方 apache 上的应用获取到的访客IP都是Nginx所在服务器的IP , 或者是本机 127.0.0.1 .

最明显就是查看 apache 的访问日志.就会见到来来去去都是内网的IP.
如果你的应用有诸如, "单个IP不能重复登陆”, "单个IP注册相隔n分钟”... 之类用于IP判别的安全规则.
这么就麻烦了....

但还好, 你可以通过修改 nginx proxy 的参数令后端应用获取到 Nginx 发来的请求报文获取到外网的IP.

proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

但这解决的问题单单只是应用上, apache 日志上所获取的ip依然还是本地.

这个时候就需要配合apache的一个第三方模块"mod_rpaf"了, 官方网站: http://stderr.net/apache/rpaf/

安装方法:

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
/opt/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

安装完成后在httpd.conf添加如下:

LoadModule mod_rpaf-2.0.so_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 192.168.1.90    #Nginx所在服务器的IP.
RPAFheader X-Forwarded-For

重启apache, 再看apache的访客日志就是真实的用户ip了.
遗留问题为, SERVER_ADDR成127.0.0.1了, 求解???

关闭ipv6的方法, 的确能关掉

基于centos, 首先执行ifconfig, 如果没有ipv6就不用操作了, 如果有, 按以下步骤来:

vi /etc/modprobe.conf #如果没有这个文件, 创建它并添加如下内容

alias net-pf-10 off
alias ipv6 off
options ipv6 disable=1 #网上流传的没有这一项, 少了它, 是关不掉的

vi /etc/sysconfig/network-scripts/ifcfg-eth0 #添加如下内容, 如果你有多高网卡, 自己依次修改
IPV6INIT=no
IPV6_AUTUCONF=no

vi /etc/sysconfig/network #添加如下内容
NETWORKING_IPV6=no

保存退出, 重启, 就OK了.

daemon起源

Daemon 在类 Unix 系统世界里代表运行在后台的守护进程,那么这个单词的起源的究竟是什么呢?

要说 Daemon,就不得不提和它十分相近的另外一个单词 Demon。Demon 源自中世纪拉丁语,而 Daemon 则源自古典拉丁语,在相当长的时间,这两者都是互通使用的,表示“具有掌管能力的灵体”。直到 14 世纪时由于各种版本 Bible 的流传, Demon 具有了“邪恶灵魂”的含义,而 Daemon 依然保持了原有的含义。现在 Daemon 的含义是“位于 God 和 Man 之间的超自然存在”或者“守护精灵”。

19世纪的科学家James Maxwell在一次“思维试验”(或者说“白日梦”)时,想象在一个被分隔为两部分的封闭容器中间,存在一个大小仅仅够一个气体分子通过的门。这道门,由一个想象中的掌管精灵 Daemon 控制。这个掌管精灵 Daemon 根据气体的速度,只让速度快(温度高)的气体分子由 A 半到 B 半,也只让速度慢(温度低)的气体由 B 半到 A 半。最终这个封闭容器将一半冷一半热。当然,麦克斯韦的这个想法是脱离了热力学原理的,而后来的量子力学更是进一步阐述了其不可能性。

在 1963 年运行于 IBM 7094 系统上的 Project MAC 项目中,具有物理学背景的 Jerome H. Saltzer 教授借鉴了以上所述的”掌管精灵“含义,首次使用 Daemon 指代"系统进程"

从那时起 Daemon 在计算机半个多世纪的发展中,又增添一个新的含义:系统守护进程。

原文地址: daemon起源
英语原文: The Origin of the word Daemon

CentOS下使用pptp架设vpn

我折腾了一晚上终于安装成功了, 虽然网上有很多文档了, 虽然pptp是最简单的一种, 但是基本是都是复制的, 有些地方会导致错误也没人纠正, 所以我就整理发上来.

好了, 直奔主题, 我使用的系统是centos 5.6

首先约定好, 以下代码中#...及其以后的内容为注释, 可不复制. 示例代码中如何修改的文件里已经存在可以修改成示例那样, 如果没有请添加.

1: 安装依赖软件, 直接yum:

yum makecache
yum -y update
yum -y install ppp wget iptables iptables-devel perl

解释: pptp依赖ppp和iptables运作, 同时需要perl库.

2: 安装pptp:

32位系统:

wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm

64位系统:

wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.x86_64.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.x86_64.rpm

- 阅读剩余部分 -

wget自动断点续传的方法

有时候我们使用wget下载东西被迫打断, 比如网络故障, 终端意外断开, 忘了加"&"放入该台等等.

沉稳的人或许会想到重新开启wget, 并使用 -c断点续传, 可是有时候, 因为N个g的东西突然断了, 一冲动就晕了, 就纠结了, 可能就会就重新跑wget了, 甚至截止到本文还有人不知道-c.

那么为了杯具不再发生, 我们可以让wget每次运行的时候自动加上 -c参数, 那样就万事大吉了嘛. 方法如下

在家目录下新建文件".wgetrc", 内容如下:

continue = on

保存退出, 以后再使用wget就会自动断点续传了, Y, 演示如下:

- 阅读剩余部分 -