????????在Ihternet 網絡環境中,Web 服務無疑是最為流行的應用系統。有了Web站點,企業可以充分 展示自己的產品,宣傳企業形象。Web站點還為企業提供了與客戶交流、電子商務交易平臺等豐富 的網絡應用。部署與維護Web 服務是運維工程師必須掌握的一個技能。 本章將介紹著名的Web網站服務—“Apache HTTP Server”的安裝及httpd服務的基本配置。
???????Apache HTTP Server是廣泛應用的Web應用系統之一,要運用好它,必須先了解它的特點及其編譯安裝過程。
安裝httpd服務器
????????在配置 Apache 網站服務之前,需要正確安裝好httpd服務器軟件。httpd服務器的安裝可以選用?RPM安裝、源碼編譯安裝這兩種方式,前者相對比較簡單、快速,但是在功能上存在一定的局限性。 在實際的生產環境中,使用源碼編譯安裝的方式要更加普遍。
1.準備工作
為了避免發生端口沖突、程序沖突等現象,建議卸載使用RPM方式安裝的httpd。
把系統光盤先掛載到目錄 /mnt/[root@lgcllc ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 寫保護,將以只讀方式掛載
Apache的配置及運行需要apr.pcre等軟件包的支持,因此應從系統光盤鏡像中預先安裝這些軟 件及其開發包(devel),以便提供相應的庫和頭文件,確保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下載下來
[root@lgcllc ~]# wget --ftp-user=135 --ftp-password=123.123 ftp://172.16.37.13/軟件下載/y2/y2c/httpd-2.4.25.tar.gz-或者直接從主機鼠標移過來
[root@lgcllc ~]# rz -E
rz waiting to receive.掛載到/usr/src目錄
[root@lgcllc ~]# tar zvxf httpd-2.4.25.tar.gz -C /usr/src
(2)配置
根據服務器的實際應用需要,可以靈活設置不同的定制選項,如指定安裝路徑、啟用字符集支 持等。
[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
上述配置命令中,各選項的含義如下。
--prefix:指定將httpd服務程序安裝到哪個目錄下,如/usr/local/httpd。
--enable-so:啟用動態加載模塊支持,使httpd具備進一步擴展功能的能力。
--enable-rewrite:啟用網頁地址重寫功能,用于網站優化及目錄遷移維護。
--enable-charset-lite:啟動字符集支持,以便支持使用各種字符集編碼的網頁。
--enable-cgi:啟用CGl腳本程序支持,便于擴展網站的應用訪問能力。
(3)編譯及安裝
完成配置以后,執行“make"命令進行編譯,將源代碼轉換為可執行的程序;然后執行"make install” 命令完成最后的安裝過程;將編譯完的httpd程序及相關目錄、文件復制到預設的安裝目錄(由配置 時的“一-prefix”選項指定)。其中“make”的過程可能會需要較長的時間。
[root@lgcllc httpd-2.4.25]#make
[root@lgcllc httpd-2.4.25]#make install
3.確認安裝結果
????????由于指定的安裝目錄為/usr/local/httpd,因此 httpd服務的各種程序,模塊、幫助文件等都將復制到此目錄下。
[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服務的各種執行程序文件,包括主程序httpd、服務控制工 具apachectl等。
/usr/local/httpd/cgi-bin:存放各種CGl程序文件。
/usr/local/httpd/logs:存放httpd服務的日志文件。
/usr/local/httpd/conf:存放httpd服務的各種配置文件,包括主配置文件httpd.conf、增強 配置子目錄 extra 等。
/usr/local/httpd/htdocs:存放網頁文檔,包括默認首頁文件 index.html等。 /usr/local/httpd/modules:存放httpd 服務的各種模塊文件。
4.優化執行路由
通過源碼編譯安裝的httpd服務,程序路徑并不在默認的搜索路徑中,為了使該服務在使用時更加方便,可以為相關程序添加符號鏈接,添加超鏈接。
[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
這樣,再執行相關命令時就不用輸入冗長的路徑了。例如,當執行“httpd-v”命令(用于查看 程序版本)時,即相當于執行“/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系統服務
CentOS 7系統下,將編譯安裝的程序添加為系統服務有兩種方式:①通過chkconfig命令添加為 系統服務,然后由systemctl進行管理;②在/lib/systemd/system/目錄下,手動編寫以.service結尾 的單元(unit)配置文件。
(1)使用chkconfig添加系統服務
若希望將httpd添加為系統服務,以便通過chkconfig進行管理,需要建立可控的服務腳本,例如,可將apachectl腳本復制為/etc/init.d/httpd,并在文件開頭添加chkconfig識別配置,然后將其 添加為標準的Linux系統服務。
[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 //服務識別參數,在級別3、5中啟動;啟動和關閉//的順序分別為85、21#description: Startup script for the Apache HTTP Server //服務描述信息[root@lgcllc ~]# chkconfig --add httpd //將httpd添加為系統服務
(2)建立[service].service配置文件
在/lib/systemd/system/目錄下,建立一個以.service結尾的單元(unit)配置文件,用于控制由 systemd控制或監控的htpd服務。配置文件主要分為三個部分,控制單元[Unit]的定義,服務[Service] 的定義以及安裝部分[Install],具體內容如下所示。
[root@lgcllc ~]# vim /lib/systemd/system/httpd.service
寫入下面代碼:
[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
配置文件的各配置項的作用如下所示
?> Description:設置服務單元描述字符串。
> After:設置服務單元的啟動先后順序。例如,httpd.ervice 單元文件中出現“After= network.target“表示啟動時先啟動network.target.后啟動httpd.service,關閉時順序相反。 與After字段相對應的還有一個Before字段,如htpd.service 單元文件中出現 “Before=network.target”表示啟動時先啟動httpd.service,后啟動network.target.
>Type:設置服務進程的啟動類型.需要注意的是,當啟動類型為forking時需要同時設置PIDFile 配置項,以幫助systemd準確定位到服務的主進程,
>PIDFile:設置服務的守護進程的PID文件.
>ExecStart:設置服務啟動時執行的命令。
>ExecReload:設置服務重新加載時執行的命令。
>KillMode:設置在單元停止時,殺死進程的方法。
>process表示僅殺死主進程。
>Restart:設置服務進程正常退出.異常退出、被殺死,超時的時候,是否重啟該服務.on-failure 表示僅在進程異常退出時重啟。
>RestartSec:設置在重啟服務前暫停多長時間,默認值是100毫秒(100ms). > WantedBy:設置該服務所在的Target(運行目標)。
>WantedBy=graphical.target(圖形界面多 用戶系統)是指,httpd 所在的Target是graphical.target,這個設置非常重要,因執行systemctl enable httpd.service”命令時,httpd.service 的符號鏈接就會放在/etc/systemd/system 目錄 下的graphical.terget.wants子目錄中。在系統進入graphical,target 運行目標時,該目錄下的 所有服務均開機啟動。該配置項常用的Target 除了 graphical.target之外,還有multi-user.target (非圖形界面多用戶系統)。
[root@lgcllc ~]# systemctl enable httpd.service
[root@lgcllc ~]# systemctl is-enabled httpd.service
enabled
完成結果:
查看/usr/local/httpd/htdocs/index.html? 可以看到網頁的內容
[root@lgcllc ~]# cat /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
客戶機直接訪問服務器IP就可以進入?