Windows平台下Apache +PHP5.3 +FastCGI +XCache安装笔记 2011版

几点说明

1.PHP自5.3版起默认不在支持针对Windows的VC6编译版本,只提供VC9版本的,而APAche官方提供的Apache Windows编译包都是VC6的。所以我们需要使用第三方编译的VC9版本的Apache。

2.PHP 的 None Thread Safe 版本适用于CGI/FastCGI方式,而相应的Thread Safe版本适用于SAPI和Mod方式

3. http://www.apachelounge.com/download/ 这里提供了大量适用于Windows的LAMP有关预编译包,包括VC9版本的Apache和FastCGI,这个网站也是PHP官方推荐的网站。

版本选择及安装包获取

Apache 2.2 VC9   来源: http://www.apachelounge.com/download/
mod_fcgid-2.3.6-win32-x86  http://www.apachelounge.com/download/

PHP 5.3.6 nts vc9  来源:php.com
VC 2008 RunTime vcredist_x86 来源:php.com
XCache-1.3.0-php-5.3.0-nts-Win32-VC9-x86.zip 来源:http://xcache.lighttpd.net/pub/Releases/

总体安装过程

继续阅读“Windows平台下Apache +PHP5.3 +FastCGI +XCache安装笔记 2011版”

(165)

Windows下Apache 2.2+PHP 5.3安装及性能调优

测试环境:Windows 2003 Apache2.2(VC9) PHP 5.3(VC9 Non Thread Safe)
测试参数:ab -c 10 -t 10 http://adress

性能测试:静态HTML

测试结果:

Concurrency Level:      10
Time taken for tests:   10.000 seconds
Complete requests:      6554
Failed requests:        0
Write errors:           0
Total transferred:      2157253 bytes
HTML transferred:       288508 bytes
Requests per second:    655.40 [#/sec] (mean)
Time per request:       15.258 [ms] (mean)
Time per request:       1.526 [ms] (mean, across all concurrent requests)
Transfer rate:          210.67 [Kbytes/sec] received

性能测试:CIG方式

配置:

<directory>
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</directory>

ScriptAlias /php5/ "E:/Servers/Php5.3/"
Action application/x-httpd-fastphp5 "/php5/php-cgi.exe"
AddType application/x-httpd-fastphp5 .php

测试结果:

Concurrency Level:      10
Time taken for tests:   10.016 seconds
Complete requests:      167
Failed requests:        0
Write errors:           0
Total transferred:      9958014 bytes
HTML transferred:       9931338 bytes
Requests per second:    16.67 [#/sec] (mean)
Time per request:       599.738 [ms] (mean)
Time per request:       59.974 [ms] (mean, across all concurrent requests)
Transfer rate:          970.95 [Kbytes/sec] received

性能测试:fcgid方式

配置:

LoadModule fcgid_module modules/mod_fcgid.so

    AddHandler fcgid-script .fcgi .php
    #php.ini的存放目录
    FcgidInitialEnv PHPRC "e:/Servers/Apache-confs/"
    # 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出
    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 500
    #php-cgi每个进程的最大请求数
    FcgidMaxRequestsPerProcess 500
    #php-cgi最大的进程数
    FcgidMaxProcesses 5
    #最大执行时间
    FcgidIOTimeout 120
    FcgidIdleTimeout 120
    #php-cgi的路径
    FcgidWrapper "e:/Servers/Php5.3/php-cgi.exe" .php
    AddType application/x-httpd-php .php

	Options Indexes FollowSymLinks ExecCGI
	Order allow,deny
	Allow from all
	AllowOverride All

测试结果:

Concurrency Level:      10
Time taken for tests:   10.016 seconds
Complete requests:      375
Failed requests:        336
   (Connect: 0, Receive: 0, Length: 336, Exceptions: 0)
Write errors:           0
Total transferred:      20406982 bytes
HTML transferred:       20340934 bytes
Requests per second:    37.44 [#/sec] (mean)
Time per request:       267.083 [ms] (mean)
Time per request:       26.708 [ms] (mean, across all concurrent requests)
Transfer rate:          1989.76 [Kbytes/sec] received

结论

可以看到fcgid方式对比CGI方式,完成请求数位160:370,平均相应时间:599ms:267ms

有关PHP优化:http://www.vpser.net/opt/apc-eaccelerator-xcache.html
http://www.woniu.us/php_basic/123.html

目前使用的版本组合:
Apache 2.2 VC9
PHP 5.3.6 nts vc9
mod_fcgid-2.3.6-win32-x86
XCache-1.3.0-php-5.3.0-nts-Win32-VC9-x86.zip
VC 2008 RunTime vcredist_x86

(113)

Windows 域下普通用户的权限限制方式

默认的Windwos域下的普通用户对所有域内计算机都有一定的访问权限的,包括:登录、网络访问等

如果希望Windows 域下普通用户的权限受到一些常规限制,比如只能登陆指定的计算机,只能访问指定的网络资源;通常的方法包括:

1、通过组策略,阻止Domain Users组的本地登录权限,或者网络登录权限,本地登录权限好限制,网络登录权限限制似乎会引起一些冲突性问题,未经验证!

2、指定普通用户的“登录到指定计算机属性”

3、阻止本地计算机账户的Users组自动添加Domain Users组。这似乎一个彻底的解决办法。

实现方法3的方式有2中常见的:

A:通过“组策略》受限制的组”的方式部署组策略,强制本地Users组的成员范围。但这种方式会使所有的计算机的Users组统一配置,灵活性有欠缺。而且已经发现在Windows7下,域用户必须具有本地Users组权限才能正常登录,即使已经加入本地Administrators组也不行。

B:通过脚本,删除计算机的本地Users组中的Domain Users。

没有能够完整的查证相关资料,目前我采用的通过组策略部署启动脚本,然后再脚本中删除本地Users组中的Domain Users。

脚本代码如下:

'Remove Domain Users From Local Users
strComputer = "."
On Error Resume Next
	Set oGroupAdm = GetObject("WinNT://" & strComputer & "/Users")
	For Each oAdmGrpUser In oGroupAdm.Members
	        If (LCase(oAdmGrpUser.Name) = "domain users") Then
	                'wscript.echo("Remove:" & oAdmGrpUser.ADsPath)
	                oGroupAdm.Remove oAdmGrpUser.ADsPath
	               If (Err.Number <> 0) Then
            			'wscript.echo( "Remove Error:" & Err.Number)
       				End If
	        End if
	Next

此方案只是临时性解决方案,尚未通过充分验证!

补充:2011.3.24

上述方案存在问题,补充设置:使用组策略定义可以本地登录组,同时严格避免给用户直接指定终端登录权限,用户即使没有本地登录权限,只有拥有终端登录权限,就可以通过远程桌面登录。

(36)

自动批量处理Word中的图片

刚写了一段VBA(宏),自动批量处理Word中图片,主要完成的工作是:重置所有图片,对所有图片做裁剪。代码很简单,但值得记录,以后可以参考。

For Each iShape In ActiveDocument.InlineShapes
    '1cm = 28.35 pt
    Dim pic
    If iShape.Type = wdInlineShapePicture Then
        iShape.Reset

        iShape.PictureFormat.CropTop = 1.5 * 28.345
        iShape.PictureFormat.CropBottom = 1.5 * 28.345
        iShape.PictureFormat.CropLeft = 1.2 * 28.345
        iShape.PictureFormat.CropRight = 1.2 * 28.345
    End If
Next iShape
End Sub

(20)

疯狂的QQ

QQ:当您看到这封信的时候,我们刚刚作出了一个非常艰难的决定。在360公司停止对QQ进行外挂侵犯和恶意诋毁之前,我们决定将在装有360软件的电脑上停止运行QQ软件。我们深知这样会给您造成一定的不便,我们诚恳地向您致歉。同时也把作出这一决定的原因写在下面,盼望得到您的理解和支持。

微软:亲爱的中国Win-dows用户,当您看到这封信的时候,我们刚刚作出了一个非常非常非常非常艰难的决定,在您停止使用360和QQ之前,我们决定暂停所有大中华区的windows服务。

放弃QQ吧,可是用啥好呢?!

(28)

视频编码格式与转换大全

目前最常见的视频编码方式有 MPEG-1/-2 < WMV/7/8 < RM/RMVB < Xvid/Divx < AVC/H.264,视频压缩效能和技术先进性也基本表现为上述排列顺序(由低到高,不完全准确)。

目前最常见的音频格式有 Mp3、AC-3、ACC,MP3最广泛的支持最多,AC-3是杜比公司的技术,ACC是MPEG-4中的音频标准,ACC是目前比较先进和具有优势的技术。

继续阅读“视频编码格式与转换大全”

(19)

vSphere Client 提示无法解析”clients.xml” 文件

[stextbox id=”alert”]

问题:
运行VSphere Client的时提示无法解析”clients.xml” 文件
parsing the server “<servername>” “clients.xml” file

[/stextbox]

原因:
与Microsoft的2010.6.10日的一个Net2.0相关补丁冲突
官方免费版解决方案:
To download and install the vSphere Client Update 1 for ESXi (free version):
  1. Click Download.
  2. Log in with your account credentials, or register for free.
  3. Click Download next to vSphere Client and Host Update Utility.
Follow the on-screen instructions to install the updated vSphere Client.
  • 官方详细解释页面
  • Vmware Esxi免费版本下载中心:
    https://www.vmware.com/tryvmware/p/activate.php?p=free-esxi-go&lp=1

(82)

hard link (硬链接) 、symbolic link(符号链接)和Windows

hard link (硬链接) 是直接连接到物理存储地址的,比如XX扇区、XX文件块等,所有的硬链接的平等的,甚至可以认为所有的普通文件都是一个单一硬链接。硬链接的结构方式决定了:它不能跨文件系统,因为不同文件系统下的物理存储方式是不同的;它不能链接到目录(??);当一个文件的所有硬链接都配删除掉,这个文件才会被真正删除。

Symbolic link(符号链接) 是连接到文件路径的,可以认为它比Hard Link所处的层次要高一些,因为它是基于路径工作的,所以决定了:所有的符号链接都是连接到一个真实目标路径上的,当该目标文件被删除,所有的符号链接也都会失效;它可以跨越文件系统;删除符号链接不会影响到物理文件本身(注意:windows的资源管理器似乎会把物理文件一起删除掉!)

根据上述比较,通常用途下,应该优先使用Symbol Link。

Windows 下的快捷方式和符号链接其实2个差别很大的东西,可以认为:符号链接对应用程序来说是透明的,符号链接和真实路径间的转换是在操作系统层面来自动处理的;而Windows 下快捷方式存储的仅仅是个路径信息,操作系统不会自动进行物理路径转换,而需要应用程序的读取快捷方式,然后寻找要操作的文件。

可以进一步的分析认为:Hard Link是工作于文件系统物理存储层,Symbolic Link 工作于文件系统的接口层,快捷方式工作于应用层(上述未必准确)。

Windows自NTFS3.0版(windows2000起)开始支持Hard Link 和 Symbolic Link,但没有提供相应的管理工具,这里(http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.htm)有一个扩展工具可以在Windows NTFS下进行管理操作。注意Windows对链接的支持不是完全的,特别是Windows自带的资源管理器对Symbolic Link的操作有一些奇怪的表现。

(137)

AutoCAD 快速入门引导

工作需要用到AutoCAD,搞个设计的,以前只是用过它的皮毛。这一次深入的学习了一下。

以下是几条初学者容易迷糊的地方,笔记下:

1:AutoCAD 的图层其实不是图层,它更像是一个分类或者标签机制,因为它没有“层”的概念,它的图层是没有顺序的,不要试图找到对图层进行排序飞方法,因为根本就没有顺序。当你使用到填充时,可能需要处理排序问题,可以通过工具菜单下的绘图顺序制定选定图元的绘图顺序。绝大多数情况下,你通过【视图-重绘】,AutoCAD可以自动处理好绘图顺序问题。

2:还是上个问题的延伸,因为AutoCAD的图层就不是图层,所以当你从其它文件粘贴某个图元到新文件时,图元不会粘贴到新文件的当前图层上,而是和其原有图层信息一起粘贴过来。比如:文件A下有图层X,下有图元Y,当你粘贴Y到新文件B的时候,会在B文件中同时粘贴图层X(不含图层中其它元素)和图元Y。

所以,不要视图在AutoCAD中寻找“粘贴到当前图层“的这样操作,唯一的办法是粘贴过来,然后修改图元的图层属性。

3:上述问题的延伸:移动一个图元到某个图层的方法是:修改图元的图层属性。

4:AutoCAD画框选择时,有两种方式,从左上拉到右下,和从右下拉到左上

CP框选,WP窗选(多边形窗选)

5:视口是放置于打印布局上的,调用和绘制模型的区域,双击视口区域,可以激活视口(视口边框突出显示),然后移动、缩放、修改视口中的模型,移动和缩放将决定最终打印方式和区域。一个布局页面可以有多个视口。

草稿:这是一篇未完成的文章,仅供参考!

继续阅读“AutoCAD 快速入门引导”

(18)

高级Bash脚本编程指南

高级Bash脚本编程指南.

bash笔记-06-交互式脚本

前面曾经提到,在Linux中使用的bash(不管是图形模式里的terminal还是文本模式里的console)是交互式的.用户在bash提示符后输入一个命令, bash执行后将信息反馈给用户.

所谓的非交互式bash一般是针对脚本而言的, 我们可以把脚本写成非交互式的: 不需要读取用户的输入, 也不用向用户反馈某些信息. 非交互式有两个特点: (1)每次执行都是可预见的, 因为它不读取用户输入, 参数是固定的. (2) 可以在后台执行.

与非交互式脚本对应的是交互式脚本: 它可以读取用户的输入, 实时向用户反馈信息. 这样的脚本更灵活, 每次执行时的参数可由用户动态设定. 用户界面也更友好.

实际上, “交互”的含义就是脚本能向用户输出某些信息或读取用户的输入.

草稿:这是一篇未完成的文章,仅供参考!

继续阅读“高级Bash脚本编程指南”

(51)

静态路由冗余和负载均衡

废话不说,直接看配置

网络拓扑结构图

Router A上联出口路由

          | 10.5.159.161--------- 10.5.159.162  |            |
ROUTER A  |                                     |  ROUTER B  | 10.5.174.1 -- 10.5.174.0/24
          | 10.5.159.153--------- 10.5.159.154  |            |

Router A的配置结果

 

#Router A 是 H3c MSR50-60 有NQA,没有detect group
 nqa entry dgz 2m
 type icmp-echo
  destination ip 10.5.159.154
  frequency 2000
  history-record enable
  history-record number 3
  reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only
#
nqa entry dgz pcm
 type icmp-echo
  destination ip 10.5.159.162
  frequency 5000
  history-record enable
  history-record number 3
  reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only

 nqa agent max-concurrent 20
 nqa schedule dgz 2m start-time now lifetime forever
 nqa schedule dgz pcm start-time now lifetime forever

 track 1 nqa entry dgz pcm reaction 1
 track 2 nqa entry dgz 2m reaction 1

ip route-static 10.5.174.0 255.255.255.0 10.5.159.162 track 1
ip route-static 10.5.174.0 255.255.255.0 10.5.159.154 track 2


Router B 的配置结果

 

#Router B 是 H3c AR28-11 有detect group,没有NQA
detect-group 1
 detect-list 1 ip address 10.5.159.161

detect-group 2
 detect-list 1 ip address 10.5.159.153

 ip route-static 0.0.0.0 0.0.0.0 10.5.159.161 preference 60 detect-group 1
 ip route-static 0.0.0.0 0.0.0.0 10.5.159.153 preference 60 detect-group 2


NQA可以理解为增强版的Detect Group。

(30)

OSGEO4W 在 Win2003 Server X64 的安装

试图在 Win2003 Server X64 R2下安装OSGEO4W,但遇到很多问题,似乎OSGEO4W这这个版本的Windows有兼容性问题。主要表现在安装过程的组件选择部分

Express不能正常安装,会出现没有相应的现象

Advance 安装中组件依赖关系选择和版本选择都会出错,反复手动选择安装,运行出现一些错误:R6034 等等,特别是Mapserver的安装

 

解决方法:

在一台Windows XP下安装OSGeo4W的全部需要的组件,然后复制到Win2003下,注意两个系统下的目录位置要相同

在2003下Reintstall一下Apache

 

完成…

后续关于MapServer的配置

安装的MapServer Itasca Demo Application存在一些问题,需要修改配置

1. D:\OSGeo\apps\mapserv-demo 下的 IMAGEPATH ,"\"和“/"问题,否则有临时文件读写错误

2.所有涉及的template文件需要增加一行”<!– MapServer Template –>“放在文件第一行,否则有模板错误提示

3.D:\OSGeo\apache\conf下httpd.conf,<Directory "d:\OSGeo/tmp/ms_tmp/"> 红色部分补上,否则看不到图

(154)