1. 程式人生 > >Apache基本使用總結

Apache基本使用總結

一、常用配置


1、修改監聽的IP和Port
Listen[IP:]PORT
Listen 12.24.34.56:80
Listen 8080
# 省略ip表示監聽本機所有IP;Listen可重複出現多次;
2、持久連線
KeepAive On # 開啟
MaxKeepAliveRequests 0  # 一個持久TCP最多允許的請求數,這裡設定0表示不限制)
KeepAliveTimeout 15 # 表示15秒
KeepAlive是什麼東西?它是http協議的一部分,讓我們複習一下沒有KeepAlive的http請求,從客戶在瀏覽器輸入一個有效url地址開始,瀏覽器就會利用socket向url對應的web伺服器傳送一條TCP請求,這個請求成功一次就得需要來回握三次手才能確定,成功以後,瀏覽器利用socket TCP連線資源向web伺服器請求http協議,傳送以後就等著web伺服器把http返回頭和body傳送回來,發回來後瀏覽器關閉socket連線,然後做http返回頭和body的解析工作,最後呈現在瀏覽器上的就是漂亮的頁面了。這裡面有什麼問題呢?TCP連線需要三次握手,也就是來回請求三次方能確定一個TCP請求是否成功,然後TCP關閉呢?來回需要4次請求才能完成!每次http請求就3次握手,4次拜拜,這來來回回的不嫌累啊,多少時間和資源都被浪費在socket連線關閉上了,能不能一次socket TCP連線傳送多次http請求呢?於是KeepAlive就應運而生,http/1.0裡需要客戶端自己在請求頭加入Connection:Keep-alive方能實現,在這裡我們只考慮http1.1了,只需要設定一下Apache,讓它預設就是Keep-Alive持久連線模式(Apache必須1.2+才能支援Keep-Alive)。在httpd.conf裡找到KeepAive配置項,果斷設定為On,MaxKeepAliveRequests果斷為0(一個持久TCP最多允許的請求數,如果過小,很容易在TCP未過期的情況下,達到最大連線,那下次連線就又是新的TCP連線了,這裡設定0表示不限制),然後對於mysql_pconnect最重要的選項KeepAliveTimeout設定為15(表示15秒), httpd-2.4支援毫秒級持久時間。
測試:
<?php
   echo "Apache程序號:". getmypid();
?>
很簡單,獲取當前PHP執行者(Apache)的程序號,用瀏覽器瀏覽這個頁面,看到什麼?對,有看到一串程序號數字,15秒內,連續重新整理頁面,看看程序號有無變化?木有吧?現在把手拿開,交叉在胸前,度好時間,1秒,2秒,3,...15,16。好,過了15秒了,再去重新整理頁面,程序號有沒有變化?變了!又是一個新的Apache程序了,為什麼15秒後就變成新的程序了?記得我們在Apache裡設定的KeepAliveTimeout嗎?它的值就是15秒。現在我們應該大致清楚了,在web伺服器預設開啟KeepAlive的情況下,客戶端第一次http成功請求後,Apache不會立刻斷開socket,而是一直監聽來自這一客戶端的請求,監聽多久?根據KeepAliveTimeout選項配置的時間決定,一旦超過這一時間,Apache就會斷開socket了,那麼下次同一客戶端再次請求,Apache就會新開一個程序來相應。所以我們之前15內不停的重新整理頁面,看到的程序號都是一致的,表明是瀏覽器請求給了同一個Apache程序。

瀏覽器是怎麼知道不需要重新進行TCP連線就可以直接傳送http請求呢?因為http返回頭裡就會帶上Connection:keep-alive,Keep-alive:15兩行,意思就是讓客戶端瀏覽器明白,這次socket連線我這邊還沒關閉呢,你可以在15內繼續使用這個連線,併發送http請求,於是乎瀏覽器就知道應該怎麼做了。
 
3、MPM引數

MultipathProcessModule:多道處理模組
prefork,worker,event
<IfModule prefork.c>
StartServers       8    #服務啟動時啟動的子程序數
MinSpareServers    5    #最少空閒子程序數
MaxSpareServers   20
ServerLimit      256    #同時啟動的子程序數上限
MaxClients       256    #同時服務的客戶端數上限(支援的併發數上限)
MaxRequestsPerChild  4000   #每個子程序在其生命週期內處理的請求數上限
</IfModule>
 
<IfModule worker.c>
StartServers         4   #服務啟動時啟動的子程序數
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25    #每個子程序可啟動的執行緒數
MaxRequestsPerChild  0    #每個子程序可處理的請求數,0表示無限制
</IfModule>
4、DSO
配置指令實現模組載入
LoadModule <mod_name> <mod_path>
#要解除安裝某個模組直接將其註釋掉即可,不用重讀配置檔案就可立即生效;模組路徑為相對於ServerRoot而言的路徑
顯示DSO動態裝載的模組:
# httpd -D DUMP_MODULES
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 auth_basic_module (shared)
 auth_digest_module (shared)
 authn_file_module (shared)
 authn_alias_module (shared)
 ...
# httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c
# httpd.worker -l
Compiled in modules:
  core.c
  worker.c
  http_core.c
  mod_so.c
5、定義'Main'server的文件頁面路徑
DocumentRoot "/path/to/somefile"
文件路徑對映:
DocumentRoot 指向的路徑為URL路徑的起始位置;
DocumentRoot "/var/www/html"   #預設為這個位置
test/index.html-->http://HOST:PORT/test/index.html
6、站點訪問控制
可基於兩種型別的路徑指明對哪些資源進行訪問控制
檔案系統路徑:
<Directory "/path/to/somewhere">
...
</Direcotry>
<File [~] "/path/to/somewhere">
...
</File>
基於URL訪問路徑做訪問控制:
<Location"">
...
</Location>
#另外,路徑可做模式匹配,但若非迫不得已不建議使用
#如果即能使用Diretoory控制,也能使用Location控制,建議使用Directory
7、Directory中“基於來源地址”實現訪問控制
(1)Options
所有可用特性:Indexes,Includes,FollowSymLinks,SymLinksifOwnerMatch 
         ExecCGI,MultiViews,None,All
Indexes:索引;在無預設主頁面又無歡迎頁時,將所有資源以列表形式呈現給使用者。
     危險,慎用;在選項前新增減號即為禁用。如-Indexes
FollowSymlinks:允許跟蹤符號連結檔案;
# vim /etc/httpd/conf/httpd.conf
<Directory "/www/html">
    Options Indexes FollowSymLinks   #預設是開啟的
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
(2)AllowOverride
支援在每個頁面目錄下建立.htaccess用於實現對此目錄中資源訪問時的訪問控制功能;
.htaccess檔案會影響httpd的效能
(3)基於IP做訪問控制機制
    Order:檢查次序
        Order allow,deny
        Allow form 192.168.10.0/24
            form後面能夠接受的地址格式:
                IP,Network Address
                網路地址格式較為靈活:
                    172.16
                    172.16.0.0
                    172.16.0.0/16
                    172.16.0.0/255.255.0.0
8、定義預設主頁面
DirecotryIndex index.htm lindex.html.var
9、日誌設定
ErrorLog "/path/to/error_log"   #錯誤日誌,路徑為相對於ServerRoot而言的路徑
LogLevel {debug|info|notice|warn|error|crit|alert|emerg}
   指定級別及比其更高級別的資訊都會被記錄      
LogFormat 格式 格式名
  %h: 客戶端地址
  %l: 遠端登入名,通常為-
  %u: 認證時輸入使用者名稱,沒有認證時為-
  %t: 伺服器收到 使用者請求時的時間
  %r:請求報名的起始行
  %>s: 響應狀態碼
  %b: 響應報文的長度,單位是位元組
  %{HEADER_NAME}i: 記錄指定首部對應的值
例如 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined    
#格式中若要使用引號則要使用反斜線轉義
    CustomLog "/path/to/access_log" LogFormat_Name
10、路徑別名
實現URL路徑的對映,從而所訪問的資源不再依賴於站點根目錄。
Alias /URL/ "/path/to/somewhere/"
例如 Alias /images/ "/www/tupian/" #後面對映的路徑是絕對路徑,而不是相對於站點根目錄而言的路徑;此時若站點根目錄(以/var/www/html為例)下也有一個images目錄,那麼將無法訪問/var/www/html/images中的資源,因為images已被別名徵用
# mkdir test hello
# cat test/a.html 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
# cat hello/b.html 
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
# vim /etc/httpd/conf/httpd.conf
Alias /test/ "/www/html/hello/"
# service httpd restart
停止 httpd:                                               [確定]
正在啟動 httpd:                                           [確定]
 
# curl http://localhost/test/a.html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /test/a.html was not found on this server.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at localhost Port 80</address>
</body></html>
# curl http://localhost/test/b.html
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
11、設定預設字符集
AddDefaultCharset UTF-8
# 字符集:GBK,GB2312,GB18030
12、基於使用者的訪問控制
使用者認證型別:
  基本認證:Basic,明文傳送
  摘要認證:digest
虛擬使用者:僅用於訪問某服務或獲取某資源的憑證;
  賬號和密碼的儲存機制:
    文字檔案:.htpasswd
    SQL資料庫
    dbm:資料庫引擎,提供API
    ldap:
案例:基於檔案做訪問控制
(1)基於使用者進行認證
    <Directory />
        Options none
        AllowOverride AuthConfig
        AuthType Basic
        AuthName "admin area"
        AuthBasicProvider file
        AuthUserFile /etc/httpd/conf/.htpasswd
        Require valid-user
    </Directory>
    # Require valid-user:檔案中所有使用者均可訪問
    # Require user USERNAME,... 指定使用者訪問
(2)提供認證檔案
    htpasswd [option] passwdfile username
    選項:
    -c:建立一個passwdfile,如果passwdfile已經存在,那麼它會重新寫入並刪除原有內容
    -m:以md5的格式編碼儲存使用者的密碼資訊
    -s:sha1加密使用者密碼;
    -D:刪除指定使用者
(3)基於組認證
    <Directory />
        Options none
        AllowOverride AuthConfig
        AuthType Basic
        AuthName "admin area"
        AuthBasicProvider file
        AuthUserFile /etc/httpd/conf/.htpasswd
        AuthGroupFile /etc/httpd/conf/.htgroup
        Require group GROUP_NAME
    </Directory>
    組檔案(.htgroup)格式    組名:user1 user2 user3
例如:
# cd /var/www/html
# mkdir admin
# cat admin/admin.html  
The user is admin.  
# vim /etc/httpd/conf/httpd.conf
    <Directory "/var/www/html/admin">
    Options none
    AllowOverride AuthConfig
    AuthType Basic
    AuthName "admin area"
    AuthBasicProvider file
    AuthUserFile /etc/httpd/conf/.htpasswd
    Require valid-user
    </Directory>
# htpasswd -c -m /etc/httpd/conf/.htpasswd bjwf #建立第一個使用者時必須建立檔案
New password: 
Re-type new password: 
Adding password for user bjwf
# htpasswd -m /etc/httpd/conf/.htpasswd tom   #建立第二個使用者
New password: 
Re-type new password: 
Adding password for user tom
# service httpd restart
authes.png
13、虛擬主機
有三種實現方案:
  基於ip:為每個虛擬主機準備至少一個ip地址;
  基於port:為每個虛擬主機準備至少一個專用port;實踐中很少使用;
  基於hostname:為每個虛擬主機準備至少一個專用hostname;
可混合使用上述三種方式中任意方式;
注意:一般虛擬主機莫與中心主機混用,所以,要使用虛擬主機,先禁用中心主機;
禁用中心主機:註釋DocumentRoot
每個虛擬主機都有專用配置:
<VirtualHost"IP:PORT">
SeverName
DocumentRoot""
</VirtualHost>
ServerAlias:虛擬主機的別名;
ErrorLog
CustomLog
<Directory"">
</Directory>
 
示例1:基於ip
  <VirtualHost172.16.100.6:80>
    ServerName web1.magedu.com
    DocumentRoot"/vhosts/web1/htdocs"
  </VirtualHost>
 
  <VirtualHost172.16.100.7:80>
    ServerName web2.magedu.com
    DocumentRoot "/vhosts/web2/htdocs"
  </VirtualHost>
示例2:基於port
  <VirtualHost172.16.100.7:80>
    ServerNameweb2.magedu.com
    DocumentRoot"/vhosts/web2/htdocs"
  </VirtualHost>
 
  <VirtualHost 172.16.100.7:8080>
    ServerName web3.magedu.com
    DocumentRoot "/vhosts/web3/htdocs"
  </VirtualHost>
示例3:基於hostname
  <VirtualHost 172.16.100.6:80>
    ServerName web1.magedu.com
    DocumentRoot "/vhosts/web1/htdocs"
  </VirtualHost>
 
  <VirtualHost 172.16.100.6:80>
    ServerName web2.magedu.com
    DocumentRoot "/vhosts/web2/htdocs"
  </VirtualHost>
 
  <VirtualHost 172.16.100.6:80>
    ServerName web3.magedu.com
    DocumentRoot "/vhosts/web3/htdocs"
  </VirtualHost>
#注:一般要啟用虛擬主機,最好是新建一個文件在/etc/httpd/conf.d/vhost.conf裡面,這樣一來虛擬主機
設定的引數可以隨便修改,而且不會影響到主配置檔案,而主配置檔案httpd.conf中有個include的引數可以
將/etc/httpd/conf.d/*.conf都包含進來。
示例:
# mkdir /var/www/html/{a.com,b.net,c.org} -pv
mkdir: 已建立目錄 "/var/www/html/a.com"
mkdir: 已建立目錄 "/var/www/html/b.net"
mkdir: 已建立目錄 "/var/www/html/c.org"
# echo a.com > /var/www/html/a.com/index.html
# echo b.net > /var/www/html/b.net/index.html
# echo c.org > /var/www/html/c.org/index.html
# cat vhost.conf (基於IP的虛擬主機)
<VirtualHost 192.168.130.250:80>
    ServerName www.a.com
    DocumentRoot "/var/www/html/a.com"
</VirtualHost>
 
<VirtualHost 192.168.130.251:80>
    ServerName www.b.net
    DocumentRoot "/var/www/html/b.net"
</VirtualHost>
 
<VirtualHost 192.168.130.252:80>
    ServerName www.c.org
    DocumentRoot "/var/www/html/c.org"
</VirtualHost>
# curl http://192.168.130.250
a.com
# curl http://192.168.130.251
b.net
# curl http://192.168.130.252
c.org
 
# cat vhost.conf  (基於主機名的虛擬主機)
NameVirtualHost *:80
<VirtualHost *:80>
    ServerName www.a.com
    DocumentRoot "/var/www/html/a.com"
</VirtualHost>
 
<VirtualHost *:80>
    ServerName www.b.net
    DocumentRoot "/var/www/html/b.net"
</VirtualHost>
 
<VirtualHost *:80>
    ServerName www.c.org
    DocumentRoot "/var/www/html/c.org"
</VirtualHost>
# cat /etc/hosts
192.168.130.250 kvm.jlc.com
192.168.130.250 www.a.com
192.168.130.250 www.b.net
192.168.130.250 www.c.org
# curl http://www.a.com
a.com
# curl http://www.b.net
b.net
# curl http://www.c.org
c.org
14、內建的status頁面
handler:當檔案被呼叫時,apache的內部表現形式,一般每種檔案型別都有其隱式處理器
httpd內嵌有handler,其中有一個handler(server-status)用於輸出當前httpd服務相關狀態資訊
啟用handler要使用SetHandler指定
# vim httpd.conf 
<Location /server-status>
    SetHandler server-status
    Order allow,deny
    Allow from 192.168.130.0/24
    Allow from 192.168.120.0/24
    Deny from all
</Location>
# httpd -t  #檢查配置檔案語法
Syntax OK
# service httpd reload
AapachStatus.png
15、curl命令
curl是基於URL語法在命令列方式下工作的檔案傳輸工具,它支援FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等協議。curl支援HTTPS認證,並且支援HTTP的POST、PUT等方法,FTP上傳,kerberos認證,HTTP上傳,代理伺服器,cookies,使用者名稱/密碼認證,下載檔案斷點續傳,上載檔案斷點續傳,http代理伺服器管道(proxy tunneling),甚至它還支援IPv6,socks5代理伺服器,通過http代理伺服器上傳檔案到FTP伺服器等,功能十分強大。
用法:curl [option] URL
常用選項:
    -A/--user-agent <string> 設定使用者代理髮送給伺服器
    -basic 使用HTTP基本認證
    --tcp-nodelay 使用TCP_NODELAY選項
    -e/--referer <URL> 來源網址
    --cacert <file> CA證書 (SSL)
    --compressed 要求返回是壓縮的格式
    -H/--header <line>自定義首部資訊傳遞給伺服器
    -I/--head 只顯示響應報文首部資訊
    --limit-rate <rate> 設定傳輸速度
    -u/--user <user[:password]>設定伺服器的使用者和密碼
    -0/--http1.0 使用HTTP 1.0
16、使用mod_deflate模組壓縮頁面優化傳輸速度
SetOutputFilter DEFLATE
# mod_deflate configuration
                  
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain 
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
          
# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9   #指定壓縮比
              
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4 gzip-only-text/html  #針對特定瀏覽器的特殊指定
              
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
              
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
17、https
http over ssl = https 443/tcp
一般使用的協議ssl: v3  tls: v1
 
SSL會話的簡化過程:
(1) 客戶端傳送可供選擇的加密方式,並向伺服器請求證書;

(2) 伺服器端傳送證書以及選定的加密方式給客戶端;

(3) 客戶端取得證書並進行證書驗正:

如果信任給其發證書的CA:
(a) 驗正證書來源的合法性;用CA的公鑰解密證書上數字簽名;

(b) 驗正證書的內容的合法性:完整性驗正

(c) 檢查證書的有效期限;

(d) 檢查證書是否被吊銷;

(e) 證書中擁有者的名字,與訪問的目標主機要一致;

(4) 客戶端生成臨時會話金鑰(對稱金鑰),並使用伺服器端的公鑰加密此資料傳送給伺服器,完成金鑰交換;

(5) 服務用此金鑰加密使用者請求的資源,響應給客戶端;
注意:SSL會話是基於IP地址建立;所以單IP的主機上,僅可以使用一個https虛擬主機;
 
(1) 為伺服器申請數字證書;
測試:通過私建CA發證書
(a) 建立私有CA

(b) 在伺服器建立證書籤署請求

(c) CA簽證

(2) 配置httpd支援使用ssl,及使用的證書;

# yum -y install mod_ssl
配置檔案:/etc/httpd/conf.d/ssl.conf
DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile
(3) 測試基於https訪問相應的主機;
# openssl s_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]
示例:在一臺主機上既當CA又有http
1、httpd上生成證書
# mkdir /etc/httpd/ssl
# cd /etc/httpd/ssl
# (umask 077;openssl genrsa -out httpd.key 1024)
Generating RSA private key, 1024 bit long modulus
..........................................++++++
..............++++++
e is 65537 (0x10001)
[[email protected] ssl]# openssl req -new -key httpd.key -out httpd.csr -days 3655
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:JLC
Organizational Unit Name (eg, section) []:JSB
Common Name (eg, your name or your server's hostname) []:www.bjwf.com
Email Address []:[email protected]        
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
2、自建CA
# cd /etc/pki/CA
# (umask 077;openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
...............................................................+++
......+++
e is 65537 (0x10001)
[[email protected] CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:JLC
Organizational Unit Name (eg, section) []:JSB
Common Name (eg, your name or your server's hostname) []:ca.bjwf.com
Email Address []:[email protected]
# touch index.txt serial   #準備檔案
# echo 01 > serial
# openssl ca -in httpd.csr -out httpd.crt -days 365  #CA簽署證書
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Jun 23 08:06:22 2016 GMT
            Not After : Jun 23 08:06:22 2017 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = BJ
            organizationName          = JLC
            organizationalUnitName    = JSB
            commonName                = www.bjwf.com
            emailAddress              = [email protected]
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                83:60:A6:B7:E5:EF:E1:50:A6:69:E2:BD:3A:60:50:AF:A6:36:1B:39
            X509v3 Authority Key Identifier: 
                keyid:B2:5F:33:01:B3:1A:B5:B9:2B:0F:C0:A5:37:48:AE:FD:3E:49:09:5F
 
Certificate is to be certified until Jun 23 08:06:22 2017 GMT (365 days)
Sign the certificate? [y/n]:y
 
 
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
3、配置https
# yum -y install mod_ssl
# cd /etc/httpd/conf.d
# vim ssl.conf 
<VirtualHost 192.168.130.250:443>
...
DocumentRoot "/var/www/html/a.com"
ServerName a.com:443
... 
SSLCertificateFile /etc/httpd/ssl/httpd.crt   #指明伺服器證書的位置
...
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key    #指明伺服器金鑰的位置
...
</VirtualHost>
# httpd -t
Syntax OK
# service httpd restart   #檢視https服務埠是否監聽
停止 httpd:                                               [確定]
正在啟動 httpd:                                           [確定]
[[email protected] conf.d]# netstat -tnlp|grep 443
tcp        0      0 :::443        :::*       LISTEN      15378/httpd  
# openssl s_client -connect 192.168.130.250:443 -CAfile /etc/pki/CA/cacert.pem
CONNECTED(00000003)
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 82D9C7A1676D82AB28F73C8C0A6322A023689B8F73491E3E78B73F7E
    Session-ID-ctx: 
    Master-Key: 340D147D1F4B479A0226EC9708728C9D872BFAF1B20B02C3403C9EDA98578D4
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 31 a3 1a 34 ba e5 11 99-77 6e e2 86 7b dc cf 3f   1..4....wn..{..?
    0010 - d0 a9 3f 22 f0 77 4e ec-31 52 6b dd a7 70 41 44   ..?".wN.1Rk..pAD
    0020 - e9 02 25 1f ee 24 56 d3-77 ac 56 10 e7 99 12 63   ..%..$V.w.V....c
    0030 - 2e 8c d9 09 15 32 59 21-46 17 8e 77 de 0f ff e8   .....2Y!F..w....
    0040 - 31 b4 e1 57 63 02 09 a1-31 42 8f f2 3f e3 49 c6   1..Wc...1B..?.I.
    0050 - e7 66 ee 95 8b 1c 6a 7f-cc 8e 9b 5e 83 c2 c9 2f   .f....j....^.../
    0060 - 8e 26 62 1b 0b 39 4b 79-50 80 5e de c6 dc 01 f9   .&b..9KyP.^.....
    0070 - 81 16 c7 3b 5a 90 3a a2-85 27 b4 7c ea 20 d5 83   ...;Z.:..'.|. ..
    0080 - 7e fe 9f 37 8b b3 66 3e-e1 e8 a6 fd 32 9b d0 82   ~..7..f>....2...
    0090 - 9f b0 be 7e a4 cf cf 6d-85 0d 93 ca 2b 70 c5 cf   ...~...m....+p..
    00a0 - 55 57 07 f7 bc fc 1d a2-df 30 d0 b6 05 6c 25 15   UW.......0...l%.
    00b0 - ee 32 51 6c 87 51 25 b9-55 3b 96 d3 50 4a 03 b6   .2Ql.Q%.U;..PJ..
 
    Start Time: 1466669780
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
 
GET /index.html HTTP/1.1
HOST: www.a.com
 
HTTP/1.1 200 OK
Date: Thu, 23 Jun 2016 08:16:51 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Thu, 23 Jun 2016 06:27:07 GMT
ETag: "260639-6-535ec24af4cd1"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html; charset=UTF-8
 
a.com
closed
CAError.png

二、httpd自帶工具


1、httpd:apache伺服器程式
  常用選項:
    -t:測試配置檔案
    -l:顯示靜態編譯進httpd的模組
    -D DUMP_MODULES:列出DSO模組
    -M:相當於-t -D DUMP_MODULES
    -D DUMP_VHOSTS:列出所有虛擬主機
2、htpasswd:為基於檔案的basic認證建立和更新使用者認證檔案
  常用選項:
    -c:建立一個passwdfile,如果passwdfile已經存在,那麼它會重新寫入並刪除所有內容
    -m:以md5的格式編碼儲存使用者的密碼資訊
    -s:sha1加密使用者密碼
    -D:刪除指定使用者
3、apachectl:指令碼,httpd服務控制工具
  常用選項:
    start:啟用服務
    stop:關閉服務
    status:檢視服務
    configtest:測試服務配置檔案
4、ab:apache benchmark,httpd的基準效能測試工具
  用法:ab [options] [http[s]://]hostname[:port]/path/to/somefile
  常用選項:
    -c #:模擬的併發數
    -n #:模擬的請求數,-n的值一定要大於等於-c的值
  同類工具:http_load,webbench,seige
5、apxs:httpd得以擴充套件使用第三方模組的工具
6、htcacheclean:磁碟快取清理工具
7、htdigest:為digest認證建立和更新使用者認證檔案
8、httxt2dbm:為rewrite map建立dbm格式的檔案
9、rotatelogs:滾動日誌,不關閉httpd而切換其使用日誌檔案的工具
    access_log, access_log.1, access_log.2,
10、suexec:當httpd程序需要以另外的使用者的身份去訪問某些資源時,可以以suexec作臨時切換;

 

三、資源限定


軟限定:可臨時超出一定時長的上限
硬限定:絕對不可超出的上限
可以使用ulimit命令臨時的修改各種資源的軟限制:
  ulimit -n [#]:顯示或設定能同事開啟的檔案控制代碼數
    linux核心允許普通使用者最多同時開啟1024個檔案
  ulimit -u [#]:顯示或裝置能同時啟動的程序數
  ulimit -a:顯示當前資源限定的設定
要長期有效,需要修改配置檔案
  /etc/security/limits.conf
  /etc/security/limits.d/*.conf
 
更多選項:參考部落格文件收集
ulimit -a 用來顯示當前的各種使用者程序限制。
Linux對於每個使用者,系統限制其最大程序數。為提高效能,可以根據裝置資源情況,設定各linux使用者
的最大程序數,下面我把某linux使用者的最大程序數設為10000個:
ulimit -u 10000
其他建議設定成無限制(unlimited)的一些重要設定是:
資料段長度:ulimit -d unlimited
最大記憶體大小:ulimit -m unlimited
堆疊大小:ulimit -s unlimited
CPU 時間:ulimit -t unlimited
虛擬記憶體:ulimit -v unlimited
linux對使用者有預設的ulimit限制,而這個檔案可以配置使用者的硬配置和軟配置,硬配置是個上限。
超出上限的修改就會出“不允許的操作”這樣的錯誤。
   
       
# ulimit -n
1024
# ulimit -n 65535
# ulimit -n
65535
 
#<domain>      <type>  <item>         <value>
#
 
#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4
 
# End of file
*        soft    noproc 10240
*        hard    noproc 10240
*        soft    nofile 10240
*        hard    nofile 10240     這就可以限定使用者開啟的最大執行緒及檔案為10240個

 

四、AB測試


# ab -c 300 -n 3000 http://www.a.com/index.html
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
 
Benchmarking www.a.com (be patient)
Completed 300 requests
Completed 600 requests
Completed 900 requests
Completed 1200 requests
Completed 1500 requests
Completed 1800 requests
Completed 2100 requests
Completed 2400 requests
Completed 2700 requests
Completed 3000 requests
Finished 3000 requests
 
 
Server Software:        Apache/2.2.15
Server Hostname:        www.a.com
Server Port:            80
 
Document Path:          /index.html
Document Length:        6 bytes   #請求的資源大小
 
Concurrency Level:      300     #併發數
Time taken for tests:   0.630 seconds  #測試的總時長
Complete requests:      3000    #請求總數
Failed requests:        0     #失敗的請求
Write errors:           0
Total transferred:      816272 bytes   #總共傳輸了多少位元組
HTML transferred:       18006 bytes    #整個場景中HTML內容傳輸量
Requests per second:    4760.79 [#/sec] (mean)  #每秒處理的請求個數
Time per request:       63.015 [ms] (mean)      #每處理一個併發單位所經過的時長
Time per request:       0.210 [ms] (mean, across all concurrent requests) #處理單個請求的時長
Transfer rate:          1265.01 [Kbytes/sec] received  #傳輸速率
 
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   3.4      1      16
Processing:     1   47 129.2     18     608
Waiting:        1   47 129.2     18     608
Total:          8   49 131.4     19     619
 
Percentage of the requests served within a certain time (ms)
  50%     19
  66%     19
  75%     20
  80%     20
  90%     21
  95%    617
  98%    618
  99%    618
 100%    619 (longest request)

相關推薦

Apache基本使用總結

一、常用配置1、修改監聽的IP和PortListen[IP:]PORT Listen 12.24.34.56:80 Listen 8080 # 省略ip表示監聽本機所有IP;Listen可重複出現多次;2、持久連線KeepAive On # 開啟 MaxKeepAliveRe

JAVA 線程池基本總結

基本使用 nta rdo off 存在 cte || minutes lar   合理利用線程池能夠帶來三個好處。     第一:降低資源消耗。通過重復利用已創建的線程降低線程創建和銷毀造成的消耗。     第二:提高響應速度。當任務到達時,任務可以不需要等到線程創建就能立

一些項目的基本總結

註解 jsp 中文亂碼問題 數據 密碼 javabean 用戶 流程 封裝 使用jsp顯示頁面信息 使用servlet進行流程控制 使用Javabean實現業務封裝 使用數據源+JDBC訪問數據庫 使用jQuery進行頁面交互 使用過濾器完成中文亂碼問題 使用servlet

ubuntu 安裝php ,apache 問題總結

1、apache沒有許可權 修改log   cd  /var/www   chmod -R 777 html/ 2、 The bootstrap/cache directory must be present and writab

less基本總結

1.下載koala客戶端,可以設定語言 2.用koala開啟一個有.less檔案的資料夾,點選.less檔案,點選執行方式,出現success表示繫結less檔案成功,編譯.less時會自動生成對應名稱的css檔案,html引入時引入css檔案,維護時是維護less檔案 3.less

Flask部署apache問題總結

主要參考: http://www.pythondoc.com/flask/deploying/mod_wsgi.html 問題總結: 1、部署路徑,最好不要是軟連結。如果是連結的話需要修改apache配置。 2、在.wsgi檔案中加入       import sys  

資料結構——棧的基本總結

最近刷資料結構的黑寶書,順便將資料結構進行下總結,就先從最熟悉的棧開始吧。 棧(stack),資料結構中的一種,準確的來說,應該是資料邏輯結構。 棧的基本特點為: 後進先出,就像生活中我們取放盤子,當一摞盤子在桌子上時候,我們總是會取最上邊的盤子,同時,我們在放盤子時,也

Apache基本配置

curl -I +域名|ip ##獲取域名或ip的header資訊,包括HTTP返回狀態碼,server型別,文字型別,快取時間等。 1.anpache的安裝 yum install httpd -y systemctl start httpd

PWM,外部中斷,定時器中斷的基本總結

本週的學習內容主要是PWM,外部中斷和定時器中斷,瞭解了PWM的基本功能以及外部中斷,定時器中斷的執行過程.一·PWM1.PWM一般是指脈衝寬度調製,通過PWM功能就能調節輸出電壓。2.佔空比指的是高低電平所佔時間的比值,比值越大,佔空比越大。在一個週期T內,若高電平輸出時間

關於C語言變數生存週期、作用域、記憶體分佈、預設值的基本總結

在C語言中,參與計算的資料都是通過不同型別的常量或者變數來表示的,而使用變數時不得不注意變數的生存週期、作用域,記憶體區域和預設值。在這裡簡單介紹一下記憶體區域: 程式碼段(code segment)

apache 基本vhost配置 【目的及過程】

進行 sdn ast nor lan ocs option server ctrl 轉: apache 基本vhost配置 2012年04月18日 09:39:28 chamtianjiao 閱讀數:74075 經常使用Apache

幾種基本排序算法總結

子序列 system aop 大於等於 != pri i++ index 元素移動 以下均采用從小到大排序: 1.選擇排序算法 個人覺得選擇排序算法是容易理解的排序算法,即從n個元素中選擇最小的一個元素與第一個元素交換,再將除第一個元素之外的n-1個元素找到最小的一

R的基本語法總結

adobe hist 當我 colors gda 編碼 找到 cati 逆時針 條形圖: 基本語法: barplot(H, xlab, ylab, main, names.arg, col) H是包含在挑選圖中使用的數值的向量或矩陣

OpenGL在MFC中的使用總結(一)——基本框架

palette 接受 white 要求 無效 結構 del 一次 是你 項目中要畫3D顯示的模型,於是要用到OpenGL,加上是在MFC中,並且是在MFC中的ActiveX中使用。再並且鑒於他們程序主框架的設定。常規的方法還不一定能實現。所以還是查過不少資料,在此一一總

GTS-800二次開發基本流程總結

win highlight line names 關閉 參數 ble 名稱 速度 1、打開控制器         GT_Open 2、啟動伺服使能        GT_ClrSts 3、軸規劃位置清零       GT_SetPrfPos 4、軸運動模式        

兔子--ps中的基本工具總結(ps cs5)

計數 手工 背景 滾動 高速 pop 基本 工具 史記 矩形選框工具 橢圓選框工具 單行選框工具 單列選框工具 移動工具 套索工具櫃 多邊形套索工具 磁性套索工具 魔棒工具 高速選擇工具 裁剪工具 切片工

JSP基本語法總結【1】(jsp工作原理,腳本元素,指令元素,動作元素)

ins 檢驗 welcome 域配置 ces 跳轉頁面 classes filter java代碼   時隔半年,回頭對jsp復習整理一下,溫故而知新。 jsp工作原理:   jsp服務器管理jsp頁面分兩個階段:轉換階段(translation phase)和執行階段

js基本語法總結(一)

向上取整 取余 轉字符串 結果 lin ase 調試 錯誤 進行 1.js簡介 a)js是一種網頁腳本語言,使得瀏覽器可以與網頁互動。 js的一種基於對象和事件驅動,具有安全性能的腳本語言,腳本語言就是在客戶端的瀏覽器就可以互動響應處理程序的語言,而不需要服務器的處理和響應

數據結構基本概念和術語總結

重新 條件 關系 線性結構 lar 成員 color 插入 的人 在這裏整理一下數據結構一些基本概念和術語,是為了自己以後方便查閱,同時也可以幫助到查閱的人方便查找,因為有些概念性很強的東西的確不是很好記。 什麽是數據結構:數據結構就是按照一定的邏輯組成的一批數據,使用

總結)CentOS 6.x使用yum快速安裝Apache+PHP+Tomcat(JSP)+MySQL

apache 意思 安裝apache /var/ 軟件 cat yum proxy_ajp alt (總結)CentOS 6.x使用yum快速安裝Apache+PHP+Tomcat(JSP)+MySQL PS:這個是懶人yum快速安裝法,用於開發和測試環境很方便,用於沒有特