apache 压缩页面配置
apache版本2.2
自带mod_deflate.so和mod_headers.so
如果没有这两个模块,那么你就需要手工编译并load这两个模块。
我是在虚拟主机下加入一下配置即可
- <Location "/">
- SetOutputFilter DEFLATE
- BrowserMatch ^Mozilla/4 gzip-only-text/html
- BrowserMatch ^Mozilla/4\.0[678] no-gzip
- BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
- SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
- Header append Vary User-Agent env=!dont-vary
- </Location>
住,以上配置,需要放到<Directory></Directory>之后,apache官方网站这么说的:)
Apache_httpd.conf文件配置详解
Apache的基本设置主要交由httpd.conf来设定管理,我们要修改Apache的相关设定,主要还是通过修改httpd.cong来实现。下面让我们来看看httpd.conf的内容,它主要分成3大部分:
Section 1:Global Environment
Section 2:'Main' server configuration
Section 3:Virtual Hosts
【第一部分】
·ServerType standalone
这表示Apache是以standalone启动,也可以是inetd。所谓standalone是指启动一次来接听所有的连线;而inetd是接到http的连线要求才启动,随着连线的结束而结束,这样负担是不是很但呢?所以一般都是以standalone启动。
·ServerRoot "/usr/local/httpd"
此为apache的目录
·#LocdFile /use/local/httpd/logs/httpd.lock
保留预设值,不更动
·PidFile /usr/local/httpd/logs/httpd.pid
此文件记录着apache的父处理程序id
·ScoreBoardFile /usr/local/httpd/logs/httpd.scoreboard
此文件存储处理程序的信息
·#ResourceConfig conf/srm.conf
·#AccessConfig conf/access.conf
由于我们统筹由httpd.conf来管理,所以这两个文件预设是注解起来的,可以保留预设值不更动
·Timeout 300
设盯超时的时间。如果用户端超过300秒还没连上server,或server超过300秒还没传送信息给用户端,即断线。
·KeepAlive On
允许用户端的连线有多个请求,设为Off表示不允许
·MaxKeepAliveRequests 100
每次连线最大的请求树木,数字愈大,效能愈好。0表示不限制
·MinSpareServer 5
·MaxSpareServers 10
MinSpareServer 5表示最少会有5个闲置的处理程序,如果实际的数目少于此数目,则会增加处理程序。MaxSpareServers 10表示最大的闲置处理程序数目,如果你的网站需求量很大,可以将此数目设大一些,大不要随便将此数目设得太大。
·StartServers 5
启动时Server的数目
MaxClients 150
限制同时间最大的连线数目,当然不能设得太小,一旦达到此数目,就无法再增加用户端
·MaxRequestPerChild 0
限制子处理程序结果前的要求数目,0表示不限制
·#Listen 3000
·#Listen 12.34.56.78:80
使用其它的连接端口或IP
·BindAddress *
可以接听*(所有IP地址)、指定的IP地址或是完整的域名
·#LoadModule foo_module libexec/mod_foo.so
使用DSO模块
·#ExtendedStatus On
可检阅apache的状态信息,预设是Off(注解起来)
【第二部分】
如果之前的ServerType是inetd,请直接跳到ServerAdmin。
·Port 80
Standalone服务器接听的连接端口,当然也可以是其他小于1023的端口号
·User nobody
·Group nobody
执行httpd的用户和群组
·ServerAdmin 管理员的电子邮件地址
这是管理员的电子邮件地址,如果apache有问题的话,会寄信通知管理员,当然你也可以建立一个专门负责web的帐号来收信
·ServerName 你的主机名称
此为主机名称,如果没有域名,也可以用IP
·DocumentRoot "usr/local/httpd/htdocs"
此目录为apache放置网页的地方,里面的index.html即为连到此主机的预设首页
·
Options FollowSymLinks
AllowOverride none
此目录设定用户放置网页的目录(public_html)的执行动作。详细的目录存取方法会在后面说明
·
Options Indexes FolloeSymLinks
AllowOverride None
Order allow,deny
Allow from all
此目录设定apache的网页目录(htdocs)的执行动作
·UserDir public_html
用户可在自己的目录下建立public_html目录来放置网页,输入http://主机地址/~用户名称即可连接到...劳撤胖玫牡胤?/a>
·DirectoryIndex index.html
这里设定预设主页的名称
·AccessFileName .htaccess
这个是控制存取的文件名称,一般采用预设的.htaccess名称,后面会说明htaccess的使用方法
·
Order allow,deny
Deny from all
这用来防止其他人看到.ht开头的文件内容,不仅是保护.htaccess的内容,还保护.htpasswd的内容。当然也可以直接写成。如果你有更改AccessFilename,例如将.htaccess改成.accessht,请记得也要在此做相关的更改,如此才能防止其他人看到哦
·#CacheNegotiatedDocs
注解起来是告诉Proxy不要将互动产生的文件存入cache,如果拿掉#,则会存在cache中
·UseCanonicalName On
使用标准的名称,预设是On。假设有一个web server的全名是www.sample.com,一般称为www;如果us...羑ttp://www/abc
·TypeConfig /usr/local/httpd/conf/mime.types
指定存放MIME文件类型的文件。你可以自行编辑mime.types文件。
·DefaultType text/plain
当server不认得此文件类型时的预设格式,此设定是当成一般文字
·
MIMEMagicFile /usr/local/httpd/conf/magic
mod_mime_magic模块可使server由文件内容决定其MIME类型。如果有载入mod_mime_magic模块,才会处理MIMEMagicFile这一段。如果是…,则表示如果没有载入该模块,才会处理这一段
·HostLookups Off
如果为On,则每次都会向name server解析该IP,记录此连线的名称(例如www.apache.org)自换岷牟簧偈奔洌...为Off,仅记录IP
·ErrorLog /usr/local/httpd/logs/error_log
指定发生错误的记录文件(error_log)位置。如果在没有指定发生错误的记录文件,则会沿用此文件
·LogLevel warn
记录分成很多等级,在此是warn。各等级如下: 等级 说明
debug debug信息
info 普通信息
notice 重要信息
warn 警告信息
error 发生错误
crit 紧急情况
alert 马上要处理的情况
amerg 系统快要死了
·LogFormat "%h %l %u %t\"%r\"%>s %b\"{Referer}i\"\"${UserAgent}i\""combined
LogFormat "%h %l %u %t"%r\"%>s %b"commom
LogFormat "%{Referer}i->%U"referer
LogFormat "%{User-agent}i"agent
自定四种记录格式:combined、common、referer、agent
·CustomLog /usr/local/httpd/logs/access_log common
存取的记录文件(access_log)使用自定的common格式
·#CustomLog /usr/local/httpd/logs/referer_log referer
#CustomLog /usr/local/httpd/logs/agent_log agent
#CustomLog /usr/local/httpd/logs/agent_log combined
这三个记录文件也是使用自定义格式(分别是referer、agent、combined),不过注解起来表示未使用这三个文件
·ServerSignature On
设为On时,在server所产生的网页(像是错误发生时)上,会有apache的版本、主机、连接端口的一行信息;如果设为Email,则会有mailto:给管理员的超链接
·Alias /icons/ "/usr/local/httpd/icons/"
使用较短的别名,其格式为:Alias 别名 原名。
·ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
和Alias一样,只是这是设定server script的目录
·IndexOptions FancyIndexing
显示好看的文件清单(配合下面各文件所对应的图形)
·AddIconByEncoding(CMP,/icons/compressed.gif)x-conpress x-gzip
·AddIcon /icons/blank.gif^^BLANKICON^^DefaultIcon/icons/unknow.gif
这些是在显示文件清单(之前所说的FancyIndex)时,各种文件类型的对应图形。例如.ps .si .eps这三种文件的表示图形都是a.gif
·#AddDescription "GZIP conpressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
这些是在显示文件清单时,在文件后面附上说明,其格式为:
AddDescription "说明" 文件名
例如:AddDescription "It is private txt" my.txt
·ReadmeName README
显示文件清单时,在最下面显示README的文件内容
设置CGI脚本/将httpd.conf做为唯一的配置文件/用户授权和访问控制等
关于Apache的配置及使用,在LinuxAid中已经有不少文章做了详细的阐述,本文讨论了在使用Apache时,有关配置文件的使用及对文件的访问控制等内容,算是对Apache的使用所做的一些补充吧!
如果您对Apache有一定的了解,特别是对几个配置文件有一定的了解,这将会有助于您对本文内容的理解;如果恰巧您不是很了解这几个配置文件的使用,那么就借着这个机会来一起熟悉一下吧。
一、关于CGI执行脚本的配置
这里有两种设置CGI脚本的方法。第一、CGI的脚本文件以.cgi为扩展名;第二、设置脚本可执行目录。但是这两种方法都需要将要执行的文件设置为711,才可以被执行。
第一种方法,我们需要在access.conf文件种将你要发行的目录设置为Option ExecCGI All,在srm.conf资源配置文件中,加上下列一句:
AddHandle cgi-script .cgi
这样在所有的目录种只要你的文件是.cgi为扩展名的,且文件访问权限为711的,无论给文件在你发行目录的任何一个地方都可以做为CGI被Apache服务器调用。这种方法一般没有第二种方法安全。
第二种方法,是将一个目录作为一个可执行目录,将所有的cgi文件都放在其中,这里就不一定非得是以.cgi为扩展名得文件可以执行,而是只要有711属性的文件就可以被执行,而且其它的非可执行文件都被禁止访问。我们的默认配置文件种就有一个很好的例子:
access.conf:
<Directory /home/httpd/cgi-bin/>
Allow Override None
Options ExecCGI
</Directory>
srm.conf
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
这样只要在/home/httpd/cgi-bin/目录中的可执行文件都可以被Web服务器调用,而其它的非可执行文件将被拒绝访问。
二、配置用户的发行目录
这里有两种设置方法:
第一种是系统的默认方法,即用户目录下的public_html目录为用户的发行目录,且默认的主页文件为index.html,且该目录不支持CGI。
第二种是在其它目录种专门为用户设置发布目录,如我想在/home/html目录做为用户的web目录,那管理员就应该在该目录下为每一个用户设置一个子目录,如:/home/html/user01、/home/html/user02等。那么,你的srm.conf文件中的UserDir后面就不能再是public_html了,应该改为:UserDir /home/html/*/,注意这里的“*”代表anyone,当你再浏览器中请求一个如http://www.domain/~user01时,Apache...ndex.html文件。
这种设置不需要到access.conf中设置该目录的访问属性,还有,当我们设置虚拟主机时也不用设置目录的访问属性,但是如果你想让某个目录具有CGI权限,都要到Access.conf文件中去配置目录的访问权限,如:你想让你的所有用户在他们的发布目录中具有CGI访问权,则需要在你的access.conf中这样设置:
<Directory /home/html/*/cgi-bin/>
Allow Override None
Options ExecCGI
</Dirctory>
注意这里设置用户目录中的cgi-bin子目录为cgi执行目录,这是一种安全的设置,而且也是一种UNIX的习惯。
三、如何将Apache服务器设置为inetd的子服务
当你安装了Apache后,默认设置为standalone方式运行,如果你想将它设置为inetd的子服务,首先在每次激活Linux时不激活httpd,然后编辑/etc/inetd.conf,在其中加入下列语句:http stream tcp nowait root /usr/sbin/httpd httpd
然后重新激活inetd服务器。这样你用ps -aux命令查看进程运行情况时,你不会发现httpd的进程的存在,但是一旦有客户请求一个页面时,inetd就激活一个httpd进程为该请求服务,之后就自动释放,这种运行方式有助于节省系统资源,但是如果你的web服务很重要,一般不建议设置为这种方式运行。
四、将httpd.conf做为唯一的配置文件
在Apache中给用户提供了三个配置文件: srm.conf、 access.conf 和 httpd.conf files。实际上这三个文件是平等的,所有的配置都可以放在一个单独的httpd.conf文件中,事实上在Apache 1.3.2中就已经这样做了,在httpd.conf中应包括以下两条指令来防止Apache对srm.conf和access.conf两个配置文件的访问:
AccessConfig /dev/null
ResourceConfig /dev/null
在apache1.3.2中只要注释掉以下这两行即可:
AccessConfig conf/access.conf
ResourceConfig conf/srm.conf
五、用户授权和访问控制
你也许在访问某些网站时会遇到过这样的情况,当你点击某个连接时,你的浏览器会弹出一个身份验证的对话框,要求输入账号及密码,如果没有,就无法继续浏览了。有人会以为这是用CGI做出来的,其实不然,这是WWW服务器的用户授权和访问控制机制在发挥作用。
你是否还记得在设置Apache服务环境的过程中,有<Directory>……..<./Directory>这个指令,可以对不同的目录提供不同的保护。但是这样的设定,需要重新启动服务器才会生效,灵活性较差,通过AccessFile指令指定访问控制文件的方式则比较灵活,在Apache服务器中设置用户的访问控制权限步骤如下:
1、首先对httpd.conf文件进行设置如下:
<Directory /home/httpd/html>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Includes FollowSymLinks Indexes
AllowOverride All //*注意AllowOverride 一定要设置为All,这样后面的.htaccess文件才会起作用
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
# Order deny,allow
# Deny from all
# </Limit>
</Directory>
#指定配置存取控制权限的文件名称
AccessFileName .htaccess
2、创建.htaccess文件內容
要控制某目录的访问权限必须建立一访问控制文件,文件名前面指定的“.htaccess”,其内容格式如下:
AuthUserFile 用户帐号密码文件名
AuthGroupFile 群组帐号密码文件名
AuthName 画面提示文字
AuthType 验证方式
<Limit GET>
密码验证方式
</Limit>
用户验证方式AuthType目前提供了Basic和Digest两种。
密码检验设定方法与httpd.conf中的相关设定相同。
具体例子如下:
AuthUserFile /etc/secure.user
AuthName 安全认证中心
AuthType Basic
<Limit GET>
require valid-user
</Limit>
3、建立用户密码文件
如果你是第一次创建用户密码,命令格式如下:
htpasswd -c 密码文件名 用户名称
在上面的例子中,我们将用户密码文件放到了/etc/secure.user文件中,所以这里应按照如下进行操作:
htpasswd -c /etc/secure.user sword
程序会提示你输入两次用户的口令,然后用户密码文件就已经创建sword这个用户也添加完毕了。
如果要向密码文件中添加新的用户,按照如下命令格式进行操作:
htpasswd 密码文件 用户名称
这样,重新启动httpd后,进行该WEB目录时就会有一个对话框弹出,要求输入用户名及用户口令了。
4、如何减少访问控制对Apache性能的影响
频繁的使用访问控制会对Apache的性能产生较大的影响,那么,如何才能减少这种影响呢?最简单也是最有效的方法之一就是减少.htaccess文件的数目,这样可以避免Apache对每一个请求都要按照.htaccess文件的内容进行授权检查。它不仅在当前的目录中查找.htaccess文件,它还会在当前目录的父目录中查找。
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
通常在根目录下没有htaccess文件,但Apache仍然会进行例行检查以确定该文件确实不存在。这是影响很影响服务器工作效率的事情。下面的方法可以消除这个讨厌的过程:将AllowOverride选设置为None,这样Apache就会检查.htaccess文件了。将/根目录的AllowOverride选项设为None,只将需要进行访问控制的目录下的AllowOverride选项设置为all,如下面的例子中将/根目录的AllowOverride 选项关闭了,只打开了/usr/local/etc/httpd/htdocs目录下的AllowOerride选项,这样,系统就只在/usr/local/etc/httpd/htdocs中检查.htaccess文件,达到的提高服务效率的目的。
<Directory />
AllowOverride None
</Directory>
<Directory /usr/local/etc/httpd/htdocs>
AllowOverride All
</Directory>
如果除了根目录以外,还有其它存放WWW文件的目录,你也可以采取同样的方法进行设置。比如:如果你使用UserDir来允许用户访问自己的目录,AllowOverride的设置如下:
<Directory /home/*/public_html>
AllowOverride FileInfo Indexes IncludesNOEXEC
</Directory>
5、防止用户访问指定的文件
系统中有一些文件是不适宜提供给WWW用户的,如:.htaccess、htpasswd、*.pl等,可以用<Files>达到这个目的:
<Files .htaccess>
order allow,deny
deny from all
</Files>
用户访问控制三个.htaccess文件、.htpasswd和.htgroup(用于用户授权),为了安全起见,应该防止用户浏览其中内容,可以在httpd.conf中加入以下内容阻止用户对其进行访问:
<Files ~”/.ht”>
Order deny, allow
Deny from all
</Files>
这样这三个文件就不会被用户访问了。
6、限制某些用户访问特定文件
<Directory>可以对目录进行约束,要限制某些用户对某个特定文件的访问可以使用<Location>,比如:不允许非domain.com域内的用户对/prices/internal.html进行访问,可以用如下的设置:
<Location /prices/internal.html>
order deny,allow
deny from all
allow from .domain.com
</Location>
如果你要授于相应权限的机器没有公开的域名,请在你的/etc/hosts文件中,将其IP地址映射到某个指定的名称,然后在Location中对其进行设置,否则该选项是不起作用的。
7、只接受来自特定链接的访问
例如,只让所有来自 http://www.sina.com.cn/* 的链接的用户进入此目录,由其它链接来的访客都不得进入; " * "表示此网站底下所有的链接。其中的 http://www.sina.com.cn/* 也可以是:http://202.106.184.200/* 或是指定文件 http://www.sina.com.cn/news.html
.htaccess文件的内容如下:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName ExampleAllowFromSpecificURL
AuthType Basic
<Limit GET>
order deny,allow
deny from all
referer allow from http://www.sina.com.cn/*
</Limit>
六、如何通过Apache访问挂接到mnt中的目录内容
在Linux下,要浏览光盘的内容,必须要先将光盘挂接到/mnt/cdrom上,在Linux下访问dos或其它分区也一样,都要将其先挂接到/mnt下。下面提供的方法,可以通过Apache显示上挂的目录内容:
1、 先将需要挂接的内容挂接到mnt下,如:
mount –t iso9660 /dev/cdrom /mnt/cdrom
2、修改/usr/local/etc/httpd/conf中的srm.conf文件(在Apache1.3.2中修改httpd.conf)
加入别名支持:
# Alias fakename realname
# alias for netware server //
Alias /netware/ /mnt/MYDOM_NW/vol1/home/htmldocs/
Alias /winNT/ /mnt/MYDOM_NT/
Alias /unix/ /mnt/MYDOM_UNIX
其实这一步还有个最简单的方法就是直接在WWW文件目录下建立链接目录,比如:
ln –s /mnt/MYDOM_NT/ winNT
也能达到同样的效果。
3、最后,用Directory 分别指定用户对上面这几个目录的访问权限:
<Direcory “/mnt/MYDOM_NT”>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
注意, Options中的Indexes一定要注明,否则被打开的目录中若没有Index.html文件,用户无法浏览整个目录的结构,服务器会返回错误指示。
这些工作都完成后,别忘了重新启动Apache。在客户端通过 http://www.yourdomain/CDROM/访问光盘内容,其余系统以此类推
#DocumentRoot "/usr/local/apache/htdocs"
#设置存放站点html文件的目录。
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
#设置/目录的指令。具体地说明:
Option:定义在目录内所能执行的操作。
None:表示只能浏览,
FollowSymLinks:允许页面连接到别处,
ExecCGI:允许执行CGI,
MultiViews:允许看动画或是听音乐之类的操作,
Indexes:允许服务器返回目录的格式化列表,
Includes:允许使用SSI。这些设置可以复选。
All:则可以做任何事,但不包括MultiViews。
AllowOverride:加None参数表示任何人都可以浏览该目录下的文件。
另外的参数有:FileInfo、AuthConfig、Limit。
提高Apache服务器性能的四个建议
Apache服务器是在Linux系统上部署HTTP服务器的一个最佳选择。不仅仅因为其稳定、安全,而且其还能够提供比较优越的性能。不过为了提高Apache服务器的性能,Linux系统管理员还是需要调整一些跟性能相关的参数,在Apache服务器中专门有一个模块用来进行相关的调整。作为系统管理员,在部署Apache服务器应用的时候,需要了解这些参数的含义,并根据网站应用的实际情况来进行相关的调整。要实现这个目的,笔者下面的几条建议或许能够对大家有所帮助。
建议一:设置最多连接数量。
为了保障每个连接的客户端的性能,往往需要在服务器中设置在同一时间内允许的客户端数量的上限。如在服务器上部署了电子邮件或者FTP等应用服务,为了能够保障下载的速度,就需要对连接客户端进行最高数量的限制。在Apache服务器中有一个“最多连接数量”的栏目,就是用来设置这个值。另外也可以利用配置文件中的MaxClinets参数来进行设置。通过这个参数,系统管理员可以限制客户端的连接数量与连接时间,以节省带宽来提供其他的服务或者提高已有连接的效率。当客户端的连接数量超过这个最高限制后,所有新建的连接都会被拒绝;当然服务器会把拒绝错误信息返回给客户。
在进行这个设置的时候,需要注意两个问题。一是在Linux操作系统上配置Xinetd服务的时候也可以进行类似的设置。如通过配置Xinetd服务配置文件中的instances参数可以设置单一服务在同一时间内提供客户端连接请求的最高上限。那么这个参数跟Apache服务器中的连接数量设置是什么关系呢?如instance参数设置为100;而MaxClints参数设置为120。那么最终可以连接到Apache服务器上的客户端数量为多少呢?注意,由于客户端的互联网连接请求是先通过Linux操作系统的,所以在Linux操作系统上的配置往往具有比较高的优先性。为此,当instance参数小于MaxClints参数时,以前者为准;当instance参数大于MaxClints参数时,以后者为准。故有时候客户端提示连接数量超过上限时,系统管理员往往需要同时检查这两个参数,才能够发现问题的真正原因。二是需要考虑在什么情况下需要启用这个限制。一般来说,如果HTTP服务器上的应用主要是在企业内部网络中应用,由于带宽比较理想,为此不需要设置这个限制。但是如果是面向互联网用户的,则往往需要设置这个限制。如企业部署了一个FTP服务器,供互联网的用户下载。由于其带宽是固定的,当下载的用户越多,其能够得到的下载速度也就越低。为此为了给已有连接的用户提供一个比较好的速率,往往就需要设置一个最多连接数。以免连接用户过多而影响下载的速率。
建议二:允许每次连接可有无限制请求。
如果是在Solaris Linux上部署Apache服务器的话,最好对这个参数进行设置。这个选项表示当客户端与服务器建立连接后,每个子进程在结束前所能接受的客户端请求上限。当达到这个上限值之后,这个子进程就会中断。这主要是为了避免某些子进程占用过多的服务器资源而导致服务器性能的下降。“设置最多的连接数量”选项主要用来限制客户端的连接数量;而每个客户端在同服务器进行连接的时候可以采用多个子进程与服务器进行连接。如FTP连接一个客户端默认情况下可以采用5个子进程进行连接。而这个客户端下载的总速率就是5个子进程的总合。故在部署Apache服务器的时候,就需要对这个选项进行限制。防止同一个客户端开启了比较多的进程,占用了大量的服务器硬件资源。
不过需要注意的是,这个参数跟另外一个参数keepalive很相似,但是两者有很大的区别。KeepAlive顾名思义,主要是用来保证客户端与服务器之间的一个持续连接。如果Apache服务器主要用来做视频会议或者提供在线观看电影的话,则这个参数就很有价值。此时如果把这个参数设置为OFF的话,则客户端浏览器可能必须在包含多重组件的网页中,建立许多连接请求。并且在连接的过程中,每个组件都必须进行单独的连接。而这些额外的请求与连接惠增加服务器的负担及网络带宽的损耗。
在日常的配置中,往往是这个配置选项同时使用。如往往同时启用“允许每次连接可有无限制请求”与KeepAlive选项,并设置可以连接的最大进程数。如此的话,即可以避免因为连接数过多而给服务器带来负担;同时又不会影响多次频繁的连接请求而给服务器带来的额外负担。
建议三:合理配置超时时间。
这个选项是指客户端提出连接请求并建立起连接后,最大的空闲时间。如果超过这个时间,客户端与服务器之间仍然没有进行任何的接收或者发送信息的动作,则就会中断这个连接。其实这个选项对于访问者来说是一把双刃剑。一方面限制无用的连接时间(客户端连接上服务器而没有进行任何的请求动作)可以减少带宽的浪费,可以保障其他访者着的带宽;但是另一方面这也比较容易引起客户端使用上的不方便。如访者者可能临时有事走开一会儿(如上了一趟厕所)客户端与服务器端的连接就会中断。客户端需要重新连接服务器,从而需要进行新一轮的连接请求、身份认证等等,这也会耗用服务器的资源与带宽。所以说,这个超时时间对于双方来说,都是有利又有弊。故系统管理员在配置这个选项的时候,需要进行评估,确定是否需要设置这个选项,并为此确定一个合理的超时时间。
一般来说,如果设置了最大客户端连接数量的话,则最好同时配置这个超时时间。如服务器设置了最大的客户端连接数量为100个,而现在已经有100个客户端连接在Apache服务器上了。但是其中有20个客户端已经1个小时没有动作了。很有可能是其去吃饭或者其他原因忘记关闭网页,而没有中断与服务器的连接。此时这20个客户端的连接其实一种两费。此时如果设置了这个超时时间的话,如超过10分钟没有任何数据传送动作的话就自动关闭这个客户端的连接。很明显这可以提高这个连接点数的利用效率。
另外在Apache服务器配置文件中,有一个KeepAliveTimeout参数,跟这个超时时间比较相似。这个参数主要用来设置客户端与服务器建立连接后,客户端提出两个请求之间的时间间隔。如果超过一定的时间间隔,客户端并没有再提出另外一个请求,则这个连接声明即中断。可见这个连个选项的功能很类似,不过其中有一个很重要的区别。因为在客户端与服务器连接的时候大致分为两个阶段。第一个阶段为客户端提出连接但是服务器还没有响应;第二个阶段为客户端与服务器之间已经建立连接。前面这个参数的话适用这两个阶段中的任何一个阶段。而后面这个参数则只适合第二个阶段,即连接后的控制。在其他方面基本上没有区别。故在大部分情况下,这两个选项可以通用。总之,是否需要采用这个选项需要根据服务器的应用情况来定。作为系统管理员,需要在服务器性能与用户便利性之间取得一种平衡。这种平衡往往很难实现。需要系统管理员进行多次的测试、调整、用户意见反馈,最终才能够得到一个合理的答案。
建议四:慎用允许持久性连接。
在服务器性能调整选项卡中,有“允许持久性连接”这项内容。如果选中这项内容的话,就表示客户端与服务器之间的连接永远有效,除非客户端手工中断与服务器之间的连接(如关闭网页或者重新启动客户端)。如果把配置文件中的KeepAliveTimeout参数设置为Ture,也可以起到类似的效果。对于这个选项来说,系统管理员需要慎用。因为根据经验,一般用户不会主动去关闭网页。也就是说,不会主动去中断客户端与服务器端之间的连接。他们很可能会在用完电脑需要关机的时候才会中断这个连接。此时在服务器端虽然有很多客户端的连接数量,但是有不少可能都是“死连接”,在很长的一段时间内不会有数据的传送动作。这对于服务器来说,是一种性能上的浪费。为此笔者的意见是,宁可把用户与服务器之间的空闲时间设置的长一点,如2个小时甚至更久,也尽量不要采用持久性连接。
修改2003服务器系统默认的administrator帐号
今天有个朋友问我修改2003服务器系统默认的administrator帐号的方法,现在写出来和大家分享下。
一种方法是按"开始"--"运行" 输入: gpedit.msc
然后在"计算机配置"--"windows设置"--"安全设置"--"本地策略"--"安全选项" 那里
找到最下面的"帐号:重命名系统管理员帐号"那里改用户名.在"交互式登陆:不显示上一次的用户名"设置为"启用".
或者可以打开“我的计算机”--“控制面板”---“用户帐户”--“本地用户和组”---“用户”--“administrator”--右键单击“administrator”--选择“重命名”----在出现的名称设置框中,设置新的管理员名称----输入新的用户名。
修改服务器密码对安全还是很有必要的,要是服务器用默认帐号密码简单,用穷举法很容易破解管理员权限。
【文章原创】更改2003远程桌面端口3389为其他端口号
Windows 2000系统中的远程终端服务是一项功能非常强大的服务,同时也成了入侵者长驻主机的通道,入侵者可以利用一些手段得到管理员账号和密码并入侵主机。下面,我们来看看如何通过修改默认端口,防范黑客入侵。
远程终端服务基于端口3389。入侵者一般先扫描主机开放端口,一旦发现其开放了3389端口,就会进行下一步的入侵,所以我们只需要修改该务默认端口就可以避开大多数入侵者的耳目。
步骤:打开“开始→运行”,输入“regedit”,打开注册表,进入以下路径:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server \WdsrdpwdTdstcp],看见PortNamber值了吗?其默认值是3389,修改成所希望的端口即可,例如1919。
再打开[HKEY_LOCAL_MACHINE \SYSTEM\CurrentContro1Set\Control\Tenninal Server\WinStationsRDPTcp],将PortNumber的值(默认是3389)修改成端口1919。
修改完毕,重新启动电脑,以后远程登录的时候使用端口1919就可以了。
然后重新更改防火墙IP规矩允许访问远程桌面的IP范围!
转载请标明出处(刘新修个人博客):http://liuxinxiu.com/
win2003指定设置IP安全策略限制IP进入远程桌面!
第一步:添加允许的IP段
开始,运行,gpedit.msc,计算机配置,Windows设置,安全设置,IP安全策略,常来网专用IP安全策略,双击打开的,再双击打开的,然后点添加,点下一步,输入描述,下一步,源地址选一个特定的IP子网,下面的IP地址输入,如您的服务器IP是61.164.140.43,则输入61.164.140.0,下面的子网掩码输入255.255.255.0,然后点下一步,目标地址点选我的IP地址,下一步,协议类型选任意,再点下一步,然后点完成,再然后一直点确定,直到又回到组策略的窗口,然后关闭就可以了!
第二步:拒绝所有IP段连接至3389端口
开始,运行,gpedit.msc,计算机配置,Windows设置,安全设置,IP安全策略,常来网专用IP安全策略,双击关闭的,再双击关闭的,然后点添加,点下一步,输入描述,下一步,源地址选任何IP地址,下一步,目标地址选我的IP地址,下一步,选择协议类型为TCP再点下一步,上方的从任意端口默认不变,下面的到此端口点上然后填入3389,再点下一步,点完成,再点确定,再点关闭,点应用,再点确定完毕!
PS:如果您的IP地址是经常变的ADSL可以在允许的网段里把您经常用的几个网段都加上,如IP是123.6.71.231,只需要把上面的允许的IP段里的IP61.164.140.0换成123.6.0.0,因为ADSL后面两位的数字经常变但前两位是不经常变的!子网掩码输入255.255.0.0,然后其他的操作都一样!
Windows定时自动执行PHP程序
相信不少读者在工作、学习的过程中经常抱怨:在WIN如何让PHP定时自动发信呢??如何让MySQL(和PHP搭配之最佳组合)实现自动备份而无后顾之忧呢??如 果完全依靠手工进行当然也可以实现,但
操作上似乎过于繁琐了一点!别着急,利用系统的任务计划程序(Windows 98称之为计划任务)可轻易解决这一问题。这一功能往往被很多用户忽略或者未曾想到:)。
所谓任务计划就是由计算机自动调用用户事先设置好的应用程序,从而达到简化用户操作的目的。利用Windows 2000的任务计划程序(相当与*NIX下的cron程序,这里不再对其详述),我们可以安排任
何脚本、程序或文档在最恰当的时候运行,从而满足自己的需 要。下面以Windows 2000为例。
具体来说,我们若需利用任务计划程序自动运行则应执行如下步骤:
单击"开始"按钮,然后依次选择"程序"→"附件"→"系统工具"→"任务计划"(或者是"设置"→"控制面板"→"任务计划"),启动Windows 2000的任务计划管理程序。
在"任务计划"窗口中双击"添加任务计划"图标,启动系统的"任务计划向导",然后单击"下一步"按钮,在给出的程序列表中选择需要自动运行的应用程序,然后单击"下一步"按钮。
设置适当的任务计划名称并选择自动执行这个任务的时间频率(如每天、每星期、每月、一次性、每次启动计算机时、每次登录时等),然后单击"下一步"按钮。此时系统将会要求用户对程序运行的具体时
间进行设置,如几号、几点钟、哪几个时间段才能运行等,我们只需根据自己的需要加以设置即可。
接下来系统将会要求用户设置适当的用户名及密码(如图5所示),以便系统今后能自动加以运行。
最后,我们只需单击"完成"按钮即可将相应任务添加到Windows 2000的任务计划程序中,此后它就会自动"记住"这个任务,一旦系统时间及相关条件与用户设置的计划相符,它就会自动调用用户所指定的
应用程序,十分方 便(每次启动Windows 2000的时候,任务计划程序都会自动启动,并在后台运行,确保用户的计划能够按时执行)。
现在我们来测试一下刚才所建的任务是否成功,鼠标右键单击"php"程序图标(如图6所示),在弹出的菜单里面选择"运行"。一般情况下程序图标只要这样 激活运行就可以正常启动。如果运行失败可查看用
户和密码是否设置正确,还有确定"Task Scheduler"服务是否已启动,本人当初就是为了节省系统资源把它关掉了导致运行失败,害我找了大半天。另外也可从"系统日志"里查看到底是什么原 因造成运行
失败的。
好了,讲了这么多任务计划的应用,现在我们切入正题,下面将介绍两个例子:
一、让PHP定时运行
编辑如下代码,并保存为test.php:
PHP:
--------------------------------------------------------------------------------
<?php
$fp = @fopen("test.txt", "a+");
fwrite($fp, date("Y-m-d H:i:s") . " 让PHP定时运行吧!n");
fclose($fp);
?>
添加一个任务计划,在(如图2所示)这一步输入命令:
D:php4php.exe -q D:php4test.php
时间设置为每隔1分钟运行一次,然后运行这个任务
现在我们来看看d:php4test.txt文件的内容时候是否成功。如果内容为如下所示,那么恭喜你成功了。
2003-03-03 11:08:01 让PHP定时运行吧!
2003-03-03 11:09:02 让PHP定时运行吧!
2003-03-03 11:10:01 让PHP定时运行吧!
2003-03-03 11:11:02 让PHP定时运行吧!
二、让MySQL(和PHP搭配之最佳组合)实现自动备份
编辑如下代码,并保存为backup.php,如果要压缩可以拷贝一个rar.exe:
PHP:
--------------------------------------------------------------------------------
if ($argc != 2 || in_array($argv[1], array('--help', '-?'))) {
?>
backup Ver 0.01, for Win95/Win98/WinNT/Win2000/WinXP on i32
Copyright (C) 2000 ptker All rights reserved.
This is free software,and you are welcome to modify and redistribute it
under the GPL license
PHP Shell script for the backup MySQL(和PHP搭配之最佳组合) database.
Usage:
can be database name you would like to backup.
With the --help, or -? options, you can get this help and exit.
} else {
$dbname = $argv[1];
$dump_tool = "c:MySQL(和PHP搭配之最佳组合)inMySQL(和PHP搭配之最佳组合)dump";
$rar_tool = "d:php4
ar";
@exec("$dump_tool --opt -u user -ppassword $dbname > ./$dbname.sql");
@exec("$rar_tool a -ag_yyyy_mm_dd_hh_mm $dbname.rar $dbname.sql");
@unlink("$dbname.sql");
echo "Backup complete!";
}
?>
添加一个任务计划,在(如图2所示)这一步输入命令:
D:php4php.exe -q D:php4backup.php databasename
时间设置为每天运行一次,然后运行这个任务。
最后会在d:php4目录下生成一个以数据库名和当前时间组成的rar文件。
恭喜你!大功告成了!
当然备份方式有很多种,读者可按照自己喜欢的去做!
以上是原著.结合本人实贱,补充说明如下:
如果出现错误:
在试着设置任务帐户信息时出现错误
指定的错误是:
0x80070005:拒绝访问
您没有运行所请求的操作的权限
在上面'"4.接下来系统将会要求用户设置适当的用户名及密码,以便系统今后能自动加以运行".这里最好用"system"用户,密码可为空.
这个system的权限非常之高,比你的administrator还要高,所以你在运行命令的时候千万不要乱来,这个可是什么提示都没有就会无条件执行的,这个权限下你kill核心进程都行.
上面2、添加一个任务计划,在这一步输入命令:
D:php4php.exe -q D:php4test.php
正确形式应为
"D:php4php.exe" -q "D:php4test.php"
即路径要用双引号括住。
PHP下FCKeditor上传文件时自动目录和重命名及中文文件名解决方案
修改两个文件:
自动化目录:
1、FCKeditor\editor\filemanager\browser\default\connectors\php\config.php
$Config['UserFilesPath']='xxx'改为下
$time=time();
$Config['UserFilesPath'] = '/custom/image/upload/'.date('Y',$time).'/'. date('m',$time) .'/'.date('d',$time).'/';
重命名:
2、FCKeditor\editor\filemanager\browser\default\connectors\php\commands.php
// 在下列代码之后:
// Get the extension.
$sExtension = substr( $sFileName, (
strrpos($sFileName, '.') + 1 ) ) ;
$sExtension = strtolower( $sExtension )
;
//添加如下语句,则会让所有上传的文件名以“时间+随机数”来重命名。
//Rename filename
$sFileName=date("Ymd_His_").rand(100,200).".".$sExtension;
创业前先问自己几个问题
2. 为了这个想法,在这些日子里,你们做了哪些事情?
3. 你们现在有几个人?
4. 要把想法做出来,变成一个真实的可以用的网站,你们认为需要多长时间?
5. 在把网站做出来的过程中,你认为你自己能起到哪些作用,贡献是什么?
6. 同样,其他人,在网站做出来的过程中,他们每个人能起到的作用是哪些,贡献是什么?