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
- 测试:
总结
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 加速编译速度