Linux下增加Apache的rewrite Module

简介: 这两天一直在弄一个php版的开源多用户文件上传系统uploader6.21,安装什么的都没有错误,但是登录或注册是老是链接不对,找了几个源码下载站下载安装均是如此,好在是开放源码,花了我一天功夫把源码拔了个遍也没有找到菜单文件在那地方,都快崩溃了,最后还是上官方论坛上找到了症结所在,原来服务器不支持rewrite,所以出来的路径不对。
这两天一直在弄一个php版的开源多用户文件上传系统uploader6.21,安装什么的都没有错误,但是登录或注册是老是链接不对,找了几个源码下载站下载安装均是如此,好在是开放源码,花了我一天功夫把源码拔了个遍也没有找到菜单文件在那地方,都快崩溃了,最后还是上官方论坛上找到了症结所在,原来服务器不支持rewrite,所以出来的路径不对。问题找出来就好办了哈,下面是我从网上找来的技术方面的文章。

          参考以下文章一开始进入了误区,光在apache2.conf上修改就是没效果,最后又参考了好几篇文章,终于搞定。

        过程如下:

修改 /etc/apache2/apache2.conf 文件, 让其加载 mod_rewrite 和 mod_deflate 模块.
       加载 mod_rewrite 模块, 在文件[底部]加入:
       LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
       加载 mod_deflate 模块, 在文件[底部]加入:
       LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
       除了加载模块以外,还需要修改虚拟主机的配置文件.
       默认的配置文件为:
       /etc/apache2/sites-available/default
       将文件中代表网站的节点,如放在 /var/www 的网站为:  (这个文件在sites-available里)
       <Directory /var/www/>
          Options Indexes FollowSymLinks MultiViews
          AllowOverride All
          Order allow,deny
          allow from all
          # This directive allows us to have apache2's default start page
          # in /apache2-default/, but still have / go to the right place
          #RedirectMatch ^/$ /apache2-default/
       </Directory>
       将其 AllowOverride None 中的 None 改成 All

 

效果演示:http://www.51bike.net/uploader/

    

转载开始

最近,项目需要在已经编译好的Apache上以动态方式加载rewrite模块。于是,我们在网上找了许多资料,但都讲解得不是很详细且格式错位问题严重。所以我们有必要把这一过程再重述一遍。实际操作步骤如下: 工作现场描述: Linux 2.4.21 apache_1.3.34.tar.gz 解压后的目录为 /root/apache_1.3.34 文中简称为“源码目录” apache安装目录 /usr/local/apache 文中简称为“目标目录” 步骤: 1、Apache安装rewrite模块的时候需要DBM支持,否则无法编译,所以首先要安装一个GDBM

最近,项目需要在已经编译好的Apache上以动态方式加载rewrite模块。于是,我们在网上找了许多资料,但都讲解得不是很详细且格式错位问题严重。所以我们有必要把这一过程再重述一遍。实际操作步骤如下:

工作现场描述:
        Linux 2.4.21
        apache_1.3.34.tar.gz        解压后的目录为 /root/apache_1.3.34 文中简称为“源码目录”
        apache安装目录 /usr/local/apache 文中简称为“目标目录”

步骤:
1、Apache安装rewrite模块的时候需要DBM支持,否则无法编译,所以首先要安装一个GDBM  
        下载地址:ftp://ftp.gnu.org/gnu/gdbm/
        安装步骤:
            进入安装目录,
            ./configure
            make
            make install
            make install-compat        (最后行也要执行。否则无法编译出ndbm.h头文件)
        如果您不能确定服务器上是否已经装有DBM,那么可以安装一下。否则这步可以跳过。

2、现在到apache源码目录的标准模块目录中(/root/apache_src/src/modules/standard/)中,使用如下指令编译出so文件:
        /usr/local/apache/bin/apxs -c mod_rewrite.c -lgdbm
  即可得到mod_rewrite.so文件。
        备注:"-lgdbm"是用为说明在编译mod_rewrite.c时要把gdbm链接进来。这样在第6步启动apache时就不会报出"dbm fetch"的错误了。

3、现在让apache的apxs来自动向http.conf配置文件中加入LoadModule语句并将mod_rewrite.so文件拷贝到apache/libexec目录
        /usr/local/apache/bin/apxs -i -A -n rewrite /root/apache_1.3.34/src/modules/standard/mod_rewrite.so
        备注:命令中的rewrite参数是告诉apxs命令mod_rewrite.so文件中的模块名。在命令执行后,apxs会在LoadModule中为rewrite加上"_module"以标名模块名称。如果你在启动apache时发现总是给出“不能定位API”之类的错误,那就是说明LoadModule后面的模块名的语法要根据您的apache版本加以改变。

4、停止apache
        apache/bin/apachectl stop

5、运行配置文件检查命令
        apache/bin/apachectl configtest
        如显示Syntax OK,则表示整个操作成功。那么可以到第6步。否则根据提示信息进行调试。但只要按照此文所说进行操作是不会出错的。

6、启动apache
        apache/bin/apachectl start

全文结束。


参考原文
============================

公司一台Linux服务器,Apache默认安装时候没有加载任何Modules,最近要用到Apache的rewrite模块,经过一夜一天的努力,终于成功了,兴奋....
现在列下几个要点:
1. Apache安装rewrite模块的时候需要DBM支持,否则无法编译,所以首先要安装一个GDBM      下载地址:ftp://ftp.gnu.org/gnu/gdbm/
        安装步骤: 进入安装目录,./configure; make; make install; make install-compat; 否则无法编译出ndbm.h头文件.
2. 然后用Apache bin目录下的apxs命令安装
        /var/apache/bin/apxs -c mod_rewrite.c {
        gcc -DLINUX=22 -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite -fpic -DSHARED_MODULE -I/var/apache/include      -c mod_rewrite.c
        gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm
}
        /var/apache/bin/apxs -i -a -n mod_rewrite mod_rewrite.so

然后在http.conf配置文件里加上:LoadModule rewrite_module libexec/mod_rewrite.so
接下来用/usr/local/apache/bin/apachectl
stop停止apache,然后用再start,千万注意,在这里不能用restart或者graceful参数来重新启动apache,必须先停止,然后再开始,或者是reboot机器,否则rewrite将不起作用。

-------------------------------------------------------------------------------------------------------------
I tried to include in my Apache Web server's configuration the mod_rewrite module, but when I restarted the server, I received an error:

Cannot load /usr/local/apache/libexec/mod_rewrite.so into server:
/usr/local/apache/libexec/mod_rewrite.so: undefined symbol: dbm_fetch
The problem, as it turns out, is that mod_rewrite.so is compiled incorrectly. It should be linked with a dbm library but it isn't.

If you have an up-to-date set of Apache source files, you can easily solve this problem by manually rerunning the last compilation step of this module, using the correct options. When you execute make mod_rewrite.so in the appropriate directory, it performs this final step:

gcc -shared -o mod_rewrite.so mod_rewrite.lo
Rerun gcc, this time adding a reference to the GNU gdbm library:

gcc -shared -o mod_rewrite.so mod_rewrite.lo -lgdbm
Next, copy the newly created mod_rewrite.so over to /usr/local/apache/libexec      or wherever your Apache module files are located.

In my case, this was all that was needed to solve the problem. Your mileage may vary.

转自:http://www.phpchina.cn/bbs/viewthread.php?tid=96

 
目录
相关文章
|
1月前
|
运维 Linux Apache
Linux Apache服务详解——Apache虚拟目录与禁止显示目录列表实战
Linux Apache服务详解——Apache虚拟目录与禁止显示目录列表实战
22 2
|
1月前
|
域名解析 Linux Apache
Linux Apache服务详解——虚拟网站主机功能实战
Linux Apache服务详解——虚拟网站主机功能实战
33 5
|
1月前
|
Linux 应用服务中间件 Apache
Linux Apache服务详解——Apache服务基础知识
Linux Apache服务详解——Apache服务基础知识
33 2
|
1月前
|
Ubuntu Java 测试技术
【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测
【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测
|
1月前
|
Java Linux
Flume【环境搭建 01】CentOS Linux release 7.5 安装配置 apache-flume-1.9.0 并验证
【2月更文挑战第16天】Flume【环境搭建 01】CentOS Linux release 7.5 安装配置 apache-flume-1.9.0 并验证
33 0
|
20天前
|
Ubuntu Linux Apache
linux下apache2更换目录
linux下apache2更换目录
|
1月前
|
Shell Linux 网络安全
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
30 0
|
1月前
|
Shell Linux Apache
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
162 1
|
1月前
|
运维 Linux Apache
LAMP架构调优(九)——Apache Rewrite功能实战
LAMP架构调优(九)——Apache Rewrite功能实战
12 1
|
1月前
|
Web App开发 存储 Linux
Linux Apache服务详解——Apache服务访问控制
Linux Apache服务详解——Apache服务访问控制
328 7