在Internet網(wǎng)絡(luò)環(huán)境中,Web服務(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è)技能。
Windows搭建Web服務(wù)可以參考博文:Windows Server 2016 搭建IIS(web)服務(wù)
如果想要在CentOS 7 利用Apache搭建網(wǎng)站服務(wù),必須要了解的知識(shí)點(diǎn)有:
Apache的起源
1.Apache HTTP Server是開源軟件項(xiàng)目的杰出代表,基于標(biāo)準(zhǔn)的HTTP網(wǎng)絡(luò)協(xié)議提供網(wǎng)頁瀏覽服務(wù),Apache服務(wù)器可以運(yùn)行在Linux、UNIX、Windows等多種操作系統(tǒng)中;
2.Apache服務(wù)器是針對(duì)之前出現(xiàn)的若干個(gè)Web服務(wù)器程序進(jìn)行整合,完善后形成的軟件,其名稱來源于“A Patchy Server”,意思就是“基于原有Web服務(wù)程序的代碼進(jìn)行修改(補(bǔ)?。┖笮纬傻姆?wù)器程序”;
3.目前Apache項(xiàng)目一直由ASF負(fù)責(zé)管理和維護(hù)。ASF的官方網(wǎng)站是http://www.apache.org
Apache的主要特點(diǎn):
- 開放源代碼;
- 跨平臺(tái)應(yīng)用;
- 支持各種Web編程語言;
- 模塊化設(shè)計(jì);
- 運(yùn)行非常穩(wěn)定;
- 良好的安全性。
安裝httpd服務(wù)器
在配置Apache網(wǎng)站服務(wù)之前,需要正確安裝好httpd服務(wù)器軟件。httpd服務(wù)器的安裝可以選用RPM安裝、源碼編譯安裝這兩種方式。前者相對(duì)比較簡(jiǎn)單、快速,但是在功能上存在一定的局限性,在實(shí)際的生產(chǎn)環(huán)境中,使用源代碼編譯安裝的方式的方式要更加普遍。
本次實(shí)驗(yàn)將以下載的源碼包httpd-2.4.25.tar.gz為例,介紹安裝過程。(源碼包httpd-2.4.25.tar.gz可以到Linux公社資源站下載:
——————————————分割線——————————————
免費(fèi)下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2019年資料/8月/16日/CentOS 7 利用Apache搭建Web網(wǎng)站服務(wù)/
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
——————————————分割線——————————————
操作步驟:
具體實(shí)驗(yàn)步驟
一、準(zhǔn)備工作
為了避免發(fā)生端口沖突、程序沖突等現(xiàn)象,建議卸載使用RPM方式安裝的httpd。
[root@localhost ~]# rpm -e httpd --nodeps 錯(cuò)誤:未安裝軟件包 httpd
Apache的配置及運(yùn)行需要apr、pcre等軟件包的支持,因此應(yīng)從系統(tǒng)光盤鏡像中預(yù)先安裝這些軟件及其開發(fā)包(devel),以便提供相應(yīng)的支持,確保Apache的安裝順利完成。
需要的rpm軟件包有:
[root@localhost Packages]# rpm -ivh apr-1.4.8-3.el7.x86_64.rpm [root@localhost Packages]# rpm -ivh apr-devel-1.4.8-3.el7.x86_64.rpm [root@localhost Packages]# rpm -ivh cyrus-sasl-devel-2.1.26-20.el7_2.x86_64.rpm [root@localhost Packages]# rpm -ivh expat-devel-2.1.0-8.el7.x86_64.rpm [root@localhost Packages]# rpm -ivh libdb-devel-5.3.21-19.el7.x86_64.rpm [root@localhost Packages]# rpm -ivh openldap-devel-2.4.40-13.el7.x86_64.rpm [root@localhost Packages]# rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm [root@localhost Packages]# rpm -ivh apr-util-devel-1.5.2-6.el7.x86_64.rpm [root@localhost Packages]# rpm -ivh pcre-devel-8.32-15.el7_2.1.x86_64.rpm [root@localhost Packages]# rpm -ivh pcre-8.32-15.el7_2.1.x86_64.rpm
按照順利安裝完成。
二、源碼編譯安裝
將下載好的源代碼httpd-2.4.25.tar.gz上傳到服務(wù)器本地,接下來開始編譯安裝。
1.解包
[root@localhost ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src [root@localhost ~]# cd /usr/src/httpd-2.4.25/
2.配置
根據(jù)服務(wù)器的實(shí)際應(yīng)用需要,可以靈活設(shè)置不同的定制項(xiàng),若要獲知可用的各種配置選項(xiàng)及其含義,可以執(zhí)行“ ./configure –help”命令,“/”表示當(dāng)前目錄,下面配置一些最常用的配置項(xiàng):
[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
上述配置命令中,各選項(xiàng)的含義:
3.編譯及安裝
完成配置后,執(zhí)行“make”命令進(jìn)行編譯,將源代碼轉(zhuǎn)換為可執(zhí)行的程序;然后執(zhí)行“make install”命令完成最后的安裝過程。
[root@localhost httpd-2.4.25]# make && make install
三、確認(rèn)安裝目錄
由于指定的是安裝目錄為/usr/local/httpd,因此httpd服務(wù)的各種程序、模塊、幫助文件都將復(fù)制到此目錄下。
[root@localhost httpd-2.4.25]# ls /usr/local/httpd bin cgi-bin error icons logs manual build conf htdocs include man modules
在安裝后的/usr/local/httpd目錄下,主要子目錄的用途:
httpd服務(wù)的目錄結(jié)構(gòu):
主要的目錄和文件
服務(wù)目錄:/usr/local/httpd/
主配置文件:/usr/local/httpd/conf/httpd.conf
網(wǎng)頁目錄:/usr/local/httpd/htdocs/
服務(wù)腳本:/usr/local/httpd/bin/apachectl
執(zhí)行程序:/usr/local/httpd/bin/httpd
訪問日志: /usr/local/httpd/log/access_log
錯(cuò)誤日志: /usr/local/httpd/log/error_log
四、優(yōu)化執(zhí)行路徑
通過源碼安裝的httpd服務(wù),程序路徑并不在默認(rèn)的搜索路徑中,為了使該服務(wù)在使用時(shí)更加方便,可以為相關(guān)程序添加符號(hào)鏈接。
[root@localhost httpd-2.4.25]# ln -s /usr/local/httpd/bin/* /usr/local/bin [root@localhost httpd-2.4.25]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl lrwxrwxrwx. 1 root root 30 7月 13 19:20 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl lrwxrwxrwx. 1 root root 26 7月 13 19:20 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd
這樣在執(zhí)行相關(guān)的命令就不需要輸入冗長的路徑了。比如:
[root@localhost httpd-2.4.25]# httpd -v //查看程序版本 Server version: Apache/2.4.25 (Unix) Server built: Jul 13 2019 18:49:20
五、添加httpd系統(tǒng)服務(wù)
CentOS 7系統(tǒng)下,將編譯安裝的程序添加為系統(tǒng)服務(wù)有兩種方式:
①通過chkconfig命令添加為系統(tǒng)服務(wù),然后由systemctl進(jìn)行管理(注意,通過這種方式不能設(shè)置程序開機(jī)自啟動(dòng));
②在/lib/systemd/system/目錄下,手動(dòng)編寫以.service結(jié)尾的單元(unit)配置文件。
1)使用chkconfig添加系統(tǒng)服務(wù)
若希望將httpd添加為系統(tǒng)服務(wù),以便通過chkconfig進(jìn)行管理,需要建立可控的服務(wù)器腳本。
[root@localhost ~]# cp /usr/local/httpd//bin/apachectl /etc/init.d/httpd [root@localhost ~]# vim /etc/init.d/httpd //添加如下內(nèi)容 #!/bin/bash # 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ù)描述信息,可以忽略 ………… //忽略部分內(nèi)容 [root@localhost httpd-2.4.25]# chkconfig --add httpd \添加httpd為系統(tǒng)服務(wù) [root@localhost httpd-2.4.25]# systemctl start httpd //啟動(dòng)httpd服務(wù) [root@localhost httpd-2.4.25]# chkconfig --level 35 httpd on //設(shè)置httpd服務(wù)為開機(jī)自啟動(dòng) [root@localhost httpd-2.4.25]# systemctl is-enabled httpd httpd.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig httpd --level=5 enabled //查看httpd服務(wù)是否為開機(jī)自啟動(dòng),enabled為開機(jī)自啟動(dòng)
2)建立[service].service配置文件
在/lib/systemd/system/目錄下,建立一個(gè)以.service結(jié)尾的單元(unit)配置文件,用于控制httpd服務(wù)。配置內(nèi)容分為三部分:
①控制單元(unit)的定義;
②服務(wù)[service]的定義;
③安裝部分[install]。
具體內(nèi)容,如下:
[root@localhost ~]# vim /lib/systemd/system/httpd.service //填寫如下內(nèi)容 [Unit] Description=The Apache HTTP Server After=network.target [Service] Type=forking PIDFile=/usr/local/httpd/logs/httpd.pid ExecStart=/usr/local/httpd/bin/apachectl $OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=graphical.target
配置文件的個(gè)配置項(xiàng)的作用,如圖所示:
httpd.service文件編寫完成后,就可以設(shè)置開機(jī)自啟動(dòng)了
[root@localhost ~]# systemctl enable httpd //設(shè)置開機(jī)自啟動(dòng) Created symlink from /etc/systemd/system/graphical.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@localhost ~]# systemctl is-enabled httpd //查看自啟動(dòng)服務(wù)狀態(tài) enabled
通過Apache搭建的httpd服務(wù)已經(jīng)完成!客戶端就已經(jīng)可以訪問了,但是我們來認(rèn)識(shí)一些基本的配置:
一、配置并啟動(dòng)服務(wù)
1.配置httpd服務(wù)
編輯httpd服務(wù)的主配置文件httpd.conf,查找到配置項(xiàng)“ServerName”去除前面“#”號(hào)即可?。ㄈ绻泻戏ǖ挠蛎?,建議修改成合法的域名,將來通過域名訪問)
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf ………… //省略部分內(nèi)容 ServerName www.example.com:80 ………… //省略部分內(nèi)容
修改完成后,建議使用帶“-t”選項(xiàng)的apachectl命令對(duì)配置文件進(jìn)行語法檢查!
[root@localhost ~]# apachectl -t Syntax OK
2.啟動(dòng)httpd服務(wù)
[root@localhost ~]# systemctl start httpd //啟動(dòng)httpd服務(wù) [root@localhost ~]# netstat -anpt | grep httpd //查看監(jiān)聽端口 tcp6 0 0 :::80 :::* LISTEN 59183/httpd
二、部署網(wǎng)頁文檔
httpd服務(wù)器已提供了一個(gè)名為index.html的測(cè)試網(wǎng)頁,做為訪問網(wǎng)站的默認(rèn)首頁(可以自行編輯)!
[root@localhost ~]# cat /usr/local/httpd/htdocs/index.html <html><body><h1>It works!</h1></body></html>
三、客戶機(jī)訪問
客戶機(jī)通過IP訪問
如果需要使用https的方式訪問,則需要:
[root@localhost yum.repos.d]# yum -y install mod_ssl \安裝所選的ssl模塊 [root@localhost yum.repos.d]# systemctl restart httpd \重新啟動(dòng)httpd服務(wù)
客戶機(jī)訪問測(cè)試:
使用https訪問,默認(rèn)的首頁時(shí),將顯示APache官網(wǎng)首頁!
如果需要域名訪問,需要搭建DNS服務(wù),搭建DNS服務(wù)可以參考博文CentOS 7搭建DNS服務(wù)
四、查看Web站點(diǎn)的訪問情況
httpd服務(wù)器使用兩種類型的日志:訪問日志和錯(cuò)誤日志。
通過查看訪問日志文件access_log,可以及時(shí)了解Web站點(diǎn)的訪問情況。
訪問日志中每行對(duì)應(yīng)一條訪問記錄,記錄了客戶機(jī)的IP地址、訪問服務(wù)器的日期和時(shí)間、請(qǐng)求的網(wǎng)頁對(duì)象等信息。
[root@localhost ~]# tail /usr/local/httpd/logs/access_log 192.168.1.100 - - [13/Jul/2019:20:29:40 +0800] "GET / HTTP/1.1" 200 45
通過查看錯(cuò)誤日志err_log,可以為排查服務(wù)器運(yùn)行故障提供參考依據(jù)。
錯(cuò)誤日志文件中每行對(duì)應(yīng)一條錯(cuò)誤記錄,記錄了發(fā)生錯(cuò)誤的日期和時(shí)間、錯(cuò)誤事件類型、錯(cuò)誤時(shí)間的內(nèi)容描述等。
上述過程是使用Apache搭建Web服務(wù)器的基本步驟,其中涉及httpd.conf配置文件的改動(dòng)量非常少,要搭建一臺(tái)簡(jiǎn)單的Web服務(wù)器還是非常簡(jiǎn)單的。
我們來認(rèn)識(shí)httpd服務(wù)的主要配置文件及各項(xiàng)的含義:
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf ServerRoot "/usr/local/httpd" Listen 80 User daemon Group daemon ServerAdmin you@example.com ServerName www.example.com:80 DocumentRoot "/usr/local/httpd/htdocs" DirectoryIndex index.html ErrorLog "logs/error_log" LogLevel warn CustomLog "logs/access_log" common PidFile "logs/httpd.pid" AddDefaultCharset UTF-8 Include conf/extra/httpd-default.conf
上述設(shè)置行中,各全局配置項(xiàng)的含義,如圖:
以上配置項(xiàng)是Httpd.conf文件中主要的全局配置項(xiàng),還有很多其他的配置項(xiàng),在此就不一一介紹了,如果有需要可以查看Apache服務(wù)器中的相關(guān)幫助手冊(cè)。