1. 程式人生 > >linux httpd的安裝配置和使用

linux httpd的安裝配置和使用

版本

httpd-1.3
httpd-2.0
httpd-2.2
httpd-2.4
目前為止最新的版本是httpd-2.4.6,最新版本配置可能會有所不同

httpd的特性

  • 高度模組化:core + modules
  • DSO: Dynamic Shared Object,檢視安裝了的模組:httpd -M,檢視靜態編譯入程式的模組:httpd -l
  • MPM:Multipath Processing Module多道處理模組,負責實現網路監聽、請求的處理等功能,MPM有很多種,檢視當前apache服務所使用的MPM:httpd -l或httpd -V
    • prefork: 多程序模型,每個程序響應一個使用者請求;一個主程序,負責生成n個子程序,子程序也稱為工作程序,每個子程序處理一個使用者請求;即便沒有使用者請求,也會預先生成多個空閒程序,隨時等待請求到達;最大不會超過1024個;
    • worker: 啟動多個程序,每個程序生成多個執行緒,每個執行緒響應一個使用者請求;
    • event: 啟動多個執行緒,每個執行緒響應N個請求;

安裝

rpm安裝
編譯安裝

程式環境(CentOS6)

服務指令碼:/etc/rc.d/init.d/httpd
服務指令碼配置檔案:/etc/sysconfig/httpd

主程式檔案:
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker

配置檔案:/etc/httpd/conf
主配置檔案:/etc/httpd/conf/httpd.conf
擴充套件配置:/etc/httpd/conf.d/*.conf

日誌檔案目錄:/var/log/httpd
- access_log:訪問日誌
- error_log:錯誤日誌

站點檔案目錄(DocumentRoot):/var/www/html

預設主頁面檔案:/var/www/html/index.html

測試配置和檢視的命令

apache服務預設會啟動一個主程序(控制程序)和多個子程序,其中以root身份執行的是主程序,以apache身份執行的是子程序,主程序的程序id儲存在/etc/httpd/run/httpd.pid檔案內
apache預設監聽TCP協議80埠 netstat -tupln | grep 80
檢視apache相關程序:ps aux | grep httpd
service httpd configtest #測試配置檔案有沒有語法錯誤
httpd -t #同上
httpd -l #當前伺服器所使用的模型及開啟模組
httpd -D DUMP_MODULES #當前伺服器支援的模組
service httpd reload #重新載入配置檔案
service httpd restart #重啟httpd服務
注意:修改配置檔案後要重新載入配置檔案,修改伺服器監聽埠後要重啟服務

基本配置

溫馨提示:配置httpd的工作屬性時,指令不區分大小寫,但有約定俗成的習慣:單詞的首字母大寫;指令的值很有可能區分大小寫;有些指令可以重複使用多次;

配置監聽的埠:

Listen [IP:]PORT
例如:Listen 172.16.3.1:80

配置所選用的MPM的屬性

prefork模型:預設使用
StartServers 8 #服務啟動後預設開啟的程序數
MinSpareServers 5 #最少空閒程序數
MaxSpareServers 20 #最多空閒程序數
ServerLimit 256 #每個程序允許開啟最多的子程序數
MaxClients 256 #每個程序最多使用者連結數
MaxRequestsPerChild 4000 #長連線時每個使用者最多請求數

worker模型:要支援worker模型需要配置/etc/sysconfig/httpd開啟
HTTPD=/usr/sbin/httpd.worker
StartServers 4 #服務啟動預設開啟的程序數
MaxClients 300 #最多同時客戶連線數
MinSpareThreads 25 #最少空閒程序數
MaxSpareThreads 75 #最好空閒程序數
ThreadsPerChild 25 #每個程序開啟的執行緒數
MaxRequestsPerChild 0

配置伺服器支援keep-alived(長連線)

KeepAlive {On|Off} #是否支援長連線
KeepAliveTimeout 2 #長連線超時時間
MaxKeepAliveRequests 50 #超時時間內允許請求的次數

配置載入模組

LoadModule foo_module modules/mod_foo.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so

配置網站根目錄

DocumentRoot “/var/www/html” #指定網站的主目錄
- 容器內定義站點的訪問許可權
- 容器內限定使用者的訪問方法

定義預設主頁

DirectoryIndex index.php index.jsp index.html

配置頁面檔案的訪問屬性

Options
Indexes #是否允許索引頁面檔案,建議關閉
FollowSymLinks #是否跟隨軟連線檔案
SymLinksifOwnerMatch #跟隨符號連結,只允許訪問執行apache的使用者有屬主許可權的檔案
ExecCGI: #是否允許執行CGI指令碼;
All
None(一般使用此項)

基於客戶端訪問控制

注意:系統預設允許所有人訪問
Order #定義allow和deny哪個為預設法則,寫在後面的為預設法則,寫在前面的指令沒有顯示定義的即受後面的指令控制。
Order allow,deny(白名單)
Allow from all #所有人可以訪問
例如,配置允許172.16.0.0/16訪問,但不允許172.16.3.1訪問
Order allow,deny
Deny from 172.16.3.1 #禁用一個IP訪問
Allow from 172.16.0.0/16 #允許一個網段訪問

基於使用者訪問控制

當你的網站或者站點的某個路徑只想讓你授權的使用者訪問時,就可以使用基於使用者的訪問控制。

  • 認證質詢:響應碼為401,拒絕客戶端請求,並說明要求客戶提供賬號和密碼;
  • 認證:客戶端使用者填入賬號和密碼後再次傳送請求報文,認證通過則伺服器傳送響應的資源;
    • 認證型別:basic明文、digest訊息摘要

這裡使用htpasswd命令建立使用者帳號檔案
htpasswd
-c #第一次使用-c建立新檔案,不是第一次不要使用此選項
-m #使用者密碼使用MD5加密後存放
-s #使用者密碼使用SHA加密後存放
-p #使用者密碼不加密
-d #禁用一個賬戶
-e #啟用一個賬戶
例如:
htpasswd -c -m /etc/httpd/conf/.htpass tom
命令 選項 生成的使用者檔案路徑及檔名 使用者名稱
htpasswd -m /etc/httpd/conf/.htpass jerry
再次新增使用者時就不要使用-c選項了,否則會覆蓋之前內容先生成
(1)建立使用者帳號檔案
htpasswd -c -m /etc/httpd/conf/.htpass tom
(2)修改主配置檔案
vi /etc/httpd/conf/httpd.con
DocumentRoot “/www/html” #此時網站根目錄就是/www/html
Optins None
AllowOverride None
AuthName “Oaly for employees.” #登入提示資訊,可自定義
AuthType Basic #認證方式
AuthUserFile /etc/httpd/conf/.htpass #使用者帳號檔案
Require valid-user #允許的使用者
Require 指定可以訪問的使用者,可以指定單個使用者,直接寫使用者名稱就可以了,使用者名稱可以寫多個用空格分開,也可以指定所有使用者就用 valid-user
注意,如果允許使用者較多,也要設定基於組認證方式。

配置日誌功能

日誌有兩類:訪問日誌(格式自定義)、錯誤日誌

錯誤日誌:
ErrorLog “/path/to/error_log_file”

訪問日誌:
CustomLog “/path/to/custom_log_file” logformat

日誌格式:{combined|common|agent}
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined
LogFormat “%h %l %u %t \”%r\” %>s %b” common
LogFormat “%{Referer}i -> %U” referer
LogFormat “%{User-agent}i” agent
%h #客戶端ip
%l #
%u #使用者名稱
%t #請求到達的時間
%r #請求報文的起始行,方法
%s #
%b #響應報文的大小
%{Referer}i #請求報文中“referer”首部的值。當前資源的訪問入口,即從哪個頁面中的超連結跳轉而來;
%{Foobar}i #顯示從發那個站點跳轉過來
%{User-Agent}i ##請求報文中“User-Agent”首部的值。即發出請求用到的應用程式。
####路徑別名
作用:可以隱藏網站的真實目錄
Alias /test/ “/www/test/” #配置別名

支援的字符集

AddDefaultCharset UTF-8

Apache之自帶工具(詳細參考)

密碼檔案生成工具:htpasswd

指令:htpasswd

語法格式:
htpasswd  [-cmdpsD] passwordfile username
htpasswd  -b[cmdpsD] passwordfile username password
htpasswd  -n[mdps] username

選項說明:
   -c 建立一個加密檔案
  -n 不更新加密檔案,只將apache htpasswd命令加密後的使用者名稱密碼顯示在螢幕上
  -m 預設apache htpassswd命令採用MD5演算法對密碼進行加密
  -d apache htpassswd命令採用CRYPT演算法對密碼進行加密
  -p apache htpassswd命令不對密碼進行進行加密,即明文密碼
  -s apache htpassswd命令採用SHA演算法對密碼進行加密
  -b 在apache htpassswd命令列中一併輸入使用者名稱和密碼而不是根據提示輸入密碼
  -D 刪除指定的使用者
  在Windows, NetWare and TPF 系統中 ‘-m’選項是預設的,在使用apache htpasswd命令時可以忽略。在其他系統中,’-p’選項可能不能工作。
  
使用例項:
  1、如何利用htpasswd命令新增使用者?
  htpasswd -bc .passwd www.leapsoul.cn php
  在bin目錄下生成一個.passwd檔案,使用者名稱www.leapsoul.cn,密碼:php,預設採用MD5加密方式
  2、如何在原有密碼檔案中增加下一個使用者?
  htpasswd -b .passwd leapsoul phpdev
  去掉c選項,即可在第一個使用者之後新增第二個使用者,依此類推
  3、如何不更新密碼檔案,只顯示加密後的使用者名稱和密碼?
  htpasswd -nb leapsoul phpdev
  不更新.passwd檔案,只在螢幕上輸出使用者名稱和經過加密後的密碼
  4、如何利用htpasswd命令刪除使用者名稱和密碼?
  htpasswd -D .passwd leapsoul
  5、如何利用htpasswd命令修改密碼?
  htpasswd -D .passwd leapsoul
  htpasswd -b .passwd leapsoul phpdev
  即先使用htpasswd刪除命令刪除指定使用者,再利用htpasswd新增使用者命令建立使用者即可實現修改密碼的功能

httpd程式的控制指令碼:apachectl

語法格式:
apachectl [configtest][fullstatus][graceful][help][restart][start][status][stop]

補充說明:
    apachectl是slackware內附Apache HTTP的script檔案,可供管理員控制伺服器,但在其他Linux的Apache HTTP伺服器不一定有這個檔案

引數說明:
   configtest 檢查設定檔案中的語法是否正確。
  fullstatus 顯示伺服器完整的狀態資訊。
  graceful 重新啟動Apache伺服器,但不會中斷原有的連線。
  help 顯示幫助資訊。
  restart 重新啟動Apache伺服器。
  start 啟動Apache伺服器。
  status 顯示伺服器摘要的狀態資訊。
  stop 停止Apache伺服器

壓力測試工具:ab

日誌輪轉工具:rotatelogs

動態模組擴充套件工具:apxs

相關推薦

linux httpd安裝配置使用

版本 httpd-1.3 httpd-2.0 httpd-2.2 httpd-2.4 目前為止最新的版本是httpd-2.4.6,最新版本配置可能會有所不同 httpd的特性 高度模組化:core + modules DSO: Dynamic

Centos7 64bit Linux系統安裝SVN http訪問配置

第一步,更新源,並通過yum下載安裝svn [[email protected] ~]# yum update [[email protected] ~]# yum -y install subversion 安裝過程中,全部選擇同意(y)即可。 安裝完成會提示complet

Linux安裝配置JDKTomcat操作步驟

下面以JDK7和Tomcat7為例,介紹CentOS7.5下安裝配置JDK和Tomcat的操作步驟。 1、安裝JDK 1.1、檢視yum庫中都有哪些jdk版本 yum search java|grep jdk1.2、選擇指定的版本安裝 yum install java-1.7.0-openj

centos 7 linux系統預設ftp安裝配置部署(詳細講解)

轉載自:https://www.cnblogs.com/mujingyu/p/7677273.html 小生接觸 Linux 系統時間不長,想解決linux系統ftp安裝及部署問題,折騰了大半天,終於弄出來了,將各路 高手的配置方法綜合了一下,如有不對之處,歡迎各位看客指正,感謝! 一、

Linux】centos 7 linux系統預設ftp安裝配置部署(詳細講解)

小生接觸 Linux 系統時間不長,想解決linux系統ftp安裝及部署問題,折騰了大半天,終於弄出來了,將各路 高手的配置方法綜合了一下,如有不對之處,歡迎各位看客指正,感謝! 一、宣告:   本文采用作業系統版本: Centos 7 Linux系統     版本源:C

linux 下apache httpd安裝配置

JDK的安裝 1.解壓 tar -zxvf jdk-8u181-linux-x64.tar.gz 2.重名名後移動到 /usr/目錄下 mv jdk-8u181-linux-x64 jdk sudo mv jdk /usr 3. 新增環境變數 sudo vim /etc/profile

Linux安裝配置MysqlRedis

  Linux下安裝Mysql(Mariadb) linux下如何安裝軟體? 1. yum安裝軟體也得注意,一個是配置yum源  1.我們當前的是阿里雲的yum源(下載速度特別快)  通過 yum install mariadb  發現版本如下,版本特別低,且安裝

Linux下Mycat安裝配置使用

                        mysql安裝

Linux安裝vsftp配置

本文以CentOS為配置環境,進行vsftpd的安裝。 (1)命令yum install vsftpd. (下載VSFTPD Linux下傳統的安裝軟體方法是下載tar.gz安裝包,或者RPM安裝包,再經過解壓之後進行編譯,或者用RPM -i命令安裝。過程比較繁瑣,其

挺好用的Linux安裝配置php5.5nginx

http://www.94cto.com/index/Article/content/id/188.html 今天我們這篇關於php5.5和nginx的安裝介紹的技術文章我們主要為各位朋友們介紹關於Linux環境下面安裝nginx和php5.5方面的內容。當然只是為初學者朋

linux安裝nginx配置

有一個 是否 就是 服務器 文件 get openss 會有 bsp 1、系統:centos7 2、安裝準備: 安裝nginx前,我們首先要確保系統安裝了g++、gcc、openssl-devel、pcre-devel和zlib-devel軟件,可通過如圖所示命令進行檢

Linux - vim安裝 配置與使用

格式 only ctx net height border term mona 方便 一 Vim 簡單介紹 曾經一直用vi,近期開始使用 vim,以下將兩者做一下比較。 vi和vim都是多模式編輯器,不同的是vim 是vi的升級版本號,它不僅兼容vi的全部指令,並且

linux CentOS 安裝rzsz命令 lrzsz

pre centos服務器 lrzsz 窗口 spa mod sta 下載文件 ref lrzsz在linux裏可代替ftp上傳和下載。 lrzsz 官網入口:http://freecode.com/projects/lrzsz/ lrzsz是一個unix通信套件提供的X

Java學習筆記——Linux安裝配置MySQL

code names 刪掉 set 影響 per install nod 設置 山重水復疑無路,柳暗花明又一村               ——遊山西村 系統:Ubuntu 16.04LTS 1\官網下載mysql-5.7.18-linux-glibc2.5-x86

proxysql安裝配置讀寫分離初識

tps select block use nod gre match iad 分組 前言   筆者從事MySQL的相關工作,最近線上需要一款性能上佳的MySQL中間件產品,本人在了解一些如ProxySQL、MariaDB MaxScale、MySQL Router、Atla

Linux安裝配置SNMP服務

ip地址 .com 設備節點 1.4.1 linux下 檢查 linu sof href 一、安裝snmp服務 1、檢查系統是否已經安裝snmp的rpm包 以下是安裝snmp服務需要的rpm包: libsensors3-2.10.6-55.el5.i386.rpm

linux系統安裝配置exim4(源碼安裝

testing iconv uri linux系統安裝 5.0 tab sea action /usr 一、Exim4概述 Exim是一個MTA(Mail Transfer Agent,郵件傳輸代理)服務器軟件,該軟件基於GPL協議開發,是一款開源軟件。該軟件主要運行

Red Hat Linux redis 安裝配置

裝配 www. nload 這一 ins linux服務 net tar.gz 過程 最近在學習redis,剛開始嘗試在red hat Linux服務安裝總是不成功,經過幾次嘗試終於配置成功,現將過程整理如下: 服務器環境: Red Hat Enterpriserver L

maven在windows10系統下安裝配置打包war

local resources username main bsp png root 3.5 ren maven下載地址:http://maven.apache.org/ 下載完成解壓到 D盤 目錄下D:\apache-maven-3.5.0\bin 配置maven環境變量

appium+Linux環境安裝配置

全局 很多 -- 應該 下載 lis cnp rmi -a 背景:想要在Jenkins上跑appium的自動化測試,所以想要在Jenkins服務器(Linux遠程)上安裝appium服務,故而研究了一下appium+Linux下安裝。雖然有無數的前輩踩過坑,但自己還是吭