httpd 2.2(Apache Web服務器)

apache (Web服務器)

簡介:

Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。 

 

Apache HTTP服務器是一個模塊化的服務器,源于NCSAhttpd服務器,經過多次修改,成為世界使用排名第一的Web服務器軟件。

它可以運行在幾乎所有廣泛使用的計算機平臺上。

Apache源于NCSAhttpd服務器,經過多次修改,成為世界上最流行的Web服務器軟件之一。Apache取自“a patchy server”的讀音,意思是充滿補丁的服務器,因為它是自由軟件,所以不斷有人來為它開發新的功能、新的特性、修改原來的缺陷。Apache的特點是簡單、速度快、性能穩定,并可做代理服務器來使用

 

http請求處理過程

一次完整的http請求處理過程:

(1) 建立或處理連接:接收請求或拒絕請求

(2) 接收請求:接收來自于網絡的請求報文中對某資源的一次請求的過程;

          (3) 處理請求:對請求報文進行解析,并獲取請求的資源及請求方法等相關信息,根據請求報文的首部來判斷用戶請求的資料

(4) 訪問資源:獲取請求報文中請求的資源,web服務器,即存放了web資源的服務器,負責向請求者提供對方請求的靜態資源,或動態運行后生成的資源;這些資源放置于本地文件系統某路徑下,此路徑通常稱為DocRoot

(5) 構建響應報文

(6) 發送響應報文,有長連接和短連接模式

(7) 記錄日志

并發訪問響應模型(Web I/O):

1.單進程I/O結構:啟動一個進程處理用戶請求,而且一次只處理一個;多個請求被串行響應;

2.多進程I/O結構:并行啟動多個進程,每個進程響應一個請求;

3.復用I/O結構:一個進程響應n個請求;

         (1)多線程模型:一個進程生成N個線程,每個線程響應一個用戶請求;

         (2)事件驅動:event-driven

4復用的多進程I/O結構:啟動多個(m)進程,每個進程響應n個請求;

apache 的工作模式

    1.prefork:多進程模型,每個進程響應一個請求;

一個主進程:負責生成n個子進程,子進程也稱為工作進程,每個子進程處理一個用戶請求;即便沒有用戶請求,也會預先生成多個空閑進程,隨時等待請求到達;最大不會超過1024個;

    2.worker:多線程模型,每個線程響應一個請求;

一個主進程:生成多個子進程,每個子進程負責生個多個線程,每個線程響應一個請求;                                   

    3.event:事件驅動模型,每個線程響應n個請求;

一個主進程:生成m個子進程,每個進程直接響應n個請求;

 

 

安裝前準備

說明

操作系統:CentOS 6.7 64

Apache 版本:httpd-2.2.15-47.el6.centos.3.x86_64

httpd服務器ip:192.168.1.5

 

1.  配置好IP、DNS 、網關,確保使用遠程連接工具能夠連接服務器

2.       配置防火墻,iptables –F 清理防火墻規則或者關閉iptables

3.       關閉SELINUX, setenforce 0  #立即生效(實際是寬容模式)

 

安裝配置

1.  安裝apache,yum安裝會自動解決依賴關系

yum -y install httpd

2.  啟動httpd 服務,并測試頁面是否顯示正常

service httpd start

如果啟動報錯信息是:httpd:httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

那就去主配置文件找到#ServerName www.example.com:80 ,把前面的注釋去掉就可以啟動不報錯了.

blob.png

3.  定義server頁面文檔路徑,在新的路徑目錄下創建文件內容,重新加載服務,測試頁面.

mkdir -pv /www/htdocs

vi /www/htdocs/index.html

test Page

主配置文件修改這一行 DocumentRoot "/var/www/html"

vi /etc/httpd/conf/httpd.conf

DocumentRoot "/www/htdocs"  #修改成這樣

 service httpd reload

    blob.png

4.  基于來源訪問控制.

vi /etc/httpd/conf/httpd.conf

    <Directory "/www/htdocs">  #修改這里的路徑    
    Order allow,deny
    Deny from 192.168.1.3  #找到這一行添加192.168.1.3
    Allow from all

    service httpd reload

blob.png

5.  設置路徑別名

 cd /www/htdocs/

 vi bbs/index.html

 Page at /www/htdocs/bbs      #先自己測試看看是否是顯示的內容

 mkdir /forum

 vi /forum/index.html

 Page /forum

 vi /etc/httpd/conf/httpd.conf

 Alias /bbs/ "/forum/"

 

service httpd reload

blob.png

6.  基于用戶訪問控制

     cd /www/htdocs/

    mkdir amdin

    vi admin/index.html

    Page FOR Admin

    vi /etc/httpd/conf/httpd.conf  #在主配置文件下添加如下幾行

     <Directory "/www/htdocs/admin">
            Options None
            AllowOverride None
            AuthType Basic
            AuthName "Administator private"
            AuthUserFile "/etc/httpd/conf.d/.htpasswd"
            Require valid-user
     </Directory>


     創建2個用戶

    htpasswd -c -m /etc/httpd/conf.d/.htpasswd tom

    htpasswd -m /etc/httpd/conf.d/.htpasswd jerry

    service httpd reload

    blob.png

7.  基于組的用戶認證,基于組的認證修改的配置文件在以上的例子添加修改

     vi /etc/httpd/conf/httpd.conf  #在主配置文件下添加如下幾行

     <Directory "/www/htdocs/admin">
            Options None
            AllowOverride None
            AuthType Basic
            AuthName "Administator private"
            AuthUserFile "/etc/httpd/conf.d/.htpasswd"
                    AuthGroupFile "/etc/httpd/conf.d/.htgroup"
            Require group webadmin
     </Directory>

    htpasswd -m /etc/httpd/conf.d/.htpasswd obama

    創建組添加用戶

    vi /etc/httpd/conf.d/.htgroup

      webadmin:jerry obama

     

    service httpd reload

    blob.png

 

虛擬主機

注意:現在httpd服務器ip172.28.0.97

1.  基于ip 的虛擬主機配置,進入主配置文件修改

vi /etc/httpd/conf/httpd.conf

#DocumentRoot "/var/www/html"    #把這行注釋掉

        <VirtualHost 172.28.0.97:80>    
            ServerName web1.test.com
            DocumentRoot "/vhosts/web1/htdocs"
        </VirtualHost>

然后創建相應的目錄和內容,并重新加載配置文件和測試

mkdir -pv /vhosts/{web1,web2}/htdocs

vi /vhosts/web1/htdocs/index.html

Page at Web1

service httpd reload

        blob.png

2.  基于端口的虛擬主機,在以上的例子中在多個8080端口

vi /vhosts/web2/htdocs/index.html

    Page at Web2

vi /etc/httpd/conf/httpd.conf

        Listen 8080  #添加這一行監聽8080端口    
        <VirtualHost 172.28.0.97:8080>
            ServerName web3.magedu.com
            DocumentRoot "/vhosts/web2/htdocs"
        </VirtualHost>

 

httpd -t     #測試語法錯誤

service httpd restart

blob.png

3.  基于名稱的虛擬主機,在以上的虛擬配置上修改,并測試

vi /etc/httpd/conf/httpd.conf

NameVirtualHost 172.28.0.97:80  #把注釋去掉,表示基于主機名的虛擬主機

blob.png

httpd -t

mkdir -pv /web/vhosts/{www1,www2}

vi /web/vhosts/www1/index.html

    Page at www1.stu.com

vi /web/vhosts/www2/index.html

Page at www2.stu.com

 

        在另外一臺機子上可以在hosts文件中添加172.28.0.97 www1.stu.com www2.stu.com

blob.png

4.  通過www1.stu.com/server-status輸出httpd工作狀態相關信息,且只允許提供帳號密碼才能訪問(status:status);

cd /web/vhosts/www1/

mkdir admin

htpasswd -c -m /etc/httpd/conf.d/.htpasswd tom

vi /etc/httpd/conf/httpd.conf

blob.png

blob.png

service httpd reload

 

blob.png

 

為上面的第1個虛擬主機提供https服務,使得用戶可以通過https安全的訪問此web站點;

httpd服務器ip:172.28.0.97

CA服務器IP172.28.0.59

1.  生成密鑰對 cakey.pem,并創建所需文件(在CA服務器上操作)

cd /etc/pki/CA/

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

touch index.txt

echo 01 > serial

2.  開始申請CA機構的根證書,20年x509類型(在CA服務器上操作)

    openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300

    -new: 生成新證書簽署請求;

-x509: 專用于CA生成自簽證書;

-key: 生成請求時用到的私鑰文件;

-days n:證書的有效期限;

-out /PATH/TO/SOMECERTFILE: 證書的保存路徑;

blob.png

3.  在httpd服務器上,生成自己的私鑰key與csr證書請求

cd /etc/httpd/

mkdir ssl

cd ssl/

(umask 077;openssl genrsa -out httpd.key 1024)  #生成自己的私鑰

openssl req -new -key httpd.key -out httpd.csr

blob.png

4.  把證書傳送給CA

    scp httpd.csr root@172.28.0.59:/tmp/

    blob.png

 

5.  在CA上簽署證書,并將證書發還給請求者(在CA服務器上操作)

openssl ca -in /tmp/httpd.csr -out certs/www1.stu.com.crt -days 365

scp certs/www1.stu.com.crt 172.28.0.97:/etc/httpd/ssl

blob.png

blob.png

 

6.  httpd要支持SSL 需要安裝這個mod_ssl模塊

 yum -y install mod_ssl

 cd /etc/httpd/conf.d/

 vi ssl.conf

    <VirtualHost 172.28.0.97:443>   #修改這行IP    
    DocumentRoot "/web/vhosts/www1" #注釋去掉修改
    ServerName  www1.stu.com        #注釋去掉修改
    #   Server Certificate:
    SSLCertificateFile /etc/httpd/ssl/www1.stu.com.crt  #修改證書文件路徑
    #   Server Private Key:
    SSLCertificateKeyFile /etc/httpd/ssl/httpd.key      #這個證書私鑰
     service httpd restart

7.  測試https是否配置成功

在其他的機子上做測試

openssl s_client -connect 172.28.0.97:443 -CAfile /etc/pki/CA/cacert.pem

blob.png

blob.png

原創文章,作者:liangkai,如若轉載,請注明出處:http://www.www58058.com/13843

(0)
liangkailiangkai
上一篇 2016-03-29
下一篇 2016-03-30

相關推薦

  • Lvs+keepalived+httpd+NFS搭建高可用

    自己捯飭的模型圖 NAT模型圖 注意事項:RealServer需要把網關指向Director,并且Director要打開轉發功能命令如下:     echo "1" > /proc/sys/net/ipv4/ip_foreward DR模型圖 注意事項:需要在RealServer配置…

    Linux干貨 2016-10-25
  • DNS從入門到管理(一)

    DNS從入門到管理(一) DNS概念 DNS三步法 反向解析 主從DNS服務器的實現 子域授權 智能DNS 壓力測試與DNS排錯 DNS概述 DNS(Domain NameSystem,域名系統),域名和IP地址相互映射的一個分布式數據庫,通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析。而DNS的主要作用,就是域名解析,將主機名解析成IP地址?!?/p>

    Linux干貨 2016-10-06
  • 第四周作業

    1. 復制/etc/skel目錄為/home/tuser1,要求/home/tuser1以及內部文件的屬組和其它用戶均沒有任何訪問權限 cp -r /etc/skel  /home/tuser1 chmod go-rwx /home/tuser1 2. 編輯/etc/group文件,添加組hadoo…

    Linux干貨 2016-12-27
  • 16個很有用的在線工具

    1. ExplainShell.com 命令解釋 對于Linux用戶來說每天都會寫各種命令和腳本,那么你可以使用這個網站工具來查看命令式如何工作的,這樣可以避免不必要的錯誤出現;也是一個很好的學習命令的方式 2. BashrcGenerator.com 定制個性命令提示符 簡單說就是個性化生成命令提示符,可將生成的代碼…

    Linux干貨 2015-03-13
  • 初來乍到

    坐上了去往北方的火車,我不知道自己為什么會顫抖,也許是耳朵里那首汪峰的《北京,北京》震撼到了我,接著滿腦子便是燈紅酒綠的大街道和浮華的高樓大廈,我幻想著有一天能在這樣的大城市中闖出一片天。夢醒了 ! 30個小時的路程確實是讓我滿腦子都是未來的自己。 對于我這個從來沒有見過世面的人來說,第一次來到北京這座一線大城市,內心充滿著無比的欣喜和激動,但更多的還是那份…

    Linux干貨 2018-03-26
  • Linux誤刪大文件的一個可能解救辦法

    描述:某個網友說他在進行md5指紋對比某文件的時候,另外一個同事在另外一個窗口刪除了該文件,然后順嘴跟他說了下,這時候他意識到同事可能是誤刪除了,于是,他利用了以下辦法來進行解救: 操作順序如下: 1)網友的操作: [root@C67-X64-A0 ~]# ls -l /test.img  -rw-r–r-…

    Linux干貨 2016-08-02

評論列表(1條)

  • stanley
    stanley 2016-03-30 12:14

    已置頂,優化點:
    1. markdown 神器可參考
    2. 題目不夠專業

欧美性久久久久