分类 "服务器" 下的文章

大家都知道,美帝的vps已经白菜价了,大内存,大硬盘,高带宽,大流量,可是速度确实不是很好,美帝的vps在全球大部分地区的速度都十分不错,不过身处天朝,由于某些原因,速度就有些折扣,对于一些丢包率很高的机子,完全没法用。。。。。。

不过大家也别沮丧,如果对网络要求不是特别特别高的话,还是建议大家用米国的,因为价格啊,确实性价比高,通过net-speeder来为网络优化是很不错的。

Net-Speeder

net-speeder是一个由snooda.com博主写的Linux脚本程序,主要目的是为了解决丢包问题,实现TCP双倍发送,也就是同一份数据包发送两份。这样的话在服务器带宽充足情况下,丢包率会平方级降低。不过需要注意的是,如果本身vps的速度不慢,或者丢包率不高,那么,完全没有必要使用,不仅不能提速,反而会在高访问期间减速。

net-speeder可为linux全部虚拟技术加速,不是基于tcp的底层加速的。所以限制比较多的openvz也可以使用。

使用方法

由于原版是托管在googlecode上的,访问不方便,并且使用方法繁琐,所以这里提供一键安装脚本

net-speeder安装

wget https://coding.net/u/njzhenghao/p/download/git/raw/master/net_speeder-installer.sh
bash net_speeder-installer.sh

安装脚本的源代码:

#!/bin/sh

# Set Linux PATH Environment Variables
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

# Check If You Are Root
if [ $(id -u) != "0" ]; then
    clear
    echo -e "\033[31m Error: You must be root to run this script! \033[0m"
    exit 1
fi

if [ $(arch) == x86_64 ]; then
    OSB=x86_64
elif [ $(arch) == i686 ]; then
    OSB=i386
else
    echo "\033[31m Error: Unable to Determine OS Bit. \033[0m"
    exit 1
fi
if egrep -q "5.*" /etc/issue; then
    OST=5
    wget http://dl.fedoraproject.org/pub/epel/5/${OSB}/epel-release-5-4.noarch.rpm
elif egrep -q "6.*" /etc/issue; then
    OST=6
    wget http://dl.fedoraproject.org/pub/epel/6/${OSB}/epel-release-6-8.noarch.rpm
else
    echo "\033[31m Error: Unable to Determine OS Version. \033[0m"
    exit 1
fi

rpm -Uvh epel-release*rpm
yum install -y libnet libnet-devel libpcap libpcap-devel gcc

wget https://coding.net/u/njzhenghao/p/download/git/raw/master/net_speeder-v0.1.tar.gz -O -|tar xz
cd net_speeder
if [ -f /proc/user_beancounters ] || [ -d /proc/bc ]; then
    sh build.sh -DCOOKED
    INTERFACE=venet0
else
    sh build.sh
    INTERFACE=eth0
fi

NS_PATH=/usr/local/net_speeder
mkdir -p $NS_PATH
cp -Rf net_speeder $NS_PATH

echo -e "\033[36m net_speeder installed. \033[0m"
echo -e "\033[36m Usage: nohup ${NS_PATH}/net_speeder $INTERFACE \"ip\" >/dev/null 2>&1 & \033[0m"

端口加速

这里对所有端口进行加速

nohup /usr/local/net_speeder/net_speeder venet0 "VPS的ip" >/dev/null 2>&1 &

最后加入启动脚本

echo 'nohup /usr/local/net_speeder/net_speeder venet0 "VPS的ip" >/dev/null 2>&1 &' >> /etc/rc.local

总结

net-speeder的加速效果还是比较明显的,胖瓜在一款低速vps上测试,未加速前单线程下载70kb/s,加速后提升到了180kb/s,效果还是相当明显的,不要浪费你的vps哦

成功标识:(DUP!)

QQ截图20151101163157

一、Xampps Tomcat模块使用中需要jdk支持的安装方法:

由于jdk的包真心大 180MB, 也无法压缩, 所以不可能集成在xampps环境包中, 需要后期自行连网下载.
(当然, 我是希望大家预先下载安装好.)

以下是使用过程中的截图, 基本上述说了整个流程.(注:以下截图来之Xampps官网)

01
假如你的系统中没有安装jdk组件, 控制面板会提示, 并且引向官网下载地址.下载地址见下!

02
请选择第一个java图标即可,

03

1: 选择同意协议.
2: 选择自己环境包的位数, 如32位, 64位, 是xampps的位数. 不是系统的.

04
安装即可, 基本上, 一路下一步...

05
安装过程中...

06
安装jdk后, 再回来点击图标, 功能就可以正常了.

07
模块也启动成功..

08
在核心功能中>版本信息中会有jdk版本的一些信息, 仅供参考...

二、Xampps Tomcat模块使用中完美整合mod_jk.so的安装方法:

对于Apache+Tomcat+jsp+php的整合,针对不同的Tomcat和apache的版本,稍微有些区别。

1、所需软件
JDK:jdk-8u66-windows-x64.exe
JRE:jre-8u66-windows-x64.exe

jdk的版本关系倒不是很大,不影响Apache和Tomcat的整合,配置环境变量时注意一些就行了.
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

mod_jk.so
apache版本对整合影响不是太大,需要注意的是整合Tomcat时加载模块(modules)时 mod_jk.so 文件的版本。 apche的版本必须与mod_jk-**.so的版本相同.主要就是不同版本使得配置麻烦,而且还没用

下载地址:
http://www.apachelounge.com/download/
http://tomcat.apache.org/download-connectors.cgi

2、mod_jk.so安装方法:
解压:mod_jk-1.2.41-win64.zip
将:mod_jk.so
复制到:
D:\xampps\apache\modules 目录

3. 环境配置

(1) 在D:\xampps\apache\conf 目录下新建文件:workers.properties, 编辑 workers.properties

workers.tomcat_home=D:\xampps\tomcat #让mod_jk模块知道Tomcat的位置
workers.java_home=D:\Java\jdk #让mod_jk模块知道jre的位置
ps=\
worker.list=ajp13 #模块版本
worker.ajp13.port=8009 #工作端口,若没占用则不用修改
worker.ajp13.host=localhost #本机,若上面的Apache主机不为localhost,作相应修改
worker.ajp13.type=ajp13 #类型
worker.ajp13.lbfactor=1 #代理数,不用修改

(2) 在D:\xampps\apache\conf目录,修改http.conf
在文件末尾加上:

LoadModule jk_module modules/mod_jk.so
JkWorkersFile "conf/workers.properties"
JkLogFile "D:/xampps/tomcat/logs/mod_jk.log"
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
JkMount /*.do ajp13
JkMount /*.jsp ajp13
JkMount /*.do ajp13
JkMount /*.jhtml ajp13
JkMount /*.jspx ajp13
JkMount /dbfile.svl ajp13

到此配置文件修改完毕,然后通过Xampps控制面板,重新启动apache和tomcat服务就可以了!

在网上找了些WINDOWS执行PHP的计划任务的方法,有一个写得很全,可惜在我这竟然没通过。最后不得不综合各门派的方法,才能在我这运行成功
1、写一个PHP程序,命名为test.php,内容如下所示:

代码如下:

<?
$fp = fopen("test.txt", "a+");
fwrite($fp, date("Y-m-d H:i:s") . " PiaoYun.CC成功了!\n");
fclose($fp);
?>

程序大胆地写,什么include\require尽管用,都没问题

2、新建Bat文件,命名为test.bat,内容如下所示:
代码如下:

D:\php\php.exe -q D:\piaoyuncc\piaoyun.php
//相应目录自己改上

3、建立WINDOWS计划任务:
开始–>控制面板–>任务计划–>添加任务计划
浏览文件夹选择上面的bat文件
设置时间和密码(登陆WINDOWS的)
保存即可了。

4、over! 可以右键计划任务点“运行”试试

在windows 2008服务器上面使用任务计划运行PHP来生成phpcms v9的sitemaps的方法:
代码如下:

cd e:\wwwroot\piaoyun.cc\   //切换到网站程序所在的目录
D:\php\php.exe -q e:\wwwroot\piaoyun.cc\sitesmaps.php

上面代码中的sitesmaps.php的源代码请点击下面的地址查看:
PHPCMS V9 全站Sitemaps生成[服务器端版]

我们运行在apache的虚拟主机,有时候为了安全,需要为每个网站以不同的用户运行,这样当虚拟主机中的一个网站被入侵时,而不会影响到其它的虚拟主机。我们这里使用apache2-mpm-itk补丁来实现这种功能。

1、下载apache2和itk

到apache2-mpm-itk网站下载最新版的补丁:http://mpm-itk.sesse.net/

wget http://apache.ziply.com//httpd/httpd-2.2.21.tar.gz
tar xzvf httpd-2.2.21.tar.gz
wget http://mpm-itk.sesse.net/apache2.2-mpm-itk-2.2.17-01.patch

2、为apache2打上mpm-itk补丁

cd httpd-2.2.21
patch -p1 < ../apache2.2-mpm-itk-2.2.17-01.patch
autoconf

3、编译apache2

编译apache2时,带上编译选项--with-mpm=itk,如:

./configure --with-mpm=itk
make
make install

4、配置apache2

<VirtualHost *:80>
ServerName piaoyun.cc
...

<IfModule mpm_itk_module>
AssignUserId siteuser sitegroup
</IfModule>
</VirtualHost>

sitesuer是指apache以siteuser用户运行
sitegroup是指apache以sitegroup用户组运行

最近管理的服务器,结果,打开phpmyadmin的时候就出现了这样的错误,在网上看了很多解答,看起来都对,但是我还是费了很大的劲才搞好,所以写下来已帮助记忆。

首先:在php的目录下建立个文件夹temp,这个有权限的问题,如果是ntfs的分区,就一定要添加evryone的控制权限,否则是没用的。

其次:在php.ini找到:

;session.save_path

这一行,修改成:

session.save_path = "C:/php/tmp"

把分号弄掉。这里要注意,php.ini里面有三处session.save_path ,如果只修改一个地方,还是不行的。

将php.ini中的session.auto_start的值改为1(启动),默认是0(禁用),

最后,是在phpmyadmin中找到:

config.sample.inc.php

修改成:config.inc.php

找到 $cfg['blowfish_secret'] 将后面的赋值,加入数字和字母组合。

全部修改完以后,重启iis或者apache,就可以看到熟悉的phpmyadmin的登陆界面了。

最近不知道什么原因公司服务器上的Apache服务会莫名其妙的挂掉,Apache就这样,压力大了就罢工,考虑找别的软件代替Apache。。现在有个问题:要在Apache 挂掉时自动启动Apache,呵呵,又搬出强大的CMD,简单的写了一段命令,直接运行成功~~

@echo off
net start | find /c /i "apache2.2" > nul
if "%errorlevel%" == "1" goto startapache
goto exit

:startapache
net start apache2.2

:exit

把上面代码保存为 apache.bat ,运行一下,如果Apache正常的话不会有任何提示,如果挂掉的话会自动启动Apache,注意Apache的服务名(这里是 apache2.2),不分大小写,打开系统服务先确认一下,改成相应的名字。

至于怎么定时运行,更简单了,拉出系统的计划任务,设定1分钟运行一次,不登陆也运行,用最高权限的用户运行就行了。

现在很多PHP程序都需要ZendOptimizer环境,但是ZendOptimizer在PHP5.2之后已经被支持,那怎么办,Zend也不会这么做,原来PHP5.3开始ZendOptimizer正式改为Zend Guard Loader。

Zend Guard Loader的发布,而且Zend Optimizer不会再更新,并且由于差异很大使用Zend Guard加密代码时将提示你是否使用php5.3,如果使用5.3那么代码就无法在php5.2上运行。

Zend Guard Loader安装说明
1、下载Zend Guard Loader包。(官方地址:http://www.zend.com/en/products/guard/downloads)
下面的下载地址包含了Linux版本和Windows版本
下载地址:
360云盘:http://yunpan.cn/cJNjrwRyriYTy (提取码:029e)
百度网盘:http://pan.baidu.com/s/1hqmtXLM

2. 并提取ZendGuardLoader.so(Linux)或ZendLoader.dll(Windows)上传到服务器。

3. 加载ZendGuardLoader,配置PHP.INI
例子:

zend_extension=C:\web\PHP\ext\ZendLoader.dll
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=

 

下面逐一说明:
注意windows版的只支持NTS(非线程安全)版的PHP5.3,即phpinfo中Thread Safety为disabled的!

在你的php.ini文件中添加以下行:

Linux和Mac OS X:zend_extension=<ZendGuardLoader.so的绝对路径>
Windows的非线程安全的:zend_extension=<ZendLoader.dll的绝对路径>

4. 添加下面这行加载ZendGuardLoader:
;启用加载编码脚本。默认开启
zend_loader.enable=1

5. 可选:配置ZendGuardLoader
;禁用检查授权(出于性能原因)
zend_loader.disable_licensing=0
;配置混淆水平 0 – 不支持混淆
zend_loader.obfuscation_level_support=3
;配置寻找授权文件的路径
zend_loader.license_path=

6. 如果你同时使用Zend debugger,请保证加载Zend guard Loader后再加载Zend debugger

7. 如果你同时使用Ioncube loader,请保证加载Ioncube loader后再加载Zend guard Loader

8. 重启Web服务。

如果在phpinfo中看到如下内容(不同的版本可能会有所不同):

This program makes use of the Zend Scripting Language Engine:Zend Engine v2.4.0, Copyright (c) 1998-2011 Zend Technologies

说明安装已经成功!

附(Windows版本):

[Zend.loader]
zend_extension=X:\ZendGuardLoader\php-5.4.x\ZendLoader.dll
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=

附(Linux版本):
zend_extension=/usr/lib64/php/modules/ZendGuardLoader.so

第一步:打开-》开始》控制面板》Internet信息服务(IIS)管理器,在左侧的树形列表找到“应用程序池
01

第二步:在右侧的列表中右击“设置应用程序池默认设置”弹出菜单,
02

第三步:找到“标识”选项卡,点击右侧的方形按钮,弹出“应用程序标识”对话框中的“内置账户”的下拉菜单中选择“LocalSystem”,然后重启IIS服务器,至此,这个问题就彻底解决了。
03

查了下网络资料,对Nginx配置文件nginx.conf的理解整理如下:

#定义Nginx运行的用户和用户组
user www www;

#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 8;

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log info;

#进程文件
pid /var/run/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。
worker_rlimit_nofile 65535;

#工作模式与连接数上限
events {

	#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
	use epoll;
	
	#单个进程最大连接数(最大连接数=连接数*进程数)
	worker_connections 65535;
}

#设定http服务器
http {
	include mime.types; #文件扩展名与文件类型映射表
	default_type application/octet-stream; #默认文件类型
	#charset utf-8; #默认编码
	server_names_hash_bucket_size 128; #服务器名字的hash表大小
	client_header_buffer_size 32k; #上传文件大小限制
	large_client_header_buffers 4 64k; #设定请求缓
	client_max_body_size 8m; #设定请求缓
	sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
	autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
	tcp_nopush on; #防止网络阻塞
	tcp_nodelay on; #防止网络阻塞
	keepalive_timeout 120; #长连接超时时间,单位是秒

	#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
	fastcgi_connect_timeout 300;
	fastcgi_send_timeout 300;
	fastcgi_read_timeout 300;
	fastcgi_buffer_size 64k;
	fastcgi_buffers 4 64k;
	fastcgi_busy_buffers_size 128k;
	fastcgi_temp_file_write_size 128k;

	#gzip模块设置
	gzip on; #开启gzip压缩输出
	gzip_min_length 1k; #最小压缩文件大小
	gzip_buffers 4 16k; #压缩缓冲区
	gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
	gzip_comp_level 2; #压缩等级
	gzip_types text/plain application/x-javascript text/css application/xml;
	
	#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
	gzip_vary on;
	#limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用

	upstream snsgou.com {
		#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
		server 192.168.80.121:80 weight=3;
		server 192.168.80.122:80 weight=2;
		server 192.168.80.123:80 weight=3;
	}

	#虚拟主机的配置
	server {

		#监听端口
		listen 80;
		
		#域名可以有多个,用空格隔开
		server_name blog.snsgou.com snsgou.com;
		index index.html index.htm index.php;
		root /data/www/qianyunlai;

		location ~ .*.(php|php5)?$ {
			fastcgi_pass 127.0.0.1:9000;
			fastcgi_index index.php;
			include fastcgi.conf;
		}

		#图片缓存时间设置
		location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
			expires 10d;
		}

		#JS和CSS缓存时间设置
		location ~ .*.(js|css)?$ {
			expires 1h;
		}

		#日志格式设定
		log_format access '$remote_addr - $remote_user [$time_local] "$request" '
		'$status $body_bytes_sent "$http_referer" '
		'"$http_user_agent" $http_x_forwarded_for';
		
		#定义本虚拟主机的访问日志
		access_log /var/log/nginx/qianyunlai.log access;

		#对 "/" 启用反向代理
		location / {
			proxy_pass http://127.0.0.1:88;
			proxy_redirect off;
			proxy_set_header X-Real-IP $remote_addr;
			
			#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			
			#以下是一些反向代理的配置,可选。
			proxy_set_header Host $host;
			client_max_body_size 10m; #允许客户端请求的最大单文件字节数
			client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
			proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
			proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
			proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
			proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
			proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
			proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
			proxy_temp_file_write_size 64k;
			#设定缓存文件夹大小,大于这个值,将从upstream服务器传
		}

		#设定查看Nginx状态的地址
		location /NginxStatus {
			stub_status on;
			access_log on;
			auth_basic "NginxStatus";
			auth_basic_user_file conf/htpasswd;
			#htpasswd文件的内容可以用apache提供的htpasswd工具来产生。
		}

		#本地动静分离反向代理配置
		#所有jsp的页面均交由tomcat或resin处理
		location ~ .(jsp|jspx|do)?$ {
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://127.0.0.1:8080;
		}

		#所有静态文件由nginx直接读取不经过tomcat或resin
		location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
			expires 15d; 
		}
		
		location ~ .*.(js|css)?$ {
			expires 1h;
		}
	}
}

Nginx参数:

--prefix= 指向安装目录
--sbin-path 指向(执行)程序文件(nginx)
--conf-path= 指向配置文件(nginx.conf)
--error-log-path= 指向错误日志目录
--pid-path= 指向pid文件(nginx.pid)
--lock-path= 指向lock文件(nginx.lock)(安装文件锁定,防止安装文件被别人利用,或自己误操作。)
--user= 指定程序运行时的非特权用户
--group= 指定程序运行时的非特权用户组
--builddir= 指向编译目录
--with-rtsig_module 启用rtsig模块支持(实时信号)
--with-select_module 启用select模块支持(一种轮询模式,不推荐在高载环境下使用)禁用:--without-select_module
--with-poll_module 启用poll模块支持(功能与select相同,与select特性相同,为一种轮询模式,不推荐在高载环境下使用)
--with-file-aio 启用file aio支持(一种APL文件传输格式)
--with-ipv6 启用ipv6支持
--with-http_ssl_module 启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl)
--with-http_realip_module 启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)
--with-http_addition_module 启用ngx_http_addition_module支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求)
--with-http_xslt_module 启用ngx_http_xslt_module支持(过滤转换XML请求)
--with-http_image_filter_module 启用ngx_http_image_filter_module支持(传输JPEG/GIF/PNG 图片的一个过滤器)(默认为不启用。gd库要用到)
--with-http_geoip_module 启用ngx_http_geoip_module支持(该模块创建基于与MaxMind GeoIP二进制文件相配的客户端IP地址的ngx_http_geoip_module变量)
--with-http_sub_module 启用ngx_http_sub_module支持(允许用一些其他文本替换nginx响应中的一些文本)
--with-http_dav_module 启用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默认情况下为关闭,需编译开启
--with-http_flv_module 启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)
--with-http_gzip_static_module 启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)
--with-http_random_index_module 启用ngx_http_random_index_module支持(从目录中随机挑选一个目录索引)
--with-http_secure_link_module 启用ngx_http_secure_link_module支持(计算和检查要求所需的安全链接网址)
--with-http_degradation_module 启用ngx_http_degradation_module支持(允许在内存不足的情况下返回204或444码)
--with-http_stub_status_module 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)
--without-http_charset_module 禁用ngx_http_charset_module支持(重新编码web页面,但只能是一个方向--服务器端到客户端,并且只有一个字节的编码可以被重新编码)
--without-http_gzip_module 禁用ngx_http_gzip_module支持(该模块同-with-http_gzip_static_module功能一样)
--without-http_ssi_module 禁用ngx_http_ssi_module支持(该模块提供了一个在输入端处理处理服务器包含文件(SSI)的过滤器,目前支持SSI命令的列表是不完整的)
--without-http_userid_module 禁用ngx_http_userid_module支持(该模块用来处理用来确定客户端后续请求的cookies)
--without-http_access_module 禁用ngx_http_access_module支持(该模块提供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址)
--without-http_auth_basic_module禁用ngx_http_auth_basic_module(该模块是可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容)
--without-http_autoindex_module 禁用disable ngx_http_autoindex_module支持(该模块用于自动生成目录列表,只在ngx_http_index_module模块未找到索引文件时发出请求。)
--without-http_geo_module 禁用ngx_http_geo_module支持(创建一些变量,其值依赖于客户端的IP地址)
--without-http_map_module 禁用ngx_http_map_module支持(使用任意的键/值对设置配置变量)
--without-http_split_clients_module 禁用ngx_http_split_clients_module支持(该模块用来基于某些条件划分用户。条件如:ip地址、报头、cookies等等)
--without-http_referer_module 禁用disable ngx_http_referer_module支持(该模块用来过滤请求,拒绝报头中Referer值不正确的请求)
--without-http_rewrite_module 禁用ngx_http_rewrite_module支持(该模块允许使用正则表达式改变URI,并且根据变量来转向以及选择配置。如果在server级别设置该选项,那么他们将在 location之前生效。如果在location还有更进一步的重写规则,location部分的规则依然会被执行。如果这个URI重写是因为location部分的规则造成的,那么 location部分会再次被执行作为新的URI。 这个循环会执行10次,然后Nginx会返回一个500错误。)
--without-http_proxy_module 禁用ngx_http_proxy_module支持(有关代理服务器)
--without-http_fastcgi_module 禁用ngx_http_fastcgi_module支持(该模块允许Nginx 与FastCGI 进程交互,并通过传递参数来控制FastCGI 进程工作。 )FastCGI一个常驻型的公共网关接口。
--without-http_uwsgi_module 禁用ngx_http_uwsgi_module支持(该模块用来医用uwsgi协议,uWSGI服务器相关)
--without-http_scgi_module 禁用ngx_http_scgi_module支持(该模块用来启用SCGI协议支持,SCGI协议是CGI协议的替代。它是一种应用程序与HTTP服务接口标准。它有些像FastCGI但他的设计 更容易实现。)
--without-http_memcached_module 禁用ngx_http_memcached_module支持(该模块用来提供简单的缓存,以提高系统效率)
--without-http_limit_zone_module 禁用ngx_http_limit_zone_module支持(该模块可以针对条件,进行会话的并发连接数控制)
--without-http_limit_req_module 禁用ngx_http_limit_req_module支持(该模块允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件)
--without-http_empty_gif_module 禁用ngx_http_empty_gif_module支持(该模块在内存中常驻了一个1*1的透明GIF图像,可以被非常快速的调用)
--without-http_browser_module 禁用ngx_http_browser_module支持(该模块用来创建依赖于请求报头的值。如果浏览器为modern ,则$modern_browser等于modern_browser_value指令分配的值;如 果浏览器为old,则$ancient_browser等于 ancient_browser_value指令分配的值;如果浏览器为 MSIE中的任意版本,则 $msie等于1)
--without-http_upstream_ip_hash_module 禁用ngx_http_upstream_ip_hash_module支持(该模块用于简单的负载均衡)
--with-http_perl_module 启用ngx_http_perl_module支持(该模块使nginx可以直接使用perl或通过ssi调用perl)
--with-perl_modules_path= 设定perl模块路径
--with-perl= 设定perl库文件路径
--http-log-path= 设定access log路径
--http-client-body-temp-path= 设定http客户端请求临时文件路径
--http-proxy-temp-path= 设定http代理临时文件路径
--http-fastcgi-temp-path= 设定http fastcgi临时文件路径
--http-uwsgi-temp-path= 设定http uwsgi临时文件路径
--http-scgi-temp-path= 设定http scgi临时文件路径
--without-http 禁用http server功能
--without-http-cache 禁用http cache功能
--with-mail 启用POP3/IMAP4/SMTP代理模块支持
--with-mail_ssl_module 启用ngx_mail_ssl_module支持
--without-mail_pop3_module 禁用pop3协议(POP3即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。是因特网电子邮件的第一个离线协议标 准,POP3协议允许用户从服务器上把邮件存储到本地主机上,同时根据客户端的操作删除或保存在邮件服务器上的邮件。POP3协议是TCP/IP协议族中的一员,主要用于 支持使用客户端远程管理在服务器上的电子邮件)
--without-mail_imap_module 禁用imap协议(一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。IMAP协议运行在TCP/IP协议之上, 使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。)
--without-mail_smtp_module 禁用smtp协议(SMTP即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。)
--with-google_perftools_module 启用ngx_google_perftools_module支持(调试用,剖析程序性能瓶颈)
--with-cpp_test_module 启用ngx_cpp_test_module支持
--add-module= 启用外部模块支持
--with-cc= 指向C编译器路径
--with-cpp= 指向C预处理路径
--with-cc-opt= 设置C编译器参数(PCRE库,需要指定--with-cc-opt=”-I /usr/local/include”,如果使用select()函数则需要同时增加文件描述符数量,可以通过--with-cc- opt=”-D FD_SETSIZE=2048”指定。)
--with-ld-opt= 设置连接文件参数。(PCRE库,需要指定--with-ld-opt=”-L /usr/local/lib”。)
--with-cpu-opt= 指定编译的CPU,可用的值为: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
--without-pcre 禁用pcre库
--with-pcre 启用pcre库
--with-pcre= 指向pcre库文件目录
--with-pcre-opt= 在编译时为pcre库设置附加参数
--with-md5= 指向md5库文件目录(消息摘要算法第五版,用以提供消息的完整性保护)
--with-md5-opt= 在编译时为md5库设置附加参数
--with-md5-asm 使用md5汇编源
--with-sha1= 指向sha1库目录(数字签名算法,主要用于数字签名)
--with-sha1-opt= 在编译时为sha1库设置附加参数
--with-sha1-asm 使用sha1汇编源
--with-zlib= 指向zlib库目录
--with-zlib-opt= 在编译时为zlib设置附加参数
--with-zlib-asm= 为指定的CPU使用zlib汇编源进行优化,CPU类型为pentium, pentiumpro
--with-libatomic 为原子内存的更新操作的实现提供一个架构
--with-libatomic= 指向libatomic_ops安装目录
--with-openssl= 指向openssl安装目录
--with-openssl-opt 在编译时为openssl设置附加参数
--with-debug 启用debug日志

实例一:

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6

实例二:

./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.21 \
--with-zlib=/usr/local/src/zlib-1.2.8 \
--with-openssl=/usr/local/src/openssl-1.0.1c
make
make install

参考了万网,服务器Windows2008 IIS7.5可以做一下设置禁用脚本的执行方法--------需要禁止某个目录的脚本执行权限,您可以在要禁用脚本执行权限的目录建立一个web.config文件,里面加入下面的代码:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <remove name="ASPClassic" />
            <remove name="PHP-FastCGI" />
            <remove name="ASPNET-ISAPI-1.1-AXD" />
            <remove name="ASPNET-ISAPI-1.1-HttpRemotingHandlerFactory-rem" />
            <remove name="ASPNET-ISAPI-1.1-HttpRemotingHandlerFactory-soap" />
            <remove name="ASPNET-ISAPI-1.1-PageHandlerFactory" />
            <remove name="ASPNET-ISAPI-1.1-SimpleHandlerFactory" />
            <remove name="ASPNET-ISAPI-1.1-WebServiceHandlerFactory" />
            <remove name="AssemblyResourceLoader-Integrated" />
            <remove name="AXD-ISAPI-2.0" />
            <remove name="AXD-ISAPI-2.0-64" />
            <remove name="HttpRemotingHandlerFactory-rem-Integrated" />
            <remove name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" />
            <remove name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" />
            <remove name="HttpRemotingHandlerFactory-soap-Integrated" />
            <remove name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" />
            <remove name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" />
            <remove name="PageHandlerFactory-Integrated" />
            <remove name="PageHandlerFactory-ISAPI-2.0" />
            <remove name="PageHandlerFactory-ISAPI-2.0-64" />
            <remove name="Perl-CGI" />
            <remove name="Perl-ISAPI" />
            <remove name="rules-64-ISAPI-2.0" />
            <remove name="rules-Integrated" />
            <remove name="rules-ISAPI-2.0" />
            <remove name="SecurityCertificate" />
            <remove name="SimpleHandlerFactory-Integrated" />
            <remove name="SimpleHandlerFactory-ISAPI-2.0" />
            <remove name="SimpleHandlerFactory-ISAPI-2.0-64" />
            <remove name="svc-Integrated" />
            <remove name="svc-ISAPI-2.0" />
            <remove name="svc-ISAPI-2.0-64" />
            <remove name="TraceHandler-Integrated" />
            <remove name="TRACEVerbHandler" />
            <remove name="WebAdminHandler-Integrated" />
            <remove name="WebServiceHandlerFactory-Integrated" />
            <remove name="WebServiceHandlerFactory-ISAPI-2.0" />
            <remove name="WebServiceHandlerFactory-ISAPI-2.0-64" />
            <remove name="xoml-64-ISAPI-2.0" />
            <remove name="xoml-Integrated" />
            <remove name="xoml-ISAPI-2.0" />
        </handlers>
    </system.webServer>
</configuration>

保存后就设置了该文件夹以及子容器只有读的权限,而没有脚本执行权限。如果要恢复脚本权限就直接删除该目录下的web.config文件。

最近浏览有关互联网的资讯多了,发现了一个不少人提到的问题,为什么网址结尾会加上反斜杠呢?又为什么我们在浏览器地址栏上打出一个网址(如我的主页piaoyun.cc),按回车后地址末尾会自动加上一个反斜杠(部分浏览器如chorme会自动隐藏网址末尾的反斜杠)。很诡异是吧!好了,进入正题,推广一下小知识。

在传统意义上说,网址末尾是没有反斜杠的。有没有反斜杠的意义在于该url是指向一个文件还是一个目录,例如:
http://piaoyun.cc/piaoyun 指向的是网站根目录下一个名为piaoyun的文件
http://piaoyun.cc/piaoyun/ 指向的是网站根目录下一个名为piaoyun的目录

于是在网址末尾加了反斜杠是能加快网站载入,因为网址末尾加了反斜杠会直接告知浏览器现在指向的是一个目录,浏览器就能直接读取该目录下如index或home等默认文件。而没有加上反斜杠时浏览器首先会尝试读取根目录下的一个文件,如果没有该文件再查找一个与该文件同名的目录,最后才读取目录下的默认文件。这样一来加上反斜杠就会加快网站加载速度。对于网站所在的服务器,网址没有加上反斜杠会给服务器增加一个查找是否有同名文件的过程,这明显会增加服务器的负担,当然这个影响并不会很大,但如果你的网站的直接流量很大,那么给url末尾加上反斜杠便能较大的减轻服务器的负担了。

当然给网址末尾加上反斜杠还有其他的好处:1.在seo方面考虑,习惯性的给自己网站的网址末尾加上反斜杠能避免重复内容。正如域名中是否带”www”的问题,url末尾是否有反斜杠也会造成重复内容的问题,这对于网站的seo无疑是不利的,要知道,重复内容绝对是seo的大忌。
2.因为服务器对url不能正确解析,有可能会出现404错误,习惯地给网址末尾加上反斜杠则可以避免这种情况。

总的来说给网址末尾加上反斜杠对对网站建设者是有很大好处的,这可以说是网站建设者应该养成的一个好习惯。当然,在交换友情链接时别忘了提醒一下对方,记得为你的网站url末尾加上反斜杠了。

为什么很多网站都是采用在网址的结尾后加上反斜杠,比如百度 sina都是这样的处理方法。为什么要给网址结尾加上反斜杠,这样做对于用户体验,以及速度优化有什么好处呢。

网站使用反斜杠和不使用反斜杠的区别不加斜杠指向的是网站根目录下一个名为的文件,加了斜杠指向的是网站根目录下一个名为的目录,也就是目录与文件的区别

 

首页网站使用反斜杠的好处使用斜杠能加快网站载入,原因是因为网址末尾加了反斜杠会直接告知浏览器现在指向的是一个目录,目录的话会直接读取index。或者home等默认文件。没有加上反斜杠时浏览器首先会尝试读取根目录下的一个文件,如果没有该文件再查找一个与该文件同名的目录,最后才读取目录下的默认文件。网址没有加上反斜杠会给服务器增加一个查找是否有同名文件的过程.

seo方面考虑
网站只存在带斜杠的模式,避免网站权重流失(和不带www和带www的概念相同)。同时有另外一种理解:有加了是一个文件夹 默认情况下应该是目录的权重大于网站页面权重

最后附上Apache开启自动将不同的url以301重定向至一个标准的url上的.htaccess代码(前提是你的服务器开启了mod_rewrite,至于IIS,就没有方便的方法去实现这个功能了):

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://piaoyun.cc/$1/ [L,R=301]

说明:
* RewriteCond %{REQUEST_FILENAME} !-f : 指定操作仅针对目录,对指向文件的url不进行rewrite操作;
* RewriteCond %{REQUEST_URI} !(.*)/$ :判断url是否以斜杠“/”结尾;
* RewriteRule ^(.*)$ http://piaoyun.cc/$1/ [L,R=301] : 自动将符合上述条件的url以301跳转重定向至以斜杠结尾的版本,比如说将“http://piaoyun.cc/piaoyun”重定向至 “http://piaoyun.cc/piaoyun/”,其中“L”指该行为规则的最后一行,而“R=301”则指明采用301 Redirect。当然,您在使用时应将“http://piaoyun.cc/”替换成自己网站的url。

当然我的网站并没有对于该使用目录的时候使用目录,当时是处于扁平状网站布局考虑而有所失误。而现在想要修改对于网站结构变动较大而不是很现实所以还是以后考虑进一步修改。

借助Windows系统自带的一个命令XCOPY,我们可以轻易地通过命令提示符窗口或用记事本,实现在窗口环境下菜单命令不便实现的文件复制或备份功能。

按类备份文件时,有时会涉及到不同文件夹中的不同文件根据某种条件备份的问题,如果涉及到连同文件夹结构也一同备份,这种情况下,我们往往需要借助于一些专用的备份工具来实现,设置起来也比较繁琐。实际上,无论是低版本的Windows XP操作系统,还是更高级的Windows 7、Windows 8系统,均提供一个强大的XCOPY命令程序,借助于这个命令,我们只需用命令提示符窗口直接输入一行命令,或用记事本写一句简单的BAT代码执行一下,就可以随心所欲地进行自己的文件备份,较之用窗口操作要效率高得多。

一、Xcopy参数介绍

命令格式:XCOPY source [destination] 一堆可选的参数

参数介绍:

source 指定要复制的文件。
destination 指定新文件的位置和/或名称。
/A 只复制有存档属性集的文件, 但不改变属性。
/M 只复制有存档属性集的文件, 并关闭存档属性。
/D:m-d-y 复制在指定日期或指定日期以后改变的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。
/EXCLUDE:file1[+file2][+file3]...
指定含有字符串的文件列表。如果有任何字符串与要被复制的文件的绝对路径相符,那个文件将不会得到复制。
例如,指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的所有文件或带有 .obj 扩展名的文件。
/P 创建每个目标文件前提示。
/S 复制目录和子目录,除了空的。
/E 复制目录和子目录,包括空的。 与 /S /E 相同。可以用来修改 /T。
/V 验证每个新文件。
/W 提示您在复制前按键。
/C 即使有错误,也继续复制。
/I 如果目标不存在,又在复制一个以上的文件, 则假定目标一定是一个目录。
/Q 复制时不显示文件名。
/F 复制时显示完整的源和目标文件名。
/L 显示要复制的文件。
/G 允许将没有经过加密的文件复制到不支持加密的目标。
/H 也复制隐藏和系统文件。
/R 改写只读文件。
/T 创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括空目录和子目录。
/U 只复制已经存在于目标中的文件。
/K 复制属性。一般的 Xcopy 会重设只读属性。
/N 用生成的短名复制。
/O 复制文件所有权和 ACL 信息。
/X 复制文件审核设置(隐含 /O)。
/Y 禁止提示以确认改写一个现存目标文件。
/-Y 导致提示以确认改写一个现存目标文件。
/Z 用重新启动模式复制网络文件。

二、Xcopy命令实例介绍

案例一:用好XCOPY的排除备份

XCOPY可以排除不想要的文件或文件夹进行复制。不过这个命令用起来并不像Windows帮助里写的那么简单。我们先看看XCOPY的帮助是怎么写的:

/EXCLUDE:file1[+file2][+file3]...

指定含有字符串的文件列表。每一个字符串必须在文件的单独行中。如果有任何字符串与要被复制的文件的绝对路径相符,那个文件将不会得到复制。

例如,指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的所有文件或带有.obj 扩展名的文件。

看了这个帮助甚至它举的例子,你会用了吗?我相信你也仍然是一头雾水!没关系!下面就让我们来通过具体案例来作说明。

我们假设有两个文件夹,一个名为DATA,存放了如下表所示的文件夹或文件。一个名为BACKUP,是用作备份筛选结果的目标文件夹。

Z:.

├─DATA

│ ├─计划

│ └─总结

│ └─piaoyuncc

│ └─piaoyuncc1

│ 计划.TXT

│ 总结.TXT

│ piaoyuncc.php

│ 1.计划

│ 2.总结

│ 3.计划

│ 4.总结

│ 5.总结

└─BACKUP

假设我们的备份目标就是把凡是标记了“总结”的文件夹和文件拷贝到BACKUP这个目录里面,而排除标记了“计划”的文件和目录。

我们只需执行如下命令即可达到目的:

XCOPY /E /S /H /EXCLUDE:UNCOPY.TXT Z:\DATA Z:\BACKUP

其中的文本列表文件UNCOPY.TXT里面,要包含我们想要排除的文件以及文件夹,这个文件需要我们另行编好保存,具体内容如下:

\piaoyuncc
\飘云\
飘云.TXT
.飘云

注意:上面的\piaoyuncc这个不要结尾的 \ 代表可以排除多个piaoyuncc文件夹,例如:piaoyuncc1  piaoyuncc2 都可以同时排除

本例的用法还有一个很实用的应用场合:比如你硬盘上有文件损坏了,你又想备份硬盘,可以使用这个方法避开损坏的文件。

案例二:快速备份某一类文件

XCOPY *.PDF /S E:\MYPDFBAK

随后,当前驱动器(或文件夹)以及其下各级子文件夹下面的PDF类型文件均被复制到E盘的MYDOCBAK文件夹中了,而且保持原来的目录结构。
其中,参数/S的意思是在复制指定类型文件时包含本级目录和各级子目录(空目录除外)。
小提示:以上是复制一类文件的命令,如果希望迁移一批文件,而不是复制文件,那么只需在记事本中使用迁移文件命令MOVE就可以了。

案例三:按文件名中的关键词备份

XCOPY F:\2014物资总目\*材料*.* F:\材料 /S

存盘之后,将文件的扩展名改为BAT,得到“备份.BAT”文件,双击该文件,在“F:\材料”目录中便自动生成了所有材料类的文件。
说明:以上命令中“*材料*.*”是采用通配符来描述所有含有“材料”字样的文件,不管“材料”字样出现在文件名的什么位置。

案例四:给系统重要文件留个备份

XCOPY C:\*.DLL /S /H E:\SYSFILEBAK

命令行中的参数/H表示复制具有隐藏属性的文件,同时也复制系统属性的文件。/S表示包含系统的各级子目录。*.DLL表示对C盘的所有文件进行过滤筛选。
将该批处理文件拷贝到C盘的根目录中并执行以下,最后我们就会在E:\SYSFILEBAK文件夹中获得所有这些重要文件的备份了。

案例五:随时自动续传大量文件

很简单,在命令提示符下,执行XCOPY E:\*.* F: /S /H /D /Y 命令即可。它能查出哪些文件是已经复制过去的,跳过复制;同时查出哪些文件还没有复制过去,立即进行复制。其中起作用的一个主要参数/D:m-d-y的意义是,复制在指定日期或指定日期以后更改的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。

案例六:自动跳过复制错误提示

还有一种备份的情况,我们经常也碰到的:不管是用窗口复制还是在命令提示符下操作,在复制过程中,因为复制某个文件出错或者这个文件在使用中,而停止了复制工作,如果我们这时不在电脑旁边,那么复制工作暂停并将一直等下去,直到我们人为干预。
如果我们事先想到这一情况,想让复制过程自动跳过某个出错的文件和某个正在使用中的文件而继续复制其他文件,可用下面的方法。
具体办法就是在XCOPY命令中加入参数 /C一个,也就是将命令行变成XCOPY E:\*.* D: /S /H /D /C /Y 就行了。参数/C的作用就是,即使有错,也继续复制。

案例七:复制完毕自动关掉电脑

如果备份复制工作量很大,需要耗费很多时间,这时又正好到了下班时间,怎么办?需要加班等待吗?不用!我们可以用一个简单的批处理让XCOPY备份的过程变为自动复制,并且复制完成后关闭电脑。

新建文本文档,输入如下命令,然后更名为XCOPY.BAT

XCOPY E:\*.* D: /S /H /C /Y
SHUTDOWN -S

需要备份时,双击XCOPY.BAT运行它,你这时候可以出去玩或下班了。电脑会自己复制备份完成文件然后自动关机。
可以看出,这里是应用了SHUTDOWN -S命令和XCOPY命令联合使用的一个技巧来完成备份和自动关机操作的。

案例八:本机复制文件或文件夹的实例

Xcopy d:\UpdateFiles e:\123 /s /e /y

命令解释:将D盘的UpdateFiles文件夹中包含的所有东西,全部复制到E盘的123文件夹内;/s /e /y 参数说明:在复制文件的同时也复制空目录或子目录,如果目标路径已经有相同文件了,使用覆盖方式而不进行提示。

案例九:在局域网中的应用实例

Xcopy \\192.168.0.168\UpdateFiles e:\123 /s /e /y

命令解释:将192.168.0.168这台计算机的名称为UpdateFiles的文件夹内的所有东西,全部复制到本机的e:\123 文件夹;参数说明:在复制文件的同时也复制空目录或子目录,如果目标路径已经有相同文件了,使用覆盖方式而不进行提示。

对于一些访问没有明显错误提示的php页面,我们可以通过error_log来做进一步的判定。但出于种种原因,有些服务器并没有开启PHP的error_log功能。可以暂时开一下:

编辑php.ini,将log_errors设置为on:
log_errors = On
然后重启apache即可。

如成功开启,就可以跟踪到对应的错误提示:
[Mon Sep 24 16:57:01 2012] [error] [client 218.5.80.210] PHP Warning: fsockopen() has been disabled for security reasons in /home/piaoyun.cc/fsockopen.php on line 2
[Mon Sep 24 16:57:02 2012] [error] [client 218.5.80.210] PHP Warning: fsockopen() has been disabled for security reasons in /home/piaoyun.cc/fsockopen.php on line 2
[Mon Sep 24 16:57:03 2012] [error] [client 218.5.80.210] PHP Warning: fsockopen() has been disabled for security reasons in /home/piaoyun.cc/fsockopen.php on line 2
[Mon Sep 24 16:57:04 2012] [error] [client 218.5.80.210] PHP Warning: fsockopen() has been disabled for security reasons in /home/piaoyun.cc/fsockopen.php on line

如果是Windows环境,除了将log_errors设置为on外,还需要定义error_log的路径及文件名:
error_log = d:/temp/error.log
(此目录需要授予php标识用户的修改权限,否则日志文件无法生成)
因为IIS没有error_log的概念,需要另外定义。

032

应用程序“PIAOYUN.CC”中的服务器错误
Internet Information Services 7.5

错误摘要
HTTP 错误 500.0 - Internal Server Error
FastCGI 进程最近常常失败。请过一会再尝试此请求

详细错误信息
模块 FastCgiModule
通知 ExecuteRequestHandler
处理程序 PHP for FastCgi
错误代码 0x80004005

请求的 URL http://piaoyun.cc:80/index.php
物理路径 D:\wwwroot\piaoyun.cc\index.php
登录方法 匿名
登录用户 匿名

解决办法:
修改FastCGI参数配置,将每分钟快速故障数设置为0即可解决该问题。

 

由于 libuv 版本的 SS 不稳定,并且安装步骤繁琐,因此推荐安装 libev 版本。安装参考如下

1、Shadowsocks 是什么

Shadowsocks 是一种安全的 socks5 代理,可以保护你的上网流量。基于多种加密方式,推荐使用 aes-256-cfb 加密。安装和使用需要本地端和服务端。
本地客户端已经包含了多种版本,包括iOS,Android,Windows,MAC,甚至是路由器 (基于OpenWRT),所以使用方便,各取所需。
远程服务端则一般安装在基于 Linux 的各种发行版操作系统,比如 Debian, CentOS, Fedora, Redhat, Ubuntu, openSUSE等。

2、Shadowsocks 的作者是谁

最初只有 Python 版,由 @clowwindy 开发和维护,后来随着知名度提高,开始出现各种语言的版本,其中比较知名的是 libev , go, nodejs 等版本,需要注意的是,nodejs 的作者也是 @clowwindy,但最近已不再维护该版本。libev 的维护者是 @madeye,长期更新。

3、Shadowsocks 一键安装脚本

虽然作者的安装教程已经很完备了,但还是有不少人不会安装和使用,因此我编写了 Shadowsocks 一键安装脚本,主要基于 CentOS 系统下的一键安装(也有 Debian 系统),分别有 Python, libev, nodejs 版,个人推荐使用 Python 和 libev 版。
该脚本会自动下载,编译安装最新版的 Shadowsocks,并且可以完全卸载 Shadowsocks ,自动生成配置文件,安装完成即可使用。

4、Shadowsocks 如何升级

安装完 Shadowsocks,一段时间后,作者已经更新了版本(修正 bug 或升级功能),那么如何一键升级到最新版呢?
Python 版,执行命令: pip install -U shadowsocks ,命令执行成功后,重新启动 Shadowsocks ,命令: service shadowsocks restart
libev 版,先卸载旧版本,执行命令:./shadowsocks-libev.sh uninstall ,再安装新版本,执行命令: ./shadowsocks-libev.sh 安装
Debian 下的 libev 版,升级方式同上。
nodejs 版,也是先卸载再重新安装,因为作者已经不更新,所以不推荐用这版本。

5、Shadowsocks 安装失败怎么办

由于 CentOS 5.x 的默认 gcc 版本过低,在编译 libev 版时会出错;同时默认 Python 的版本也过低,所以也无法安装 Python 版的。因此,请确保安装的环境为 CentOS 6.x 或 CentOS 7.x 。
更多其他错误,请根据实际错误提示,自行在 google 上搜索关键字。

6、Shadowsocks 的客户端程序

大多数人都是在 Windows 下使用电脑,因此最好用的 Windows 客户端是 shadowsocks-gui,下载最新版后解压即可使用。
shadowsocks-gui客户端下载地址:https://sourceforge.net/projects/shadowsocksgui/files/dist/

7、Shadowsocks 本地代理上网

本地电脑启动客户端,连接上远程服务端后,即在本地开启了 socks5 代理,本地端口号默认为 1080,如果提示被占用,也可以改为其他端口号。在浏览器中安装插件,Chrome 下是 SwitchySharp, Firefox 下是 AutoProxy,新建配置文件,SOCKS Host 填 127.0.0.1,Port 填 1080(默认,跟 Shadowsocks 客户端的本地端口号一致即可)

参考链接:
1、http://shadowsocks.org/en/index.html
2、https://github.com/clowwindy/shadowsocks
3、https://github.com/madeye/shadowsocks-libev

以下的一键安装脚本来源于网络:秋水逸冰的博客!【博主在搬瓦工的MICRO64型号VPS运行安装通过了】

CentOS下shadowsocks-libev一键安装脚本

搬瓦工Micro-64型号配置,博主是在某宝上面淘到的。价格是每年的。

Self-managed
HDD: 1.5 GB
RAM: 64 MB
CPU: 1x Intel Xeon
BW: 100 GB/mo

本脚本适用环境:
系统支持:CentOS 6.x 32或64位
内存要求:≥128M
日期:2014年07月12日

关于本脚本:
一键安装 libev 版的 shadowsocks 最新版本。该版本的特点是内存占用小(600k左右),低 CPU 消耗,甚至可以安装在基于 OpenWRT 的路由器上。

默认配置:
服务器端口:8989
客户端端口:1080
密码:自己设定(如不设定,默认为teddysun.com)

客户端下载:
http://sourceforge.net/projects/shadowsocksgui/files/dist/

使用方法:
使用root用户登录,运行以下命令:

wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev.sh
chmod +x shadowsocks-libev.sh
./shadowsocks-libev.sh 2>&1 | tee shadowsocks-libev.log

安装完成后,脚本提示如下:

Congratulations, shadowsocks-libev install completed!
Your Server IP:your_server_ip
Your Server Port:8989
Your Password:your_password
Your Local IP:127.0.0.1
Your Local Port:1080
Your Encryption Method:aes-256-cfb

Welcome to visit:http://teddysun.com/357.html
Enjoy it!

卸载方法:
使用 root 用户登录,运行以下命令:

./shadowsocks-libev.sh uninstall

其他事项:
安装完成后即已后台启动 shadowsocks ,运行:

ps -ef | grep ss-server | grep -v ps | grep -v grep

可以查看进程是否存在。
本脚本安装完成后,会将 shadowsocks-libev 加入开机自启动。

使用命令:
启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
查看状态:/etc/init.d/shadowsocks status

更多版本 shadowsocks 安装:
CentOS 下 shadowsocks-python 一键安装脚本
CentOS 下 shadowsocks-nodejs 一键安装脚本
Debian 下 shadowsocks-libev 一键安装脚本

特别说明:
1、已安装旧版本的 shadowsocks 需要升级的话,需下载本脚本的最新版,运行卸载命令./shadowsocks-libev.sh uninstall 后,再次执行本脚本即可安装最新版。
2、关于 CentOS 的默认 iptables 防火墙规则 icmp-host-prohibited ,如果安装之后发现已经启动 shadowsocks,本地客户端却不能连接上,请检查 iptables 是不是有如下的一条规则:

REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

运行命令:

/etc/init.d/iptables status

可以查看。如果有这条规则,则添加的 8989 端口需手动更改一下,放到这条规则的上一行。编辑 /etc/sysconfig/iptables 文件,将:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8989 -j ACCEPT

放在:

-A INPUT -j REJECT --reject-with icmp-host-prohibited

的前面。最终效果如下:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8989 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

编辑完后,重启 iptables 防火墙。命令:/etc/init.d/iptables restart

秋水逸冰博主的CentOS下shadowsocks-libev一键安装脚本内容:

#! /bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#===============================================================================================
#   System Required:  CentOS6.x (32bit/64bit)
#   Description:  Install Shadowsocks(libev) for CentOS
#   Author: Teddysun <i@teddysun.com>
#   Intro:  http://teddysun.com/357.html
#===============================================================================================

clear
echo "#############################################################"
echo "# Install Shadowsocks(libev) for CentOS6.x (32bit/64bit)"
echo "# Intro: http://teddysun.com/357.html"
echo "#"
echo "# Author: Teddysun <i@teddysun.com>"
echo "#"
echo "#############################################################"
echo ""

# Install Shadowsocks-libev
function install_shadowsocks_libev(){
    rootness
    disable_selinux
    pre_install
    download_files
    config_shadowsocks
    iptables_set
    install
}

# Make sure only root can run our script
function rootness(){
if [[ $EUID -ne 0 ]]; then
   echo "Error:This script must be run as root!" 1>&2
   exit 1
fi
}

# Disable selinux
function disable_selinux(){
if [ -s /etc/selinux/config ] && grep 'SELINUX=enforcing' /etc/selinux/config; then
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    setenforce 0
fi
}

# Pre-installation settings
function pre_install(){
    #Set shadowsocks-libev config password
    echo "Please input password for shadowsocks-libev:"
    read -p "(Default password: teddysun.com):" shadowsockspwd
    if [ "$shadowsockspwd" = "" ]; then
        shadowsockspwd="teddysun.com"
    fi
    echo "password:$shadowsockspwd"
    echo "####################################"
    get_char(){
        SAVEDSTTY=`stty -g`
        stty -echo
        stty cbreak
        dd if=/dev/tty bs=1 count=1 2> /dev/null
        stty -raw
        stty echo
        stty $SAVEDSTTY
    }
    echo ""
    echo "Press any key to start...or Press Ctrl+C to cancel"
    char=`get_char`
    #Install necessary dependencies
    yum install -y wget unzip openssl-devel gcc swig python python-devel python-setuptools autoconf libtool libevent
    yum install -y automake make curl curl-devel zlib-devel openssl-devel perl perl-devel cpio expat-devel gettext-devel
    # Get IP address
    echo "Getting Public IP address, Please wait a moment..."
    IP=`curl -s checkip.dyndns.com | cut -d' ' -f 6  | cut -d'<' -f 1`
    if [ -z $IP ]; then
        IP=`curl -s ifconfig.me/ip`
    fi
    #Current folder
    cur_dir=`pwd`
    cd $cur_dir
}

# Download latest shadowsocks-libev
function download_files(){
    if [ -f shadowsocks-libev.zip ];then
        echo "shadowsocks-libev.zip [found]"
    else
        if ! wget --no-check-certificate https://github.com/madeye/shadowsocks-libev/archive/master.zip -O shadowsocks-libev.zip;then
            echo "Failed to download shadowsocks-libev.zip"
            exit 1
        fi
    fi
    unzip shadowsocks-libev.zip
    if [ $? -eq 0 ];then
        cd $cur_dir/shadowsocks-libev-master/
    else
        echo ""
        echo "Unzip shadowsocks-libev failed! Please visit http://teddysun.com/357.html and contact."
        exit 1
    fi
    # Download start script
    if ! wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev; then
        echo "Failed to download shadowsocks-libev start script!"
        exit 1
    fi
}

# Config shadowsocks
function config_shadowsocks(){
    if [ ! -d /etc/shadowsocks-libev ];then
        mkdir /etc/shadowsocks-libev
    fi
    cat > /etc/shadowsocks-libev/config.json<<-EOF
{
    "server":"${IP}",
    "server_port":8989,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"${shadowsockspwd}",
    "timeout":600,
    "method":"aes-256-cfb"
}
EOF
}

# iptables set
function iptables_set(){
    /sbin/service iptables status 1>/dev/null 2>&1
    if [ $? -eq 0 ]; then
        /etc/init.d/iptables status | grep '8989' | grep 'ACCEPT' >/dev/null 2>&1
        if [ $? -ne 0 ]; then
            /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8989 -j ACCEPT
            /etc/init.d/iptables save
            /etc/init.d/iptables restart
        fi
    fi
}


# Install 
function install(){
    # Build and Install shadowsocks-libev
    if [ -s /usr/local/bin/ss-server ];then
        echo "shadowsocks-libev has been installed!"
        exit 0
    else
        ./configure
        make && make install
        if [ $? -eq 0 ]; then
            mv $cur_dir/shadowsocks-libev-master/shadowsocks-libev /etc/init.d/shadowsocks
            chmod +x /etc/init.d/shadowsocks
            # Add run on system start up
            chkconfig --add shadowsocks
            chkconfig shadowsocks on
            # Start shadowsocks
            /etc/init.d/shadowsocks start
            if [ $? -eq 0 ]; then
                echo "Shadowsocks-libev start success!"
            else
                echo "Shadowsocks-libev start failure!"
            fi
        else
            echo ""
            echo "Shadowsocks-libev install failed! Please visit http://teddysun.com/357.html and contact."
            exit 1
        fi
    fi
    cd $cur_dir
    # Delete shadowsocks-libev floder
    rm -rf $cur_dir/shadowsocks-libev-master/
    # Delete shadowsocks-libev zip file
    rm -f shadowsocks-libev.zip
    clear
    echo ""
    echo "Congratulations, shadowsocks-libev install completed!"
    echo -e "Your Server IP: \033[41;37m ${IP} \033[0m"
    echo -e "Your Server Port: \033[41;37m 8989 \033[0m"
    echo -e "Your Password: \033[41;37m ${shadowsockspwd} \033[0m"
    echo -e "Your Local IP: \033[41;37m 127.0.0.1 \033[0m"
    echo -e "Your Local Port: \033[41;37m 1080 \033[0m"
    echo -e "Your Encryption Method: \033[41;37m aes-256-cfb \033[0m"
    echo ""
    echo "Welcome to visit:http://teddysun.com/357.html"
    echo "Enjoy it!"
    echo ""
}

# Uninstall Shadowsocks-libev
function uninstall_shadowsocks_libev(){
    printf "Are you sure uninstall shadowsocks_libev? (y/n) "
    printf "\n"
    read -p "(Default: n):" answer
    if [ -z $answer ]; then
        answer="n"
    fi
    if [ "$answer" = "y" ]; then
        ps -ef | grep -v grep | grep -v ps | grep -i "ss-server" > /dev/null 2>&1
        if [ $? -eq 0 ]; then
            /etc/init.d/shadowsocks stop
        fi
        chkconfig --del shadowsocks
        # delete config file
        rm -rf /etc/shadowsocks-libev
        # delete shadowsocks
        rm -f /usr/local/bin/ss-local
        rm -f /usr/local/bin/ss-tunnel
        rm -f /usr/local/bin/ss-server
        rm -f /usr/local/bin/ss-redir
        rm -f /usr/local/share/man/man8/shadowsocks.8
        rm -f /etc/init.d/shadowsocks
        echo "Shadowsocks-libev uninstall success!"
    else
        echo "uninstall cancelled, Nothing to do"
    fi
}

# Initialization step
action=$1
[  -z $1 ] && action=install
case "$action" in
install)
    install_shadowsocks_libev
    ;;
uninstall)
    uninstall_shadowsocks_libev
    ;;
*)
    echo "Arguments error! [${action} ]"
    echo "Usage: `basename $0` {install|uninstall}"
    ;;
esac

Shadowsocks一键安装包(Debian/Ubuntu适用)脚本内容[脚本内容来源于网络]:

#!/bin/bash

if [ $(id -u) != "0" ]; then
    echo "Error: You must be root to run this script"
    exit 1
fi

ssport=443
echo -e "Shadowsocks server port(Default 443)>>\c"
read ssport
echo "===========shadowsocks port is $ssport============"

sspasswd=5y2n
echo -e "Shadowsocks server password(Default 5y2d)>>\c"
read sspasswd
echo "=========shadowsocks password is $sspasswd========"

ssmethod=rc4-md5
echo -e "Shadowsocks server encrypte method"
echo -e "Allow: rc4-md5(Default),aes-128,aes-256>>\c"
read ssmethod
echo "=====shadowsocks encrypte method is $ssmethod====="

apt-get -y update
apt-get -y install git &&
mkdir /tmp/shadowsocks &&
cd /tmp/shadowsocks &&
git clone https://github.com/madeye/shadowsocks-libev.git
cd shadowsocks-libev
apt-get -y install build-essential autoconf libtool libssl-dev gawk debhelper
dpkg-buildpackage
cd ..
dpkg -i shadowsocks*.deb
cd ../.. && rm -rf shadowsocks

sed -i 's/"server":"\<.*\>"/"server":"0.0.0.0"/g' /etc/shadowsocks/config.json
var1=\"server_port\":\\\<.*\\\>
var2=\"server_port\":$ssport
sed -i "s/$var1/$var2/g" /etc/shadowsocks/config.json
var1=\"password\":\"\\\<.*\\\>\"
var2=\"password\":\"$sspasswd\"
sed -i "s/$var1/$var2/g" /etc/shadowsocks/config.json
var1=\"method\":\"\\\<.*\\\>\"
var2=\"method\":\"$ssmethod\"
sed -i "s/$var1/$var2/g" /etc/shadowsocks/config.json

service shadowsocks restart &&

echo "==========================================================="
echo "="
echo "=   Your shadowsocks server install complete! "
echo "=   Congfig file: /etc/shadowsocks/config.json"
echo "=   Control: service shadowsocks {start|stop|restart}"
echo "="
echo "==========================================================="

如果IIS+PHP的环境下需要memcache的缓存支持。需要安装服务端和客户端呢!

一、安装memcached服务端

1、首先下载memcached的服务端,下面的下载地址包含了32位和64位的,大家可以参考自己的系统来下载:
下载地址:
百度网盘:http://pan.baidu.com/s/1ntyswWh 密码: mf6a
360云盘:http://yunpan.cn/cAbMcyMNxa8NB 提取码:4c21

这下是windows下的版本,安装要在命令行下安装
解压到C盘或其他盘都可以,如我的是D盘memcached目录,然后进入cmd命令行,如下:

Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.

C:\Documents and Settings\Administrator>d:

D:\>cd memcached144

D:\memcached144>memcached.exe -d install (安装为服务)

D:\memcached144>memcached.exe -d start (启动)

C:\memcached44>

这样就可以在进程里面看到memcache.exe进程。这样每次启动时都会自动启动

Memcached还有其他的一些常用的命令如下:

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

按照上面的安装步骤安装之后,使用memcached -m 200来调整最大内存占用之后会发现没有起作用,总是默认的64MB的内存,在网上搜了一下,原因是注册表中并没有写入信息,可以这样来修改。

1. memcached -d shutdown 首先关闭memcached服务。

2.进入注册表,找到

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server

在其中有一个ImagePath项,值为"d:\memcached144\memcached.exe" -d runservice,在后面加上

-p 11211 -l 127.0.0.1 -m 256 -c 2048

二、安装memcache客户端

2.下载php版本对应的php_memcache.dll (我这里使用的php版本是:php-5.4.15-nts-Win32-VC9-x86.zip)
下载地址:
百度网盘:http://pan.baidu.com/s/12c77o 密码: etht
360云盘:http://yunpan.cn/cAbkbALRUkT6Z 提取码:adbd
官方地址:http://pecl.php.net/package/memcache/3.0.8/windows

然后解压,复制里面的php_memcache.dll到你php的ext目录下,如我的是
d:\php\ext”目录,为了php加载php_memcache.dll

3、配置php.ini
在PHP的配置文件中:php.ini 的底部加上以下的代码:

[memcache]
extension = php_memcache.dll

4.重新启动IIS,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!
测试:

<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('key', 'This is a test!', 0, 60);
$val = $mem->get('key');
echo $val;
?>

三、Memcached 管理监控工具

1.MemAdmin
下载地址:
百度云盘:http://pan.baidu.com/s/1hquyMCO 密码: 46bk
360网盘:http://yunpan.cn/cAbkXUnqEwaXW 提取码:1090
官方下载:http://www.junopen.com/memadmin/

WinCache加速器只支持非安全线程的PHP版本,关于PHP安全线程的解释,大家可以去这里了解一下:PHP 5.4.x 安装包VC6和VC9的区别是什么及Thread Safe与Non Thread Safe的区别

WinCache加速器安装与配置,Wincache 1.3 for 5.4,这个大家可以去微软IIS官方下载,它将极大地提高您的PHP系统运行效率!如果您的服务器运行的都是开源程序,不需要zend,强烈建议您使用这个配置!

Wincache模块下载地址:http://www.iis.net/downloads/microsoft/wincache-extension

并下载 WinCache 1.3 for PHP 5.4 - x86 ,这个文件,这里一定要注意,Wincache版本要与PHP版本相对应,我们在这里采用的是PHP 5.4.15 所以我们选择这 WinCache 1.3 for PHP 5.4 - x86这个进行下载。

下载完成后,发现wincache-1.3.5-5.5-nts-vc11-x86.exe,这个文件是个EXE文件,先不要急于打开,我们解压它

解压wincache-1.3.5-5.5-nts-vc11-x86.exe这个文件后,可以发现里面有一个 php_wincache.dll

在这里,我们需要把php_wincache.dll这个文件复制到 "D:\php\ext" 目录下

然后我们再打开php.ini文件。

在配置文件底部加上:
[Wincache]
extension = php_wincache.dll

Windows Cache Extension APIs for PHP

若 PHP 開發人員想要利用 Windows Cache Extension for PHP 快取應用程式資料時,Windows Cache Extension 有提供數組 API 可供開發人員與 Windows Cache Extension 互動,包含儲存快取資料、取得系統的快取狀態等。
1. 將 session 存放到 Windows Cache 中。

在 PHP 的預設模式中,session 資料是儲存在檔案中,Windows Cache Extension for PHP 開放一個設定,讓 PHP 可以將 session 儲存到記憶體中,以加快 Session 存取的速度,只要修改 php.ini 中的 session.save_handler 即可:
[Session]
; Headler used to store/retrieve data.
; session.seve_handler = files <- original configuration
session.save_handler = wincache <- apply session store into Windows Cache Extension

Windows Cache Extension 針對 Session 的轉存功能目前在 1.1 版以上才支援。

然后重新启动IIS服务器。这个时候WinCache加速器已经安装完毕!

以下资料说明来源于微软台湾官方网站!
地址:http://www.microsoft.com/taiwan/technet/iis/expand/Windows_Cache_Extension_for_PHP.aspx

設定值 說明 預設值
wincache.fcenabled 啟用檔案快取。 1
wincache.fcenabledfilter 要使用檔案快取的 IIS 站台識別碼,若有多組時以逗號分隔。 NULL
wincache.fcachesize 檔案快取的最大記憶體使用量(MB) 24
wincache.fcndetect 是否要啟用檔案變更偵測(在 Opcode Cache 時會判斷檔案是否有變更而清除 Opecode Cache)。 1
wincache.maxfilesize 可放進快取的最大單一檔案大小(KB) 256
wincache.ocenabled 是否啟用 Opcode Cache 1
wincache.ocenabledfilter 要使用 Opcode Cache 的 IIS 站台識別碼,若有多組時以逗號分隔。 NULL
wincache.ocachesize Opcode Cache 的最大記憶體使用量(MB) 96
wincache.filecount 定義預期要快取的最大檔案數量,可在 PHP 初始化時預先配置好,但若實際超出此數量時,PHP 會重新配置。 4096
wincache.chkinterval 定義 PHP 檢查快取的週期(秒)。 30
wincache.ttlmax 設定快取在不使用時,存留的最長時間(秒)。 1200
wincache.enablecli 設定是否啟用指令列(Command Line)模式 0
wincache.ignorelist 設定哪些檔案不列入快取,若有多檔時,要使用管線符號”|”來分隔。 NULL
wincache.namesalt 設定一個 salt 值以避免使用者快取時設定的 key 值有碰撞的現象。 NULL
wincache.ucenabled 是否啟用使用者快取。 1
wincache.ucachesize 設定使用者快取的最大記憶體使用量(MB)。 8

設定完後都要重新回收PHP應用程式的集區,或是重新啟動 IIS 才會生效。

类型 开启或关闭 分配多少内存 最大数
文件缓存 fcenabled= 1 /0 fcachesize= 128M 单个最大文件maxfilesize
操作码缓存 ocenabled =1/ 0 ocachesize= 128M 最多文件数filecount 4096
路径缓存
session缓存 scachesize
ucenabled ucachesize

wincache.fcenabled= 1 (On) 0 (Off) 启用或关闭文件缓存功能
wincache.fcachesize= 128M 定义为文件缓存分配的最大内存空间(以兆字节计算)。如果总的缓存文件的大小超过设定值,那么大部分陈旧的文件会被从文件缓存中剔除。
wincache.maxfilesize =256M 定义单独一个待缓存的文件的大小。如果文件大小超出 这个值,将不被缓存。这个设定仅限于文件缓存。
wincache.ocenabled =1 (On) 0 (Off)开启或关闭操作码缓存功能
wincache.ocachesize= 128M 定义为操作码缓存分配的最大内存空间
wincache.filecount 4096 1024 16384 定义多少文件会被缓存,这样就能在一开始就分配内存空间。如果文件个数超过预设值,扩展会根据需要重新分配更多的内存空间。
wincache.chkinterval= 30 2 300 PHP_INI_SYSTEM 定义每隔多久(按秒计算)本扩展会检查文件变化来更新缓存
wincache.ttlmax 1200 60 7200 定义缓存中的入口在不被使用情况下最大的存在时间。
wincache.ignorelist 定义一系列不应被本扩展缓存的文件。文件列表只能以文件名的形式指定文件,并以“|”间隔。For example: wincache.ignorelist = "index.php|misc.php|admin.php"
wincache.namesalt no value no value no value PHP_INI_SYSTEM 定义一个字符串,在给内存中的被缓存物命名时使用。这么做是为了防止当服务器中其他的应用试图使用共享内存时发生错误。

注意事项:wincache 和zendloader冲突,所以二者只能选其一,由于 wincache是内存级优化,速度自然比 zendloader快很多,这个根据具体配置选择。如何程序需要zend加密解密 然后又要用wincache的话 那只能关闭wincache的文件缓存功能了。

PHP For Windows的版本一共给了四个版本,VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6 x86 Thread Safe

一、如何选择PHP5.4.x的VC6版本和VC9版本

VC6是什么?
VC6就是legacy Visual Studio 6 compiler,就是使用这个编译器编译的。

VC9是什么?
VC9就是the Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。

那我们如何选择下载哪个版本的PHP呢?
如果你是在windows下使用Apache+PHP的,请选择VC6版本;
如果你是在windows下使用IIS+PHP的,请选择VC9版本。

二、如何选择PHP5.3的Thread Safe和Non Thread Safe版本

从PHP5.2.10版本开始,有Non Thread SafeThread Safe两种版本的可供选择,这两种版本有何不同,作为使用者来说又应该如何选择呢?

先从字面意思上理解:
Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。
Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。

再来看PHP的两种执行方式:ISAPIFastCGI

ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;

FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI无论搭配 IIS 6 或 IIS 7)来执行PHP,建议选择Non Thread Safe版本。

注:官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe 版本的PHP来使用。

TS和NTS

TS指Thread Safety,即线程安全,一般在IIS以ISAPI方式加载的时候选择这个版本。

NTS即None-Thread Safe,一般以fast cgi方式运行的时候选择这个版本,具有更好的性能。

从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是 PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。

为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。

因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。
如何查看当前运行的PHP的版本?一个很简单的办法就是phpinfo();

Thread Safety disabled 是NTS
Thread Safety enabled 是TS

Configure Command看到VC98字样的是VC6,Compiler标明 MSVC9 (Visual C++ 2008) 的是VC9

在WIN7下:IIS7+NTS+FastCGI+vc9 是最佳搭档或者apache+fastcgi+nts+vc6。
在WINXP下:Apache+TS+Apache module +vc6最合适的搭档。

我们在建站的时候,通常有些目录必须给写入权限,这个时候这些目录就很可能被人写入脚本文件,为了将安全性维护得更好,我们可以关闭这些有写入权限的目录的脚本执行权限。IIS6的时候,我们很容易找到关闭的地方,而IIS7时代,由于架构的变化,很多人找不到,这里我就给大家稍微说明一下怎么关闭特定网站目录的脚本执行权限。

第一步:我们在IIS的左侧选中该目录,切换到功能视图,如果是文件的话,先点击内容试图,找到该文件,在点击右边的切换到功能试图!
025 026 027
第二步:打开“处理程序映射”功能
第三步:打开右侧的“编辑功能权限”,将“脚本”这一项取消掉即可

取消脚本后访问CSS、js、图片、Html等文件出现空白或者403的错误解决办法

部分站长为了安全方面考虑,可能对存放资源性文件的目录,在这个目录的"处理程序映射"中取消掉了了默认就存在的"脚本(S)"权限,会导致出现403错误,导致CSS、JS和图片无法加载,一般错误提示如下图。

修复方法如下:

方法一:

在该目录上的"处理程序映射"中"编辑功能权限",为这个目录添回脚本权限。

方法二:

为这个目录的"处理程序映射"中,删除主机卫士的安全处理程序"QHWafIISModule_32bit"或者QHWafIISModule_64bit。如果有安全狗的安全处理程序"SafedogIISAuditor32"或者"SafedogIISAuditor64"之类的防护软件也有类似的问题,其模块也要删除。
如下图,"piaoyuncc"是我的只有读取权限文件夹。
028

删除后如果想复原,即想为这个目录恢复删除掉的主机卫士的安全模块。在这个目录的"处理程序映射"中点击"恢复为父项"即可。

小提示:Discuz论坛无需要脚本执行权限的目录列表:

template
config
static
data
error
uc_server\data\tmp
uc_server\data\avatar
uc_server\images
uc_server\js