首頁  >  文章  >  php教程  >  lamp架構

lamp架構

高洛峰
高洛峰原創
2016-12-01 13:41:371503瀏覽

一、Apache 進程模式說明

在linux中,我們可以用httpd-l 查看安裝的模組是prefork模式還是worker模式

[root@LAMP ~]# /usl/local/apache/bin/apachectl  -l |egrep "worker|prefoker"

  worker.c

[root@LAMP ~]#

[root@LAMP ~]# /usr/local/apache/bin/apachectl  l | /worker|prefork/p'

  worker.c

[root@LAMP ~]# 

prefork模式(預設)

       prefork所使用的是多個行程只有一個行程,而每個行程子在某個確定的時間只能維持一個連結。

工作原理:

     控制進程最初建立若干個子進程,為了不在請求到來時再產生子進程,所以要根據需求不斷的創建新的子進程,最大可以達到每秒32個知道滿足需求為止。

worker模式(預設)

          worker模式是Apache2.x新引進的模式,是執行緒與進程的結合,在worker模式下會有多個子進程,每個子進程又會有多個執行緒。每個執行緒在某個確定時間只能維持一個連線。

   運作原理:

   由主控制進程產生若干個子進程,而每個子進程中又包含固定的執行緒數,各個執行緒獨立處理請求,同樣為了不在請求到來時再產生執行緒,在設定檔中設定了最小和最大空閒執行緒數及所有子程序的總執行緒,如果現有子程序中的總執行緒不能滿足並發負載,控制行程將派生新的子程序。

   安裝方法:

   在配置編譯的過程中,加入參數--with-mpm=worker,如果不加的話系統會採用預設的prefork模式

優點:記憶體佔用比prefork模式低,適合高且發高流量的HTTPD服務

缺點:假如一個執行緒崩潰,整個行程積極會連同其任何執行緒一起「死掉」。由於線程共享記憶體空間,所以一個程式在運行時必須被系統識別為「每個線程都是安全的」。服務穩定性不如prefork模式。

event模式:在非常繁忙的伺服器下,以上兩種伺服器有點吃不消,在worker基礎上,它把服務進程從連線中分離出來。在伺服器處理速度很快,同時具有非常高的點擊率時,可用的執行緒數量就是關鍵的資源限制,此時Event MPM方式是最有效的

1.prefork:

StartServersvers 5 #伺服器開始進程

MinSpareServers       5 #最小空閒進程

MaxSpareServers      10 #最大空閒進程

MaxClients     10 #最大空閒進程

MaxClients   MaxRequestsPerChild   0 #進程處理的最大請求數,0沒有限制,可以設定大一點,不用回收

2.worker:

StartServers     150 #最大處理請求數

MinSpareThreads      25 #最小空閒執行緒數

MaxSpareThreads      75 #最大空閒執行緒數

ThreadsPerChild    75 #最大空閒執行緒數

ThreadsPerChild  Child   0 #線程處理的最大請求數, 0無限制

worker模式下所能同時處理的請求總數是由子程序總數乘以Threadsperchild值決定的,應該大於等於maxclients。如果負載很大,現有的子進程數無法滿足時,控制進程會衍生新的子進程。

 提示: 預設最大的子行程總數為16,如需加大時也需要明顯的申明serverlimit的值(最大值時20000)

查看Apache的worker下方並發連線數:

[root@LAMP ]# pstree -a|grep httpd|wc -l

84

[root@LAMP ~]# 

3.event不研究了

二.測試解析

關鍵點:不研究了

二.測試解析

關鍵點:

l1 M 看是否載入libphp5.so

2. httpd.conf 裡面是否寫對了AddType  Application/x-httpd-php .php

3. php程式碼格式要寫對

4. selinux要關閉

5. deny沒有改成allow  2.4 denied  granted

6. 沒有加host

2. 設定第一個虛擬主機

刪除httpd.conf中的這行前面的警號

#Include conf/extra/http. conf

vim /usr/local/apache2/con5. 為某個虛擬主機設定使用者認證

http://www.lishiming.net/thread-554-1-1.htmlf/extra/httpd-vhosts.conf

2、web防盜鏈技術🎜

  簡單的說,就是某些不法的網站,透過在其自身網站程式裡未經許可非法調用其他網站的資源,然後在自己的網站上顯示這些調用的資源,達到了填充自身網站顯示的效果,但浪費了呼叫資源網站的網路流量,造成其他網站的頻寬及服務壓力吃緊,甚至宕機。

網站被盜鏈的解決方案:

1、根據http referer實現防盜鏈

在HTTP協定中,有一個表頭欄位叫做referer,使用URL格式來表示從哪裡來的連結到目前網頁的資源,透過referer可以偵測到目標存取的來源網頁,如果是資源文件,可以追蹤到顯示它的網頁位址,一單偵測出來源不是本站進行封鎖或傳回指定頁面。 目前Apache,nginx,lighttpd三者都支援根據http referer實作防盜鏈

2、根據cookie處理

3、透過加密變換存取路徑實現防盜鏈lighttpd有類似的插件mod_secdownload

Apache web服務實作防盜鏈實戰

    ServerAdmin ucode@gmail.com

    DocumentRoot "/var/html/bbs"

  表面com

    ErrorLog "logs/bbs-error_log"

    CustomLog "|/usr/local/sbin/cronolog /app/logs/access_bbs_%Y%m%d.log" combined  RewriteCond % {HTTP_REFERER}!^http://ucode.blog.51cto.com/.*$ [NC]

    RewriteCond %{HTTP_REFERER}!^http://ucode.blog.51cto.com/$ [NC]

RewriteCond %{HTTP_REFERER}!^http://ucode.blog.51cto.com/.*$ [NC]

    RewriteCond %{HTTP_REFERER}!^http://ucode.blog.51cto.com$ [NC]

    RewriteCond .*.(gif|jpg|swf)$ http://ucode.blog.51cto.com/img/nolink.jpg [ R,NC]

會回傳:http://ucode.blog.51cto.com/img/nolink.jpg圖片

Listen 80##預設監聽的連接埠是80

PidFile /export/servers/apache2/logs/httpd.pid

PidFile /export/servers/apache2/logs/httpd.pid

PidFile LoadModule authn_file_module modules/mod_authn_file.so##載入的模組

User admin ##一般預設為admin

Group admin ##一般預設為admin

你的專案檔案路徑

ServerAdmin you@example.com       #當伺服器封包錯誤是,傳回客戶端,讓聯絡管理員

ServerName localhost:80    ###S; .php          讓.php文字檔案格式也能運作php程式。

1

Options FollowSymLinks

AllowOverride None

奧利意義如下:

#ExecCGI: 在該目錄下允許執行CGI腳本。

#FollowSymLinks: 在該目錄下允許檔案系統使用符號連接。

#Indexes: 當使用者存取目錄時,如果使用者找不到DirectoryIndex指定的主頁檔案(例如#index.html),則傳回該目錄下的檔案清單給使用者。

#SymLinksIfOwnerMatch: 當使用符號連接時,只有當符號連接的檔案擁有者與實際檔案擁有者相同時才可以存取.

Includes 允許伺服器端包含。

IncludesNOEXEC 允許伺服器端包含,但停用#exec指令和#exec CGI。但仍可從ScriptAliase目錄使用#include 虛擬CGI腳本。 I /Directory>

則只有 Includes  設定到/web/docs/spec目錄上。

然而如果第二個 Options  指令使用了+和-符號:

Options Indexes FollowSymLinks

g +Includes -Indexes

那麼就會有 FollowSymLinks  和 Includes  設定到/web/docs/spec目錄上。

#AllowOverride:允許存在於.htaccess檔案中的指令類型(.htaccess檔案名稱是可以改變的,其檔案名稱由AccessFileName指令決定):

#None: 當AllowOverride被設定為None。不搜尋該目錄下的.htaccess檔案(可以減少伺服器開銷)。

#All: 在.htaccess檔案中可以使用所有的指令。

Order:控制在存取時Allow和Deny兩個存取規則哪個優先:

Allow:允許存取的主機清單(可用網域名稱或子網,例如:Allow from 192.168.0.0/16)。

Deny:拒絕存取的主機清單。

Apache伺服器可以針對目錄進行文件的存取控制,然而存取控制可以透過兩種方式來實現,一個是在設定檔httpd.conf(或access.conf)中針對每個目錄進行設定

Timeout 300 ##客戶程式與伺服器連線的逾時間隔

KeepAlive On ###在一次連線中傳遞多個HTTP請求

MaxKeepAliveRequests 100 ###為一次連線可以進行的HTTP請求的最大請求次數

KeepAliveAliveAliveAliveAliveAliveAliveAlive測試一次連接中的多次請求傳輸之間的時間,如果伺服器已經完成了一次請求,但一直沒有接收到客戶程式的下一個請求,在間隔超過了這個參數設定的值之後,伺服器就斷開連接。

ErrorLog logs/error_log #日誌的保存位置

LogLevel warn    ##幾種日誌等級 debug日誌界別,日誌就比較多

日誌的缺省格式有如下:

Logn % %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined

LogFormat "%h %l %u %t "%r" %>s %b " common #common為日誌格式名稱

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

CustomLog logs/access_log common}i" agent

CustomLog logs/access_log commono格式中的個別參數如下:

%h –客戶端的ip位址或主機名稱

%l –The 這是由客戶端identd 判斷的RFC 1413身份,輸出中的符號"-" 表示此處資訊無效。

%u –由HTTP認證系統所得到的造訪該網頁的客戶名稱。有認證時才有效,輸出中的符號 "-" 表示此處資訊無效。

%t –伺服器完成對請求的處理時的時間。

"%r" –引號中是客戶發出的包含了許多有用資訊的請求內容。

%>s –這個是伺服器回傳給客戶端的狀態碼。

%b –最後這項是回傳給客戶端的不包含回應頭的位元組數。

"%{Referer}i" –此項指明了該請求是從被哪個網頁提交過來的。

"%{User-Agent}i" –此項是客戶瀏覽器提供的瀏覽器識別資訊


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:linux亂入下一篇:linux亂入