下面通过编译安装httpd来深入理解源码包安装(httpd-2.4.54)
//源码包建议到官方网站下载
[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]# ls apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
[root@lnh xbz]# ls 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-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]# ls apr-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 directory config.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.exp sed "s,^\(location=\).*$,\1installed," < apr-1-config > apr-config.out sed -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.out make[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-1 for 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]# ls bin 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/ total 4 drwxr-xr-x. 2 root root 4096 Jul 12 20:18 apr-1 lrwxrwxrwx. 1 root root 27 Jul 12 20:44 include -> /usr/local/src/apr/include/ 将头文件软链接到/usr/include目录下
折叠
[root@lnh xbz]# dnf -y install expat-devel libxml2-devel pcre-devel //需要先安装这个依赖 [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 [root@lnh xbz]# tar -xf apr-util-1.6.1.tar.gz [root@lnh xbz]# ls apr-1.7.0 apr-util-1.6.1 httpd-2.4.54.tar.gz apr-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]# ls aprutil.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-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 //生成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.exp 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 export_vars.c | sed -e "s/^\#[^!]*//" | sed -e "/^$/d" >> aprutil.exp sed "s,^\(location=\).*$,\1installed," < apu-1-config > apu-config.out make[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 for more 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]# ls bin 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]# ln -s /usr/local/src/apr-util/include/ /usr/include/apr -util //将头文件软链接到/usr/include目录下
折叠
[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.sh config.status: creating include/ap_config_auto.h config.status: executing default commands configure: summary of build options: Server Version: 2.4.54 Install 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/mappers" make[3]: Leaving directory "/root/xbz/httpd-2.4.54/modules/mappers" make[2]: Leaving directory "/root/xbz/httpd-2.4.54/modules" make[2]: Entering directory "/root/xbz/httpd-2.4.54/support" make[2]: Leaving directory "/root/xbz/httpd-2.4.54/support" make[1]: Leaving directory "/root/xbz/httpd-2.4.54" //编译生成Makefile文件,出现的一些没有读取到的问题没有关系,继续进行下一步 [root@lnh httpd-2.4.54]# make install ... Installing man pages and online manual mkdir /usr/local/src/httpd/man mkdir /usr/local/src/httpd/man/man1 mkdir /usr/local/src/httpd/man/man8 mkdir /usr/local/src/httpd/manual make[1]: Leaving directory "/root/xbz/httpd-2.4.54" //进行安装 [root@lnh httpd-2.4.54]# cd /usr/local/src/httpd/ [root@lnh httpd]# ls bin cgi-bin error icons logs manual build 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/httpd lrwxrwxrwx. 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/man MANDATORY_MANPATH /usr/local/share/man MANDATORY_MANPATH /usr/local/src/httpd/man //添加后面这一行 [root@lnh ~]# httpd AH00558: httpd: Could not reliably determine the server"s 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 ~]# 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端口
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 提前下载编译工具
SysV⻛格特点:
Upstart风格特点:
Systemd风格特点:
到此这篇关于apache编译安装httpd-2.4.54以及三种风格的init程序特点和区别的文章就介绍到这了,更多相关apache编译安装httpd-2.4.54内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!