windows2003下apache的“指定的网络名不再可用。winnt_accept: Asynchronous AcceptEx failed.”的解决办法

这几天windows2003的apache习惯性的很慢。你会发现的你的机器没怎么动,就是apache一下子占了很多内存,不一会儿就不行了。必须重起机器。找了很多方向,甚至我认为机器的dns出问题了,但怎么也找不到点子上。仔细检查了下apache的日志在error.log里也报错:[warn] (OS 64)指定的网络名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.
查了很多资料,原来是跟windows的服务冲突了,汗。
先上查到的解决办法:
在httpd.conf文件中添加 Win32DisableAcceptEx 标记,如下:

ThreadsPerChild 150
MaxRequestsPerChild 10000
Win32DisableAcceptEx

这样可以允许并发连接更大一些。同时性能上也不会有明显的降低。
如果还是不行,进行以下操作:
1、网上邻居->本地连接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉启用LMhosts查询前的
勾.
2、控制面版->windows防火墙->高级标签->本地连接设置->服务的标签里勾选安全Web服务器(HTTPS)。
3、然后退出Apache,再打开启动就可以了 ,一开始我没有退出,直接在那重启,就是不可以,一定要先停止,在开启即可
原因分析:
AcceptEx()是一个微软的WinSock2 API ,通过使用BSD风格的accept() API提供了性能改善。一些流行的Windows产品,比如防病毒软件或虚拟专用网络软件,会干扰AcceptEx()的正确操作。我们需要禁止使用AcceptEx() 。


如何配置debian下apache2的网站

为测试主机分配域名: www.youtianxia.net
创建配置文件
在 /etc/apache2/sites-available/ 目录下创建站点配置文件 youtianxia, 内容如下:

ServerAdmin master@youtianxia.net
ServerName www.youtianxia.net
DocumentRoot /var/www/youtianxia

[...]


在linux下安装Siege进行压力模拟测试

Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
下载:
wget ftp://sid.joedog.org/pub/siege/siege-latest.tar.gz
安装:
%./configure ; make
#make install
siege包含了一组压力测试工具:
SIEGE (1) Siege是一个HTTP压力测试和评测工具.
使用样例:
任务列表:www.murray.cn.url文件
http://www.murray.cn/tech/
http://www..murray.cn/tech/acdsee.html
….
siege -c 20 -r 2 -f www.murray.cn.url
参数说明:
-c 20 并发20个用户
-r 2 重复循环2次
-f www.murray.cn.url 任务列表:URL列表
输出样例:
** Siege 2.59
** Preparing 20 concurrent users for battle. 这次“战斗”准备了20个并发用户
The server is now under siege.. done. 服务在“围攻”测试中:
Transactions: 40 hits 完成40次处理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 总共用时
Data transferred: 877340 bytes 共数据传输:877340字节
Response time: 1.65 secs 相应用时1.65秒:显示网络连接的速度
Transaction rate: 5.22 [...]


如何使你的Apache服务器支持SSI?

Apache默认是不支持SSI的,需要我们更改httpd.conf来进行配置。我这里以windows平台的Apache 2.0.x为例,打开conf目录下的httpd.conf文件,搜索“AddType text/html .shtml”,搜索结果:
# AddType text/html .shtml
# AddOutputFilter INCLUDES .shtml
把这两行前面的#去掉。
然后搜索“Options Indexes FollowSymLinks”
在搜索到的那一行后面添加“ Includes”
即将该行改变为 Options Indexes FollowSymLinks Includes
保存httpd.conf,重起apache即可。


配置apache2错误日志的基本常识

在apache2的配置文件httpd.conf中,定制日志文件的格式涉及到两个指令,即LogFormat指令和CustomLog指令,
LogFormat指令定义格式并为格式指定一个名字,以后我们就可以直接引用这个名字。
CustomLog指令设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。
LogFormat指令的功能是定义日志格式并为它指定一个名字。
例如:LogFormat “%h %l %u %t \”%r\” %>s %b” common
该指令创建了一种名为“common”的日志格式,日志的格式在双引号包围的内容中指定。格式字符串中的每一个变量代表着一项特定的信息,这些信息按照格式串规定的次序写入到日志文件。
错误日志的文件名字是error_log,但如果是Windows平台,则错误日志的文件名字是error.log。错误日志的位置可以通过ErrorLog指令设置:ErrorLog logs/error.log
大多数情况下,我们在日志文件中见到的内容分属两类:文档错误和CGI错误。但是,错误日志中偶尔也会出现配置错误


如何选择Apache,Nginx,Lighttpd的web服务

如果你不确定应该用什么服务器,那就应该用Apache
但是稍微可以配置多个服务的情况下,做一个Nginx在最前端,然后把需要的功能转发给Apache是最好的选择
如果你打算跑fcgi,Lighttpd是不二的选择
如果你打算做图片服务器,独立的Lighttpd也是很好的选择
Apache
Apache2对fcgi支持并不好
非常好用的proxy和proxy_ajp(很多人用它作为tomcat的前端)
不支持epoll
Nginx
速度快,占用资源少
杀手级的proxy和rewrite
非常不错的静态文件能力
最适合作为整个网站的前端服务(将php、svn等不同请求发送往后端apache)
Lighttpd
杀手级的静态文件能力
杀手级的fcgi能力
不稳定的proxy模块


怎么做网站(选择建站开发环境asp,php,jsp)

选好了网站域名,也知道我们要把网站放在哪里了,那我们用什么来做网站的呢。在我看来,网站的建设其实很有学问,做好选择也是需要好好考虑的。
我个人把网站分为静态站和动态站两大类。它是按照网站的更新方式来分的,静态站就是要手动做好网页通过FTP等手段传到对应位置;而动态站又分两种情况:一种是所有页面全部是有程序依靠不同的参数形成的,它的主要表现形式是为x.php?a=b,它的优点是更新很快,另一种是由程序生成为静态的网页,它的表现形式跟静态站没有什么区别,但在页面的名称上很规律。
静态站的制作很简单,只要我们熟悉Html,有网页的制作软件就可以搞定,甚至很多人用记事本就可以,强人呐。它对服务器的环境没有特殊要求,只要它能对外提供WEB服务就好。对于此类网站我们唯一的标准就是越大越好。
动态站就不同了,它需要服务器环境的支持,比如asp的iis,php的apache,jsp的tomcat。至于程序,我们可以自己写,也可以用现在网上免费的建站程序。这样,我们就要把程序放上去,按照规格配置好,就可以使用了。
asp是Active Server Page的缩写,意为“动态服务器页面”。是微软针对网站的建设的解决方案,现在已经升级到.net。.net比单纯的asp,无论在性能还是灵活性方面都有了很好的改善。
asp的运行环境:能够运行ASP的web服务器软件,主要是微软系列的PWS或IIS
一般asp需与access数据库或SQL Server数据库结合使用,编出功能强大的程序。而其他数据库比如mysql、Oracle等,asp的支持不是很好,甚至性能很低。
php在现在网站开发中用的最多。因为它开发环境和运行环境都是免费,并且在性能上并不输于ASP和JSP。由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下,因此php有不可比拟的跨平台特性。PHP在数据库方面的丰富支持,也是它迅速走红的原因之一。它支持几乎所有的常见数据库系统包括DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、Microsoft SQL Server、MySQL、Solid、Sybase、ODBC、Oracle、PostgreSQL。
php的运行环境:Linux+Apache+Mysql+PHP,一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。
JSP(JavaServer Pages)是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用也是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。相对于asp,jsp更适合部署大的系统。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,jsp表现了强大的可伸缩性。
JSP的运行环境:常用的是apache+tomcat+java,很多空间服务商都不太支持,因为这样的环境很有维护难度。因此如果想用jsp开放网站,最好有自己的服务器,或买vps。
网站建设说起来简单,但做起来却没有那么容易。以上是本人的心路总结,希望对新人的成长能有所帮助。当然我也不是什么高手,如有不妥之处,还望大家指正。如有转载请表明出处,谢谢。


如何在apache下实现404重定向

当用户拼错的URL、不存在的URL重定向到别的网页,例如网站的首页、404页面等。如何在apache下实现这些页面的重定向呢,我们可以在httpd.conf或.htaccess文件中使用ErrorDocument来捕获404 (找不到文件)错误:
ErrorDocument 404 /index.html
DirectoryIndex index.html /path/to/notfound.html
这样每次当某人请求无效的URL 时,都返回URL / index.html 提供的网站首页。
这里需要注意两点:
1、直接指向首页是否是合适的?或者让它指向到一个404页面会更好些?如果在404页面用javasctrip做一个跳转到首页,也是SEO允许的做法。
2、即使返回有效的文件,仍然会将404 状态码返回给客户端和搜索引擎。这表示搜索引擎机器人来确认网站上的链接时,仍然会得到正确的结果(404状态码)。


如何实现apache的rewrite伪静态

首先确定您使用的 Apache版本,及是否加载了mod_rewrite模块。
Apache1.x的用户请检查conf/httpd.conf中是否存在如下两段代码:
LoadModule rewrite_module libexec/mod_rewrite.so

AddModule mod_rewrite.c

Apache 2.x 的用户请检查 conf/httpd.conf 中是否存在如下一段代码:

LoadModule rewrite_module modules/mod_rewrite.so

如果存在,那么在配置文件(通常就是 conf/httpd.conf)中加入如下代码。此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 <VirtualHost> 中去,如果加在虚拟主机配置外部将可能无法使用。改好后然后将 Apache 重启。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3
RewriteRule ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3
RewriteRule ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2
</IfModule>

如果没有安装 mod_rewrite,您可以重新编译 Apache,并在原有configure的内容中加入–enable-rewrite=shared,然后再在 Apache 配置文件中加入上述代码即可。


linux下解决apache虚拟主机的Could not resolve host name错误

在LINUX下APACHE的虚拟主机的配置是个技术活儿,很多小的细节需要顾虑
当你的域名没有绑定好的时候,就会出现以下这个错误
Could not resolve host name
在您Apache服务器的配置中创建一个虚拟主 机并不会自动在您的DNS中对主机名做相应更新。您必须自己在DNS中添加域名来指向您的IP地址。否则别人是无法看到您的web 站点的。您可以在您的hosts文件中添加这一条目来进行测试,但这种方法仅适用于那些有这些条目的机器来使用。
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *
<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example1.com
# Other directives here
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example2.org
# Other directives here
</VirtualHost>
因为星号匹配所有的地址,所以主服务器不接收任何请求。因为 www.example1.com首先出现在配置文件中,所以它拥有最高 优先级,可以认为是默认或首要服务器。这意 味着如果一个接受的请求不能与某个ServerName指令相匹配, 它将会由第一个VirtualHost所伺服。
您可以用确定的IP地址来取代*。 在这种情况下,VirtualHost的参数必须 与NameVirtualHost的参数相符:
NameVirtualHost 172.20.30.40
<VirtualHost 172.20.30.40>
# etc …
不论如何,当您的IP地址无法确定的时候,使用* 是很方便的——比如说,您的ISP给您配置的是动态IP地址,而您有 使用了某种动态域名解析系统时。因为*匹配任何IP 地址,所以在这样的情况下,不论IP地址如何变化,您都不需要另 外进行配置。
上述配置就是您在绝大多数情况下使用基于域名的虚拟主机时将要用到 的。事实上,仅在一种情况下这样的配置不会让您满意:当您想为不同的IP 地址或是端口提供不同的内容时。