存档

文章标签 ‘apache’

apache 设置 虚拟目录、别名目录

2017年4月4日 没有评论

比如我的网站根目录 是 D:/webroot 域名为 xxx.com。

我想加一个phpmyadmin在线管理功能 加到根目录下的 /phpmyadmin 里面 可以进行如下配置,打开 apache的配置文件 httpd.conf 在最后面加入:

1
2
3
4
5
6
7
alias /phpmyadmin/ "D:/webroot/phpMyAdmin/"
<Directory "D:/webroot/phpMyAdmin/">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

改完之后重启apache服务后,访问 xxx.com/phpmyadmin 即可。

linux让apache不区分大小写办法

2016年6月10日 没有评论

在linux下,路径是区分大小写的,今天我们来把它改成不区分大小写的方法吧,有需要的朋友可以参考一下。

inux是区分大小写,下面是让aparch不区分路径的大小写

http.conf

加载mod_speling模块: LoadModule speling_module /usr/lib/apache2/modules/mod_speling.so

开启模块: CheckSpelling on

重启apache
这样改一下就正常了

分类: Linux, 解决方案 标签: ,

xampp 1.8.1 开启Gzip方法(apache 2.4不同于2.2)

2015年11月10日 没有评论

网上搜索xampp+开启Gzip,方法一大堆,不过都是基于apache 2.2的,当前最新的xampp 1.8.1使用的apache 2.4,httpd.conf完全不同,自然开启Gzip的方法也不同。

要使用Gzip网站压缩,在xampp 1.8.1 httpd.conf 除了要开启mod_deflate外,还要开启mod_filter。
其次Gizp的设置(httpd.conf的末尾增加代码),我用的是这段:

1
2
3
4
5
<IfModule mod_deflate.c>
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE css js
</IfModule>

Apache错误:(20014)Internal error: Error retrieving pid file logs/httpd.pid

2015年5月2日 没有评论

今天在虚拟机上打开apache出现如下错误:

[root@www.vps12.com ~]# service httpd start

(20014)Internal error: Error retrieving pid file logs/httpd.pid

Remove it before continuing if it is corrupted.

其实这个错误就是因为Apache目录下的 logs 子目录下的 httpd.pid 文件内容是空的。这个文件是记录进程ID的文件。因为这个文件是空的,就无法启动,实在是超雷人。你随便写点数字进去,再启动Apache,就可以成功了。

[root@www.vps12.com ~]# echo 1234 > /usr/local/apache2/logs/httpd.pid

[root@www.vps12.com ~]# service httpd start

XAMPP php版本历史

2015年1月18日 没有评论

XAMPP版本历史如图

http://code.stephenmorley.org/articles/xampp-version-history-apache-mysql-php/

XAMPP Apache MySQL PHP 5 PHP 4
1.8.1 2.4.3 5.5.27 5.4.7
1.8.0 2.4.2 5.5.25a 5.4.4
1.7.7 2.2.21 5.5.16 5.3.8
1.7.5 2.2.21 5.5.15 5.3.8
1.7.4 2.2.17 5.5.8 5.3.5
1.7.3 2.2.14 5.1.41 5.3.1
1.7.2 2.2.12 5.1.37 5.3.0
1.7.1 2.2.11 5.1.33 5.2.9
1.7.0 2.2.11 5.1.30 5.2.8
1.6.8 2.2.9 5.0.67 5.2.6 4.4.9
1.6.7 2.2.9 5.0.51b 5.2.6 4.4.8
1.6.6a 2.2.8 5.0.51a 5.2.5 4.4.8
1.6.6 2.2.8 5.0.51 5.2.5 4.4.8 (RC2)
1.6.5 2.2.6 5.0.51 5.2.5 4.4.7
1.6.4 2.2.6 5.0.45 5.2.4 4.4.7
1.6.3a 2.2.4 5.0.45 5.2.3 4.4.7
1.6.3 2.2.4 5.0.54 5.2.3 4.4.7
1.6.2 2.2.4 5.0.41 5.2.2 4.4.7
1.6.1 2.2.4 5.0.37 5.2.1 4.4.6
1.6.0a 2.2.4 5.0.33 5.2.1 4.4.5
1.6.0 2.2.3 5.0.33 5.2.1 4.4.5

分类: Linux 标签: , , ,

apache支持下载docx,pptx,rar等文件

2014年10月25日 没有评论

apache web服务器的站点,下载pptx,docx,xlsx文件,却被浏览器当作zip文件保存。

这不是浏览器的问题,而是apache不认docx,pptx,,xlsx等Microsoft Office 2007+的文件格式,而这些文件本身是zip压缩文件,所以被apache当作zip压缩文件发给浏览器了。

做个形像一点的比喻:浏览器请求一个url路径,这个路径指向一个.pptx文件,apache从web服务器的目录(磁盘上)查到这个文件,但它不知道这个文件是什么类型(注意:文件类型并不是由文件名后缀决定的,而是文件本身内容所决定),于是它通过分析这个文件内容,发现这个文件像是个zip压缩档,文件大小为12345字节,于是它给浏览器说:“嘿,你请求的是个zip压缩文件,它的大小为12345个字节,文件名是 abcd.pptx 。下面是这个文件的内容,请接收”

浏览器收到消息后,得知apache要发给自己一个zip压缩档,于是一边弹出对话框、询问用户是直接打开、还是保存到硬盘,一边把apache接下来发回的数据保存到缓冲区(或者保存到硬盘的临时目录里),等用户做好选择后,采取相应的打开或是保存的操作。

形象的说明,并不是十分准确的,但大体过程如此。

那现在的问题在于apache因为不认识这个pptx文件,那我们要教会apache,让它知道。我们可以通过mime.types文件让告诉它:

修改mime.types文件,在其中加上

application/vnd.ms-word.document.macroEnabled.12 docm
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
application/vnd.ms-powerpoint.template.macroEnabled.12 potm
application/vnd.openxmlformats-officedocument.presentationml.template potx
application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
application/vnd.ms-excel.addin.macroEnabled.12 xlam
application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
application/vnd.ms-excel.template.macroEnabled.12 xltm
application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
这样的一部分代码,这里包含了ms office相关的很多文件类型。

mime.types文件位置

那mime.types文件在什么位置呢?

对于windows版本的apache,它在apache安装目录下的conf子目录里,典型位置为 X:\Program Files\Apache Group\Apache2\conf\mime.types

而linux版本下,通常位于/etc/mime.types, 如redhat/centos/fedora都是如此,debian/ubuntu系列应该也在这里,个人没有亲自查证。

不过centos并不推荐在这里修改,参看这里 http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-apache-config.html TypesConfig一小节

Instead of editing /etc/mime.types, the recommended way to add MIME type mappings is to use the AddType directive.

建议不要去修改 /etc/mime.types ,添加MIME type的推荐方法是使用apache的 AddType 指令.

AddType application/vnd.ms-word.document.macroEnabled.12 docm
AddType application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
AddType application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
AddType application/vnd.ms-powerpoint.template.macroEnabled.12 potm
AddType application/vnd.openxmlformats-officedocument.presentationml.template potx
AddType application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
AddType application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
AddType application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
AddType application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
AddType application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
AddType application/vnd.ms-excel.addin.macroEnabled.12 xlam
AddType application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
AddType application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
AddType application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
AddType application/vnd.ms-excel.template.macroEnabled.12 xltm
AddType application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx
可以把这些指令加到apache的配置文件里,该指令在apache里出现过N次,不需多说,照着加进去就对了。

rar怎么支持呢?其实也很容易。找一下zip然后在zip支持下加一条一样的。把zip改成rar重启apache就可以了。

隐藏Apache的版本号及其它敏感信息

2014年9月23日 没有评论

隐藏Apache的版本号及其它敏感信息
默认情况下,很多Apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的Apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。
这里有两条语句,你需要添加到你的httpd.conf文件中:
ServerSignature Off
ServerTokens Prod
ServerSignature出现在Apache所产生的像404页面、目录列表等页面的底部。ServerTokens目录被用来判断Apache会在Server HTTP响应包的头部填充什么信息。如果把ServerTokens设为Prod,那么HTTP响应包头就会被设置成:
Server:Apache

Win2003下Apache性能优化

2014年9月12日 没有评论

一直习惯在Solaris和linux下跑amp,前些时服务器硬盘坏掉,所以启用新服务器。新系统是Windows 2003 Server,在上面按Unix上的经验配置Apache和Mysql时问题多多,经过折腾,总算是让服务器稳定下来,总结问题和解决办法如下(apache2.2.8+Mysql5.0.51a+php5.2.5):

1、Apache线程数和超时设置

Apache的线程数控制文件为conf/exrtra/http-mpm.conf,需要在httpd.conf中将 Include conf/extra/httpd-mpm.conf前#去掉,以使得http-mpm.conf生效。

在Windows系统中,起作用的是Winnt mpm段,


ThreadsPerChild 150
MaxRequestsPerChild 0

缺省的配置一般够用,但负荷大的网站就要修改了,否则网站一下就变慢或没有响应了。实际可以根据apache-status查看apache实时连接状态,我的服务器最后设置如下:


ThreadsPerChild 350
ThreadLimit 350
MaxRequestsPerChild 10000

Win32DisableAcceptEx
EnableMMAP Off
EnableSendfile Off

其中ThreadLimit是占用系统线程数限制,最好加上,否则会产生内存溢出导致Apache当掉。

MaxRequestsPerChild我理解是请求的缓存数,太小了影响性能,占用cpu时间,太大了占用内存资源,想象一下你网站的文件个数,然后自己设定,只要不为0就可以,防止内存溢出。

ThreadsPerChlid是apache的线程数,就是开了这么多的线程来等待响应客户端请求,需要根据apache-status实时的监控调节,大了会占用过多内存,小了会导致连接不上。而且应该同时修改httpd-default.php超时设置来配合。

在httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.php生效。

其中调节以下参数

Timeout 15 (连接超时缺省为300,太大了,缩小会减少同时连接数,即上面占用的实际线程数)

KeepAlive On (开启可以提高性能,因为一个页面一般会有多个请求)

MaxKeepAliveRequests 50 (这个数目自己根据网页内容调节)

KeepAliveTimeout 5 (这个小于Timeout就行)

Windows下长期运行Apache还是不如Unix稳定,可以让Apache在凌晨人少时自动重启,用Windows的计划任务可以非常方便的实现这一点,这样网管基本上可以安心睡觉了。

apache支持.htaccess

2013年10月6日 没有评论

今天在本地调试Discuz的时候,发现URL没法进行伪静态。我以为是.htaccess没设置对,反复修改还是不行。我突然想到,是不是我的apache本来就不支持.htaccess呢。于是我搜索起来。
有网站介绍说:打开httpd.conf文件用文本编辑器打开后,查找
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

改为:
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

可是我在我的httpd.conf文件里根本没有发现Options FollowSymLinks 之类的东西。我只好将
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
手动添加到httpd.conf文件里,然后重启Apache服务器,问题得到解决。

如果你也遇到Apache还不支持.htaccess的情况,使用我上面的这个情况不行的话,那就在httpd.conf文件里搜索LoadModule rewrite_module modules/mod_rewrite.so,如果前面有#符号,就去掉。保存,然后重启Apache。

首先去掉LoadModule rewrite_module modules/mod_rewrite.so前面的注释符号#,然后把所有的AllowOverride None都改成AllowOverride All才行。实际上,我在调试的时候并没有把所有的AllowOverride None都改成AllowOverride All,如果我全部修改了反而还出错。可能情况有所不同吧。

【总结】当你的Apache不支持.htaccess时,解决方法如下:
一,在你的Apache安装文件夹conf里找到httpd.conf文件。这个文件相当重要,而且经常使用。配置Apache服务器是必须搞懂的。
二,搜索LoadModule rewrite_module modules/mod_rewrite.so 如果前面有注释符号#,请去掉。
三,搜索Options FollowSymLinks,然后将它下面的AllowOverride None 修改为AllowOverride All;如果没有搜索到,那就手动在httpd.conf里添加<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

四,保存。重启apache服务器。记得,一定要重启。很多时候我们设置后,马上刷新网页,并没有效果,是因为没有重启服务器。这个很容易忽略,也是我们粗心的地方。

五,如果你还不行,那就将httpd.conf文件里的所有AllowOverride None都改成AllowOverride All试试。保存,重启服务器再试试。