免費(fèi)下載高清圖片素材的網(wǎng)站360營(yíng)銷(xiāo)平臺(tái)
????????在Ihternet 網(wǎng)絡(luò)環(huán)境中,Web 服務(wù)無(wú)疑是最為流行的應(yīng)用系統(tǒng)。有了Web站點(diǎn),企業(yè)可以充分 展示自己的產(chǎn)品,宣傳企業(yè)形象。Web站點(diǎn)還為企業(yè)提供了與客戶交流、電子商務(wù)交易平臺(tái)等豐富 的網(wǎng)絡(luò)應(yīng)用。部署與維護(hù)Web 服務(wù)是運(yùn)維工程師必須掌握的一個(gè)技能。 本章將介紹著名的Web網(wǎng)站服務(wù)—“Apache HTTP Server”的安裝及httpd服務(wù)的基本配置。
???????Apache HTTP Server是廣泛應(yīng)用的Web應(yīng)用系統(tǒng)之一,要運(yùn)用好它,必須先了解它的特點(diǎn)及其編譯安裝過(guò)程。
安裝httpd服務(wù)器
????????在配置 Apache 網(wǎng)站服務(wù)之前,需要正確安裝好httpd服務(wù)器軟件。httpd服務(wù)器的安裝可以選用?RPM安裝、源碼編譯安裝這兩種方式,前者相對(duì)比較簡(jiǎn)單、快速,但是在功能上存在一定的局限性。 在實(shí)際的生產(chǎn)環(huán)境中,使用源碼編譯安裝的方式要更加普遍。
1.準(zhǔn)備工作
為了避免發(fā)生端口沖突、程序沖突等現(xiàn)象,建議卸載使用RPM方式安裝的httpd。
把系統(tǒng)光盤(pán)先掛載到目錄 /mnt/[root@lgcllc ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 寫(xiě)保護(hù),將以只讀方式掛載
Apache的配置及運(yùn)行需要apr.pcre等軟件包的支持,因此應(yīng)從系統(tǒng)光盤(pán)鏡像中預(yù)先安裝這些軟 件及其開(kāi)發(fā)包(devel),以便提供相應(yīng)的庫(kù)和頭文件,確保Apache的安裝順利完成。
[root@lgcllc ~]# rpm -ivh /mnt/Packages/apr-1.4.8-3.el7_4.1.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/apr-devel-1.4.8-3.el7_4.1.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/expat-devel-2.1.0-10.el7_3.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/libdb-devel-5.3.21-24.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/openldap-devel-2.4.44-20.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/apr-util-devel-1.5.2-6.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/apr-util-1.5.2-6.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/pcre-devel-8.32-17.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/pcre-8.32-17.el7.x86_64.rpm
2.源代碼編譯及安裝
(1)解包
-連接FTP把httpd-2.4.25.tar.gz下載下來(lái)
[root@lgcllc ~]# wget --ftp-user=135 --ftp-password=123.123 ftp://172.16.37.13/軟件下載/y2/y2c/httpd-2.4.25.tar.gz-或者直接從主機(jī)鼠標(biāo)移過(guò)來(lái)
[root@lgcllc ~]# rz -E
rz waiting to receive.掛載到/usr/src目錄
[root@lgcllc ~]# tar zvxf httpd-2.4.25.tar.gz -C /usr/src
(2)配置
根據(jù)服務(wù)器的實(shí)際應(yīng)用需要,可以靈活設(shè)置不同的定制選項(xiàng),如指定安裝路徑、啟用字符集支 持等。
[root@lgcllc ~]# cd /usr/src/
[root@lgcllc src]# ls
debug httpd-2.4.25 kernels
[root@lgcllc httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-like --enable-cgi
上述配置命令中,各選項(xiàng)的含義如下。
--prefix:指定將httpd服務(wù)程序安裝到哪個(gè)目錄下,如/usr/local/httpd。
--enable-so:啟用動(dòng)態(tài)加載模塊支持,使httpd具備進(jìn)一步擴(kuò)展功能的能力。
--enable-rewrite:啟用網(wǎng)頁(yè)地址重寫(xiě)功能,用于網(wǎng)站優(yōu)化及目錄遷移維護(hù)。
--enable-charset-lite:啟動(dòng)字符集支持,以便支持使用各種字符集編碼的網(wǎng)頁(yè)。
--enable-cgi:啟用CGl腳本程序支持,便于擴(kuò)展網(wǎng)站的應(yīng)用訪問(wèn)能力。
(3)編譯及安裝
完成配置以后,執(zhí)行“make"命令進(jìn)行編譯,將源代碼轉(zhuǎn)換為可執(zhí)行的程序;然后執(zhí)行"make install” 命令完成最后的安裝過(guò)程;將編譯完的httpd程序及相關(guān)目錄、文件復(fù)制到預(yù)設(shè)的安裝目錄(由配置 時(shí)的“一-prefix”選項(xiàng)指定)。其中“make”的過(guò)程可能會(huì)需要較長(zhǎng)的時(shí)間。
[root@lgcllc httpd-2.4.25]#make
[root@lgcllc httpd-2.4.25]#make install
3.確認(rèn)安裝結(jié)果
????????由于指定的安裝目錄為/usr/local/httpd,因此 httpd服務(wù)的各種程序,模塊、幫助文件等都將復(fù)制到此目錄下。
[root@lgcllc ~]# ls /usr/loca/httpd/
bin cgi-bin error icons logs manual
build conf htdocs include man modules
在安裝后的/usr/local/httpd目錄下,主要子目錄的用途如下.
/usr/local/httpd/bin:存放httpd服務(wù)的各種執(zhí)行程序文件,包括主程序httpd、服務(wù)控制工 具apachectl等。
/usr/local/httpd/cgi-bin:存放各種CGl程序文件。
/usr/local/httpd/logs:存放httpd服務(wù)的日志文件。
/usr/local/httpd/conf:存放httpd服務(wù)的各種配置文件,包括主配置文件httpd.conf、增強(qiáng) 配置子目錄 extra 等。
/usr/local/httpd/htdocs:存放網(wǎng)頁(yè)文檔,包括默認(rèn)首頁(yè)文件 index.html等。 /usr/local/httpd/modules:存放httpd 服務(wù)的各種模塊文件。
4.優(yōu)化執(zhí)行路由
通過(guò)源碼編譯安裝的httpd服務(wù),程序路徑并不在默認(rèn)的搜索路徑中,為了使該服務(wù)在使用時(shí)更加方便,可以為相關(guān)程序添加符號(hào)鏈接,添加超鏈接。
[root@lgcllc httpd-2.4.25]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[root@lgcllc httpd-2.4.25]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
這樣,再執(zhí)行相關(guān)命令時(shí)就不用輸入冗長(zhǎng)的路徑了。例如,當(dāng)執(zhí)行“httpd-v”命令(用于查看 程序版本)時(shí),即相當(dāng)于執(zhí)行“/usr/local/httpd/bin/httpd-v”命令。
[root@lgcllc httpd-2.4.25]# httpd -v
Server version: Apache/2.4.25 (Unix)
Server built: Dec 9 2023 01:49:29
5.添加httpd系統(tǒng)服務(wù)
CentOS 7系統(tǒng)下,將編譯安裝的程序添加為系統(tǒng)服務(wù)有兩種方式:①通過(guò)chkconfig命令添加為 系統(tǒng)服務(wù),然后由systemctl進(jìn)行管理;②在/lib/systemd/system/目錄下,手動(dòng)編寫(xiě)以.service結(jié)尾 的單元(unit)配置文件。
(1)使用chkconfig添加系統(tǒng)服務(wù)
若希望將httpd添加為系統(tǒng)服務(wù),以便通過(guò)chkconfig進(jìn)行管理,需要建立可控的服務(wù)腳本,例如,可將apachectl腳本復(fù)制為/etc/init.d/httpd,并在文件開(kāi)頭添加chkconfig識(shí)別配置,然后將其 添加為標(biāo)準(zhǔn)的Linux系統(tǒng)服務(wù)。
[root@lgcllc ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@lgcllc ~]# vim /etc/init.d/httpd#!/bin/sh#chkconfig: 35 85 21 //服務(wù)識(shí)別參數(shù),在級(jí)別3、5中啟動(dòng);啟動(dòng)和關(guān)閉//的順序分別為85、21#description: Startup script for the Apache HTTP Server //服務(wù)描述信息[root@lgcllc ~]# chkconfig --add httpd //將httpd添加為系統(tǒng)服務(wù)
(2)建立[service].service配置文件
在/lib/systemd/system/目錄下,建立一個(gè)以.service結(jié)尾的單元(unit)配置文件,用于控制由 systemd控制或監(jiān)控的htpd服務(wù)。配置文件主要分為三個(gè)部分,控制單元[Unit]的定義,服務(wù)[Service] 的定義以及安裝部分[Install],具體內(nèi)容如下所示。
[root@lgcllc ~]# vim /lib/systemd/system/httpd.service
寫(xiě)入下面代碼:
[Unit]
Description=The Apache HTTP Server
After=network.target[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s[Intall]
WantedBy=graphical.target
配置文件的各配置項(xiàng)的作用如下所示
?> Description:設(shè)置服務(wù)單元描述字符串。
> After:設(shè)置服務(wù)單元的啟動(dòng)先后順序。例如,httpd.ervice 單元文件中出現(xiàn)“After= network.target“表示啟動(dòng)時(shí)先啟動(dòng)network.target.后啟動(dòng)httpd.service,關(guān)閉時(shí)順序相反。 與After字段相對(duì)應(yīng)的還有一個(gè)Before字段,如htpd.service 單元文件中出現(xiàn) “Before=network.target”表示啟動(dòng)時(shí)先啟動(dòng)httpd.service,后啟動(dòng)network.target.
>Type:設(shè)置服務(wù)進(jìn)程的啟動(dòng)類(lèi)型.需要注意的是,當(dāng)啟動(dòng)類(lèi)型為forking時(shí)需要同時(shí)設(shè)置PIDFile 配置項(xiàng),以幫助systemd準(zhǔn)確定位到服務(wù)的主進(jìn)程,
>PIDFile:設(shè)置服務(wù)的守護(hù)進(jìn)程的PID文件.
>ExecStart:設(shè)置服務(wù)啟動(dòng)時(shí)執(zhí)行的命令。
>ExecReload:設(shè)置服務(wù)重新加載時(shí)執(zhí)行的命令。
>KillMode:設(shè)置在單元停止時(shí),殺死進(jìn)程的方法。
>process表示僅殺死主進(jìn)程。
>Restart:設(shè)置服務(wù)進(jìn)程正常退出.異常退出、被殺死,超時(shí)的時(shí)候,是否重啟該服務(wù).on-failure 表示僅在進(jìn)程異常退出時(shí)重啟。
>RestartSec:設(shè)置在重啟服務(wù)前暫停多長(zhǎng)時(shí)間,默認(rèn)值是100毫秒(100ms). > WantedBy:設(shè)置該服務(wù)所在的Target(運(yùn)行目標(biāo))。
>WantedBy=graphical.target(圖形界面多 用戶系統(tǒng))是指,httpd 所在的Target是graphical.target,這個(gè)設(shè)置非常重要,因執(zhí)行systemctl enable httpd.service”命令時(shí),httpd.service 的符號(hào)鏈接就會(huì)放在/etc/systemd/system 目錄 下的graphical.terget.wants子目錄中。在系統(tǒng)進(jìn)入graphical,target 運(yùn)行目標(biāo)時(shí),該目錄下的 所有服務(wù)均開(kāi)機(jī)啟動(dòng)。該配置項(xiàng)常用的Target 除了 graphical.target之外,還有multi-user.target (非圖形界面多用戶系統(tǒng))。
[root@lgcllc ~]# systemctl enable httpd.service
[root@lgcllc ~]# systemctl is-enabled httpd.service
enabled
完成結(jié)果:
查看/usr/local/httpd/htdocs/index.html? 可以看到網(wǎng)頁(yè)的內(nèi)容
[root@lgcllc ~]# cat /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
客戶機(jī)直接訪問(wèn)服務(wù)器IP就可以進(jìn)入?