zoukankan      html  css  js  c++  java
  • Centos7+httpd+fastcgi+rails安装

    搭建的环境:

    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安装httpdserver

    #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已经安装好了


  • 相关阅读:
    30个热门的CSS3 Image Hover 脚本
    70个jQuery触摸事件插件 支持手势触摸!
    40个超酷的jQuery动画教程
    45个漂亮且有创意的HTML5网站展示
    40+极具创意的产品展示PSD模板
    25个开始学习HTMLE5的最好的资源
    25个很酷的jQuery倒计时脚本–添加动态计数器!
    45个wordpress自适应插件
    30+WordPress古典风格的主题古典却不失时尚
    为kindeditor上传图片添加水印(PHP版)
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6964766.html
Copyright © 2011-2022 走看看