存档

2009年5月 的存档

Windows下安装 Lighttpd php fastcgi mysql环境

2009年5月30日 评论已被关闭

 windows下搭建apache+php+mysql环境很简单,不过也总会有一些问题

以下是我搭建过程中的遇到的问题:
Windows + apache2.2.11 + php5.2.9 + mysql5,每个软件安全都很简单,只是apache启动后半分钟就自动关闭。
具体日志如下:
[Mon May 25 23:34:13 2009] [notice] Apache/2.2.11 (Win32) PHP/5.2.9-1 configured — resuming normal operations
[Mon May 25 23:34:13 2009] [notice] Server built: Dec 10 2008 00:10:06
[Mon May 25 23:34:13 2009] [notice] Parent: Created child process 2860
[Mon May 25 23:34:14 2009] [notice] Child 2860: Child process is running
[Mon May 25 23:34:14 2009] [notice] Child 2860: Acquired the start mutex.
[Mon May 25 23:34:14 2009] [notice] Child 2860: Starting 64 worker threads.
[Mon May 25 23:34:14 2009] [notice] Child 2860: Starting thread to listen on port 8008.
[Mon May 25 23:35:01 2009] [notice] Parent: Received shutdown signal — Shutting down the server.
[Mon May 25 23:35:01 2009] [notice] Child 2860: Exit event signaled. Child process is ending.
[Mon May 25 23:35:02 2009] [notice] Child 2860: Released the start mutex
[Mon May 25 23:35:03 2009] [notice] Child 2860: All worker threads have exited.
[Mon May 25 23:35:03 2009] [notice] Child 2860: Child process is exiting
[Mon May 25 23:35:03 2009] [notice] Parent: Child process exited successfully.

试过了网上的所有办法:
httpd.conf上增加
MaxRequestsPerChild 0
EnableSendfile off

TCP-IP–高级–wins–启用LMHOSTS查询,禁用TCP/IP上的NetBios
关闭防火墙
都没有彻底解决。

甚至追溯到apache的bug,如下:
http://apache2triad.net/forums/archive/o_t__t_4162__setsockoptso-update-accept-context-failed.html
http://apache2triad.net/forums/viewtopic.php?t=55

郁闷中。。。即便是Linux下也没有如此费事啊!
后来想想http服务器又不只有apache,尝试一下其他的更高效、性能更好的服务器吧,nginx和lighttpd。
windows版lighttpd下载地址
具体配置看lighttpd的文档吧
http://en.wlmp-project.net/downloads.php
http://trac.lighttpd.net/trac/wiki/Docs

只是lighttpd在windows下启动的时候会有一个dos的窗口,大家可以找找RunHiddenConsole.exe这个东东,它可以隐藏dos窗口哩!

分类: OpenSource 标签:

当SecureCRT异常关闭后,后台进程一同关闭的现象罪魁祸首 Signup信号

2009年5月19日 1 条评论

症状:使用SecureCRT工具ssh远程连接linux,不退出ssh,而是强行关闭终端(合上笔记本走人)情况下,后台启动的应用也会关闭。
后果:男人哭吧哭吧不是罪!

测试案例:
很明显的是关闭终端后,前台运行的程序会被随之关闭,但是后台进程也会因为终端异常关闭而关掉,如下是一个简单的测试结果:
1、后台执行程序,正常关闭ssh连接,关闭终端的情况:
开启两个终端,其中第一个在后台执行ping操作
ping google.com | tee log.txt  &

在第二个终端观察
tail -f log.txt 可以看到日志一直在写
使用pstree命令可以看到ping的进程存在
     |-sshd-+-sshd—sshd—bash—pstree
     |      `-sshd—sshd—bash-+-ping
     |                           `-tee

Ctrl+D退出第一个终端 然后关闭终端

第二个终端的日志仍然在写,pstree命令:
     |-ping
ps x
29427 ?        S      0:00 ping google.com
看到ping的进程依然存在

2、后台执行程序,非正常关闭ssh连接(模拟突然掉电或者,未来得及退出ssh,或者ssh仍然连接,直接关闭终端SecureCRT)情况:
同样开启两个终端,其中第一个在后台执行ping操作
ping google.com | tee log.txt  &

在第二个终端观察
tail -f log.txt 可以看到日志一直在写
使用pstree命令可以看到ping的进程存在
     |-sshd-+-sshd—sshd—bash—pstree
     |      `-sshd—sshd—bash-+-ping
     |                           `-tee

在不退出ssh的情况下,强行关闭第一个终端(SecureCRT)
在第二个终端观察
tail -f log.txt 可以看到日志已经停止写。
使用pstree命令可以看到ping的进程被停掉
ps aux看不到ping的进程,说明强行关闭终端的情况下后台进程也别kill掉了


查了一下资料,这其中起关键的是SIGHUP信号

查看所有的信号:
kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     17) SIGCHLD
18) SIGCONT     19) SIGSTOP     20) SIGTSTP     21) SIGTTIN
22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO
30) SIGPWR      31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1
36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4  39) SIGRTMIN+5
40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8  43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6  59) SIGRTMAX-5
60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2  63) SIGRTMAX-1
64) SIGRTMAX

列表中,编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号为32 ~ 63的信号是后来扩充的,称做可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。

SIGHUP信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联。
登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台进程组和后台进程组,一般都属于这个 Session。
当用户退出Linux登录时,前台进程组和后台有对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进程组和后台有终端输出的进程就会中止。
不过有的程序可以捕获这个信号,并忽略它,这样就算退出了Linux登录,后台程序依旧运行。
此外,对于与终端脱离关系的守护进程,这个信号用于通知它重新读取配置文件。

以下是网络的相关资料
http://hi.baidu.com/xingfengsoft/blog/item/fedbd05c4d8c7e45faf2c0c8.html
——secureCRT异常退出和执行exit的区别?
如果直接关闭secureCRT(此处假设是使用ssh登录终端的),那么对于被登录的系统来说,就是远端程序异常断连。和我们突然断网掉线是一样的效果。
这种情况下,用户并没有信号发送,而是sshd服务检测到对端响应超时,然后向之前建立起的连接以及该连接下(ssh登录后会分配一个bash给用户)的进程发送结束信号。如果部分进程忽略sshd发送的信号,进程不退出,在分配给用户的bash退出后,该进程将被init进程接管。

终端异常退出后,后台进程不关闭的解决办法:
1、使用nohup命令: nohup <command> [argument…] &  nohup可以屏蔽SIGHUP信号!
2、使用screen命令。

简单介绍如下:
SCREEN vi /tmp/2he
i.net

需要中断连接:
screen Ctrl+a d

查询screen进程:
ps x
20377 ?        Ss     0:00 SCREEN vi /tmp/2hei.net

重连 screen -r 20377

参考资料:
http://www.ibm.com/developerworks/cn/linux/l-cn-screen

分类: OpenSource 标签:

python的abc

2009年5月18日 评论已被关闭

pyhon中很简单的模块调用

#!/usr/bin/python
# Filename: abc.py

def mymo():
    print ‘hello world!’

#!/usr/bin/python
# Filename: ehcoabc.py

import abc

abc.mymo()

执行结果如下:
    AttributeError: ‘module’ object has no attribute ‘mymo’

原因是abc在python中比较特殊,跟已有的module模块冲突,换一下名字就可以了。

分类: python 标签:

apache+resin集群配置,将指定接口的请求(servlet)转到特定resin的配置

2009年5月6日 评论已被关闭

apache+resin集群配置,将指定接口的请求(servlet)转到特定resin的配置。
需求如下:将某个特定url的请求转到特定的后台resin服务器上,其余的请求仍然保持cluster状态

resin2的配置
httpd.conf
<IfModule mod_caucho.c>
  <Location /MyServlet*>
    CauchoConfigFile conf/resin-test.conf
  </Location>
  CauchoConfigFile conf/resin-all.conf
</IfModule>

resin-test.conf
<caucho.com>
  <http-server>
    <srun host=’192.168.1.100′ port=’6800’/>
    <servlet-mapping url-pattern=’/MyServlet/*’ servlet-name=’invoker’/>
  </http-server>
</caucho.com>

resin-all.conf
<caucho.com>
  <http-server>
    <srun host=’192.168.1.100′ port=’6800’/>
    <srun host=’192.168.1.101′ port=’6800’/>
    <servlet-mapping url-pattern=’/servlet/*’ servlet-name=’invoker’/>
    <servlet-mapping url-pattern=’*.jsp’ servlet-name=’com.caucho.jsp.JspServlet’/>
  </http-server>
</caucho.com>

resin3的配置,相对resin2简单一些,只要在apache中做如下配置:
httpd.conf
<Location /MyServlet* >
  ResinConfigServer 192.168.1.100 6800
</Location>

ResinConfigServer 192.168.1.100 6800
ResinConfigServer 192.168.1.101 6800

分类: resin 标签:

xp系统中NTFS文件经过EFS加密

2009年5月2日 评论已被关闭

xp重做了系统,发现一些文件夹显示绿色,双击无法打开文件,提示无权限,查找了一下原来是经过了EFS加密,google了一番好像有个什么证书备份的问题,否则,呵呵,就趴在那哭泣吧!
巧的是我根本不知道还有什么证书需要备份,所以正在哭泣ing,,,

网上也有一些解决方案,貌似可以解决,不过看起来有些复杂,如这篇文章
http://www.sjhf.net/Article/EnDecrypt/200608/166.html

还有国外的原版高手在这里,http://www.sjhf.net/Article/EnDecrypt/200608/166.html
希望可以解决大家的苦恼,因为最近比较忙,没有功夫处理这件事情,等俺腾出空来也研究研究这个EFS加密解密的问题。暂且记录一下,备忘!

分类: security 标签: