王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

apache编译安装


镜像下载、域名解析、时间同步请点击

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

源码包编译实例

下面通过编译安装httpd来深入理解源码包安装(httpd-2.4.54)

下载编译工具,httpd以及其两个依赖包的源码包

//源码包建议到官方网站下载

[root@lnh ~]# mkdir xbz[root@lnh ~]# cd xbz/[root@lnh xbz]# dnf -y install gcc gcc-c++ make wget[root@lnh xbz]# wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.54.tar.gz[root@lnh xbz]# wget https://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz[root@lnh xbz]# wget https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz[root@lnh xbz]# lsapr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz

安装apr

[root@lnh xbz]# lsapr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz[root@lnh xbz]# tar -xf apr-1.7.0.tar.gz [root@lnh xbz]# ls apr-1.7.0 apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz//将apr解压到当前目录[root@lnh xbz]# cd apr-1.7.0/[root@lnh apr-1.7.0]# lsapr-config.in build-outputs.mk helpers misc strings

apr.dep CHANGES include mmap support

apr.dsp CMakeLists.txt libapr.dep network_io tables

apr.dsw config.layout libapr.dsp NOTICE test

apr.mak configure libapr.mak NWGNUmakefile threadproc

apr.pc.in configure.in libapr.rc passwd time

apr.spec docs LICENSE poll tools

atomic dso locks random user

build emacs-mode Makefile.in README

build.conf encoding Makefile.win README.cmake

buildconf file_io memory shmem

//进入这个源码包可以看见里面被解压出来的东西[root@lnh apr-1.7.0]# ./configure --prefix=/usr/local/src/apr

...

configure: creating ./config.status

config.status: creating Makefile

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 directoryconfig.status: executing default commands//生成Makefile

一般常用的有 --prefix=PREFIX 这个选项的意思是定义软件包安装到哪里

建议,源码包都是安装在/opt/目录下或者/usr/local/src目录下面

[root@lnh apr-1.7.0]# make

...

gcc -E -DHAVE_CONFIG_H -DLINUX -D_REENTRANT -D_GNU_SOURCE -I./include -I/root/xbz/apr-1.7.0/include/arch/unix -I./include/arch/unix -I/root/xbz/apr-1.7.0/include/arch/unix -I/root/xbz/apr-1.7.0/include -I/root/xbz/apr-1.7.0/include/private -I/root/xbz/apr-1.7.0/include/private export_vars.c | sed -e s/^\#[^!]*// | sed -e /^$/d >> apr.expsed s,^\(location=\).*$,\1installed, < apr-1-config > apr-config.outsed -e s,^\(apr_build.*=\).*$,\1/usr/local/src/apr/build-1, -e s,^\(top_build.*=\).*$,\1/usr/local/src/apr/build-1, < build/apr_rules.mk > build/apr_rules.outmake[1]: Leaving directory /root/xbz/apr-1.7.0//编译生成Makefile,此处虽然出现了make[1]: Leaving directory /root/xbz/apr-1.7.0,但是没关系可以继续进行下一步安装[root@lnh apr-1.7.0]# make install

...

/usr/bin/install -c -m 755 /root/xbz/apr-1.7.0/build/mkdir.sh /usr/local/src/apr/build-1for f in make_exports.awk make_var_export.awk; do \/usr/bin/install -c -m 644 /root/xbz/apr-1.7.0/build/${f} /usr/local/src/apr/build-1; \

done

/usr/bin/install -c -m 644 build/apr_rules.out /usr/local/src/apr/build-1/apr_rules.mk/usr/bin/install -c -m 755 apr-config.out /usr/local/src/apr/bin/apr-1-config//进行安装[root@lnh apr-1.7.0]# cd /usr/local/src/apr/[root@lnh apr]# lsbin build-1 include lib//进入apr的路径进行查看,默认情况下,系统搜索库文件的路径只有/lib,/usr/lib,我们需要进行修改在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中。此时库文件增添的搜索路径重启后有效,若要使用增添的路径立即生效则要使用ldconfig命令[root@lnh apr]# cd /etc/ld.so.conf.d/[root@lnh ld.so.conf.d]# echo /usr/local/src/apr/lib/ >apr.conf[root@lnh ld.so.conf.d]# cd -

/usr/local/src/apr

//切换到前一个工作目录[root@lnh apr]# ldconfig //使命令生效[root@lnh apr]# ln -s /usr/local/src/apr/include/ /usr/include/apr[root@lnh apr]# ll /usr/include/apr lrwxrwxrwx. 1 root root 27 Jul 12 20:31 /usr/include/apr -> /usr/local/src/apr/include///将头文件软链接到/usr/include目录下

安装apr-util

[root@lnh xbz]# dnf -y install expat-devel libxml2-devel pcre-devel//需要先安装这个依赖[root@lnh xbz]# lsapr-1.7.0 apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz[root@lnh xbz]# tar -xf apr-util-1.6.1.tar.gz [root@lnh xbz]# lsapr-1.7.0 apr-util-1.6.1 httpd-2.4.54.tar.gzapr-1.7.0.tar.gz apr-util-1.6.1.tar.gz//解压到当前目录[root@lnh xbz]# cd apr-util-1.6.1/[root@lnh apr-util-1.6.1]# lsaprutil.dep CHANGES include NWGNUmakefile

aprutil.dsp CMakeLists.txt ldap README

aprutil.dsw config.layout libaprutil.dep README.cmake

aprutil.mak configure libaprutil.dsp README.FREETDS

apr-util.pc.in configure.in libaprutil.mak redis

apr-util.spec crypto libaprutil.rc renames_pending

apu-config.in dbd LICENSE strmatch

buckets dbm Makefile.in test

build docs Makefile.win uri

build.conf encoding memcache xlate

buildconf export_vars.sh.in misc xml

build-outputs.mk hooks NOTICE

//进入源码包查看被解压出来的东西[root@lnh apr-util-1.6.1]# ./configure --prefix=/usr/local/src/apr-util --with-apr=/usr/local/src/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-configconfig.status: creating include/private/apu_select_dbm.hconfig.status: creating include/apr_ldap.hconfig.status: creating include/apu.hconfig.status: creating include/apu_want.h

config.status: creating test/Makefile

config.status: creating include/private/apu_config.hconfig.status: executing default commands//生成Makefile文件,需要伴随着上一个指定的依赖[root@lnh apr-util-1.6.1]# make

...

gcc -E -DHAVE_CONFIG_H -DLINUX -D_REENTRANT -D_GNU_SOURCE -I/root/xbz/apr-util-1.6.1/include -I/root/xbz/apr-util-1.6.1/include/private -I/usr/local/src/apr/include/apr-1 exports.c | grep "ap_hack_" | sed -e s/^.*[)]\(.*\);$/\1/ >> aprutil.expgcc -E -DHAVE_CONFIG_H -DLINUX -D_REENTRANT -D_GNU_SOURCE -I/root/xbz/apr-util-1.6.1/include -I/root/xbz/apr-util-1.6.1/include/private -I/usr/local/src/apr/include/apr-1 export_vars.c | sed -e s/^\#[^!]*// | sed -e /^$/d >> aprutil.expsed s,^\(location=\).*$,\1installed, < apu-1-config > apu-config.outmake[1]: Leaving directory /root/xbz/apr-util-1.6.1//编译生成的Makefile文件,出现make[1]: Leaving directory /root/xbz/apr-util-1.6.1这个没有关系可以继续进行下一步安装[root@lnh apr-util-1.6.1]# make install

...

See any operating system documentation about shared libraries formore information, such as the ld(1) and ld.so(8) manual pages.

----------------------------------------------------------------------

/usr/bin/install -c -m 644 aprutil.exp /usr/local/src/apr-util/lib/usr/bin/install -c -m 755 apu-config.out /usr/local/src/apr-util/bin/apu-1-config//进行安装[root@lnh apr-util-1.6.1]# cd /usr/local/src/apr-util/[root@lnh apr-util]# lsbin include lib//切换到apr-util安装目录进行查看,默认情况下,系统搜索库文件的路径只有/lib,/usr/lib,我们需要进行修改在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中。此时库文件增添的搜索路径重启后有效,若要使用增添的路径立即生效则要使用ldconfig命令[root@lnh apr-util]# cd /etc/ld.so.conf.d/[root@lnh ld.so.conf.d]# echo /usr/local/src/apr-util/ >apr-util.conf [root@lnh ld.so.conf.d]# cd -

/usr/local/src/apr-util

//切换到上一个工作目录[root@lnh apr-util]# ldconfig //使其生效[root@lnh apr-util]# ln -s /usr/local/src/apr-util/include/ /usr/include/apr-util[root@lnh apr-util]# ll /usr/include/apr-utillrwxrwxrwx. 1 root root 32 Jul 12 21:10 /usr/include/apr-util -> /usr/local/src/apr-util/include//将头文件软链接到/usr/include目录下

安装httpd

[root@lnh xbz]# tar -xf httpd-2.4.54.tar.gz [root@lnh xbz]# ls

apr-1.7.0 apr-util-1.6.1 httpd-2.4.54

apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz

//解压到当前目录

[root@lnh xbz]# cd httpd-2.4.54/[root@lnh httpd-2.4.54]# ls

ABOUT_APACHE CMakeLists.txt InstallBin.dsp README

acinclude.m4 config.layout LAYOUT README.CHANGES

Apache-apr2.dsw configure libhttpd.dep README.cmake

Apache.dsw configure.in libhttpd.dsp README.platforms

apache_probes.d docs libhttpd.mak ROADMAP

ap.d emacs-style LICENSE server

build httpd.dep Makefile.in srclib

BuildAll.dsp httpd.dsp Makefile.win support

BuildBin.dsp httpd.mak modules test

buildconf httpd.spec NOTICE VERSIONING

CHANGES include NWGNUmakefile

changes-entries INSTALL os

//查看被解压出来的东西

[root@lnh httpd-2.4.54]# ./configure --prefix=/usr/local/src/httpd --with-apr=/usr/local/src/apr --with-apr-util=/usr/local/src/apr-util

...

config.status: creating build/config_vars.shconfig.status: creating include/ap_config_auto.hconfig.status: executing default commandsconfigure: summary of build options:Server Version: 2.4.54Install prefix: /usr/local/src/httpd

C compiler: gcc

CFLAGS: -g -O2 -pthread

CPPFLAGS: -DLINUX -D_REENTRANT -D_GNU_SOURCE

LDFLAGS:

LIBS:

C preprocessor: gcc -E

//生成Makefile文件

[root@lnh httpd-2.4.54]# make

...

/usr/local/src/apr/build-1/libtool --silent --mode=link gcc -g -O2 -pthread -o mod_rewrite.la -rpath /usr/local/src/httpd/modules -module -avoid-version mod_rewrite.lo make[4]: Leaving directory /root/xbz/httpd-2.4.54/modules/mappersmake[3]: Leaving directory /root/xbz/httpd-2.4.54/modules/mappersmake[2]: Leaving directory /root/xbz/httpd-2.4.54/modulesmake[2]: Entering directory /root/xbz/httpd-2.4.54/supportmake[2]: Leaving directory /root/xbz/httpd-2.4.54/supportmake[1]: Leaving directory /root/xbz/httpd-2.4.54

//编译生成Makefile文件,出现的一些没有读取到的问题没有关系,继续进行下一步

[root@lnh httpd-2.4.54]# make install

...

Installing man pages and online manualmkdir /usr/local/src/httpd/manmkdir /usr/local/src/httpd/man/man1mkdir /usr/local/src/httpd/man/man8mkdir /usr/local/src/httpd/manualmake[1]: Leaving directory /root/xbz/httpd-2.4.54

//进行安装

[root@lnh httpd-2.4.54]# cd /usr/local/src/httpd/[root@lnh httpd]# lsbin cgi-bin error icons logs manualbuild conf htdocs include man modules

//切换到httpd的安装目录进行查看,默认情况下,系统搜索库文件的路径只有/lib,/usr/lib

[root@lnh httpd]# ln -s /usr/local/src/httpd/include/ /usr/include/httpd[root@lnh httpd]# ll /usr/include/httpdlrwxrwxrwx. 1 root root 29 Jul 12 21:23 /usr/include/httpd -> /usr/local/src/httpd/include///将头文件软链接到/usr/include目录下[root@lnh httpd]# echo "export PATH=$PATH:/usr/local/src/httpd/bin" > /etc/profile.d/httpd.sh[root@lnh httpd]# source /etc/profile.d/httpd.sh

//配置httpd的全局环境变量,并生成效果

[root@lnh httpd]# which httpd /usr/local/src/httpd/bin/httpd[root@lnh httpd]# vim /etc/man_db.conf

MANDATORY_MANPATH /usr/man

MANDATORY_MANPATH /usr/share/manMANDATORY_MANPATH /usr/local/share/manMANDATORY_MANPATH /usr/local/src/httpd/man

//添加后面这一行

[root@lnh ~]# httpdAH00558: httpd: Could not reliably determine the servers fully qualified domain name, using fe80::20c:29ff:fe57:f6f5%ens33\. Set the ServerName directive globally to suppress this message

httpd (pid 35719) already running

//启动服务

[root@lnh ~]# netstat -antp | grep httpd

tcp6 0 0 :::80 :::* LISTEN 35719/httpd

[root@lnh ~]# ss -antl

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

LISTEN 0 128 *:80 *:*

LISTEN 0 128 [::]:22 [::]:*

//查看端口

[root@lnh ~]# systemctl stop firewalld.service

//关闭防火墙

服务80端口

将httpd服务加入systemd

[root@lnh ~]# cd /usr/lib/systemd/system[root@lnh system]# cp sshd.service httpd.service[root@lnh system]# vim httpd.service[Unit]Description=httpd server daemon //服务After=network.target sshd-keygen.target[Service]Type=forkingExecStart=/usr/local/src/httpd/bin/httpd //服务安装的地方 开启ExecStop=/usr/local/src/httpd/bin/httpd -s stop //停止ExecReload=/bin/kill -HUP $MAINPID //重新加载并发出信号(对pid对组程序的进程号)可留可删[Install]WantedBy=multi-user.target[root@lnh system]# systemctl daemon-reload//重新加载一下并生效[root@lnh system]# systemctl status httpd.service httpd.service - httpd server daemonLoaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor >

Active: inactive (dead)

//查看一下是否有这个服务[root@lnh system]# ss -antlState Recv-Q Send-Q Local Address:Port Peer Address:Port ProcessLISTEN 0 128 0.0.0.0:22 0.0.0.0:*LISTEN 0 128 [::]:22 [::]:*//这里要确保之前的httpd这个80端口关了,此处没有就是关了[root@lnh system]# systemctl enable --now httpd.serviceCreated symlink /etc/systemd/system/multi-user.target.wants/httpd.service /usr/lib/systemd/system/httpd.service.//表示设置开机自启的同时候把它立刻启动[root@lnh system]# systemctl status httpd.service httpd.service - httpd server daemonLoaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor p>Active: active (running) since Tue 2022-07-12 23:15:02 CST; 2min 11s agoProcess: 36389 ExecStart=/usr/local/src/httpd/bin/httpd (code=exited, sta>Main PID: 36390 (httpd)Tasks: 82 (limit: 11205)Memory: 24.3MCGroup: /system.slice/httpd.service├─36390 /usr/local/src/httpd/bin/httpd├─36391 /usr/local/src/httpd/bin/httpd├─36392 /usr/local/src/httpd/bin/httpd└─36393 /usr/local/src/httpd/bin/httpdJul 12 23:15:02 lnh systemd[1]: Starting httpd server daemon...Jul 12 23:15:02 lnh httpd[36389]: AH00558: httpd: Could not reliably determ>Jul 12 23:15:02 lnh systemd[1]: Started httpd server daemon.//查看状态,发现启动了并且也设置了开机自启[root@lnh system]# ss -antlState Recv-Q Send-Q Local Address:Port Peer Address:Port ProcessLISTEN 0 128 0.0.0.0:22 0.0.0.0:*LISTEN 0 128 *:80 *:*LISTEN 0 128 [::]:22 [::]:*//查看80端口[root@lnh system]# systemctl disable httpd.serviceRemoved /etc/systemd/system/multi-user.target.wants/httpd.service.//关闭开机自启

源码编译报错信息处理

checking for APR... no

configure: error: APR not found. Please read the documentation.

//解决方案[root@lnh xbz]# wget https://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz[root@lnh xbz]# wget https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz

提前把这两个依赖包安装好才可以进行生成Makefile文件

无法进行生成两个依赖包的Makefile文件

//解决方案[root@lnh xbz]# dnf -y install gcc gcc-c++ make wget

提前下载编译工具

[root@lnh ~]# netstat -antp | grep httpd

-bash: netstat: command not found

//解决方案[root@lnh ~]# dnf provides netstatdnf -y install net-tools-2.0-0.52.20160912git.el8.x86_64//寻找需要的包并进行下载

本文转自:

https://www.cnblogs.com/tushanbu/p/16473452.html

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。