apache、tomcat 與 nginx

一、背景

此處的apache指的是Apache軟件基金會下的一個項目——Apache HTTP Server Project

從計算機層面上來說,除了硬件就是軟件,可以說除了我們能看到的實物之外剩下的都是軟件,說白了,這三個也沒有什麼特殊,就是三個應用軟件而已,只不過他們的作用比較大和應用較廣泛罷了。

寬泛來說,三者都屬於Web Server,也就是HTTP server,說是server(服務器),本質上也是一種應用程序——它通常運行在服務器之上,綁定服務器的IP地址並監聽某一個tcp端口來接收並處理HTTP請求,這樣客戶端(一般來說是IE, Firefox,Chrome這樣的瀏覽器)就能夠通過HTTP協議來獲取服務器上的網頁(HTML格式)、文檔(PDF格式)、音頻(MP4格式)、視頻(MOV格式)等等資源。下圖描述的就是這一過程:
在這裏插入圖片描述

嚴格來說,Apache/Nginx 應該叫做「HTTP Server」;而 Tomcat 則是一個「Application Server」,或者更準確的來說,是一個「Servlet/JSP」應用的容器(Ruby/Python 等其他語言開發的應用也無法直接運行在 Tomcat 上)。

二、簡單對比

1. 定義
  1. ApacheApache HTTP服務器是一個模塊化的服務器,可以運行在幾乎所有廣泛使用的計算機平臺上。其屬於應用服務器。Apache支持支持模塊多,性能穩定,Apache本身是靜態解析,適合靜態HTML、圖片等,但可以通過擴展腳本、模塊等支持動態頁面等。
    (Apche可以支持PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache後臺支撐,將Java請求由Apache轉發給Tomcat處理。)
    缺點:配置相對複雜,自身不支持動態頁面。
  2. Tomcat:Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認爲是Apache的擴展,但是可以獨立於Apache運行。
  3. NginxNginx是俄羅斯人編寫的十分輕量級的HTTP服務器,Nginx,它的發音爲“engine X”,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。
2. 比較
  1. Apache與Tomcat的比較
    相同點:
    1)兩者都是Apache組織開發的
    2)兩者都有HTTP服務的功能
    3)兩者都是免費的
    不同點:
    1)Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等),而Tomcat是Apache組織在符合Java EE的JSP、Servlet標準下開發的一個JSP服務器。
    2)Apache是一個Web服務器環境程序,啓用他可以作爲Web服務器使用,不過只支持靜態網頁如(ASP,PHP,CGI,JSP)等動態網頁的就不行。如果要在Apache環境下運行JSP的話就需要一個解釋器來執行JSP網頁,而這個JSP解釋器就是Tomcat。
    3)Apache:側重於HTTPServer ,Tomcat:側重於Servlet引擎,如果以Standalone方式運行,功能上與Apache等效,支持JSP,但對靜態網頁不太理想;
    4)Apache是Web服務器,Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認爲是Apache的擴展,但是可以獨立於Apache運行。
    5)實際使用中Apache與Tomcat常常是整合使用:
    如果客戶端請求的是靜態頁面,則只需要Apache服務器響應請求。
    如果客戶端請求動態頁面,則是Tomcat服務器響應請求。
    因爲JSP是服務器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷。
    可以理解Tomcat爲Apache的一種擴展。

  2. Nginx與Apache比較
    1)nginx相對於apache的優點
    輕量級,同樣起web 服務,比apache佔用更少的內存及資源
    抗併發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高性能
    高度模塊化的設計,編寫模塊相對簡單
    提供負載均衡
    社區活躍,各種高性能模塊出品迅速
    2)apache 相對於nginx 的優點
    apache的 rewrite 比nginx 的強大;
    支持動態頁面;
    支持的模塊多,基本涵蓋所有應用;
    性能穩定,而nginx相對bug較多。
    3)兩者優缺點比較
    Nginx 配置簡潔, Apache 複雜;
    Nginx 靜態處理性能比 Apache 高 3倍以上;
    Apache 對 PHP 支持比較簡單,Nginx 需要配合其他後端用;
    Apache 的組件比 Nginx 多;
    apache是同步多進程模型,一個連接對應一個進程;
    nginx是異步的,多個連接(萬級別)可以對應一個進程;
    nginx處理靜態文件好,耗費內存少;
    動態請求由apache去做,nginx只適合靜態和反向;
    Nginx適合做前端服務器,負載性能很好;
    Nginx本身就是一個反向代理服務器 ,且支持負載均衡

3. 總結

Nginx優點:負載均衡、反向代理、處理靜態文件優勢。nginx處理靜態請求的速度高於apache;

Apache優點:相對於Tomcat服務器來說處理靜態文件是它的優勢,速度快。Apache是靜態解析,適合靜態HTML、圖片等。

Tomcat:動態解析容器,處理動態請求,是編譯JSP\Servlet的容器,Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到後臺交由Tomcat進行處理。

Apache在處理動態有優勢,Nginx併發性比較好,CPU內存佔用低,如果rewrite頻繁,那還是Apache較適合。

三、詳細解釋

什麼是nginx

nginx is a free,open-source,high-performance http server and reverse proxy,as well as an IMAP/POP3 proxy.通俗的說Nginx提供web服務,反向代理,以及IMAP/POP3代理,那麼什麼是web服務?反向代理?IMAP/POP3代理?

web服務:服務端通過網絡可以提供給客戶端所請求的資源,

反向代理:代表資源服務器來回應客戶端的請求(或者正向代理的請求),至於資源服務器爲什麼不自己迴應,想想被告與被告律師的關係(被告的律師看做反向代理,被告是什麼?自己猜吧(ˇˍˇ) 想~),正向代理是什麼?原告的代理律師就是正向代理)

IMAP/POP3:是一種stream傳輸協議,常常被用來做一些郵件傳輸

IMAP:Internet Mail Access Protocol 是一種交互式的郵件郵件傳輸協議,交互式說的就是客戶端可以和服務端針對郵件的各種操作同步,一份郵件,客戶端有,服務端也有,客戶端有什麼操作會同步到服務端,反之亦然。

POP3:Post Office Protocol 3郵件傳輸協議相比IMAP協議只是服務器不保留郵件,一旦給了客戶端,自行刪除對應的郵件,客戶端對郵件的各種操作與服務器無關
在這裏插入圖片描述
在這裏插入圖片描述
Porxy&reverseProxy
(注意代理的概念只要把握準正向和反向都是以客戶端爲參考的,從客戶端出的是正向,客戶端接受的是反向)
學習一個東西首先要了解其框架架構,最初是出於什麼目的設計,爲解決什麼問題,以及怎樣設計是最重要的,所以下面的重點就是這些:
爲什麼會出現nginx或者其他相似功能的web服務,一方面是因爲http的歷史侷限型,而最重要的還是C10K問題,高併發訪問,好吧什麼歷史侷限型,說的通俗點就是httpd(apache)老了不太能適應現在的網絡環境了,畢竟人家Apache是95年的東西了,現代的計算機網絡已經和當時遠遠不同了,倒不如說現在還大量使用httpd已經是一個小奇蹟了(之所以不說奇蹟,就擔心較真的人太過在意,畢竟做it較真的人還是很多大的,畢竟我就是一個較真的人),還有一個問題C10K,什麼意思?The C10k problem is the problem of optimising network sockets to handle a large number of clients at the same time.The name C10k is a numeronym for concurrently handling ten thousand connections.Apache的致命缺陷就是同時不可以處理一萬個請求(建立套接字處理),對電商站點的影響很大~~

Nginx戰鬥民族設計的一款輕量級的web服務,免費開源,高性能:
在這裏插入圖片描述
nginxArchitecture

一個master進程負責生產各種子進程,爲什麼要說是各種?緣由在於其每個子進程所具有的功能可以是nginx所有功能的一部分,也可以是全部。這個在於我們背鍋俠的設置了,當然nginx的一些基本功能,每個子進程是必須要有的。看到連接後端的HTTP,FastCGI以及memcache了麼,這些都是連接後端服務器(也叫Backend)的協議,HTTP協議,FastCGI協議以及memcached分佈式緩存系統。

什麼是Tomcat?

是由Apache軟件基金會下屬的Jakarta項目開發的一個Servlet容器,實現了對Servlet和JavaServer Page(JSP)的支持,並提供了作爲Web服務器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。由於Tomcat本身也內含了一個HTTP服務器,它也可以被視作一個單獨的Web服務器。但是,不能將Tomcat和Apache HTTP服務器混淆,Apache HTTP服務器是一個用C語言實現的HTTPWeb服務器;這兩個HTTP web server不是捆綁在一起的。Apache Tomcat包含了一個配置管理工具,也可以通過編輯XML格式的配置文件來進行配置。

Servlet(Server Applet),全稱Java Servlet。是用Java編寫的服務器端程序。其主要功能在於交互式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,一般情況下,人們將Servlet理解爲後者。

Servlet運行於支持Java的應用服務器中。從實現上講,Servlet可以響應任何類型的請求,但絕大多數情況下Servlet只用來擴展基於HTTP協議的Web服務器。最早支持Servlet標準的是JavaSoft的Java Web Server。

通用Servlet

一般來說,通用Servlet由javax.servlet.GenericServlet實作Servlet界面。程序設計人員可以通過使用或繼承這個類來實現通用Servlet應用。

HttpServlet

javax.servlet.http.HttpServlet實現了專門用於響應HTTP請求的Servlet,提供了響應對應HTTP標準請求的doGet()、doPost()等方法。

生命週期

當servlet被部署在應用服務器中(應用服務器中用於管理Java組件的部分被抽象成爲容器)以後,由容器控制servlet的生命週期。除非特殊指定,否則在容器啓動的時候,servlet是不會被加載的,servlet只會在第一次請求的時候被加載和實例化。servlet一旦被加載,一般不會從容器中刪除,直至應用服務器關閉或重新啓動。但當容器做內存回收動作時,servlet有可能被刪除。也正是因爲這個原因,第一次訪問servlet所用的時間要大大多於以後訪問所用的時間。

servlet在服務器的運行生命週期爲,在第一次請求(或其實體被內存垃圾回收後再被訪問)時被加載並執行一次初始化方法,跟着執行正式運行方法,之後會被常駐並每次被請求時直接執行正式運行方法,直到服務器關閉或被清理時執行一次銷燬方法後實體銷燬。

與JSP的關係

Java服務器頁面(JSP)是HttpServlet的擴展。由於HttpServlet大多是用來響應HTTP請求,並返回Web頁面(例如HTML、XML),所以不可避免地,在編寫servlet時會涉及大量的HTML內容,這給servlet的書寫效率和可讀性帶來很大障礙,JSP便是在這個基礎上產生的。其功能是使用HTML的書寫格式,在適當的地方加入Java代碼片段,將程序員從複雜的HTML中解放出來,更專注於servlet本身的內容。

JSP在首次被訪問的時候被應用服務器轉換爲servlet,在以後的運行中,容器直接調用這個servlet,而不再訪問JSP頁面。JSP的實質仍然是servlet。

JSP(全稱JavaServer Pages)是由Sun Microsystems公司倡導和許多公司參與共同創建的一種使軟件開發者可以響應客戶端請求,而動態生成HTML、XML或其他格式文檔的Web網頁的技術標準。JSP技術是以Java語言作爲腳本語言的,JSP網頁爲整個服務器端的Java庫單元提供了一個接口來服務於HTTP的應用程序。

JSP使Java代碼和特定的預定義動作可以嵌入到靜態頁面中。JSP句法增加了被稱爲JSP動作的XML標籤,它們用來調用內建功能。另外,可以創建JSP標籤庫,然後像使用標準HTML或XML標籤一樣使用它們。標籤庫提供了一種和平臺無關的擴展服務器性能的方法。

JSP被JSP編譯器編譯成Java Servlets。一個JSP編譯器可以把JSP編譯成JAVA代碼寫的servlet然後再由JAVA編譯器來編譯成機器碼,也可以直接編譯成二進制碼。

SP和Servlets

從架構上說,JSP可以被看作是從Servlets高級提煉而作爲JAVA Servlet 2.1 API的擴展而應用。Servlets和JSP最早都是由Sun Microsystems(太陽公司)開發的。從JSP1.2版本以來,JSP處於Java Community Process開發模式下。

靜態數據在輸入文件中的內容和輸出給HTTP響應的內容完全一致。此時,該JSP輸入文件會是一個沒有內嵌JAVA或動作的HTML頁面。而且,客戶端每次請求都會得到相同的響應內容。

什麼是apache?

互聯網這個歷史已經不算很短了,它大大方便了人類獲取信息,開闊了人類的眼界,使得讓這個世界變得小了起來,人與人之間的距離感也不會存在了,娛樂也更加豐富,聽音樂、看電影等等這一系列,都能從網上進行,這些功能,都是由www服務器來提供服務,在Linux中,提供網絡的服務器有很多種,那麼今天我們就講一個比較老牌,且依然能存活的服務器“阿帕奇”英文:Apache。

1. Apache簡介

Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源代碼的網頁服務器軟件,可以在大多數電腦操作系統中運行,由於其跨平臺和安全性。被廣泛使用,是最流行的Web服務器軟件之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。

2. 特性

Apache支持許多特性,大部分通過編譯的模塊實現。這些特性從服務器端的編程語言支持到身份認證方案。一些通用的語言接口支持Perl,Python,Tcl, 和PHP。流行的認證模塊包括mod_access,mod_auth和mod_digest。其他的例子有SSL和TLS支持(mod_ssl),代理服務器(proxy)模塊,很有用的URL重寫(由mod_rewrite實現),定製日誌文件(mod_log_config),以及過濾支持(mod_include和mod_ext_filter)。Apache日誌可以通過網頁瀏覽器使用免費的腳本AWStats或Visitors來進行分析。

3. 工作流程

Apache工作在應用層,是實現http協議的服務器軟件之一,http是超文本傳輸協議,工作於應用層tcp的80端口,用戶發起http協議的請求報文,服務器收到之後進行對客戶端的響應,客戶端收到之後,通過瀏覽器顯示,其背後爲html語言。而html是超文本標記語言,那麼一次完整的http報文請求處理過程以如下步驟進行:
1、建立或處理連接:接收請求或拒絕請求。
2、接收請求:接收來自於網絡上的主機請求報文中對某些特定資源的一次請求過程。
3、處理請求:對請求報文進行分析,獲取客戶端進行請求的資源以及請求方法等相關信息。
4、訪問資源:獲取請求報文中的請求資源。
5、構建響應報文。
6、發送響應報文。
7、記錄日誌。

注意: 所有的http請求都是這個過程
在這裏插入圖片描述

4. 操作流程

1. 安裝
我們都知道在Linux系統當中的安裝方式無非有兩種,一種是RPM包(RedHat公司提供的二進制包)安裝,報名叫httpd,其服務程序也叫httpd,另一種是共官方網站上去下載源碼包來進行安裝,在本次的實驗中,這兩種方式我們都會進行,其配置方式也是不盡相同,如果你配置好yum倉庫,現在就可以很簡單的以RPM方式來進行安裝,我們使用以下命令:

[root@node1 ~]# yum -y install httpd

就這一條命令,我們的RPM包就安裝好了,可以直接啓動程序打開瀏覽器來訪問

[root@node1 ~]# systemctl start httpd.service

打開瀏覽器,訪問方式直接輸入IP地址就可以,因爲http協議瀏覽器自動加上去的,如果看到了apache的測試頁,則證明你成功了。
在這裏插入圖片描述
那麼爲什麼可以成功?我們可以使用ss命令用來查看:
在這裏插入圖片描述
從以上命令顯示我們看出,當服務啓動時,就會開啓80端口,我們說過,80端口是提供WEB服務的。 以上就是以RPM包方式的安裝,那麼現在我們看一下如何以源碼包方式進行安裝,源碼包的安裝過程方式很是繁雜,但是其有點是可以自由定製功能,我們使用–enable來使用是否開啓次功能,–with用來是否添加此功能,還可以用 --with-out用來取消此功能,意思是在安裝上默認添加的功能給去除掉,現在我們可以從官網上下載源碼包,其下載地址爲:http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.25.tar.gz,直接複製就能夠下載,在Linux上,使用wget就可以。

[root@node1 ~]# wget http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.25.tar.gz

下載完成之後,由於是壓縮包,所以我們必須要解壓才能夠使用安裝,把它解壓到/usr/src/目錄下。

 [root@node1 ~]# tar -xf httpd-2.4.25.tar.gz -C /usr/src/

之後我們下載兩個依賴包,一個是apr包,另一個是apr-util包,那麼apr是什麼?其實它是一個底層支撐Apache跨平臺特性的一個安裝包,有了這個包就可以不用修改整個程序,就像是一個虛擬機一樣,提供一個環境讓系統跑起來,apache也亦是如此,現在我們可以使用wget命令下載下來:

[root@node1 src]# wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.gz    
[root@node1 src]# wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz 

下載完成之後,由於都在/usr/src的目錄下,所以就直接加壓。

[root@node1 src]# tar -xf apr-1.5.2.tar.gz  
[root@node1 src]# tar -xf apr-util-1.5.4.tar.gz 

我們首先進入apr目錄,開始安裝,不過在安裝之前,我們首先要安裝開發包組:

[root@node1 ~]# yum -y groupinstall "Development Tools" "Server Platform Development" 
[root@node1 src]# cd apr-1.5.2/  
[root@node1 apr-1.5.2]# ./configure --prefix=/usr/local/apr-1.5    
[root@node1 apr-1.5.2]# make && make install  
[root@node1 src]# cd apr-util-1.5.4/     
[root@node1 apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util-1.5 --with-apr=/usr/local/apr-1.5 

如果以上程序包都安裝完成的話,恭喜你,可以安裝http了,首先進入該目錄,之後進行安裝,如果中途出現一些錯誤的話,是可以解決的。

[root@node1 httpd-2.4.25]# ./configure --prefix=/usr/local/apache-2.4 --enable-so    --enable-ssl --with-pcre --with-rewrite --with-mpm=prefork --enable-cgi --with-zlib    --with-libxml2=/usr --with-apr=/usr/local/apr-1.5 --with-apr-util=/usr/local/apr-util-1.5    --with-openssl --enable-modules=most --enable-mpms-shared=all  
[root@node1 httpd-2.4.25]#    make && make install 

之後打開瀏覽器,步驟一樣,輸入IP,只不過出現的是 It Works的頁面。 安裝過程中,可能會報錯,但這些錯誤都可以解決,以上成功的話,則代表第一階段完成。 接下來可以啓動源碼包安裝的程序,不過必要先要關閉RPM包的apache,因爲一個端口不能爲兩個程序所使用。

[root@node1 ~]# /usr/local/apache-2.4/bin/apachectl start

2. 配置介紹
其實兩種安裝方式任意選一種都可以,畢竟這只是實驗,並沒有好壞,最後的配置方法都是差不多的,接下來說一下配置文件的詳解,以及我們可以搭建什麼服務,我們就以RPM包所安裝的來進行配置,我們的主配置文件在/etc/httpd/conf和/etc/httpd/conf.d,注意:我們要把主配置文件複製出來進行備份,不然的話,如果到了不可挽回的餘地,最起碼覆蓋掉,解決一下,從頭再來,那麼其配置結構如下:
在這裏插入圖片描述
我們使用的響應模型是默認是prefork,它是開啓多個進程來處理不同的請求,其模式共有三個,另外兩個是worker和event模型,那麼我們首先來介紹一下prework模型,它是一個多進程模型,由一個主進程和多個子進程組成,一個主進程負責創建和銷燬子進程以及套接字,也負責接收請求,並將請求轉發到子進程來進行處理。那麼多個子進程,每一個子進程分別處理一個請求,其工作模型爲會預先生成幾個空閒進程,用來等待處理用戶請求。 接下來是worker模型,它是多進程多線程的模型,有一個主進程和多個子進程,主進程和以上一樣,創建並銷燬子進程以及建立套接字並接受請求,然後將請求轉發給子進程,而多個子進程卻沒有直接處理請求,而是交給了它所生成的線程處理,每個子進程生成多個線程,每個線程都會去響應用戶請求。其併發的響應數量爲 m*n。
在這裏插入圖片描述
最後一個是event模型,它是一個事件驅動的模型,每個進程響應多個用戶請求,也是由一個主進程個子進程組成,主進程的功能和以上的兩種模式一樣,那麼子進程是基於事件驅動直接響應多個用戶請求,在httpd-2.4中是支持的。

以上就是對模式的介紹,那麼接下來其它文件的位置,我們安裝完成之後就必然開啓它進行web服務,那麼在 CentOS 6中,它的服務腳本在/etc/rc.d/init.d/httpd路徑下,站點文件在/var/www/html的路徑下,爲什麼會配置在哪兒?因爲在httpd.conf配置文件中,定義了DocumentRoot "/var/www/html"的文檔根目錄,日誌文件保存在/var/log/httpd目錄下,訪問日誌爲access_log錯誤日誌爲error_log。服務控制和啓動在不同的CentOS版本是不一樣的,分別是:

CentOS 6:  
[root@node1 ~] # service httpd { start | stop | restart | status } 
CentOS 7:  
[root@node1 ~] # systemctl { start | stop | restart | status } https.service

3. 配置別名及認證方式和虛擬主機
3.1 配置別名
在配置文件下使用alias來定義別名,其格式如下:

[root@node1 conf.d]# vim alias.conf  
Alias /web1/ /web/html1/  
<Directory "/web/html1">
         options None
         allowOverride None      
         Require all granted  
</Directory>  
[root@node1 ~]# systemctl reload httpd.service 

接下來爲定義的配置文件建立目錄。

[root@node1 conf.d]# mkdir /web/html1 -pv 

定義主頁。

[root@node1 conf.d]# cd /web/html1/  
[root@node1 html1]# vim index.html 
<h1>Alias Page</h1> 

打開瀏覽器訪問。
在這裏插入圖片描述
3.2 認證服務
認證其實很好理解,就是讓用戶向服務器提供用戶名和密碼,這是證明自己的一種手段,其配置如下:

[root@node1 ~]# cd /etc/httpd/conf.d/  
[root@node1 ~]# vim auth.conf  
Alias /apps/ "/apps/html/"  
<Directory "/apps/html">
      Options None      
      AllowOverride None         
      Authtype basic      
      AuthUserFile "/apps/html/.htpasswd"     
      AuthName "Admin String"        
      Require valid-user  
</Directory>  
[root@node1 conf.d]# cd /apps/html/  
[root@node1 html]# vim index.html  
<h1>Auth Page</h1>  
[root@node1 ~]# systemctl reload httpd.service 

重新啓動打開瀏覽器進行訪問,輸入用戶名和密碼就可以,創建用戶和密碼的命令是htpasswd,格式如下:

[root@node1 conf.d]# htpasswd -c -m /apps/html/.htpasswd user1

在這裏插入圖片描述
3.3 虛擬主機服務
虛擬主機是可以在一個主機上提供多個訪問站點,共有三種實現方案,分別是基於IP、基於端口、基於域名,我們就以基於域名的方式來配置虛擬主機,配置如下:

[root@node1 conf.d]# vim vhost.conf  
<VirtualHost *:80>
     ServerName www1.stux.com     
     DocumentRoot "/apps/www"
            <Directory "/apps/www">     
                   Options None            
                   AllowOverride None           
                   Require all granted          
			</Directory>  
</VirtualHost>  
[root@node1 ~]# mkdir /apps/www  
[root@node1 ~]# vim /apps/www/index.html  
<h1>Test Virtual Page</h1>  
[root@node1 ~]# systemctl reload httpd.service

現在我們可以測試一下,如果成功,那我恭喜你。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章