Apache 源码安装详细教程

Apache 源码安装

Apache 入门简介

点击查看HTTP基础概念

点击查看HTTP工作模式

进程和线程概念

  • 进程是操作系统分配资源的资本单位,进程是程序的实体
  • 进程是动态的,程序是静态

进程和线程的区别

  • 线程是进程的基本单位,范围比进程要小
  • 一个进程中包含一个线程或者多个线程,所有的线程共享该进程的内存空间
  • 如果进程挂掉,所有线程崩溃,如果一个线程异常退出,连同其他的线程或者进程会崩溃
  • 多线程的好处是提高访问效率、并发高网站采用多进程-多线程工作。

目前主流的WEB服务器软件

  • Apache 、Nginx、Lighttpd、IIS
  • Resin、Tomcat、WebLogic、Jetty等
    • Apache 是一个古老的web服务器软件,基于Apahce 基金会开发的,默认只能发布静态网页
    • Apache 是一个多模块式的软件、模块丰富
    • Apache 有三种工作模式:Prefork、Worker、Event
      • Prefork:Apche默认工作模式,多进程模型,预先生成进程,一个请求用一个进程响应,预先生成多个空闲进程,随时等待请求到达,最大不会超过1024个
        • 缺点:多进程方式,比较消耗内存和系统资源
      • Worker MPM:工作模式。基于线程工作一个请求用一个线程响应启动多个进程,每个进程生成多个线程内存占用量比较小,适合大并发、高流量的WEB服务器
        • 缺点:一个线程崩溃,整个进程就会连同其任何线程一起挂掉

源码包安装 httpd

点击官网下载地址

  • 下载http-2.4.46.tar.bz2:

    • https://downloads.apache.org/httpd/httpd-2.4.46.tar.bz2
    [root@localhost usr]# cd src/
    [root@localhost src]# wget https://downloads.apache.org/httpd/httpd-2.4.46.tar.bz2
    --2021-04-03 15:53:32--  https://downloads.apache.org/httpd/httpd-2.4.46.tar.bz2
    Resolving downloads.apache.org (downloads.apache.org)... 88.99.95.219, 2a01:4f8:10a:201a::2
    Connecting to downloads.apache.org (downloads.apache.org)|88.99.95.219|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 9363314 (8.9M) [application/x-gzip]
    Saving to: ‘httpd-2.4.46.tar.bz2’
    
    100%[===================================================================>] 9,363,314   1.07MB/s   in 9.4s   
    
    2021-04-03 15:53:43 (972 KB/s) - ‘httpd-2.4.46.tar.bz2’ saved [9363314/9363314]
    [root@localhost src]# ll
    total 7992
    drwxr-xr-x. 2 root root       6 Nov  5  2016 debug
    -rw-r--r--  1 root root 7187805 Aug  5  2020 httpd-2.4.46.tar.bz2
    drwxr-xr-x. 2 root root       6 Nov  5  2016 kernels
    
    
  • 解压http-2.4.46.5安装包:

    • tar -xjf httpd-2.4.46.tar.bz2
    [root@localhost src]# tar xjf httpd-2.4.46.tar.bz2 解压.bz2包报错,提示缺bzip2,所以安装bzip2
    tar (child): bzip2: Cannot exec: No such file or directory
    tar (child): Error is not recoverable: exiting now
    tar: Child returned status 2
    tar: Error is not recoverable: exiting now
    
    [root@localhost ~]# yum install bzip2 -y   解决报错,安装bzip2
    [root@localhost src]# tar -xjf httpd-2.4.46.tar.bz2   再次解压
    
    
  • 进入解压目录

    [root@localhost src]# cd httpd-2.4.46
    [root@localhost httpd-2.4.46]# ls
    ABOUT_APACHE     BuildAll.dsp    configure.in  include         LICENSE        README            test
    acinclude.m4     BuildBin.dsp    docs          INSTALL         Makefile.in    README.cmake      VERSIONING
    Apache-apr2.dsw  buildconf       emacs-style   InstallBin.dsp  Makefile.win   README.platforms
    Apache.dsw       CHANGES         httpd.dep     LAYOUT          modules        ROADMAP
    apache_probes.d  CMakeLists.txt  httpd.dsp     libhttpd.dep    NOTICE         server
    ap.d             config.layout   httpd.mak     libhttpd.dsp    NWGNUmakefile  srclib
    build            configure       httpd.spec    libhttpd.mak    os             support
    [root@localhost httpd-2.4.46]# 
    
  • 检测系统环境是否能够达到编译的请求

    • 安装apache之前,需要先安装apr apr-devel apr-util apr-util-devell优化模块。
    • 安装编译前,先确认安装编译环境(gcc-c++
    [root@localhost httpd-2.4.46]# yum install apr apr-devel apr-util apr-util-devel -y
    [root@localhost httpd-2.4.46]# yum -y install gcc-c++ -y
    
  • 预编译./configure

    [root@localhost httpd-2.4.46]# ./configure --prefix=/usr/local/apache  --with-pmp=worker
    ……编译过程省略
    
    模块解释:
    --prefix=/usr/local/apache/   		指定安装路径
    --enable-rewrite              		预编译Apache,启用rewrite规则
    --enable-so                   		启用动态加载库;
    --enable-ssl						启用ssl功能
    
    --with-mpm=prefork|worker|event()  指定工作模式
    --enable-mpms-shared=all            也可以编译为三种都支持,通过修改配置来更换。
    
    
  • 编译make 根据生成的makefile文件来执行对应的编译

    [root@localhost httpd-2.4.46]# make -j4 使用4个内核编译,提升编译速度。(根据内核数量添加)
    
  • 安装配置文件make install

    [root@localhost httpd-2.4.46]# make install
    [root@localhost ~]# cd /usr/local/apache/
    [root@localhost apache]# ls
    bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  	modules
    [root@localhost apache]# 
    
  • 修改网页内容

    
    [root@localhost ~]# cd /usr/local/apache/htdocs/
    [root@localhost htdocs]# ls
    index.html
    
    [root@localhost htdocs]# rm -f index.html
    [root@localhost htdocs]# rz
    
    [root@localhost htdocs]# ls
    love72.zip
    
    [root@localhost htdocs]# yum -y install unzip*
    [root@localhost htdocs]# unzip love72.zip 
    Archive:  love72.zip
       creating: images/
      inflating: images/1.jpg            
      inflating: index.html              
       creating: js/
      inflating: js/yiqi.js              
       creating: style/
      inflating: style/main.css          
    [root@localhost htdocs]# ls
    images  index.html  js  love72.zip  style
    [root@localhost htdocs]# cd ../
    [root@localhost apache]# ./bin/apachectl restart      重启服务
    
  • 启动Apache服务,临时关闭selinux、firewalld防火墙

    [root@localhost ~]# getenforce
    Disabled
    [root@localhost ~]# 
    [root@localhost ~]# systemctl status firewalld
     firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
       Active: inactive (dead)
         Docs: man:firewalld(1)
    [root@localhost ~]# 
    [root@localhost ~]# /usr/local/apache/bin/apachectl stop
    [root@localhost ~]# /usr/local/apache/bin/apachectl start
    
  • 测试:
    在这里插入图片描述

总结

Apache 重启报错解决办法

  • Apache按照重启报错处理方法

    • 编辑配置文件
      • vim /usr/local/apache/conf/httpd.conf
    • 开启监听本地域名localhost没有开启80端口的域名解析)
    [root@localhost apache]# ./bin/apachectl start   重启报错
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
    httpd (no pid file) not running
    
    [root@localhost src]# vim /usr/local/apache/conf/httpd.conf
    Listen 80        
    ServerName localhost:80 添加一行"ServerName localhost:80 "开启80端口的域名监听
    
    
  • 如图:
    在这里插入图片描述

Apache 源码安装常见目录

[root@localhost apache]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs man  manual  	modules
[root@localhost apache]# 

bin  	 主要存放程序命令目录
conf  	 主要存放apache配置文件
httdocs  存放网页的目录
logs     存放日志的目录     
manual   完整文档
modules  apache的模块目录 如php mencache

Apache bin目录下常用的命令

[root@localhost ~]# cd /usr/local/apache/bin/
[root@localhost bin]# ll
total 1224
-rwxr-xr-x 1 root root  73952 Apr  3 16:47 ab
-rwxr-xr-x 1 root   40   3434 Apr  3 16:29 apachectl
-rwxr-xr-x 1 root   40  23877 Apr  3 16:29 apxs
-rwxr-xr-x 1 root root   8776 Apr  3 16:47 checkgid
-rwxr-xr-x 1 root   40   8925 Apr  3 16:29 dbmmanage
-rw-r--r-- 1 root   40   1071 Apr  3 16:29 envvars
-rw-r--r-- 1 root   40   1071 Apr  3 16:29 envvars-std
-rwxr-xr-x 1 root root  13888 Apr  3 16:47 fcgistarter
-rwxr-xr-x 1 root root  41032 Apr  3 16:47 htcacheclean
-rwxr-xr-x 1 root root  28176 Apr  3 16:47 htdbm
-rwxr-xr-x 1 root root  18272 Apr  3 16:47 htdigest
-rwxr-xr-x 1 root root  27608 Apr  3 16:47 htpasswd
-rwxr-xr-x 1 root root 912304 Apr  3 16:47 httpd
-rwxr-xr-x 1 root root  13832 Apr  3 16:47 httxt2dbm
-rwxr-xr-x 1 root root  14480 Apr  3 16:47 logresolve
-rwxr-xr-x 1 root root  27488 Apr  3 16:47 rotatelogs

ab      	   #Apache 性能测试工具
apachectl      #Apache 启动命令,它是一个脚
httpd		   #Apache 控制命令程序
htpasswd       #建立和更新基本认证文件,配置 ngios 等监控服务用到

http 常用参数

[root@localhost apache]# ./bin/httpd -v   查看版本信息
Server version: Apache/2.4.46 (Unix)
Server built:   Apr  3 2021 16:36:22
[root@localhost apache]# ./bin/httpd -V   查看详细信息

[root@localhost apache]# ./bin/httpd -l   查看静态编译的模块,列出核心中编译了哪些模块
Compiled in modules:
  core.c
  mod_so.c
  http_core.c
  worker.c
[root@localhost apache]# 
[root@localhost apache]# ./bin/httpd -M   输出一个已经启用的模块列表,包括静态编译在服务

[root@localhost apache]# ./bin/httpd -t  检查配置文件是否有语法错误
AH00112: Warning: DocumentRoot [/usr/local/apache/docs/dummy-host.example.com] does not exist
AH00112: Warning: DocumentRoot [/usr/local/apache/docs/dummy-host2.example.com] does not exist
Syntax OK

tar 解压工具命令

  • 常用几种格式
    • .tar.gz (tar)
    • .tar.bz2 (tar),需要安装bzip2安装包
    • .tar.xz (tar)
    • .zip (zip) 跨平台的,需要安装zip、unzip
  • 压缩比:gz<bz<xz (xz压缩效果最好,推荐使用tar.xz)
  • 常用压缩文件选项
    • -zcf 创建一个gz的文件压缩包
    • -jcf 创建一个bz2的文件压缩包
    • -Jcf 创建一个xz格式的文件压缩包
      -常用解压文件选项
    • -xf 解压指定文件(gz、xz用)
    • -xvf 解压指定文件并显示解压过程(gz、xz用)
    • -xjf 解压bz2文件的
  • 查看压缩的文件
    • -tvf 不解压查看一个文件
-c      创建归档
-z      压缩成gz格式
-j      压缩成bz2格式
-v      显示详细信息
-t      不解压查看压缩包内容
-f      指定要压缩或解压缩的文件
-x      解压缩
-C      将压缩文件解压到指定目录

查看cpu信息

[root@localhost httpd-2.4.46]# grep 'physical id' /proc/cpuinfo|sort -u|wc -l  查看物理cpu个数
1
[root@localhost httpd-2.4.46]# grep 'core id' /proc/cpuinfo |sort -u|wc -l  查看核心数量,即每个物理CPU中core的个数(即核数)
1

[root@localhost httpd-2.4.46]# grep 'processor' /proc/cpuinfo |sort -u|wc -l 查看线程数(逻辑CPU的个数)
1

[root@localhost ~]# dmidecode -s processor-version          查看cpu型号
 
[root@localhost ~]# cat /proc/cpuinfo      					查看 CPU 的详细信息

源码安装心得体会:

  • 通常使用RPM工具管理.rpm结尾的二进制包,而标准的.zip、tar结尾的源代码包则不能使用RPM工具去安装、卸载及升级。

  • 安装过程并不难,可以根据提示,使用yum安装相对应的安装包

  • 源码包安装有三个步骤:

    • ./configure 预编译,主要用于检测系统基准环境库是否满足,生成Makefile文件;
    • make 编译,基于第一步生成的makefile文件,进行源代码的编译;
    • make install 安装,编译完毕之后,将相关的可运行文件安装至系统中;
  • 使用make编译时,Linux操作系统必须有gcc编译器,用于编译源码。

  • 源码包安装通常需要./configure、make、make install三个步骤,某些特殊源码可以只有三步中的其中一个步骤,或者两个步骤。

  • 源码安装技巧:

    • make -j4 加速编译速度

猜你喜欢

转载自blog.csdn.net/weixin_42313749/article/details/115418935