开启php-fpm状态页

开启php-fpm状态页有助于我们分析当前php请求的情况,来决定php-fpm参数是否设置合理。
nginx配置:

  1. location /status {
  2.       fastcgi_index  index.php;
  3.       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  4.       include        fastcgi_params;
  5.       fastcgi_pass unix:/dev/shm/php-cgi.sock;
  6. }

php-fpm配置:

  1. pm.status_path = /status

状态页sample:

  1. pool:                 www
  2. process manager:      static
  3. start time:           20/Sep/2013:15:59:36 +0900
  4. start since:          944
  5. accepted conn:        300499
  6. listen queue:         0
  7. max listen queue:     0
  8. listen queue len:     0
  9. idle processes:       999
  10. active processes:     1
  11. total processes:      1000
  12. max active processes: 438
  13. max children reached: 0
  14. slow requests:        0

ssh端口更改后rsync的用法

rsync有两种常用的认证方式,一种为rsync-daemon方式,另外一种则是ssh。

在一些场合,使用rsync-daemon方式会比较缺乏灵活性,ssh方式则成为首选。但是今天实际操作的时候发现当远端服务器的ssh默认端口被修改后,rsync时找不到一个合适的方法来输入对方ssh服务端口号。

在查看官方文档后,找到一种方法,即使用-e参数。

-e参数的作用是可以使用户自由选择欲使用的shell程序来连接远端服务器,当然也可以设置成使用默认的ssh来连接,但是这样我们就可以加入ssh的参数了。

具体语句写法如下:

  1. rsync -e ‘ssh -p 1234’ username@hostname:SourceFile DestFile

其他参数完全按照rsync的规定格式加入即可。

上面语句中比较新鲜的地方就是使用了单引号,目的是为了使引号内的参数为引号内的命令所用。没有引号的话系统就会识别-p是给rsync的一个参数了。我的描述可能比较烂,详情可以参考rsync官方描述:

Command-line arguments are permitted in COMMAND provided that COMMAND is presented to rsync as a single argument. You must use spaces (not tabs or other whitespace) to separate the command and args from each other, and you can use single- and/or double-quotes to preserve spaces in an argument (but not backslashes). Note that doubling a single-quote inside a single-quoted string gives you a single-quote; likewise for double-quotes (though you need to pay attention to which quotes your shell is parsing and which quotes rsync is parsing).

转自:http://yynotes.net/rsync-with-ssh-without-default-port/

修改SEO Smart Links兼容syntaxhighlighter

为了防止代码出错,之前一直是用coolcode来展示代码,这个是不支持bash高亮。之前也找过几次,也没找到支持bash的,就算支持,也不好用。coolcode虽然一直在用来展未代码防止出错,但没有高亮bash一直挺不爽,今天试用了SyntaxHighlighter Evolved,还不错,但不知道为什么无法开启工具条,就这样用着吧。安装好测试发现SEO Smart Links把高亮里的代码添加了链接,于是有了此文,下面是修改SEO Smart Links来兼容syntaxhighlighter的方法。
1、找到

  1. add_filter(‘the_content’,  array(&$this, ‘SEOLinks_the_content_filter’), 10);

把10修改为5,有两处。
2、找到

  1. $text = preg_replace(‘%(<h.*?>)(.*?)(</h.*?>)%sie’, "’\1′.insertspecialchars(‘\2’).’\3’", $text);

在此条代码下面添加:

  1. $text = preg_replace(‘%(【bash】)(.*?)(【/bash】)%sie’, "’\1′.insertspecialchars(‘\2’).’\3’", $text);

3、找到

  1. $text = preg_replace(‘%(<h.*?>)(.*?)(</h.*?>)%sie’, "’\1′.removespecialchars(‘\2’).’\3’", $text);

在下面添加:

  1. $text = preg_replace(‘%(【bash】)(.*?)(【/bash】)%sie’, "’\1′.removespecialchars(‘\2’).’\3’", $text);

注意:
1、我这里用使用【bash】和【/bash】来标识代码,如果你是使用其它标识,你修改2、3步骤代码。
2、请将【】更改为[],这里使用【】是保证能正常显示出来。

Ubuntu 12.04安装PPTP

1、安装软件

  1. sudo apt-get install pptpd ufw

2、编辑/etc/ppp/pptpd-options

找到

  1. refuse-pap
  2. refuse-chap
  3. refuse-mschap

注释掉这三行,即在前面加#

3、接着同样的文件,添加DNS

  1. ms-dns 8.8.8.8
  2. ms-dns 8.8.4.4

4、编辑/etc/pptpd.conf

增加或修改:

  1. localip 10.99.99.99
  2. remoteip 10.99.99.100-199

5、编辑/etc/ppp/chap-secrets

添加用户和密码,格式为:

  1. [Username] [Service] [Password] [Allowed IP Address]

如:

  1. sampleusername pptpd samplepassword *

6、重启pptpd

  1. sudo /etc/init.d/pptpd restart

7、编辑/etc/sysctl.conf

增加:

  1. net.ipv4.ip_forward=1

立即生效:

  1. sudo sysctl -p

8、编辑/etc/default/ufw

把所有的默认策略更改为ACCEPT:

  1. DEFAULT_FORWARD_POLICY由DROP更改为ACCEPT
  2. DEFAULT_INPUT_POLICY由DROP更改为ACCEPT

9、编辑/etc/ufw/before.rules

增加:

  1. # NAT table rules
  2. *nat
  3.  
  4. :POSTROUTING ACCEPT [0:0]
  5. # Allow forward traffic to eth0
  6. -A POSTROUTING -s 10.99.99.0/24 -o eth0 -j MASQUERADE
  7.  
  8. # Process the NAT table rules
  9. COMMIT

10、启动ufw

  1. sudo ufw enable

11、使用客户端进行测试
如windows7,打开控制面板->网络和internet->网络和共享中心同,点击“设置新的连接和网络”,选择连接到工作区,接下来就按提示操作就好。

cx_Freeze给python(pyqt)程序打包成exe过程

  1. 1、下载cx_frezze,安装。安装后会在 python目录 D:Python27Libsite-packagescx_FreezesamplesPyQt4 下有一个 setup.py
  2.  
  3. 2、把这个setup.py拷贝到需要打包的pyqt程序所在的目录,假设要打包的pyqt程序叫 main_window.py
  4.  
  5. 3、修改setup.py,将默认的“PyQt4app.py"替换成“main_window.py”
  6.  
  7. 4、cmd 切换到当前路径,运行 python setup.py build 即可
  1. BTW:今天打包了用pyqt写的版本发布工具,打包后运行程序出现"driver not loaded"
  2. 解决方法如下:
  3. 在程序的根目录新建子目录"sqldrivers",到C:Python27Libsite-packagesPyQt4pluginssqldrivers复制所需驱动到此目录,比如我用的是mysql,所以就复制了qsqlmysql4.dll。

转自:oldman的博客

thttpd轻量级web服务器(HTTP/1.1和简单的CGI支持)

thttpd简介

thttpd是一个非常小巧的轻量级web server,它非常非常简单,仅仅提供了HTTP/1.1和简单的CGI支持,nginx需要支持cgi,可以安装这个轻量级的web server。

thttpd安装

  1. cd /tmp/
  2. wget http://acme.com/software/thttpd/thttpd-2.25b.tar.gz
  3. tar xzf thttpd-2.25b.tar.gz
  4. cd thttpd-2.25b/
  5. ./configure –prefix=/usr/local/thttpd
  6. make && make install

可能出现的错误:

  1. htpasswd.c:52: error: conflicting types for ‘getline’

解决方法:编辑htpasswd.c ,把getline替换成get_line

thttpd配置

新建/usr/local/thttpd/conf/thttpd.conf文件:

  1. # BEWARE : No empty lines are allowed!
  2. # This section overrides defaults
  3. # This section _documents_ defaults in effect
  4. # port=80
  5. # nosymlink         # default = !chroot
  6. # novhost
  7. # nocgipat
  8. # nothrottles
  9. # host=0.0.0.0
  10. # charset=iso-8859-1
  11. host=127.0.0.1
  12. port=8008
  13. user=thttpd
  14. logfile=/usr/local/thttpd/log/thttpd.log
  15. pidfile=/usr/local/thttpd/log/thttpd.pid
  16. dir=/usr/local/thttpd/www/
  17. cgipat=**.cgi|**.pl

启动thttpd

  1. /usr/local/thttpd/sbin/thttpd -C /usr/local/thttpd/conf/thttpd.conf

官方网站:http://acme.com/software/thttpd/

解决phpmyadmin间或响应慢的问题

今天安装了最新版的phpmyadmin,安装好了测试了一下,发现间或的反应超慢,查看了nginx的日志,是报fastcgi连接超时。然后打开fastcgi的慢日志,发现如下错误:

  1. [10-May-2013 11:15:16]  [pool www] pid 10992
  2. script_filename = /usr/share/nginx/html/phpmyadmin-1688/version_check.php
  3. [0x0000000002902e78] file_get_contents() /usr/share/nginx/html/phpmyadmin-1688/version_check.php:24

问题明显了,是phpmyadmin不断地进行版本的检查更新,而国内的服务器连接phpmyadmin服务器又是超慢的,且还有可能无法连接,所以导致了超时的现象。
解决方法:

编辑version_check.php文件,在

  1. <?php

下面添加

  1. exit;

保存测试,响应慢的问题解决了。

joomla1.5 nginx url重写规则

  1. if ( !-e $request_filename ) {
  2. rewrite (/|.php|.html|.htm|.feed|.pdf|.raw|/[^.]*)$ /index.php last;
  3. break;
  4. }
  5. #bellow are anti-attack joomla setting
  6.  
  7. if ( $args ~ "mosConfig_[a-zA-Z_]{1,21}(=|%3d)" ) {
  8. set $args "";
  9. rewrite ^.*$ http://$host/index.php last;
  10. return 403;
  11. }
  12. if ( $args ~ "base64_encode.*(.*)" ) {
  13. set $args "";
  14. rewrite ^.*$ http://$host/index.php last;
  15. return 403;
  16. }
  17. if ( $args ~ "(<|%3C).*script.*(>|%3E)" ) {
  18. set $args "";
  19. rewrite ^.*$ http://$host/index.php last;
  20. return 403;
  21. }
  22. if ( $args ~ "GLOBALS(=|[|%[0-9A-Z]{0,2})" ) {
  23. set $args "";
  24. rewrite ^.*$ http://$host/index.php last;
  25. return 403;
  26. }
  27. if ( $args ~ "_REQUEST(=|[|%[0-9A-Z]{0,2})" ) {
  28. set $args "";
  29. rewrite ^.*$ http://$host/index.php last;
  30. return 403;
  31. }