判断apache的工作模式是prefork模式还是worker模式

Posted by zuzhihui in apache on 2012/10/10 with No Comments

apache常用的工作模式有prefork和worker模式。运行命令httpd -l 或者apache2 -l ,输出的结果中如果含有prefork.c,那就是prefork模式,如果结果中含有worker.c,那就是worker模式。

配置Debian VPS的apache限制同一个IP的连接数

Posted by zuzhihui in apache on 2009/05/06 with No Comments

缺省情况下,Apache并不限制同一个IP过来的连接数量。在实际情况中,经常会碰到同一个IP过来的连接数特别多,影响服务器的性能。为了避免这种情况,可以给apache配置一个这样的模块就可以了,本文介绍在Debian VPS下怎样实现这个过程。

这个模块不是apache官方的,而是第三方的,他们的主页是http://dominia.org/djao/limitipconn2.html。首先到这里下载源码。

在Debian VPS下安装编译工具:

apt-get install make gcc apache2-prefork-dev

解开源码包,修改Makefile,把里面的apxs修改成apxs2,然后运行:

make
make install

在http.conf中加入

ExtendedStatus On
 < IfModule mod_limitipconn.c >
      < Location / > # 所有虚拟主机的/目录
      MaxConnPerIP 3         # 每IP只允许3个并发连接
      < /Location >
  < /IfModule >

重启apache

用迅雷下载你的网站上的一个东西,会发现迅雷默认打开的5个线程,可以成功和你的web站点建立连接的数量,不会超过你所设置的并发连接数值

Apache的一个小缺陷

Posted by zuzhihui in Linux技术 on 2008/10/06 with No Comments

如果一个网站有多个域名,比如:rashost.com, home.rashost.com, rashost.com。无论用户输入哪个域名访问该网站,我们希望网站返回一个统一的域名,比如rashost.com。

目前的Apache实现这一个功能有两种方法,详见 http://httpd.apache.org/docs/1.3/misc/FAQ.html#canonical-hostnames

这两种方法都有点麻烦,如果能有一个directive能直接实现这个功能就好了。网络上已经有人提出了这样的需求,但现在apache还没有实现这个功能,

Windows下Apache的站点绑定

Posted by zuzhihui in 常见问题 on 2008/07/13 with No Comments

在Windows下配置Apache其实和在Linux下配置差不多,都是需要先把要配置的站点域名指向VPS的IP地址,然后打开apache的主配置文件httpd.conf,在该文件的最后加入下面段落,然后重启apache即可:

NameVirtualHost *

	ServerName rashost.com/blog
	DocumentRoot "c:/wamp/www/vpsblog/"

上面配置的站点是 vpsblog.rashost.com/ ,该站点对应的目录是”c:/wamp/www/vpsblog/”,站点名称和目录名称你当然要根据自己的需要自己定。

如果要配置多个站点,那就把上面的…部分重复添加配置几次即可。

Linux VPS下的Apache的站点绑定

Posted by zuzhihui in Linux技术 on 2008/07/07 with 12 Comments

RasHost VPS允许客户在一个VPS上绑定无限个站点。本文讲述在Ubuntu和Debian这两种Linux操作系统下,如果给Apache绑定站点。

Debian/Ubuntu下Apache的配置文件知识

Debian/Ubuntu的apache的配置文件的管理方式是一样的,Ubuntu本身就是基于Debian的,所以很多配置和Debian几乎一模一样。Debian/Ubuntu的apache配置文件都在/etc/apache2目录下。/etc/apache2下面有几个配置文件,还有几个子目录。/etc/apache2下面的配置文件逐个解释如下:

/etc/apache2/apache2.conf
主配置文件,不精通apache不要修改此文件
/etc/apache2/httpd.conf
这个文件的存在是为了保持兼容性,即使你精通apache,我也建议不要修改此文件
/etc/apache2/ports.conf
这个文件用来配置apache的监听的端口,不精通者请不要修改

/etc/apache2下面的几个目录解释如下:

/etc/apache2/conf.d
apache会读取这个目录下的任何文件,这些文件的内容都是配置文件的一部分,不建议修改此目录下的任何内容
/etc/apache2/mods-available
这个目录下是一些零碎的配置文件,不建议修改,apache不会读取此目录下的文件。该目录下的文件一般都是某个apache模块的配置文件
/etc/apache2/mods-enabled
apache会读取这个目录下的任何文件,这些文件的内容都是配置文件的一部分,不建议修改此目录下的任何内容。该目录下的文件一般都是某个apache模块的配置文件
/etc/apache2/sites-available
这个目录下是一些零碎的配置文件,不建议修改,apache不会读取此目录下的文件,该目录下的文件一般都是某个站点的配置文件
/etc/apache2/sites-enabled
apache会读取这个目录下的任何文件,这些文件的内容都是配置文件的一部分,不建议修改此目录下的任何内容,该目录下的文件一般都是某个站点的配置文件

从上面的列表可以看出,mods-available和mods-enabled这两个目录的区别是apache是否去读取这个目录。有个疑问:如果apache从来不读取mods-available目录,那要它何用?答案是mods-available下存放所有apache模块的配置文件,但这些模块不一定是激活的,激活的模块的配置文件链接到mods-enabled下面,如果没有链接到mods-enabled下面,那肯定是一些没有激活的模块。a2enmod命令可以列出mods-available下面的所有模块,管理员可以选择激活哪个模块,激活之后的模块就会在mods-enabled下面添加一个链接。

同理,sites-available和sites-enabled这两个目录也是这样的原理,a2ensite命令可以列出sites-available下存在的站点文件,可以创建站点文件的链接到sites-enabled目录下。

a2enmod == Apache2 ENable MODule
a2ensite == Apache2 ENable SITE

缺省情况下,sites-available下只有一个文件default,sites-available/default链接到sites-enabled目录下的链接名为000-default。apache的习惯是一个站点一个配置文件,但我们为了方便管理,把所有的站点的配置都保存到default这个文件里面。

怎样创建新站点

  1. 确定新站点的域名和别名,域名是必须的,别名可以没有,别名也是域名,只不过不是主域名而已。比如我的站点域名是rashost.com,别名有两个,分别是rashost.com和home.rashost.com。
  2. 更改域名和别名的DNS,解析到VPS的IP地址。比如到rashost.com的域名注册商的控制面板里面修改上面三个DNS记录,都指向我的VPS的IP地址。
  3. 等待域名更改生效,这个过程通常是0到48小时。运行ping命令可以查看域名指向是否更改过来,比如:ping rashost.com,如果显示的IP是VPS的IP,则表明生效了
  4. 用root用户SSH登录到VPS,运行命令创建新用户: adduser rashost.com ,更改密码: passwd rashost.com。修改/etc/apache2/sites-available/default文件,在文件的末尾加入下面这段配置后运行/etc/init.d/apache2 force-reload重新启动apache
  5. 用新用户rashost.com登录到VPS,运行命令 mkdir public_html 创建public_html目录
  6. 通过FTP,把网页文件传送到public_html目录下
  7. 然后就可以通过浏览器访问新站点了
	ServerName rashost.com
	ServerAlias rashost.com home.rashost.com
	DocumentRoot /home/rashost.com/public_html/

在96M内存的VPS上跑高性能的LAMP应用WordPress

Posted by zuzhihui in apache on 2008/06/01 with No Comments

通常情况下,在一个96M内存的VPS上安装apache2,mysql,php5之后再安装一个wordpress,那么apache在相应三五的连接请求之后,VPS的内存就几乎快要用完了,这时候如果连接请求不断增加,VPS将会内存耗尽,内存耗尽之后,无论有没有swap,CPU的占有率就会很高。我们RasHost VPS已经有很多客户都碰到过这种情况。实践证明,96M内存的VPS使用Apache跑PHP的应用不能支持大的并发。主要原因就是apache mod_php的内存占用比较高。

为了解决这个问题,我们采用了Nginx FastCGI PHP MySQL的方案。Nginx是Web Server的后起之秀,性能比Apache高出不少。实践证明Nginx FastCGI PHP MySQL比Apache PHP要节省资源!

在Linux VPS下配置Nginx FastCGI PHP MySQL需要如下几个步骤:

  1. 配置nginx fastcgi php mysql的环境
  2. 安装wordpress
  3. 配置nginx URL rewrite用以支持wordpress的永久链接。

对于第一步,请参考我们以前的博客:

  1. 在Ubuntu 8.04 LTS(hardy)下安装配置nginx和fastcgi方式的php
  2. 在CentOS5下安装配置nginx fastcgi php mysql

对于第二步,安装wordpress跟在apache下一样,不再罗嗦了。安装完wordpress后就可以正常使用了,如果想要启用wordpress的不带问号方式的永久链接,则需要进行第三步。

第三步,我配置的永久链接是这个形式:/index.php/%year%/%monthnum%/

配置Apache虚拟主机

Posted by zuzhihui in apache on 2008/05/24 with No Comments

在安装了 CentOS 5.1的 瑞豪开源Xen VPS 下简单配置Apache的虚拟主机的过程如下:

安装apache,php:
yum install httpd php

假设VPS的IP是58.130.17.168,有两个域名指向该IP,分别是domain1.com, domain2.com,

修改/etc/httpd/conf/httpd.conf,在文件的最后加入:

ServerName 58.130.17.168
NameVirtualHost 58.130.17.168

<VirtualHost 58.130.17.168>
ServerName domain1.com
DocumentRoot /var/www/domain1.com
<Directory “/var/www/domain1.com”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

<VirtualHost 58.130.17.168>
ServerName domain2.com
DocumentRoot /var/www/domain2.com
<Directory “/var/www/domain2.com”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

然后在/var/www/domain1.com和/var/www/domain2.com下创建不同的index.html文件:
echo “domain1″>/var/www/domain1.com/index.html
echo “domain2″>/var/www/domain2.com/index.html

在浏览器里输入http://domain1.com和http://domain2.com即可看到效果了

三分钟整合Apache和Tomcat

Posted by zuzhihui in apache on 2008/05/24 with No Comments

在Ubuntu或者Debian下整合Apache和Tomcat非常方便

安装

安装Apache,JDK,Tomcat的过程很简单,一个命令搞定:

在Deiban下:

apt-get install apache2-mpm-worker sun-java6-jdk tomcat5.5-webapps libapache2-mod-jk

在Ubuntu下:

apt-get install apache2-mpm-worker sun-java6-jdk tomcat5.5-webapps libapache2-mod-jk

然后访问本机的80端口,确保apache启动了; 访问本机的8180端口,确保tomcat启动了(Debian/Ubuntu的tomcat默认8180端口)

以上命令把apache的jk插件也安装了,不用编译jk了。jk的配置文件安装在了/etc/libapache2-mod-jk/workers.properties 修改这个文件,修改后的有效内容是:

workers.tomcat_home=/usr/share/tomcat5.5
workers.java_home=/usr/lib/jvm/java-1.5.0-sun-1.5.0.14
ps=/
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13

然后配置apache的配置文件/etc/apache2/apache2.conf,在文件的最后加入:

JkWorkersFile /etc/libapache2-mod-jk/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions ForwardKeySize ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /* ajp13_worker

重新启动apache:

/etc/init.d/apache2 restart

然后用浏览器访问apache,就会出现tomcat的页面了,大功告成!

近期评论

Back to Top

2007-2017 © 北京瑞豪开源科技有限公司 京ICP备13004995号-2