搭建的环境:

centos7

Apache/2.4.6

fastcgi2.4.6

rails4

在安装fastcgi的时候遇到了问题:

问题:

。。。。。。

In file included from fcgi.h:28:0,
                 from mod_fastcgi.c:72:
/usr/include/httpd/http_log.h:456:18: note: expected ‘const struct request_rec *‘ but argument is of type ‘char *‘
 AP_DECLARE(void) ap_log_rerror_(const char *file, int line, int module_index,
                  ^
make: *** [mod_fastcgi.slo] 错误 1

答案:经过查询资料得知,是因为Apache/2.4.6不完善,需要补丁文件去完善它

下面写正确的过程:

1安装httpd服务器

#yum install httpd   httpd-devel

2安装fastcgi(先下载然后安装)

2.1下载mod_fastcgi源码包

# wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz

2.2解压安装(解压后要先打补丁)

## tar zxvf mod_fastcgi-2.4.6.tar.gz
# cd mod_fastcgi-2.4.6
2.3下载补丁文件
http://leeon.me/upload/other/byte-compile-against-apache24.diff

2.4把补丁文件上传到解压的mod_fastcgi文件目录(我这里的路径为/root/mod_fastcgi-2.4.6)

或者直接自己创建一个文件把下载的补丁文件直接复制到这个创建的补丁文件爱你中(文件名字随你自己取,不影响的)

#vim   fastcgi_patch

2.5把这个下载的补丁文件的所有内容复制进来,我把这个补丁的完整内容也贴出来吧,不想下载的可以直接复制我的

Index: libapache-mod-fastcgi/fcgi.h
===================================================================
--- libapache-mod-fastcgi.orig/fcgi.h    2012-03-07 14:29:04.005720240 +0100
+++ libapache-mod-fastcgi/fcgi.h    2012-03-07 14:29:07.830566657 +0100
@@ -34,6 +34,10 @@
 #define APACHE2
 #endif
 
+#ifdef AP_DECLARE_MODULE
+#define APACHE24
+#endif
+
 #ifdef APACHE2
 
 #include <sys/stat.h>
@@ -57,10 +61,16 @@
 #define XtOffsetOf APR_OFFSETOF
 #define ap_select select
 
+#ifdef APACHE24
+#define unixd_config ap_unixd_config
+#endif
+
+#ifdef APACHE2
 #define ap_user_id        unixd_config.user_id
 #define ap_group_id       unixd_config.group_id
 #define ap_user_name      unixd_config.user_name
 #define ap_suexec_enabled unixd_config.suexec_enabled
+#endif
 
 #ifndef S_ISDIR
 #define S_ISDIR(m)      (((m)&(S_IFMT)) == (S_IFDIR))
@@ -365,42 +375,42 @@
 #ifdef APACHE2
 
 #ifdef WIN32
-#define FCGI_LOG_EMERG          __FILE__,__LINE__,APLOG_EMERG,APR_FROM_OS_ERROR(GetLastError())
-#define FCGI_LOG_ALERT          __FILE__,__LINE__,APLOG_ALERT,APR_FROM_OS_ERROR(GetLastError())
-#define FCGI_LOG_CRIT           __FILE__,__LINE__,APLOG_CRIT,APR_FROM_OS_ERROR(GetLastError())
-#define FCGI_LOG_ERR            __FILE__,__LINE__,APLOG_ERR,APR_FROM_OS_ERROR(GetLastError())
-#define FCGI_LOG_WARN           __FILE__,__LINE__,APLOG_WARNING,APR_FROM_OS_ERROR(GetLastError())
-#define FCGI_LOG_NOTICE         __FILE__,__LINE__,APLOG_NOTICE,APR_FROM_OS_ERROR(GetLastError())
-#define FCGI_LOG_INFO           __FILE__,__LINE__,APLOG_INFO,APR_FROM_OS_ERROR(GetLastError())
-#define FCGI_LOG_DEBUG          __FILE__,__LINE__,APLOG_DEBUG,APR_FROM_OS_ERROR(GetLastError())
+#define FCGI_LOG_EMERG          APLOG_MARK,APLOG_EMERG,APR_FROM_OS_ERROR(GetLastError())
+#define FCGI_LOG_ALERT          APLOG_MARK,APLOG_ALERT,APR_FROM_OS_ERROR(GetLastError())
+#define FCGI_LOG_CRIT           APLOG_MARK,APLOG_CRIT,APR_FROM_OS_ERROR(GetLastError())
+#define FCGI_LOG_ERR            APLOG_MARK,APLOG_ERR,APR_FROM_OS_ERROR(GetLastError())
+#define FCGI_LOG_WARN           APLOG_MARK,APLOG_WARNING,APR_FROM_OS_ERROR(GetLastError())
+#define FCGI_LOG_NOTICE         APLOG_MARK,APLOG_NOTICE,APR_FROM_OS_ERROR(GetLastError())
+#define FCGI_LOG_INFO           APLOG_MARK,APLOG_INFO,APR_FROM_OS_ERROR(GetLastError())
+#define FCGI_LOG_DEBUG          APLOG_MARK,APLOG_DEBUG,APR_FROM_OS_ERROR(GetLastError())
 #else /* !WIN32 */
-#define FCGI_LOG_EMERG          __FILE__,__LINE__,APLOG_EMERG,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_ALERT          __FILE__,__LINE__,APLOG_ALERT,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_CRIT           __FILE__,__LINE__,APLOG_CRIT,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_ERR            __FILE__,__LINE__,APLOG_ERR,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_WARN           __FILE__,__LINE__,APLOG_WARNING,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_NOTICE         __FILE__,__LINE__,APLOG_NOTICE,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_INFO           __FILE__,__LINE__,APLOG_INFO,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_DEBUG          __FILE__,__LINE__,APLOG_DEBUG,APR_FROM_OS_ERROR(errno)
-#endif
-
-#define FCGI_LOG_EMERG_ERRNO    __FILE__,__LINE__,APLOG_EMERG,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_ALERT_ERRNO    __FILE__,__LINE__,APLOG_ALERT,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_CRIT_ERRNO     __FILE__,__LINE__,APLOG_CRIT,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_ERR_ERRNO      __FILE__,__LINE__,APLOG_ERR,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_WARN_ERRNO     __FILE__,__LINE__,APLOG_WARNING,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_NOTICE_ERRNO   __FILE__,__LINE__,APLOG_NOTICE,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_INFO_ERRNO     __FILE__,__LINE__,APLOG_INFO,APR_FROM_OS_ERROR(errno)
-#define FCGI_LOG_DEBUG_ERRNO    __FILE__,__LINE__,APLOG_DEBUG,APR_FROM_OS_ERROR(errno)
-
-#define FCGI_LOG_EMERG_NOERRNO    __FILE__,__LINE__,APLOG_EMERG,0
-#define FCGI_LOG_ALERT_NOERRNO    __FILE__,__LINE__,APLOG_ALERT,0
-#define FCGI_LOG_CRIT_NOERRNO     __FILE__,__LINE__,APLOG_CRIT,0
-#define FCGI_LOG_ERR_NOERRNO      __FILE__,__LINE__,APLOG_ERR,0
-#define FCGI_LOG_WARN_NOERRNO     __FILE__,__LINE__,APLOG_WARNING,0
-#define FCGI_LOG_NOTICE_NOERRNO   __FILE__,__LINE__,APLOG_NOTICE,0
-#define FCGI_LOG_INFO_NOERRNO     __FILE__,__LINE__,APLOG_INFO,0
-#define FCGI_LOG_DEBUG_NOERRNO    __FILE__,__LINE__,APLOG_DEBUG,0
+#define FCGI_LOG_EMERG          APLOG_MARK,APLOG_EMERG,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_ALERT          APLOG_MARK,APLOG_ALERT,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_CRIT           APLOG_MARK,APLOG_CRIT,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_ERR            APLOG_MARK,APLOG_ERR,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_WARN           APLOG_MARK,APLOG_WARNING,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_NOTICE         APLOG_MARK,APLOG_NOTICE,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_INFO           APLOG_MARK,APLOG_INFO,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_DEBUG          APLOG_MARK,APLOG_DEBUG,APR_FROM_OS_ERROR(errno)
+#endif
+
+#define FCGI_LOG_EMERG_ERRNO    APLOG_MARK,APLOG_EMERG,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_ALERT_ERRNO    APLOG_MARK,APLOG_ALERT,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_CRIT_ERRNO     APLOG_MARK,APLOG_CRIT,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_ERR_ERRNO      APLOG_MARK,APLOG_ERR,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_WARN_ERRNO     APLOG_MARK,APLOG_WARNING,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_NOTICE_ERRNO   APLOG_MARK,APLOG_NOTICE,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_INFO_ERRNO     APLOG_MARK,APLOG_INFO,APR_FROM_OS_ERROR(errno)
+#define FCGI_LOG_DEBUG_ERRNO    APLOG_MARK,APLOG_DEBUG,APR_FROM_OS_ERROR(errno)
+
+#define FCGI_LOG_EMERG_NOERRNO    APLOG_MARK,APLOG_EMERG,0
+#define FCGI_LOG_ALERT_NOERRNO    APLOG_MARK,APLOG_ALERT,0
+#define FCGI_LOG_CRIT_NOERRNO     APLOG_MARK,APLOG_CRIT,0
+#define FCGI_LOG_ERR_NOERRNO      APLOG_MARK,APLOG_ERR,0
+#define FCGI_LOG_WARN_NOERRNO     APLOG_MARK,APLOG_WARNING,0
+#define FCGI_LOG_NOTICE_NOERRNO   APLOG_MARK,APLOG_NOTICE,0
+#define FCGI_LOG_INFO_NOERRNO     APLOG_MARK,APLOG_INFO,0
+#define FCGI_LOG_DEBUG_NOERRNO    APLOG_MARK,APLOG_DEBUG,0
 
 #else /* !APACHE2 */
 
Index: libapache-mod-fastcgi/mod_fastcgi.c
===================================================================
--- libapache-mod-fastcgi.orig/mod_fastcgi.c    2012-03-07 14:29:04.017047773 +0100
+++ libapache-mod-fastcgi/mod_fastcgi.c    2012-03-07 14:29:07.841272721 +0100
@@ -97,6 +97,10 @@
 } while (0)
 #endif
 
+#ifdef APACHE24
+module AP_MODULE_DECLARE_DATA fastcgi_module;
+#endif
+
 /*
  * Global variables
  */
@@ -3014,7 +3018,11 @@
     ap_hook_fixups(fixups, NULL, NULL, APR_HOOK_MIDDLE); 
 }
 
+#ifdef APACHE24
+AP_DECLARE_MODULE(fastcgi) =
+#else
 module AP_MODULE_DECLARE_DATA fastcgi_module =
+#endif
 {
     STANDARD20_MODULE_STUFF,
     fcgi_config_create_dir_config,  /* per-directory config creator */

文件内容已经接触(此行不要复制)

然后保存退出(wq)

对解压后的fcgi.h这个文件执行打补丁操作

#patch fcgi.h < fastcgi_patch

(如果是上传的刚才给的网址下载的文件则换上相应的名字,即 #patch fcgi.h < byte-compile-against-apache24.diff )

3执行编译安装,不过在安装之前修改下安装的路径

# cp Makefile.AP2 Makefile
# vim Makefile
修改top_dir目录,64位系统的路径为lib64,32位系统的路径为/usr/lib/httpd

top_dir = /usr/lib64/httpd

保存退出后,开始进行编译安装。
# make
# make install

到此,mod_fastcgi.so已经安装好了

Centos7+httpd+fastcgi+rails安装

标签:style   com   文件   log   问题   http   si   it   ha

原文:http://blog.csdn.net/li_yong_kuan/article/details/41332767

Centos7+httpd+fastcgi安装提示错误的更多相关文章

  1. Centos7+httpd+fastcgi+rails安装

    搭建的环境: centos7 Apache/2.4.6 fastcgi2.4.6 rails4 在安装fastcgi的时候遇到了问题: 问题: .... .. In file included fro ...

  2. python安装提示错误Could not find a version that satisfies the requirement dateutil

    今天ytkah在安装python3组件时提示如下错误,这个是缺少依赖的问题,就试着用pip3 install dateutil,但还是提示同样的错误,怎么处理呢? Could not find a v ...

  3. yum安装提示错误Thread/process failed: Thread died in Berkeley DB library

    问题描述: yum 安装更新提示 rpmdb: Thread/process failed: Thread died in Berkeley DB library 问题解决: 01.删除yum临时库文 ...

  4. Window Live Writer在Win7下安装提示错误“OnCatalogResult:0x80190194”

    1.在C:\Users\All Users\Microsoft\WLSetup\Logs下(All Users默认是隐藏文件夹),有两个Window Live的安装日记记录文件,打开第一个找到ERRO ...

  5. eclipse安装提示错误:Failed to load JNI shared library "D:\jdk1.7\client\jvm.dll"

    错误截图如下 原因是jdk32位,eclipse64位导致,修改jdk版本为64位或者修改ecipse版本为32位即可.

  6. 在Ubuntu 12.04 - 64bit中安装CodeSourcery时提示错误

    安装时提示错误,Your 64-bit Linux host is missing the 32-bit libraries requied to install and use Sourcery C ...

  7. CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org

    CentOS 使用yum命令安装出现错误提示"could not retrieve mirrorlist http://mirrorlist.centos.org这个错误, 在网上找了好多, ...

  8. 安装sql server 2008 提示错误 SQL Server 2005 Express 工具。 失败

    安装sql server 2008 management,提示错误:Sql2005SsmsExpressFacet 检查是否安装了 SQL Server 2005 Express 工具. 失败,已安装 ...

  9. Python3安装turtle提示错误:Command "python setup.py egg_info" failed with error code 1

    Python3安装turtle提示错误:Command "python setup.py egg_info" failed with error code 1 Python3.5安 ...

随机推荐

  1. dev 小问题列表

    1. MemoEdit > Lines Text lines are separated by line feed and carriage return characters ("\ ...

  2. 【转】Linux系统上安装MySQL 5.5 rpm

    1.准备工作 从MySQL官网上分别下载mysql服务器端于客户端包. 如: MySQL-server-5.5.15-1.linux2.6.x86_64.rpm和MySQL-client-5.5.15 ...

  3. Qt Creator 如何支持并行?

    PRO 文件中加入以下语句即可 #OpenMP QMAKE_CXXFLAGS += -openmp QMAKE_LFLAGS += -openmp

  4. PhpStorm2017.1版激活方法、汉化方法以及界面配置

    本教程仅对2017.1版有效!!!!!! PhpStorm激活和汉化文件下载网址(提取密码:62cg) PhpStorm的介绍 PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提高用户效率, ...

  5. Pycharm中SQL语句提示SQL Dialect is Not Configured

    解决办法: 在File---->Setting--->Languages & Frameworks--->SQL Dialects中,选择对应的数据库,如MySQL,之后点击 ...

  6. Python基础(8)_迭代器、生成器、列表解析

    一.迭代器 1.什么是迭代 1 重复 2 下次重复一定是基于上一次的结果而来 l=[,,,] count= while count < len(l): print(l[count]) count ...

  7. $《第一行代码:Android》读书笔记——第3章 UI基础

    (一)Android常用控件及简单用法 1.如下图: 2.补充: (1)margin:外边距:padding:内边距. (2)gravity:子元素的位置:layout_gravity:子元素在父元素 ...

  8. springboot-整合freemarker

    freemarker是一个页面模板引擎.用springboot整合freemarker的方式如以下步骤: 1.在创建springboot的项目的时候,选择freemarker的组件,或者自己手动在ma ...

  9. Linux虚拟内存管理(glibc)

    转:https://blog.csdn.net/tengxy_cloud/article/details/53067396 https://www.cnblogs.com/purpleraintear ...

  10. Shell编程之循环控制及状态返回值

    1.break.continue.exit.return的对比 break.continue在条件语句和循环语句中用于控制程序走向: exit用于终止所有语句并退出当前脚本,还可以返回上一次程序或命令 ...