apache編譯安裝
原始碼包編譯例項
下載編譯工具,httpd以及其兩個依賴包的原始碼包
[root@lnh ~]# mkdir xbz [root@lnh ~]# cd xbz/ [root@lnh xbz]# dnf -y install gcc gcc-c++ make wget [root@lnh xbz]# wget [root@lnh xbz]# wget [root@lnh xbz]# wget [root@lnh xbz]# ls apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
安裝apr
[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 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]# 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]# 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-util lrwxrwxrwx. 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.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 ~]# 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 //關閉防火牆
將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=forking ExecStart=/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 daemon Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor > Active: inactive (dead) //檢視一下是否有這個服務 [root@lnh system]# 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 [::]:22 [::]:* //這裡要確保之前的httpd這個80埠關了,此處沒有就是關了 [root@lnh system]# systemctl enable --now httpd.service Created 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 daemon Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor p> Active: active (running) since Tue 2022-07-12 23:15:02 CST; 2min 11s ago Process: 36389 ExecStart=/usr/local/src/httpd/bin/httpd (code=exited, sta> Main PID: 36390 (httpd) Tasks: 82 (limit: 11205) Memory: 24.3M CGroup: /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/httpd Jul 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 -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 [::]:* //檢視80埠 [root@lnh system]# systemctl disable httpd.service Removed /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 [root@lnh xbz]# wget 提前把這兩個依賴包安裝好才可以進行生成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 netstat dnf -y install net-tools-2.0-0.52.20160912git.el8.x86_64 //尋找需要的包並進行下載
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70003733/viewspace-2906182/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CentOS 下編譯安裝 apacheCentOS編譯Apache
- CentOS 6.4 編譯安裝 apacheCentOS編譯Apache
- Centos7編譯安裝Apache教程。CentOS編譯Apache
- 如何進行Apache的編譯安裝Apache編譯
- Ubuntu 18.04系統編譯安裝Apache教程。Ubuntu編譯Apache
- Ubuntu 20.04系統編譯安裝Apache教程。Ubuntu編譯Apache
- CDH impala for Apache HADOOP 安裝編譯步驟.ApacheHadoop編譯
- Debian11系統編譯安裝Apache教程。編譯Apache
- CentOS 下編譯安裝 PHP7.2(apache 版)CentOS編譯PHPApache
- Ubuntu 16.04原始碼編譯安裝Apache 2.4.25教程Ubuntu原始碼編譯Apache
- Centos7下原始碼編譯安裝apacheCentOS原始碼編譯Apache
- Centos8 stream系統編譯安裝Apache教程。CentOS編譯Apache
- 編譯安裝zabbix編譯
- 安裝編譯ffmpeg編譯
- Griffin編譯安裝編譯
- 編譯安裝nmon編譯
- swoole 編譯安裝編譯
- ffmpeg安裝之linux編譯安裝Linux編譯
- httpd編譯安裝phphttpd編譯PHP
- Shell編譯安裝nginx編譯Nginx
- Linux 編譯安裝 PythonLinux編譯Python
- Linux編譯安裝NginxLinux編譯Nginx
- centos PHP 編譯安裝CentOSPHP編譯
- PHP Linux安裝擴充套件(編譯安裝)PHPLinux套件編譯
- 【MySQL安裝】Linux下安裝MySQL(預編譯)MySqlLinux編譯
- 反編譯之安裝Apktool編譯APK
- Xopsed的編譯與安裝編譯
- Linux 編譯 安裝 PHP 7.3.1Linux編譯PHP
- windows下編譯安裝thriftWindows編譯
- ubuntu編譯安裝pcl教程。Ubuntu編譯
- ubuntu編譯安裝kernel教程。Ubuntu編譯
- PHP7 編譯安裝PHP編譯
- CentOS 下編譯安裝 NginxCentOS編譯Nginx
- 原始碼編譯安裝Redis原始碼編譯Redis
- macOS nginx 編譯安裝教程MacNginx編譯
- 如何在CentOS7安裝Node?(編譯安裝)CentOS編譯
- linux源瑪包編譯安裝Linux編譯
- Centos8編譯安裝核心CentOS編譯