歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

AdministeringApache讀書筆記

modules -> Functions 安裝與配置apache ########################################################################################### 獲取apache 從http://www.apache.org 獲取apache 2.0.44 安裝apache ------------------------------ 使用APACI配置a
  modules -> Functions
  安裝與配置apache
  ###########################################################################################
  獲取apache
  
  從http://www.apache.org獲取apache 2.0.44
  
  安裝apache
  ------------------------------
  使用APACI配置apache的安裝:
  ./configura
  常用選項:
  --help #可以查看所有的可用選項
  --prefix=<PATH> #指定安裝目錄
  --enable-module = <xxx|all|most> #xxx為名字為mod_xxx.c的模塊
  --disable-module = xxx #xxx為名字為mod_xxx.c的模塊
  --enable-shared = <xxx|max> #起用DSO(Dynamic Share Object),需要mod_so.c的支持
  
  開始安裝
  -------------------------------------------------------------------
  make
  make install
  oks
  
  與php 4.3.1 的集成
  -------------------------------------------------------------------
  ---/configure --with-apxs2=/usr/local/apache2/bin/apxs <假如想安裝mysql的話 --with-mysql=/usr/local/mysql >
  make
  make install
  
  配置apache
  -------------------------------------------------------------------
  apache的主要配置文件:
  httpd.conf
  srm.conf
  aclearcase/" target="_blank" >ccess.conf
  mime.types
  magic
  
  編輯httpd.conf
  基本指令:
  ServerType #為standalone或者是inetd
  ServerRoot #apache的安裝目錄,默認為/usr/local/apache
  LockFile #服務器串行模式的加鎖文件位置,一般不需要改動
  PidFile #記錄服務器運行時的pid的文件路徑
  ResourceConfig #資源文件所在,讓srm.conf為空,則httpd.conf的相關值生效
  AccessConfig #訪問權限文件的所在路徑
  LoadModule #加載模塊
  AddModule #加載模塊的順序
  Port #監聽端口,默認為80
  ServerAdmin #管理員信箱
  ServerName #服務器名稱
  DocumentRoot #站點文件所在路徑
  
  測試配置是否正確
  -------------------------------------------------------------------
  apachectl configtest
  
  啟動apache
  -------------------------------------------------------------------
  apachectl start 或者 httpd -k start
  
  重起apache
  -------------------------------------------------------------------
  apachectl graceful 或者 httpd -k graceful
  
  停止apache
  -------------------------------------------------------------------
  apachectl stop 或者 httpd -k stop
  
  創建web site
  ###########################################################################################
  
  apache默認的用戶和組為為apache
  將站點的目錄和文件的權限賦予apache
  find /usr/local/apache/ -exec chown apache {}find /usr/local/apache/ chgrp apache {}find /usr/local/apache/ -type -d chmod 755 {}find /usr/local/apache/ -type -f chmod 640 {} 給適當的文件適當的權限是一個管理員的責任所在。
  
  內容處理
  ###########################################################################################
  
  目錄內容處理
  -------------------------------------------------------------------
  DirectoryIndex index.htm index.html #默認文擋
  當默認文檔不存在,且<Directory>Options中Indexes生效時:
  HeaderName #頁面題頭文件
  ReadmeName #頁面頁尾文件
  IndexIgnore #隱藏文件規則
  IndexOptions #控制目錄列表的外觀
  
  目錄其他
  -------------------------------------------------------------------
  Alias /path/ "/<path>/" #別名定義
  
  配置MIME(multipropuse internet mail extend protocol)
  -------------------------------------------------------------------
  因為不常會修改,只做浏覽
  AddHandler
  SetHandler send-as-is # 按原狀發送
  
  配置CGI(comment gateway interface)
  -------------------------------------------------------------------
  <Directory>Options +ExecCGI #以允許使用CGI
  
  SetHandler cgi-script #設定CGI腳本類型
  
  配置SSI
  -------------------------------------------------------------------
  因為apache方面的性能專家Dean Gaudet不鼓勵使用SSI,所以我只是浏覽了一下,沒有詳細地記錄下來
  
  使用日志
  ###########################################################################################
  -------------------------------------------------------------------
  LogLevel <emerg|alert|crit|warn|notice|info|debug> 簡略-->詳細 嚴重-->輕微
  ErrorLog <path|pipe|syslog>
  日志發送到文件:ErrorLog /var/www/log
  日志發送到syslog:ErrorLog syslog:local <1-7> 默認為local 7
  日志發送給管道:ErrorLog "|/usr/local/apache/bin/errordb insert"
  
  日志傳輸
  -------------------------------------------------------------------
  文檔傳送日志告訴你服務器在與誰交互,交互什麼,是什麼時候交互,同哪裡交互TransferLog用法類似ErrorLog
  
  自定義日志格式
  -------------------------------------------------------------------
  LogFormat
  %a client ip
  %A server ip
  %b 響應http標頭以外的字節數
  %{eviron}e 以eviron命名的變量的值
  %f 被請求文件的路徑
  %h client hostname
  %{reqheader}i 名字為reheader的標頭的值
  %l client的系統環境,IdentifyCheck為On且內容協商成功
  %{modnote}n 名字為 modnote的短信的值
  %p server port
  %P server PID
  %r 請求的第一行,包括URLmodth
  %s 原始響應信息
  %>s 返回浏覽器的響應狀態
  %t 請求的發生時間[18/Nov?1999:13:02:58-0600]
  %{timefmt}t 定義時間的顯示格式,因為基本不需要修改,所以省略了...
  %T 處理請求的秒數
  %u 請求用戶的登陸名
  %U 被請求的URL,不包括參數
  %v server name
  %V 根據UseCanonicalName得到服務器名稱
  
  通用日志的默認格式等價於
  LogFormat "%h %l %u %t \" %r \" %>s %b"
  
  LogFormat "%401u" #記錄未認證的用戶名
  
  apache 預先定義了四種日志的格式:<combined|common|referer|agent>
  
  CustomLog
  -------------------------------------------------------------------
  CoustomLog "/var/logs/httpd/access_logs" env = myCheck #否定為 env =! myCheck
  
  SetEnvIf <Remote_Addr|Remote_host|Remote_user|Request_Method|Request_protocol|Request_URL> "condition" VarName
  
  只要檢查屬性中符合Condition,就定義名字為VarName的變量
  
  condition為unix中的正則表達式(Regular Expression),可以查看man regex獲取詳細資料
  
  LogFormat CustomLog 由mod_log_config.c提供<默認>
  
  SentEnvIf mod_setenvif.c提供<默認>
  
  CookieTracking CookieName CookieExpires
  -------------------------------------------------------------------
  由mod_usertrack.c提供<非默認>
  <IfModule mod_usertrack>
  CookieTracking <on|off>
  CookieName myCookie
  </IfModule>
  CookieExpires 600 #也可以用 CookieExpires "3 weeks 2 days 4 hours 22 seconds"
  注意CookieExpires不可以在<Directory>中,該選項為全局
  
  AllowOverride
  -------------------------------------------------------------------
  All 允許.htaccess覆蓋httpd.conf中的所有目錄設置
  Authconfig 允許覆蓋認證指令AuthName AuthType AuthUserFile AuthGroupFile 等
  FileInfo 允許覆蓋目錄存取文件設置AddEncodeing AddLanguage AddType CookieTracking CookieName等
  Indexes 允許覆蓋目錄索引設置
  Limit 允許覆蓋allow deny order require
  None 不允許覆蓋httpd.conf中的所有目錄設置
  Options 允許覆蓋Options的設置
  
  例子:用戶單擊流事件,引用記錄,代理記錄
  
  虛擬主機
  ###########################################################################################
  
  基於IP的虛擬主機
  -------------------------------------------------------------------
  <VirtualHost 202.119.219.28>
  ServerName www.njfu.edu.cn
  ServerAdmin [email protected]
  DocumentRoot /var/www/
  ServerAlias njfu.edu.cn
  </VirtualHost>
  
  基於域名的虛擬主機
  -------------------------------------------------------------------
  NameVirtualHost 202.119.219.28
  <VirtualHost 202.119.219.28>
  ServerName www.njfu.edu.cn
  ServerAdmin [email protected]
  DocumentRoot /var/www/
  ServerAlias njfu.edu.cn main.njfu.edu.cn
  </VirtualHost>
  
  VirtualDocumentRoot
  -------------------------------------------------------------------
  mod_vhost_alias.c模塊提供
  大大簡化了配置虛擬主機
  
  一個好的管理員會為沒個虛擬站點分別設置不同的的按全性設置
  
  安全性
  ###########################################################################################
  
  IP構成
  -------------------------------------------------------------------
  首先拒絕一切,接著允許可以放行的服務
  ICMP (ping / pong)
  DNS DHCP
  WWW SMTP POP PROXY.i.e
  
  網絡配置文件
  -------------------------------------------------------------------
  /etc/sysconfig/network-script/ifcfg-eth0
  ------------------------------
  DEVICE=eth0
  onBOOT=yes
  BOOTPROTO=static
  IPADDR=131.107.200.1
  NETMASK=255.255.0.0
  GATEWAY=131.107.200.6
  
  /etc/sysconfig/network
  ------------------------------
  NETWORKING = YES
  FORWARD_IPV4 = YES
  HOSTNAME = NICOWARE
  GATEWAYDEV = eth0
  
  安全配置文件
  -------------------------------------------------------------------
  /etc/securetty
  /etc/ftpuser
  /etc/ssh
  /etc/hosts.allow
  /etc/hosts.deny #詳細可以查看man 5 host_access
  防止root直接登陸是一個上策,便於發生惡性時間時的偵察
  
  保護內容的安全性
  -------------------------------------------------------------------
  User apache #運行的用戶帳戶
  Group apache #運行的用戶帳戶組
  
  <Directory>
  <Location>
  <Files>
  
  使用order,allow和deny總是並行處理的
  <Directory>
  Order allow,deny
  Deny from all
  Allow 192.168.0.1/255.255.255.0
  </Directory>
  
  身份驗證
  -------------------------------------------------------------------
  AuthType <Basic|Digest> #驗證方式
  Basic驗證方式是用BASE64編碼,即是明文傳輸的
  
  AuthName "nico's zone" #驗證區域名稱
  AuthUserFile /var/www/authenticaton/.htuser #用戶密碼文件,使用htpasswd創建
  AuthGroupFile /var/www/authenticaton/.htuser #用戶組文件,需要手工創建
  require < user| group | valid-user > #需要滿足的條件
  
  mod_digest.c<非默認>
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  AuthDigestFile
  
  使用數據庫文件保持用戶帳號和密碼
  使用BSD DB2 格式,數據使用crypt()加密
  dbmmanage可以創建BSD DB2 和DBM格式的數據庫
  
  mod_auth_db.c <非默認>
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  AuthDBUserFile
  AuthDBGroupFile
  
  mod_auth_anon.c <非默認>
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Anonymous #允許匿名登陸的用戶名稱
  Anonymous_MustGiveEmail <on/off> #匿名用戶必須提交E-MAIL
  Anonymous_LogEmail <on/off> #記錄E-mail到log中
  Anonymous_VerifyEmail <off/on> #檢查E-mail的有效性
  Anonymous_NoUserId <off/on> #允許不用用戶名登陸
  
  mod_digest.c<非默認>
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  因為覺得不常用所以沒有記錄
  
  密碼文件創建程序
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  htpasswd htdigest dbmmanage
  
  Satisfy
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  對在封閉模塊(如 <Directory> ),中認證策略的滿足條件
  Satisfy <all|any>
  
  <Limit> <LimitExcept>
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  <Limit> <LimitExcept>是邏輯上的對立
  參數:CONNECT COPY DELETE GET(HEAD) OPTIONS LOCK MKCOL MOVE PATCH POST PROPFIND PROPPATCH PUT TRACE UNLOCK SSL
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  因為感覺商業應用比較常用,我暫時很用不到,等以後要用的時候在看好了
  
  建立站點空間
  ###########################################################################################
  
  決定規模 訪問量,站點內容
  決定提供的服務 html cgi php perl
  空間分配 設立quota
  設置用戶主目錄 UserDir,用戶帳戶安全
  與其他程序配合 DNS FTP SSH
  
  故障處理
  ###########################################################################################
  
  server-status
  ------------------------------
  由模塊mod_status.c提供
  報告服務器的狀態可以用命令 apachectl status
  但是server-status可以提供更多的信息
  ExtendedStatus On
  <Location /server-status>
  SetHandLer server-status
  Options None
  AllowOverride None
  Order allow,deny
  Deny from all
  Allow from 127.0.0.1
  </Location>
  
  server-info
  ------------------------------
  由模塊mod_info.c提供
  <Location /server-info>
  SetHandLer server-info
  Options None
  AllowOverride None
  Order allow,deny
  Deny from all
  Allow from 127.0.0.1
  </Location>

Copyright © Linux教程網 All Rights Reserved