使用源碼在CentOS 7下安裝 apache 2.4.39,之前趟了一遍,簡單做個筆記。
STEP 1 安裝apr
STEP 1.1 檢查是否安裝apr
[root@study ~]# yum list apr # 如果沒有安裝, 則進入STEP 1.2; # 查看apr的位置 [root@study ~]# whereis apr apr: /usr/local/apr
STEP 1.2 安裝apr
[root@study ~]# cd source [root@study source]# wget http://DOWNLOAD/apr-1.7.0.tar.gz # DOWNLOAD 替換相應的鏡像 [root@study source]# tar -xzvf apr-1.7.0.tar.gz [root@study source]# cd apr-1.7.0 [root@study apr-1.7.0]# ./configure --prefix=/usr/local/apr [root@study apr-1.7.0]# make && make install
STEP 2 安裝libxml2
由於apahce 依賴的apr-util.1.6.1依賴libxml2庫,如果沒有安裝libxml2庫,則在apache的配置中會有如下錯誤產生:
usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_GetErrorCode' /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetEntityDeclHandler' /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserCreate' /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetCharacterDataHandler' /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserFree' /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetUserData' /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_StopParser' /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_Parse' /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ErrorString' /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetElementHandler' collect2: error: ld returned 1 exit status make[2]: *** [htpasswd] 錯誤 1 make[2]: 離開目錄“/opt/source/apache.httpd/httpd-2.4.39/support” make[1]: *** [all-recursive] 錯誤 1 make[1]: 離開目錄“/opt/source/apache.httpd/httpd-2.4.39/support” make: *** [all-recursive] 錯誤 1
STEP 2.1 檢查是否安裝 libxml2
[root@study ~]# yum list libxml2 # 如果沒有安裝則,進行libxml2安裝 [root@study ~]# yum install libxml2-devel
STEP 3 安裝expat
如果沒有安裝expat,可能在安裝apr-util中會報如下錯誤:
xml/apr_xml.c:35:19: 致命錯誤:expat.h:沒有那個文件或目錄 #include <expat.h>
STEP 3.1 檢查是否安裝expat
[root@study ~]# yum list expat # 如果沒有安裝則進行安裝 [root@study ~]# yum install expat-devel
STEP 4 安裝apr-util
STEP 4.1 檢查是否安裝apr-util
[root@study ~]# yum list apr-util # 如果沒有安裝則進入 STEP 4.2 進行安裝 [root@study ~]# whereis apr-util apr-util: /usr/local/apr-util
STEP 4.2 安裝apr-util
[root@study ~]# cd source [root@study source]# wget http://DOWNLOAD/apr-util-1.6.1.tar.gz [root@study source]# tar -xzvf apr-util-1.6.1.tar.gz [root@study source]# cd apr-util.1.6.1 [root@study apr-util.1.6.1]# ./configure --prefix=/usr/local/apr-util [root@study aapr-util.1.6.1]# make && make install
STEP 5 安裝pcre
STEP 5.1 檢查是否安裝pcre
[root@study ~]# yum list pcre # 如果沒有安裝,則進入 STEP 5.2 進行安裝 [root@study ~]# whereis pcre pcre: /usr/include/pcre.h /usr/local/pcre /usr/share/man/man3/pcre.3.gz
STEP 5.2 安裝pcre
[root@study ~]# cd source [root@study ~]# url=https://jaist.dl.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz [root@study source]# wget ${url} [root@study source]# tar -xzvf pcre-8.43.tar.gz [root@study source]# cd pcre-8.43 [root@study pcre-8.43]# ./configure --prefix=/usr/local/pcre [root@study pcre-8.43]# make && make install
STEP 6 安裝apache
[root@study source]# tar -xzvf http-2.4.39.tar.gz [root@study source]# cd httpd-2.4.39 [root@study httpd-2.4.39]# ./configure --prefix=/usr/local/apache24 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre [root@study httpd-2.4.39]# make && make install
STEP 7 設置service文件
[root@study ~]# cd /usr/lib/systemd/system [root@study system]# vim httpd.service [Unit] Description=Apache 2.4.39 After=network.target After=syslog.target [Service] Type=forking ExecStart=/usr/local/apache24/bin/apachectl -k start ExecStop=/usr/local/apache24/bin/apachectl -k stop ExecReload=/usr/local/apache24/bin/apachectl -k restart [Install] WantedBy=multi-user.target Alias=http.service
STEP 8 設置防火牆以及開機啟動
# 允許開放http服務 [root@study ~]# firewall-cmd --permanent --add-service=http # 打開http服務的80 tcp端口 [root@study ~]# firewall-cmd --permanent --add-port=80/tcp # 重新加載防火牆規則 [root@study ~]# firewall-cmd --reload # 重新啟動apach [root@study ~]# systemctl restart httpd.service # 設置開機啟動 [root@study ~]# systemctl enable httpd.service