Apache 源码安装详细教程

简介: 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:



[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安装包:


[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


  • 测试:


image.png


总结



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端口的域名监听


  • 如图:


image.png


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 加速编译速度


相关文章
|
7月前
|
前端开发 Java Apache
Apache Zeppelin系列教程第七篇——运行paragraph的整个流程分析
Apache Zeppelin系列教程第七篇——运行paragraph的整个流程分析
87 0
|
7月前
|
SQL Java 数据库连接
Apache Zeppelin系列教程第四篇——JDBCInterpreter原理分析
Apache Zeppelin系列教程第四篇——JDBCInterpreter原理分析
74 0
|
7月前
|
Web App开发 前端开发 Java
Apache Zeppelin系列教程第二篇——整体架构
Apache Zeppelin系列教程第二篇——整体架构
171 0
|
7月前
|
SQL 分布式计算 数据可视化
Apache Zeppelin系列教程第一篇——安装和使用
Apache Zeppelin系列教程第一篇——安装和使用
376 0
|
7月前
|
SQL Java 数据库连接
Apache Zeppelin系列教程第十篇——SQL Debug In Zeppelin
Apache Zeppelin系列教程第十篇——SQL Debug In Zeppelin
114 0
|
7月前
|
算法 NoSQL Java
Apache Zeppelin系列教程第八篇——LRU算法在Apache Zeppelin中的应用
Apache Zeppelin系列教程第八篇——LRU算法在Apache Zeppelin中的应用
68 0
|
7月前
|
Java 数据库连接 Shell
Apache Zeppelin系列教程第六篇——Zengine调用Interpreter原理分析
Apache Zeppelin系列教程第六篇——Zengine调用Interpreter原理分析
127 0
|
6月前
|
安全 Java 测试技术
Windows电脑安装Apache JMeter的详细教程
本文介绍了在Windows上安装Apache JMeter的步骤。首先,需确保安装Java JDK并配置环境变量。然后,从JMeter官网下载ZIP文件,解压至指定目录,并同样配置JMeter的环境变量。验证安装成功后,可通过命令行以GUI或非GUI模式启动JMeter,进行性能测试。
|
3月前
|
Java API Apache
从零到英雄的蜕变:如何用Apache Wicket打造你的第一个Web应用——不仅是教程,更是编程之旅的启航
【9月更文挑战第4天】学习Apache Wicket这一开源Java Web应用框架是一段激动人心的旅程。本文将指导你通过Maven搭建环境,并创建首个“Hello, World!”应用。从配置`pom.xml`到实现`HelloWorldApplication`类,再到`web.xml`的设置,一步步教你构建与部署简单网页。适合初学者快速上手,体验其简洁API与强大组件化设计的魅力。
92 1
|
4月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
226 0

推荐镜像

更多