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下安裝配置JDK和Tomcat操作步驟
下面以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下安裝配置Mysql和Redis
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.5和nginx
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 安裝rz和sz命令 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下安裝。雖然有無數的前輩踩過坑,但自己還是吭