zoukankan      html  css  js  c++  java
  • 源码安装Apache(httpd)

    【RHEL8】

    !!!测试环境我们首关闭防火墙和selinux

    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# systemctl disable firewalld
    [root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    [root@localhost ~]# setenforce 0  

    一、首先安装Apache安装环境

    [root@localhost ~]# yum install -y make gcc gcc-c++ expat-devel

    二、下载Apache扩展包

    //安装Apache需要下载apr、apr-util、pcre这三个扩展包
    wget https://mirror.bit.edu.cn/apache/apr/apr-1.6.5.tar.gz
    
    wget https://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
    
    wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz
    
     //下载Apache安装包
    wget https://mirror.bit.edu.cn/apache/httpd/httpd-2.4.46.tar.gz 

    三、解压,预编译,安装APR扩展包

    [root@localhost ~]# tar -zxvf apr-1.6.5.tar.gz
    [root@localhost ~]# cd apr-1.6.5/
    [root@localhost apr-1.6.5]# ./configure --prefix=/usr/local/apr
    ...........
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: WARNING:  'Makefile.in' seems to ignore the --datarootdir setting
    config.status: creating include/apr.h
    config.status: creating build/apr_rules.mk
    config.status: creating build/pkg/pkginfo
    config.status: creating apr-1-config
    config.status: creating apr.pc
    config.status: creating test/Makefile
    config.status: creating test/internal/Makefile
    config.status: creating include/arch/unix/apr_private.h
    config.status: executing libtool commands
    rm: cannot remove 'libtoolT': No such file or directory
    config.status: executing default commands
     //预编译没有报错,说明预编译成功
    [root@localhost apr-1.6.5]# make && make install
    ............
    See any operating system documentation about shared libraries for
    more information, such as the ld(1) and ld.so(8) manual pages.
    ----------------------------------------------------------------------
    /usr/bin/install -c -m 644 apr.exp /usr/local/apr/lib/apr.exp
    /usr/bin/install -c -m 644 apr.pc /usr/local/apr/lib/pkgconfig/apr-1.pc
    for f in libtool shlibtool; do 
        if test -f ${f}; then /usr/bin/install -c -m 755 ${f} /usr/local/apr/build-1; fi; 
    done
    /usr/bin/install -c -m 755 /root/apr-1.6.5/build/mkdir.sh /usr/local/apr/build-1
    for f in make_exports.awk make_var_export.awk; do 
        /usr/bin/install -c -m 644 /root/apr-1.6.5/build/${f} /usr/local/apr/build-1; 
    done
    /usr/bin/install -c -m 644 build/apr_rules.out /usr/local/apr/build-1/apr_rules.mk
    /usr/bin/install -c -m 644 /root/apr-1.6.5/build/apr_common.m4 /usr/local/apr/build-1
    /usr/bin/install -c -m 644 /root/apr-1.6.5/build/find_apr.m4 /usr/local/apr/build-1
    /usr/bin/install -c -m 755 apr-config.out /usr/local/apr/bin/apr-1-config
     //安装过程没有报错,说明安装成功,然后去/usr/local下面看有没有apr目录
    [root@localhost apr-1.6.5]# ls /usr/local/
    apr  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
    [root@localhost apr-1.6.5]# ls /usr/local/apr/
    bin  build-1  include  lib
     //出现以上文件说明安装成功  

    四、解压、预编译、安装apr-util扩展包

    [root@localhost ~]# tar -zxvf apr-util-1.6.1.tar.gz 
    [root@localhost ~]# cd apr-util-1.6.1/
    [root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr 
      //在这说明一下,这里预编译必须指明apr文件路径,否则会报错
    ...........
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating export_vars.sh
    config.status: creating build/pkg/pkginfo
    config.status: creating apr-util.pc
    config.status: creating apu-1-config
    config.status: creating include/private/apu_select_dbm.h
    config.status: creating include/apr_ldap.h
    config.status: creating include/apu.h
    config.status: creating include/apu_want.h
    config.status: creating test/Makefile
    config.status: creating include/private/apu_config.h
    config.status: executing default commands
     //预编译过程没有报错,说明安装成功
    [root@localhost apr-util-1.6.1]# make && make install
    ............
    If you ever happen to want to link against installed libraries
    in a given directory, LIBDIR, you must either use libtool, and
    specify the full pathname of the library, or use the '-LLIBDIR'
    flag during linking and do at least one of the following:
       - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
         during execution
       - add LIBDIR to the 'LD_RUN_PATH' environment variable
         during linking
       - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
       - have your system administrator add LIBDIR to '/etc/ld.so.conf'
    
    See any operating system documentation about shared libraries for
    more information, such as the ld(1) and ld.so(8) manual pages.
    ----------------------------------------------------------------------
    /usr/bin/install -c -m 644 aprutil.exp /usr/local/apr-util/lib
    /usr/bin/install -c -m 755 apu-config.out /usr/local/apr-util/bin/apu-1-config
     //安装过程没有报错,说明安装成功
    [root@localhost apr-util-1.6.1]# ls /usr/local/
    apr  apr-util  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
    [root@localhost apr-util-1.6.1]# ls /usr/local/apr-util/
    bin  include  lib
     //出现上面所示的目录,说明安装成功  

    五、解压、预编译、安装PCRE扩展包

    [root@localhost ~]# tar -zxvf pcre-8.40.tar.gz
    [root@localhost ~]# cd pcre-8.40/
    [root@localhost pcre-8.40]# ./configure --prefix=/usr/local/pcre
    ...........
    Internal link size .............. : 2
        Nested parentheses limit ........ : 250
        Match limit ..................... : 10000000
        Match limit recursion ........... : MATCH_LIMIT
        Build shared libs ............... : yes
        Build static libs ............... : yes
        Use JIT in pcregrep ............. : no
        Buffer size for pcregrep ........ : 20480
        Link pcregrep with libz ......... : no
        Link pcregrep with libbz2 ....... : no
        Link pcretest with libedit ...... : no
        Link pcretest with libreadline .. : no
        Valgrind support ................ : no
        Code coverage ................... : no
      //预编译过程没有报错,说明安装成功
    [root@localhost pcre-8.40]# make && make install
    ...........
    ln -sf pcre_pattern_to_host_byte_order.3 /usr/local/pcre/share/man/man3/pcre32_pattern_to_host_byte_order.3
    ln -sf pcre_refcount.3			 /usr/local/pcre/share/man/man3/pcre32_refcount.3
    ln -sf pcre_study.3			 /usr/local/pcre/share/man/man3/pcre32_study.3
    ln -sf pcre_utf32_to_host_byte_order.3	 /usr/local/pcre/share/man/man3/pcre32_utf32_to_host_byte_order.3
    ln -sf pcre_version.3			 /usr/local/pcre/share/man/man3/pcre32_version.3
    make[3]: 离开目录“/root/pcre-8.40”
    make[2]: 离开目录“/root/pcre-8.40”
    make[1]: 离开目录“/root/pcre-8.40”
     //安装成功没有报错,说明安装成功
    [root@localhost pcre-8.40]# ls /usr/local/
    apr  apr-util  bin  etc  games  include  lib  lib64  libexec  pcre  sbin  share  src
    [root@localhost pcre-8.40]# ls /usr/local/pcre/
    bin  include  lib  share
     //出现上面所示的目录,说明安装成功  

    六、解压、预编译、安装Apache服务

    [root@localhost ~]# tar -zxvf httpd-2.4.46.tar.gz
    [root@localhost ~]# cd httpd-2.4.46/
    [root@localhost httpd-2.4.46]# ./configure --prefix=/usr/local/httpd 
    > --with-apr=/usr/local/apr 
    > --with-apr-util=/usr/local/apr-util 
    > --with-pcre=/usr/local/pcre 
    > --enable-so             //动态模块加载方式
    > --enable-rewrite         //支持rewrite(地址重定向)
    .............
    config.status: creating build/rules.mk
    config.status: creating build/pkg/pkginfo
    config.status: creating build/config_vars.sh
    config.status: creating include/ap_config_auto.h
    config.status: executing default commands
    configure: summary of build options:
    
        Server Version: 2.4.46
        Install prefix: /usr/local/httpd
        C compiler:     gcc
        CFLAGS:          -g -O2 -pthread  
        CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE  
        LDFLAGS:           
        LIBS:             
        C preprocessor: gcc -E
     //预编译过程没有报错,说明预编译成功
    [root@localhost httpd-2.4.46]# make && make install
     ...........
    Installing CGIs
    mkdir /usr/local/httpd/cgi-bin
    Installing header files
    mkdir /usr/local/httpd/include
    Installing build system files
    mkdir /usr/local/httpd/build
    Installing man pages and online manual
    mkdir /usr/local/httpd/man
    mkdir /usr/local/httpd/man/man1
    mkdir /usr/local/httpd/man/man8
    mkdir /usr/local/httpd/manual
    make[1]: 离开目录“/root/httpd-2.4.46”
     //安装过程没有报错,说明安装成功
    [root@localhost httpd-2.4.46]# ls /usr/local/
    apr  apr-util  bin  etc  games  httpd  include  lib  lib64  libexec  pcre  sbin  share  src
    [root@localhost httpd-2.4.46]# ls /usr/local/httpd/
    bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules
     //出现什么所示目录,说明安装成功
    

    七、给httpd启动脚本建立软链接,加入/usr/local/bin/里面(用户环境变量)

    [root@localhost ~]# ln -s /usr/local/httpd/bin/apachectl /usr/local/bin/apachectl

    八、修改httpd.conf的配置文件

    [root@localhost ~]# cd /usr/local/httpd/conf/
    [root@localhost conf]# ls
    extra  httpd.conf  magic  mime.types  original
    [root@localhost conf]# vim httpd.conf 
    ...........
    User apache         //所列出的是需要修改的内容
    Group apache
    ...........
    ServerName 192.168.174.128:80    //将servername修改自己的IP加端口号
    

    九、创建apache用户

    [root@localhost ~]# groupadd -r apache
    [root@localhost ~]# useradd -r -g apache apache
    [root@localhost ~]# id apache
    uid=991(apache) gid=987(apache) 组=987(apache) 

    十、启动httpd服务

    [root@localhost ~]# apachectl start
    [root@localhost ~]# netstat -tunlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1083/sshd           
    tcp6       0      0 :::80                   :::*                    LISTEN      59291/httpd         
    tcp6       0      0 :::22                   :::*                    LISTEN      1083/sshd           
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           1588/dhclient     
    

    十一、测试Apache首页

      安装成功!!!

  • 相关阅读:
    oracle判断是否包含字符串的方法
    linux环境下卸载mysql
    分辨率与px的关系
    plsql登录,tables表为空解决方案
    excle导出、导入、下载_jeesite注解@ExcelField
    安卓中常用的弹出框
    c#将数据导出到excel中
    将表里的数据分组,并取每组中的最大的一条数据
    c#如何写服务,打包和卸载服务
    C#排列组合类,写彩票算法的朋友们可以来看一看
  • 原文地址:https://www.cnblogs.com/itwangqiang/p/13498411.html
Copyright © 2011-2022 走看看