存档

‘LAMP应用服务器’ 分类的存档

linux(centos)下安装php gd库

2017年2月13日 评论已被关闭

linux(centos)下安装php gd库

http://www.phpddt.com/server/984.html

最近帮人搭建了一个b2b网站,(Lamp安装教程),网站测试图片不能上传,经检查图片其实已经上传成功,只是因为php没有开启php gd库(上传图片后php对图片进行处理,加logo等),好吧,我就来搭建gd库了:

运行:  yum -y install php-gd

失败,显示如下:

yum.jpg这是因为没有第三方yum源支持的原因,于是我安装了:

wget http://www.atomicorp.com/installers/atomic

再次运行了命令,安装成功,测试 phpinfo();  还是没有成功,半天也没找到gd库!

我找到gd库的安装路径:/etc/php.d/gd.ini  发现内容为空,难怪,打开文件,加上这句:

extension=gd.so

重启服务器  service  httpd restart  终于看到亲爱的gd库了。

题外话:不用把全部东西都写在php.ini这个文件里,只是需要把*.ini文件写在/etc/php.d/文件夹就可以了,系统会自动把这个目录下的*.ini读入php.ini ; gd库的文件存放在:/usr/lib/php/modules/gd.so

分类: LAMP应用服务器 标签:

三大WEB服务器对比分析(apache ,lighttpd,nginx)

2017年1月23日 评论已被关闭

三大WEB服务器对比分析(apache ,lighttpd,nginx)

http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html

一.软件介绍(apache  lighttpd  nginx)

1. lighttpd

Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。

Lighttpd使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。

Fastcgi的优点在于:

·         从稳定性上看, fastcgi是以独立的进程池运行来cgi,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑.

·         从安全性上看, fastcgi和宿主的server完全独立, fastcgi怎么down也不会把server搞垮,

·         从性能上看, fastcgi把动态逻辑的处理从server中分离出来, 大负荷的IO处理还是留给宿主server, 这样宿主server可以一心一意作IO,对于一个普通的动态网页来说, 逻辑处理可能只有一小部分, 大量的图片等静态IO处理完全不需要逻辑程序的参与(注1)

·         从扩展性上讲, fastcgi是一个中立的技术标准, 完全可以支持任何语言写的处理程序(php,java,python…)

2.apache

apache是世界排名第一的web服务器, 根据netcraft(www.netsraft.co.uk)所作的调查,世界上百分之五十以上的web服务器在使用apache.

1995年4月, 最早的apache(0.6.2版)由apache group公布发行. apache group 是一个完全通过internet进行运作的非盈利机构, 由它来决定apache web服务器的标准发行版中应该包含哪些内容. 准许任何人修改隐错, 提供新的特征和将它移植到新的平台上, 以及其它的工作. 当新的代码被提交给apache group时, 该团体审核它的具体内容, 进行测试, 如果认为满意, 该代码就会被集成到apache的主要发行版中.

apache 的特性:

1) 几乎可以运行在所有的计算机平台上.

2) 支持最新的http/1.1协议

3) 简单而且强有力的基于文件的配置(httpd.conf).

4) 支持通用网关接口(cgi)

5) 支持虚拟主机.

6) 支持http认证.

7) 集成perl.

8) 集成的代理服务器

9) 可以通过web浏览器监视服务器的状态, 可以自定义日志.

10) 支持服务器端包含命令(ssi).

11) 支持安全socket层(ssl).

12) 具有用户会话过程的跟踪能力.

13) 支持fastcgi

14) 支持java servlets

3.nginx

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发.

Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。

nginx做为HTTP服务器,有以下几项基本特性:

处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.

无缓存的反向代理加速,简单的负载均衡和容错.

FastCGI,简单的负载均衡和容错.

模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。

Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。

Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。

Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

.3WEB服务器的比较:

server Apache Nginx      Lighttpd
Proxy代理 非常好 非常好 一般
Rewriter 非常好 一般
Fcgi 不好 非常好
热部署 不支持 支持 不支持
系统压力比较 很大 很小 比较小
稳定性 非常好 不好
安全性 一般 一般
技术支持 非常好 很少 一般
静态文件处理 一般 非常好
Vhosts虚拟主机 支持 不支持 支持
反向代理 一般 非常好 一般
Session sticky 支持 不支持 不支持

注:在相对比较大的网站,节约下来的服务器成本无疑是客观的。而有些小型网站往往服务器不多,如果采用 Apache 这类传统 Web 服务器,似乎也还能撑过去。但有其很明显的弊端: Apache 在处理流量爆发的时候(比如爬虫或者是 Digg 效应) 很容易过载,这样的情况下采用 Nginx 最为合适。

建议方案:

Apache 后台服务器(主要处理php及一些功能请求 如:中文url)

Nginx  前端服务器(利用它占用系统资源少得优势来处理静态页面大量请求)

Lighttpd 图片服务器

总体来说,随着nginx功能得完善将使他成为今后web server得主流。

.性能测试

将分别测试3种软件在对动态页面和静态页面请求及并发时的响应时间

l        静态页面 搜狐首页

LIGHTTPD

n/-c(ab参数) cpu% Mem RequestsperSecond Time taken for tests
100000/100 64 60 462.75 21.6
100000/200 67 60 312.07 32.4
100000/500 83 60 137.24 72.8
100000/1000

出现错误丢包

94 60 126.6 78.9

NGINX

n/-c(ab参数) cpu% Mem RequestsperSecond Time taken for tests
100000/100 34.6 140 943.66 10.597
100000/200 35.6 110 924.32 10.818
100000/500 34.3 110 912.68 10.956
100000/1000 37 160 832.59 12.106

APACHE

n/-c(ab参数) cpu% Mem RequestsperSecond Time taken for tests
100000/100 40.6 170 690.72 14.47
100000/200 41.1 180 685.39 14.59
100000/500 42.3 190 633.64 15.78
100000/1000 43.1 200 547.53 18.26

l        动态页面 内部社区首页

LIGHTTPD

n/-c(ab参数) cpu% Mem RequestsperSecond Time taken for tests
1000/100 50 200 33.54 29.816
1000/200 52 210 30.43 32.858
1000/500 54 230 25.79 38.76
1000/1000 62 250 24.83 40.28

NGINX

n/-c(ab参数) cpu% Mem RequestsperSecond Time taken for tests
1000/100 53.8 250 83.12 12.305
1000/200 55.8 250 74.05 13.504
1000/500 56 260 58.99 16.951
1000/1000 58 260 43.41 23.347

APACHE

n/-c(ab参数) cpu% Mem RequestsperSecond Time taken for tests
100000/100 60 200 27.37 36.541
100000/200 61 220 23.82 41.981
100000/500 73 150 20.59 48.562
100000/1000 53 200 27.18 36.796

l        PHPINFO函数页

LIGHTTPD

n/-c(ab参数) cpu% Mem RequestsperSecond Time taken for tests
100000/100 45 20 168.06 59.504
100000/200 47 22 140.64 71.103
100000/500 49 24 52.80 189.386
100000/1000 在请求到4840时测试测试程序死掉

NGINX

n/-c(ab参数) cpu% Mem RequestsperSecond Time taken for tests
100000/100 70 120 143.46 69.706
100000/200 72 130 140.57 71.140
100000/500 73 150 135.87 73.601
100000/1000 77 160 132.18 75.657

APACHE 出现丢包

n/-c(ab参数) cpu% Mem RequestsperSecond Time taken for tests
100000/100 70 180 245.73 40.694
100000/200 72 190 245.79 40.684
100000/500 75 200 241.29 41.443
100000/1000 77 220 236.74 42.239

四.各大网站WEB服务器资源列表

网站名   操作系统   web服务器

1.门户网站类:

搜狐     LINUX           apache 1.3.37

新浪     LINUX           apache 2.0.54

迅雷     LINUX           nginx 0.6.31

163      LINUX           apache 2.2.6

2.搜索类

百度      unknown        BWS 1.0

Google   linux           gws

Sougou   FreeBSD         apache 2.2.4

Hao123   linux          apache 2.2.4

4. 电子邮箱类

126        linux         apache

Hotmail    win2003      microsoft-IIS 6.0

新浪邮箱    F5 Big-IP    apache 2.2.8

263        linux         apache 2.2.6

5. 博客类

新浪博客    linux          nginx 0.5.35

搜狐博客    linux          nginx

迅雷博客    linux          nginx 0.6.32

天涯博客    F5 Big-IP      Microsoft-IIS/5.0

6.视频类

优酷         linux          apache

土豆         linux          apache

Ku6         linux           apache

六间房       linux          nginx 0.6.14

Apache 2.4 编码GB2312中文乱码的问题

2016年12月10日 评论已被关闭

Apache 2.4 编码GB2312中文乱码的问题
http://www.cnblogs.com/wayne173/p/6017697.html
今天部署了一个项目,代码和数据库都是gb2312的,本地和服务器都是apache2.4的版本,本地编码没问题,response的content-type是空的。按html的mete解析的,查看源码也是正常的。可是部署到服务器上就出现乱码,虽然手动设置编码后页面显示正常,可是查看源码还是乱码的,查看了google浏览器的网络插件,发现 response的content-type 里charset给设置成utf-8了,结果一开始是修改的 apache的配置文件, AddDefaultCharset 为 Off 或者 GB2312 都不解决问题。百度了好多内容还是不行。多数是修改AddDefaultCharset。

最后还是FQ去google ,发现有个国外的哥们儿 采用了 headers_module 的扩展,设置 header 然后在 .htaccess 里面试了下,解决问题了。真高兴啊,搞了好久了。现在记录下来。

<Files ~ “\.html?$”>
Header set Content-Type “text/html; charset=utf-8”
</Files>
特别注意的是 这个需要打开 mod_headers.so 模块扩展,具体搜下 http.conf 里的 mod_headers.so ,打开前门的#就可以了。然后重启apache。

Apache 中文乱码解决方案

2016年12月10日 评论已被关闭

Apache 中文乱码解决方案
http://www.cnblogs.com/RChen/archive/2007/08/27/871427.html
原文:http://douzi.org/wp/archives/161
=============================================================

Apache 中文乱码解决方案

服务器端:
======
修改httpd.conf (在Redhat中放置的位置为/etc/httpd/conf/)
查找:
AddDefaultCharset ISO-8859-1
改成:
#AddDefaultCharset ISO-8859-1
AddDefaultCharset off

这种方式关掉了服务器的默认语言的发送,这样仅凭html文件头中设置的语言来决定网页语言。

很多文章都说通过修改为 AddDefaultCharset GB2312 把缺省语言改成GB2312来解决中文乱码,确实GB2312内码的网页可以正常显示了,但这并非万全之策。因为当你的网页内码不是GB2312,就算你在网页用下面的meta指定了正确的语言,如ISO8859-1,也不会解码为ISO8859-1,因为Apache已经先你一步将GB2312指定为网页的语言了,如下图:

而这个是加了 AddDefaultCharset off 后的:

修改后请重新启动Apache,在Redhat中命令为
/etc/init.d/httpd restart

当使用一些网页脚本引擎,如PHP,还可能需要修改相应的配置文件。
以PHP为例,需要修改php.ini (Red Hat中位置在/etc/)

找到:
default_charset = “iso-8859-1″ 或者类似的,如 default_charset = “gb2312″,将其注释掉:
;default_charset=”iso-8859-1″

客户端:
=====
在中文网页请中依情况在标签中添加:
GB2312:
<META http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
BIG5:
<META http-equiv=”Content-Type” content=”text/html; charset=big5″ />
UTF-8: (注意是UTF-8,而不是UTF8,我已经上过当了)
<META http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />

如果还是不正常,请清空浏览器的Cache试试。

另外附上goghs的”blog工具中中文的问题“一文的修正版,这篇文章很好的阐述了Charset和Encoding之间的关系。

blog工具中中文的问题 [Blog] – goghs @ 23:26:56

现在的blog工具完全中文的并没有,而一般程序的默认,都是使用iso8859-1字符集,或者说en语言编码。字符集(Charset)和编码(Encoding)是两个不同的概念。

如果你使用MT的默认安装,或者使用B2的默认安装,你会发现你所发布的中文文章根本无法正常显示。(此处的MT的默认安装,以使用MySQL为基准,使用文件的我没有测试,不便评述。)

原因很简单,所有页面的默认都是iso8859-1字符集,所以在数据插入数据库的时候,都会被编码(成为html实体,如xxx;类型,xxxx此处都是数字)。

处理的方式并不复杂,对MT而言,你需要将mt.cfg中的NoHTMLEntities以行前面的注释符号去掉,变成
NoHTMLEntities 1
一次来禁止使用HTML::Entities进行实体编码。
然后修改CGI.pm中的一处,设置为正确的gb2312字符集,我在前面的一篇文章中已经谈到。

并且需要修改所有的模板,将其中的charset从iso8859-1修改为gb2312。

而对B2,B2config.php里, 第91行有
# IMPORTANT! set this to 0 if you are using Chinese, Japanese, Korean,
#or other double-bytes languages
$use_htmltrans = 0;

把$use_htmltrans 设定成0就行了。

编码问题还牵涉到生成的RSS文件。作为XML的一个词汇集(此处翻译成中文似乎很让人搞不清楚,也许直接用Vocabulary更好一点),RSS完全需要遵循XML规范。
所有的数据中,有5个字符必须进行特殊处理。它们是单引号(’), 双引号(”), 小于号(< ),大于号(>),以及&,因为他们具有特殊的用处和意义。MT中Util模块(Util.pm)中的encode_html函数负责处理,而在PHP中使用htmlspecialchars()函数做的就是同样的工作(注意默认情况下单引号是不被处理的,你需要使用ENT_QUOTES作为第二个参数)。
对RSS的生成,你只需要使用上述的方法进行处理,就是处理掉5各特殊字符,而千万不要使用MT中的HTMLEntities和PHP中的 htmlentities()函数,因为这样它会将非iso8859-1的字符全部转换成实体,就是xxx;格式。对PHP,虽然4.1版本开始,虽然htmlspecialchars()函数可以通过第三个参数传递一个charset来进行处理,但是以我的简单测试,似乎不行。
另外需要对RSS指定一个正确的encoding, 就是将默认的
<?xml version=”1.0″ encoding=”UTF-8″?>
修改为
<?xml version=”1.0″ encoding=”GB2312″?>
(XML这里确实比较糊涂,encoding使用charset)

关于语言代码和国际代码,有很多复杂的标准,我也没太搞清楚,这里就不说了。总之记住对简体中文,charset = gb2312 或者说更准确的应是 charset = GB2312, encoding = “zh”。其他的不知道也罢。

在rss生成中,只要你在前面制定了正确的charset, 即使你没有正确设置encoding,其源文件是完全可读的,只是如果你使用浏览器进行浏览时,它会以UTF-8编码显示,因此中文是乱码,只有你正确制定了中文编码后,才可以正确显示(你也可以通过切换浏览器的编码来看)。

总之这是一个比较复杂的问题,我的能力有限,也只能解释道这一步了。
仓促中写就,可能有很多错误,请大家指正。

分类: LAMP应用服务器 标签:

Apache2.4.x版wampserver本地php服务器如何让外网访问及启用.htaccess

2016年12月10日 评论已被关闭

Apache2.4.x版wampserver本地php服务器如何让外网访问及启用.htaccess

http://www.jb51.net/article/61193.htm
这篇文章主要介绍了Apache2.4.x版wampserver本地php服务器如何让外网访问及启用.htaccess,需要的朋友可以参考下
Apache 从2.2升级到 Apache2.4.x 后配置文件 httpd.conf 的设置方法有了大变化,以前是将 deny from all 全部改成 Allow from all 实现外网访问,现在是将 Require all denied 以及 Require local 都该为 Require all granted 就可以了。
.htaccess 如果不起作用将 LoadModule rewrite_module modules/mod_rewrite.so 前面的注释(#)去掉就可以了。
下面看一下 Apache2.4 的变化:(官方英文说明)
所有的请求都被拒绝
2.2上的配置
Order deny,allow
Deny from all
2.4上的配置
Require all denied
所有请求都是允许的
2.2上的配置
Order allow,deny
Allow from all
2.4上的配置
Require all granted
在域中的所有主机都可以访问example,所有其他外网主机的访问被拒绝
2.2上的配置
Order Deny,Allow
Deny from all
Allow from example.org
2.4上的配置
Require host example.org
要想外网访问将 Require local 该为 Require all granted 。
经常会用到的:
Require all denied
Require all granted
Require host xxx.com
Require ip 192.168.1 192.168.2
Require local
举例说明
仅允许IP:192.168.0.1 访问
Require all granted
Require ip 192.168.0.1
仅禁止IP:192.168.0.1访问
Require all granted
Require not ip 192.168.0.1
允许所有访问
Require all granted
拒绝所有访问
Require all denied
默认是 Require local 仅允许本地访问。
还有好多变化,可以去官方说明详细看一下,不过只有英文版的。软件变化无常,建议大家升级前详细阅读官方更新文档,以免来个措手不及。

分类: LAMP应用服务器 标签:

Apache2.2 配置 默认编码 解决中文乱码

2016年12月10日 评论已被关闭

Apache2.2 配置 默认编码 解决中文乱码
http://blog.csdn.net/ylqmf/article/details/5306594

在Apache的配置文件httpd.conf中

1)在配置文件中找包含“AddLanguage”或“AddCharset”的行,在这些行最前面增加一行:

AddDefaultCharset GB2312

2)养成良好的习惯,在每个网页的<head></head>里加入这行:

<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>

一般的中文版网页编辑工具(例如FrontPage、Dreamweaver等)都会自动加上这行。

PS:刚刚安装好的Apache2.2中是没有“AddLanguage”或“AddCharset”的,直接在httpd.conf文件末尾添加就ok了

Apache alias目录配置

2016年12月10日 评论已被关闭

Apache alias目录配置

http://www.cnblogs.com/bourneli/archive/2012/11/13/2767522.html
一个apache网站,在不同目录下有不同网站,但在同一个域名下,这时可以配置alias,这与多域名不一样。

在http.conf里增加:
<IfModule alias_module>

Alias /your_alias /your/dqm/new/proj/root

# 保留其他配置

</IfModule>

# 设置相关目录属性

<Directory “/your/dqm/new/proj/web/root”>

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>
访问时的url: http://your_host.com/your_alias/ 这样就可以映射到对应目录了

Alias与virtual host不冲突,可以并存

分类: LAMP应用服务器 标签: ,

Apache internal dummy connection 解决

2016年11月9日 评论已被关闭

Apache internal dummy connection 解决
http://liuyu.blog.51cto.com/183345/252514

Apache 日志出现大量的::1 – – [27/Dec/2009:16:36:44 +0800] “OPTIONS * HTTP/1.0” 200 – “-” “Apache (internal dummy connection)”
日志。。其实对系统无影响。
这些日志是apache2.2版本后,对自身进程的监听所产生的日志~~

具体说明下:
When the Apache HTTP Server manages its child processes, it needs a way to wake up processes that are listening for new connections. To do this, it sends a simple HTTP request back to itself. This request will appear in the access_log file with the remote address set to the loop-back interface (typically 127.0.0.1 or ::1 if IPv6 is configured). If you log the User-Agent string (as in the combined log format), you will see the server signature followed by “(internal dummy connection)” on non-SSL servers. During certain periods you may see up to one such request for each httpd child process.

你可以过滤掉这些日志
在WIKI已经有解决方法:
http://wiki.apache.org/httpd/InternalDummyConnection

具体是设置:
SetEnvIf Remote_Addr “127\.0\.0\.1” loopback
在你的CustomLog 未尾加上 env=!loopback

例如:
SetEnvIf Remote_Addr “::1” loopback
CustomLog “|cronolog -r /usr/bin/gzip logs/ads_access_log.%Y%m%d” combined env=!loopback

SetEnvIf Remote_Addr “127\.0\.0\.1” loopback
这里引号里会出现2种情况。随便改~~

还有一种解决方案:就是在httpd.conf 新建一个虚拟主机。必须排在最前面。
因为apache这种机制,只针对第一个虚拟主机有效
你再不保存access日志就OK了

分类: LAMP应用服务器 标签:

使用apache benchmark(ab) 测试报错: apr_socket_recv: Connection timed out (110)

2016年6月12日 评论已被关闭

使用apache benchmark(ab) 测试报错: apr_socket_recv: Connection timed out (110)
http://blog.csdn.net/garn_hsia/article/details/12997477
网上流传方法一:
使用ab或者webbench做压力测试,如果并发数开到1000的时候,无法完成测试。到晚上查看资料发现是linux网络参数设置。
[longhao@longhao etc]# vi /etc/sysctl.conf
在kernel2.6之前的添加项:
net.ipv4.netfilter.ip_conntrack_max = 655360
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
kernel2.6之后的添加项:
net.nf_conntrack_max = 655360  # net.nf_conntrack_max = 655360 也可以
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
[longhao@longhao etc]# sysctl -p /etc/sysctl.conf
如果报错:error: “net.nf_conntrack_max” is an unknown key 则需要使用modprobe载入ip_conntrack模块,lsmod查看模块已载入。
[longhao@longhao etc]# modprobe  ip_conntrack

网上流传方法二:
按如下修改 Apache 源码目录下 support/ab.c 文件,重新编译安装。
elseif(status != APR_SUCCESS) {
err_recv++;
if(recverrok) {
bad++;
close_connection(c);
if(verbosity >= 1) {
charbuf[120];
fprintf(stderr,”%s: %s (%d)\n”, “apr_socket_recv”, apr_strerror(status, buf, sizeofbuf), status);
}
return;
} else{
bad++;                                 //添加
close_connection(c);                   //添加
//apr_err(“apr_socket_recv”, status);  //注释
return;    //添加
}
}

用apache的ab作压力测试的问题

2016年6月12日 评论已被关闭

用apache的ab作压力测试的问题
在用ab作压力测试时,加大一点请求数和并发连接数,就会出现这样的错误
apr_socket_recv: Connection timed out (110)
Total of 21134 requests completed

Benchmarking 192.168.1.30 (be patient)
apr_socket_recv: Connection reset by peer (104)

ab -n 50000 -c 500 http://192.168.1.30/index.php

Benchmarking 192.168.1.30 (be patient)
Completed 5000 requests
Completed 10000 requests
apr_socket_recv: Connection refused (111)
Total of 11344 requests completed

这样的不太算大吧,但还是有这样的错

也有设置打开的文件数
ulimit -n 和/proc/sys/fs/file-max等都加大10倍,试过加大100倍也还是这样.

分类: LAMP应用服务器 标签:

httpd-2.4.x 版本客户端访问控制

2016年6月1日 评论已被关闭

httpd-2.4.x 版本客户端访问控制

http://www.linuxidc.com/Linux/2012-08/68093.htm
在apache2.4版本之前做客户端访问控制,是用Allow Deny Order指令做访问控制的,而在2.4的版本上是用的用法跟之前的版本大不相同,如下
################################################
2.2上的配置
Order deny,allow
Deny from all

2.4上的配置
Require all denied

################################################
2.2上的配置
Order allow,deny
Allow from all

2.4上的配置
Require all granted

#################################################
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面给出了几个例子在2.4版本上的配置
1. 仅允许IP为192.168.1.1的主机访问

<RequireAll>
require all  granted
require ip 192.168.1.1
</RequireAll>
2.仅允许192.168.0.0/24网络的主机访问

<RequireAll>
require all  granted
require ip 192.168.1.0/24
</RequireAll>
3.禁止192.168.1.2的主机访问,其他的都允许访问,

<RequireAll>
require all  granted
require not ip 192.168.1.2
</RequireAll>
4.允许所有访问,

require all  granted

注,这个可以不用加容器<RequireAll> ……  </RequireAll>
直接,写在 <Directory “”> …..</Directory>里面就可以了

5.拒绝所有访问,

require all  denied
官方文档 http://httpd.apache.org/docs/2.4/howto/access.html

分类: LAMP应用服务器 标签:

APACHE中虚拟目录和虚拟主机设置

2016年6月1日 评论已被关闭

APACHE中虚拟目录和虚拟主机设置
http://blog.sina.com.cn/s/blog_7b818ee70102v6pc.html
在apache的配置文件http.conf中设置如下信息,可以将该目录变成一个web可以放的目录:

Options Indexes MultiViews  FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

这里面的几个参数说明如下:

Indexes 允许目录浏览(即列出此目录下所有文件名称);MultiViews 允许内容协商的多重视图。
比如:客户端输入“http://10.0.0.1/icone/a”这将会显示此目录下所有 a.* 文件,并不是出错信息。All 包含了初MultiViews 之外的所有特性,若无Options 语句,默认为All
AllowOverride 定义对于每个目录下的 .htalless 文件中的指含类型,一般禁止使用。
设置缺省的访问权限,当前设置表示允许所有客户机都能访问。比如仅允许192.168.16.0/24 这个段能访问,除了192.168.16.5/24 之外。
使用方法:Oredr allow ,deny
Allow from 192.168.16.0/24
Deny from 192.168.16.5/24
注意: 即设置目录的访问的一些规则,常和虚拟目录连在一起使用

建立虚拟目录

1.找到”conf/httpd.conf” 文件
2.在httpd.conf里面加了如下语句

Alias /anstyla “E:/anstyla/src/web”

Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all

在此模块下建立虚拟目录,Alias /虚拟目录名称/ “虚拟目录路径,以[/]代替[\]”

例如:Alias /admin “D:/web/admin/”

(*)/admin 为虚拟目录名称,一般不用在名称后加”/”,若加入,每次都要在虚拟目录后输入”/”才能访问网站;D:/web/admin/ 为虚拟目录的物理路径.

 

设置默认页面

方法1 设置全局的:

DirectoryIndex index.php index.php4 index.php3 index.cgi index.pl index.html index.htm index.shtml index.phtml default.php
方法2 针对某一目录可以这么设置:

Alias /anstyla “E:/anstyla/src/web”

Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
DirectoryIndex default.php

分类: LAMP应用服务器 标签:

Apache之AllowOverride参数详解

2016年6月1日 评论已被关闭

Apache之AllowOverride参数详解

http://www.chinaz.com/server/2010/0129/105397.shtml
通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override,即:

 

< Directory />
AllowOverride None
< /Directory>
在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中。

而对于 URL rewrite 来说,至少需要把目录设置为:

 

< Directory /myblogroot/>
AllowOverride FileInfo
< /Directory>
而对于 URL rewrite 来说,至少需要把目录设置为:

AllowOverride的参数:

AuthConfig

允许使用与认证授权相关的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。

FileInfo

允许使用控制文档类型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove* 指令等等)、控制文档元数据的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令。

Indexes

允许使用控制目录索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。

Limit

允许使用控制主机访问的指令(Allow, Deny, Order)。

Options[=Option,…]

允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令使用哪些选项。

AllowOverride以及Options相关指令

2016年6月1日 评论已被关闭

AllowOverride以及Options相关指令
http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/04/24/2026524.html
httpd.conf是Apache的主要配置文件,但是针对每个目录,apache还允许在它们各自的目录下放置一个叫做.htacess的文件,用于控制这个目录的属性。
通 常利用Apache的rewrite模块对URL进行重写的时候,rewrite规则会写在.htaccess文件里。但要使apache 能够正常的读 取.htaccess 文件的内容,就必须对.htaccess所在目录进行配置。从安全性考虑,根目录的AllowOverride属性一般都配置成 “None”,不允许任何Override ,即:
< Directory />
AllowOverride None
< /Directory>

在 AllowOverride 设置为 None 时,.htaccess 文件将被完全忽略。当此指令设置为All时,所有具有“.htaccess” 作用域的指令都允许出现在.htaccess 文件中。
而对于 URL rewrite 来说,至少需要把目录设置为

< Directory /blogRoot/>
AllowOverride FileInfo
< /Directory>
AllowOverride 参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略. htacess文件,如果设置为 All,那么所有在.htaccess文件里有的指令都将被重写。对于AllowOverride,还可以对它指定如下一些能被重写的指令类型.
1 AuthConfig    允许使用所有的权限指令,他们包括 AuthDBMGroupFile  AuthDBMUserFile  AuthGroupFile  AuthName  AuthTypeAuthUserFile 和 Require
2 FileInfo    允许使用文件控制类型的指令。它们包括 AddEncoding  AddLanguage  AddType  DEfaultType  ErrorDocument  LanguagePriority
3 Indexes    允 许使用目录控制类型的指令。它们包 括 AddDescription  AddIcon AddIconByEncoding AddIconByType DefaultIcon DirectoryIndex FancyIndexing HeaderName IndexIgnore IndexOptions ReadmeName
4 Limit    允许使用权限控制指令。它们包括Allow Deny和Order
5 Options    允许使用控制目录特征的指令.他们包括Options 和XBitHack

Options:

1 All    准许以下除MultiViews以外所有功能
2 MultiViews    允许多重内容被浏览,如果你的目录下有一个叫做foo.txt的文件,那么你可以通过/foo来访问到它,这对于一个多语言内容的站点比较有用
3 Indexes    若该目录下无index文件,则准许显示该目录下的文件以供选择,禁止目录浏览可以删这项或“-Indexes”。
例子:
<Directory />
Options -Indexes FollowSymLinks //或者写为“Options FollowSymLinks”
AllowOverride None
Order deny,allow
Deny from all
</Directory>
4 IncludesNOEXEC    准许SSI,但不可使用#exec和#include功能
5 Includes    准许SSI
6 FollowSymLinks    在该目录中,服务器将跟踪符号链接。注意,即使服务器跟踪符号链接,它也不会改变用来匹配不同区域的路径名,如果在<Local>标记内设置,该选项会被忽略
7 SymLinksIfOwnerMatch    在该目录中仅仅跟踪本站点内的链接
8 ExecCGI    在该目录下准许使用CGI

———————
提示:
本博客中一个AllowOverride的例子:去掉TP路径中的index.php
配置文件中的一段代码:
<Directory /MyBlogRoot/>
AllowOverride None
</Directory>

apache配置rewrite及.htaccess文件

2016年6月1日 评论已被关闭

apache配置rewrite及.htaccess文件
http://www.cnblogs.com/banruo/archive/2010/11/02/1867536.html
今天看到一个哥们的帖子发了个rewrite的帖子,以前也写过一个,配置挺简单的,但当时没注意这个问题,当时没有用到.htaccess文件,在机子上测试了一下,发现确实没法用,于是开始找问题的所在。

自己从头搭建了一下:

1.  首先确定您使用的 Apache 版本,及是否加载了 mod_Rewrite 模块。

简单方法 echo phpinfo();  看apache的mod里有没有rewrite

如果有跳过此步

Apache 1.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

注:如果前面有#,将其去掉。并且保证你的apache文件里有mod_Rewrite.so文件(1.X版的要有mod_Rewrite.c)。
2.  配置Apache配置文件httpd.conf实现rewrite

找到

 

<IfModule mod_Rewrite.c>

</IfModule>
没有的自己添加,然后之间写入你的rewrite规则,例如:

<IfModule mod_Rewrite.c>
RewriteEngine On
RewriteRule ^test.htm$  test.php
</IfModule>
3.此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 <VirtualHost> 中去,如果加在虚拟主机配置外部将可能无法使用,重启apache,rewrite配置就完了。

4.让apache支持.htaccess

把<IfModule mod_Rewrite.c>里的代码删除掉

找到

复制代码
<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>
复制代码
把里边的AllowOverride None  改为  Allow Override All   这样.htaccess文件才能启用。

 

5.创建一个.htaccess文件,win下可以用notepad++之类的编辑器建(记事本不行),要是嫌麻烦此文档附件中有,放在项目目录下,然后在里边写上自己的规则。

RewriteEngine on
Rewriterule ^test.htm$ test.php
6.重启apache就行了

 

7.一般的apache以上配置就行了,但我的还不行,所以研究了一下apache的配置文件发现了这样一个参数:
AccessFileName access.ht
意思是;AccessFileName定义每个目录下的访问控制文件的文件名,缺省为.htaccess (大多数人直接就是.htaccess,所以好多网上教程都没写这步,而我的是access.ht),可以通过更改这个文件,来改变不同目录的访问控制限制。

 

将之改为

AccessFileName .htaccess
8.重启apache就行了。

 

 

题外:.htaccess位置问题:htaccess文件(或者”分布式配置文件”)提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。(每一个文件夹下都可以有个.htaccess文件)

 

.htaccess下载

分类: LAMP应用服务器 标签:

基于 Apache 在本地配置多个虚拟主机

2016年6月1日 评论已被关闭

基于 Apache 在本地配置多个虚拟主机

http://www.cnblogs.com/catprayer/archive/2010/10/30/1865308.html

如何使用 Apache 在本地配置出多个虚拟主机呢?而且使用不同的“域名”来访问本地不同的站点呢?

一般情况下,咱们都使用 localhost 来访问本机上的服务器,在我们的 C:/WINDOWS/system32/drivers/etc/hosts 文件中默认有一个:

127.0.0.1       localhost

当我们在浏览器地址栏键入:

的时候,会显示出服务器根目录中的许多文件夹(若你的根目录不是只有一个站点的话),就像:

Index of /
    * BAK/
    * B_Discuz/
    * B_Supesite/
    * B_UCenter/
    * B_Uchome/
    * B_Uchome_Bak/
    * B_XSpace/
    * DiscuZ_X1/
    * Javascript/
    * NewUch/
    * PHP/
    * UchUtf8/
    * Zend Framework_1.10.8/
    * Zendphpweb20/
    * mycms/
    * phpMyAdmin/
    * userAdminManager/

现在我想通过一个自定义的“域名”来访问我的根目录中的站点,譬如:

1,根目录中有一个 phpMyAdmin/ 的文件夹(倒数第二个),它是一个网页版的数据库管理系统(肯定不会陌生的吧!),我想通过访问一个简单的:

来进入这个系统(而不用输入 localhost,再点击 phpMyAdmin/ 才进入);

2,根目录中有一个 Zendphpweb20/ 的文件夹(倒数第三个),它只是一个本地应用站点,我想通过访问:

来进入这个本地站点;

现在要干些什么呢?跟我来吧!看下面:

1> 修改系统的 hosts 文件:

打开之前说过的系统的 hosts 文件,来给我们的电脑添加两个“假的”DNS 项,加入代码:

127.0.0.2       dbmanager
127.0.0.3       phpweb20

这样,我们的浏览器就会将 dbmanager 主机名解析为 127.0.0.2,将 phpweb20 主机名解析为 127.0.0.3。

2> 修改 Apache 配置文件:

在我的本机内 Apache 的主配置文件在:

D:/usr/local/apache2/conf/httpd.conf

说是修改 Apache 的配置文件,其实只是添加了一些内容,因为不想修改 Apache 的主配置文件,所以我们最好在各个站点写好自己的虚拟主机配置子文件,然后使用 Include 指令将其包含到 Apache 的主配置文件里。

其实在 Apache 的主配置文件的最下方有虚拟主机的配置示例,只不过都被注释掉了:

# 基于名称的虚拟主机示例:
#<VirtualHost 127.0.0.2:80>
 #   ServerAdmin admin@system
 #   DocumentRoot D:\usr\webroot\webhosting1
 #   ServerName 127.0.0.2
 #   ErrorLog logs/dummy-host.example.com-error_log
 #  CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
#<VirtualHost 127.0.0.3:80>
 #   ServerAdmin admin@system
 #   DocumentRoot D:\usr\webroot\webhosting2
 #   ServerName 127.0.0.3
 #   ErrorLog logs/dummy-host.example.com-error_log
 #  CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
#<VirtualHost 127.0.0.4:80>
 #   ServerAdmin admin@system
 #   DocumentRoot D:\usr\webroot\webhosting3
 #   ServerName 127.0.0.4
 #   ErrorLog logs/dummy-host.example.com-error_log
 #  CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

在配置文件的最下方添加代码:

# 包含 dbmanager 虚拟主机配置文件
Include D:/usr/webroot/phpMyAdmin/httpd.conf
# 包含 phpweb20 虚拟主机配置文件
Include D:/usr/webroot/Zendphpweb20/httpd.conf

(我的 localhost 的根目录为 D:/usr/webroot/)

3> 创建各个虚拟主机的子配置文件:

创建 dbmanager 的配置文件:D:/usr/webroot/phpMyAdmin/httpd.conf

#dbmanager 虚拟主机设置
<VirtualHost 127.0.0.2:80>
    ServerName dbmanager
    DocumentRoot D:/usr/webroot/phpMyAdmin
    <Directory D:/usr/webroot/phpMyAdmin>
        AllowOverride All
        Options All
    </Directory>
</VirtualHost>

创建 phpweb20 的配置文件:D:/usr/webroot/Zendphpweb20/httpd.conf

#phpweb20 虚拟主机设置
<VirtualHost 127.0.0.3:80>
    ServerName phpweb20
    DocumentRoot D:/usr/webroot/Zendphpweb20/htdocs
    <Directory D:/usr/webroot/Zendphpweb20/htdocs>
        AllowOverride All
        Options All
    </Directory>
    
    #修改 PHP 配置(可选)
    php_value include_path .;D:/usr/webroot/Zendphpweb20/include;D:/usr/local/php5/PEAR
    php_value magic_quotes_gpc off
    php_value register_globals off
</VirtualHost>

各个虚拟主机的配置就看应用站点的不同需要了,DocumentRoot 为其根目录(php_value 是修改此站点的 PHP 运行参数,根据自己应用的需要来写,这样就不必修改 PHP 主配置文件)。

4> 重启 Apache 服务:

这个就不多说了。

完毕!好了,在浏览器地址栏输入分别输入:

我们的目的达到了!!: – >

分类: LAMP应用服务器 标签:

Apache 配置多端口 多虚拟主机 局域网访问示例

2016年6月1日 评论已被关闭

Apache 配置多端口 多虚拟主机 局域网访问示例

http://www.jb51.net/article/50045.htm
这篇文章主要介绍了Apache如何配置多端口 多虚拟主机 局域网访问,需要的朋友可以参考下
一、在\wamp\bin\apache\Apache2.4.4\conf\extra\httpd-vhosts.conf 修改如下
复制代码 代码如下:

NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot “E:/website/pxsj”
ServerName host7.com
ServerAlias 192.168.1.116
<Directory “E:/website/pxsj”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

NameVirtualHost *:8080

<VirtualHost *:8080>
DocumentRoot “E:/website/whsj”
ServerName host10.com:8080
ServerAlias 192.168.1.116:8080
<Directory “E:/website/whsj”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

二、\wamp\bin\apache\Apache2.4.4\conf\httpd.conf 修改如下:

在该文件中查找“Listen”一词修改
复制代码 代码如下:

Listen 80
Listen 8080

# Virtual hosts
# Include conf/extra/httpd-vhosts.conf去掉前面的#,这样就开启了httpd-vhosts虚拟主机文件。这时候重启环境

三、C:\Windows\System32\drivers\etc\hosts 修改配置
复制代码 代码如下:

<pre code_snippet_id=”331423″ snippet_file_name=”blog_20140507_1_9705788″></pre>
<pre></pre>
<pre></pre>
<pre></pre>

分类: LAMP应用服务器 标签:

Apache提示You don’t have permission to access / on this server问题解决

2016年6月1日 评论已被关闭

Apache提示You don’t have permission to access / on this server问题解决

http://sjpsega.iteye.com/blog/1507439

今天为了方便测试,将一本地目录设置为一apache的虚拟主机,在httpd-vhosts.conf文件中进行简单设置,然后在hosts文件中将访问地址指向本地,启动apache,进行访问,却出现了You don’t have permission to access / on this server的提示,baidu了一下,原来是因为我的虚拟主机目录为非apache安装目录下的htdocs,所以违反了apache对默认对网站根访问权限。
apache的默认虚拟主机根目录地址为../Apache Software Foundation/Apache2.2/htdocs 目录下,需要对httpd.conf文件进行修改才能指向其他目录。

在httpd.conf文件下找到这段:
Conf代码  收藏代码
<span style=”font-size: x-small;”>#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the “default” to be a very restrictive set of
# features.
#
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory></span>
将之修改为
Conf代码  收藏代码
<span style=”font-size: x-small;”># 允许指向外部的目录进行访问
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory></span>
然后重启apache,就ok了。

分类: LAMP应用服务器 标签:

apache 服务 不同端口的访问不同目录设置

2016年6月1日 评论已被关闭
分类: LAMP应用服务器 标签:

apache服务器基于ip以及基于端口的虚拟主机访问

2016年6月1日 评论已被关闭

apache服务器基于ip以及基于端口的虚拟主机访问
http://www.cnblogs.com/loveCloud/archive/2012/01/29/2331058.html
一.基于ip地址的访问

1 在apache服务器配置文件中的最后添加新配置文件

vi /etc/httpd/conf/http.conf

Include vhost/vhost.conf  #vhost/vhost.conf 为新文件的相对路径,vhost.conf为新建配置文件

2 编写配置文件vhost.conf

复制代码
1 <VirtualHost 192.168.1.10:80>
2   ServerAdmin webmaster@dummy-host.example.com
3   DocumentRoot /data/web/test01  #访问页面相对路径
4   ServerName dummy-host.example.com
5   ErrorLog logs/dummy-host.example.com-error_log #日志文件路径
6   CustomLog logs/dummy-host.example.com-access_log common
7 </VirtualHost>
8 <VirtualHost 192.168.1.20:80>
9   ServerAdmin webmaster@dummy-host.example.com
10   DocumentRoot /data/web/test02  #访问页面路径
11   ServerName dummy-host.example.com
12   ErrorLog logs/dummy-host.example.com-error_log
13   CustomLog logs/dummy-host.example.com-access_log common
14 </VirtualHost>
复制代码
3 配置虚拟网卡

ifconfig eth0:0 192.168.1.10 up

ifconfig eth0:0 192.168.1.20 up

4 重启 apache服务

service httpd restart

访问:192.168.1.10

192.168.1.20

 

 

二 基于端口的访问

1 在apache服务器配置文件中的最后添加新配置文件

vi /etc/httpd/conf/http.conf

Include vhost/vhost.conf  #vhost/vhost.conf 为新文件的相对路径,vhost.conf为新建配置文件

2 编写要添加的配置文件

复制代码
Listen 81 #开启端口 默认端口是80
Listen 82 #开启端口
<VirtualHost 192.168.1.99:81> # 192.168.1.99是本机ip
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /data/web/test01 #页面路径
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost 192.168.1.99:82>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /data/web/test02
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
复制代码
3 重启apache服务器

service httpd restart

4 访问 192.168.1.99:81

192.168.1.99:82

分类: LAMP应用服务器 标签: