Linux下配置Apache httpd
httpd是Apache超文字傳輸協議(HTTP)伺服器的主程式。它被設計為一個獨立執行的後臺程序,它會建立一個處理請求的子程序或執行緒的池對外提供服務。httpd支援基於 虛擬主機,以及基於HOST、IP、PORT實現虛擬主機,反向代理,負載均衡,路徑別名,使用者認證,basic,支援第三方模組等眾多特性。本文主要描述了Linux下httpd(2.2版本)的相關基本配置。
1、配置檔案概述
配置檔案,主要分為3個部分:
# grep "Section" /etc/httpd/conf/httpd.conf
### Section 1: Global Environment(全域性環境配置)
### Section 2: 'Main' server configuration (核心伺服器配置)
### Section 3: Virtual Hosts(虛擬主機配置,即建多個站點)
注意:Main Server和Virtual Hosts不同時使用;預設啟用的是Main Server;
配置檔案的語法
指令 值
指令:不區分字元大小寫
值:區分字元大小寫
校驗配置檔案
httpd -t: 檢查配置檔案語法
service httpd configtest
當前配置使用的版本
# /usr/sbin/httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Aug 13 2013 17:29:28
2、關閉歡迎頁面
/etc/httpd/conf.d/welcome.conf:重新命名(不以.conf結尾)或刪除
3、定義ServerRoot
ServerRoot "/etc/httpd"
定義httpd頂級目錄,用於存放配置,錯誤,日誌檔案等
目錄尾部不要使用斜槓
4、指定監聽的地址和埠
Listen [IP:]PORT
注意:Listen 可以出現多次
5、定義預設的主頁面
DirectoryIndex index.html index.html.var index.php
6、設定預設字符集
AddDefaultCharset UTF-8
常用字符集:UTF-8, GBK, GB2312, GB18030
7、配置持久連線
KeepAlive Off|On 持久連結是開啟還是關閉
MaxKeepAliveRequests 100 一次長連線最大能訪問多少個資源,達到後會斷開
KeepAliveTimeout 15 一次長連線的超時時長
8、模組動態裝解除安裝
LoadModule foo_module modules/mod_foo.so
相對於ServerRoot引數所指定的路徑;
ServerRoot /etc/httpd
可以參考: [Linux下安裝Apache httpd](http://blog.csdn.net/leshami/article/details/49906229)
9、工作模式引數配置
<IfModule prefork.c> (prefork工作模式)
StartServers 8 (啟動8個空閒程序)
MinSpareServers 5 (最少空閒程序為5)
MaxSpareServers 20 (最大空閒程序為20)
ServerLimit 256 (最多客戶端數)
MaxClients 256 (最多客戶端數)
MaxRequestsPerChild 4000 (每個子程序最大處理多少個請求)
</IfModule>
<IfModule worker.c> (work工作模式)
StartServers 4 (啟動程序數)
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25 (每個程序最多啟動多少個執行緒)
MaxRequestsPerChild 0
</IfModule>
注意:修改了裝載的模組後,reload即可生效;
10、指定Main Server的docroot,用於設定URL的根路徑,即與伺服器上檔案路徑的對映關係
DocumentRoot "/var/www/html"
例如:/u01/web 此處DocumentRoot為/u01/web
檔案系統路徑:/u01/web/bbs/upload/a.rar
則URL路徑為:http://Server_IP/bbs/upload/a.rar
# mkdir -p /u01/web
# echo "This is a new site location" > /u01/web/index.html
# vi /etc/httpd/conf/httpd.conf ###修改為/u01/web
# service httpd reload
# curl http://192.168.21.10
This is a new site location
11、站點路徑訪問控制
基於本地檔案系統路徑
<Directory "/path/to/some_directory">
Options Indexes FollowSymLinks
AllowOverride None
....
</Directory>
基於URL
<Location "/path/to/some_url">
</Location>
12、Directory容器中的訪問控制定義
(a) Options (頁面如何展示給使用者看)
Indexes: 當訪問的路徑下無預設的主頁面時,將所有資源以列表形式呈現給使用者;危險,慎用;
FollowSysLinks:跟隨符號連結指向的原檔案(即能否訪問連結檔案);
上述選項,如果要去掉或者說關閉某項功能,則使用符號“-”,如下示例:
Options -Indexes FollowSymLinks
示例,關閉Indexes功能
# grep "\-Indexes" /etc/httpd/conf/httpd.conf
Options -Indexes FollowSymLinks
# service httpd reload
Reloading httpd:
[[email protected] ~]# curl http://192.168.21.10
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title> ###收到403,沒有訪問許可
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at 192.168.21.10 Port 80</address>
</body></html>
(b) 基於IP的訪問控制
Order allow,deny ###定義順序
Allow from all ###允許所有主機訪問
from後面能接受的地址格式:IP, Network Address
網路地址格式:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
示例:
Order allow,deny
Deny from 172.16.100.77
Allow from 172.16
13、內建的status頁面
<Location /server-status> ###是一個內建頁,用於展示伺服器效能
SetHandler server-status ###(處理器:是一個小程式)
Order deny,allow
Deny from all
Allow from 192.168
</Location>
ExtendedStatus On 可以通過配置該指令,獲取更多的統計資訊
示例:
# curl http://192.168.21.10/server-status
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
...........
<pre>
7957 in state: _ , 7958 in state: W , 7959 in state: _
7960 in state: _ , 7961 in state: _ , 7962 in state: _
7963 in state: _ , 7964 in state: _ ,
</pre>
............
</body></html>
14、虛擬主機
一個物理伺服器(虛擬機器)服務於多個站點:每個站點通過一個虛擬主機來實現;
httpd支援三種類型的虛擬主機:
基於IP
基於Port
基於Host
注意:禁用Main Server; 註釋DocumentRoot指令即可;即虛擬主機與Main Server不相容
定義虛擬主機:
<VirtualHost "IP:PORT">
ServerName
DocumentRoot
ServerAlias
<Directory >
</Directory>
ErrorLog
CustomLog
</VirtualHost>
示例1:基於IP,假定如下配置,當前主機上已配置2個IP
<VirtualHost 192.168.21.10:80>
ServerName websrv.ycdata.net
DocumentRoot "/Vhosts/websrv.ycdata.net"
</VirtualHost>
<VirtualHost 192.168.144.128:80>
ServerName bbs.ycdata.net
DocumentRoot "/Vhosts/bbs.ycdata.net"
</VirtualHost>
注,虛擬主機監聽的埠必須和Listen監聽的一樣
# mkdir -p /Vhosts/websrv.ycdata.net
# mkdir -p /Vhosts/bbs.ycdata.net
# echo "<h1>you are visiting websrv.ycdata.net</h1>">/Vhosts/websrv.ycdata.net/index.html
# echo "<h1>you are visiting bbs.ycdata.net</h1>">/Vhosts/bbs.ycdata.net/index.html
# httpd -t
# service httpd reload
# curl http://192.168.21.10/
<h1>you are visiting websrv.ycdata.net</h1>
# curl http://192.168.144.128/
<h1>you are visiting bbs.ycdata.net</h1>
示例2:基於Port,假定如下配置
Listen 8080
Listen 8081
<VirtualHost 192.168.21.10:8080>
ServerName websrv.ycdata.net
DocumentRoot "/Vhosts/websrv.ycdata.net"
</VirtualHost>
<VirtualHost 192.168.21.10:8081>
ServerName bbs.ycdata.net
DocumentRoot "/Vhosts/bbs.ycdata.net"
</VirtualHost>
# httpd -t
# service httpd reload
# curl http://192.168.21.10:8080
<h1>you are visiting websrv.ycdata.net</h1>
# curl http://192.168.21.10:8081
<h1>you are visiting bbs.ycdata.net</h1>
示例3:基於Host
NameVirtualHost 192.168.21.10:80
<VirtualHost 192.168.21.10:80>
ServerName websrv.ycdata.net
DocumentRoot "/Vhosts/websrv.ycdata.net"
</VirtualHost>
<VirtualHost 192.168.21.10:80>
ServerName bbs.ycdata.net
DocumentRoot "/Vhosts/bbs.ycdata.net"
</VirtualHost>
修改windows客戶端hosts如下
C:\Users\1636>type C:\Windows\System32\drivers\etc\hosts
192.168.21.10 websrv.ycdata.net
192.168.21.10 bbs.ycdata.net
# httpd -t
# service httpd reload
# 基於Windows端測試,截圖略
15、配置日誌功能
指令集位置,級別定義
ErrorLog logs/error_log:定義錯誤日誌檔案路徑;會被虛擬機器主機繼承;也可以基於虛擬之際定義日誌
LogLevel warn
支援這些級別:debug, info, notice, warn, error, crit, alert, emerg.
定義日誌格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h Remote host
%l Remote logname (from identd, if supplied)
%u Remote user (from auth; may be bogus if return status (%s) is 401)
%t Time the request was received (standard english format)
%r First line of request
method url version
%s Status. For requests that got internally redirected, this is the status
of the *original* request --- %>s for the last.
%b Size of response in bytes, excluding HTTP headers. In CLF format,
i.e. a '-' rather than a 0 when no bytes are sent.
%{Foobar}i The contents of Foobar: header line(s) in the request sent to the server.
%{referer}i: 跳轉至當前頁面之前來源的上一次所在的頁面;
%{User-Agent}i:使用者代理;
詳情請參考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
定義訪問日誌,如下示例尾部使用了combined,則會使用我們自定義的日誌格式
CustomLog logs/access_log combined
指令 日誌檔案 日誌格式名稱
16、與配置相關的一些命令
httpd程式自帶的工具程式:
httpd: apache的服務程式
-t: 配置檔案語法測試
-M: 列出所有已經裝載的模組
-l: 列出所有的靜態模組
-S:列出所有的虛擬主機
如,列出當前定義的虛擬主機
# httpd -S
VirtualHost configuration:
192.168.21.10:80 is a NameVirtualHost
default server websrv.ycdata.net (/etc/httpd/conf/httpd.conf:1022)
port 80 namevhost websrv.ycdata.net (/etc/httpd/conf/httpd.conf:1022)
port 80 namevhost bbs.ycdata.net (/etc/httpd/conf/httpd.conf:1026)
Syntax OK
apachectl: shell指令碼,httpd服務控制
apxs: httpd得以擴充套件使用第三方模組的工具介面;
rotatelogs: 不關閉httpd而切換其使用到的日誌檔案
access_log, access_log.1, access_log.2
相關推薦
Linux下配置Apache httpd
httpd是Apache超文字傳輸協議(HTTP)伺服器的主程式。它被設計為一個獨立執行的後臺程序,它會建立一個處理請求的子程序或執行緒的池對外提供服務。httpd支援基於 虛擬主機,以及基於HOST、IP、PORT實現虛擬主機,反向代理,負載均衡,路徑別
linux下配置apache多站點訪問-小案例
通過 但是 路徑 多個項目 綁定 配置 nmp .com vid 一級域名(baidu.com)也叫作頂級域名,註冊一級域名是需要付費的。 而二級域名(image.baidu.com)是一級域名的延伸,所以只要購買了一級域名,二級域名是可以任意配置的。 其實(www
Linux下安裝Apache httpd
httpd是Apache超文字傳輸協議(HTTP)伺服器的主程式。它被設計為一個獨立執行的後臺程序,它會建立一個處理請求的子程序或執行緒的池對外提供服務。httpd支援基於 虛擬主機,以及基於HOST、IP、PORT實現虛擬主機,反向代理,負載均衡,路徑別名,使用
linux下配置apache虛擬主機解決方案以及一些問題
回南昌了,發現這邊很多公司都是用apache的,上海那邊都是使用nginx伺服器,可見差距啊 博主今天興致來了,正好之前在Mac虛擬機器上配了一臺apache伺服器,於是就到自己Mac虛擬機器上配置虛擬主機吧(老早的時候我是在win上配置的虛擬主機) 1,首先我配置時候,就
linux下的apache在httpd.conf配置目錄別名和include引入自配置檔案配置的方法
需求:將web服務中路徑名較長的目錄設定別名,方便使用者訪問 首先確定iptables服務和selinux都已關閉!!!!! 首先確定iptables服務和selinux都已關閉!!!!! 首先確定iptables服務和selinux都已關閉!!!!! 重要的事情,說三遍!
Linux環境下配置Apache+PHP
1、安裝apache 1.1、安裝apr wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.6.3.tar.gz tar -zxvf apr-1.6.3.tar.gz cd apr-1.6.3 ./configu
Linux下配置Nginx+Apache+PHP+Tomcat+Java同時執行
公司業務需要,要在Linux上同時執行一個Java專案和一個php專案。伺服器外網IP繫結的一個頂級域名指向Java專案,此頂級域名解析出的一個二級域名指向php專案。設定Apache和Tomcat監聽不同埠。通過Nginx的請求轉發,把使用者請求(訪問連結)轉
linux下用Apache一個IP多個網站多域名配置方法
# <VirtualHost 219.13.34.32> ServerAdmin [email protected] DocumentRoot /usr/local/apache/htdocs/upload ServerName desk.xker.com </VirtualHo
Linux下centos7+apache tomcat 7 配置專案只輸入IP即登陸到專案並且強制啟用Https的配置方法
生成可用的keystore 在windows下,開啟cmd命令列,執行keytool -genkey -alias tomcat -keyalg RSA -keystore d:\tomcatSSL.keystore命令,其中-alias後面的引數是你keystore的別
linux下安裝apache(httpd-2.4.3版本)各種坑
博主的linux是ubuntu 14.04.3。 在安裝apache最新版httpd-2.4.3的時候遇到各種坑。 先提供安裝apache httpd-2.4.3所需要的包,博主已經整理好,下載地址:http://download.csdn.net/down
linux 下配置jdk
地址 bsp too jdk1 home exp cal 源碼包 ava 去java官方地址下載相應的源碼包我下載的是1.8.0放在usr/local目錄下 export JAVA_HOME=/usr/local/jdk1.8.0export PATH=$JAVA_HOME
170502、linux下配置jdk8
下載源 cal 配置 ges class jdk版本 文件 linu images 1、下載源碼包jdk-8u45-linux-x64.tar.gz(省略) 2、解壓 tar -zxvf jdk-8u45-linux-x64.tar.gz 3、配置jdk vi /e
Linux下配置tomcat+apr+native應對高並發
狀態 iptables 安裝jdk 擁有 ack 請求 java_home 基本上 線程數 摘要:在慢速網絡上Tomcat線程數開到300以上的水平,不配APR,基本上300個線程狠快就會用滿,以後的請求就只好等待。但是配上APR之後,Tomcat將以JNI的形式調用A
奪命雷公狗---linux NO:42 linux下編譯apache
amp ima -1 輸入 inux png apach logs lin 我們先來到apache官網下載他,地址:http://httpd.apache.org/ 鼠標右鍵將他的地址復制出來,然後到linux 服務器上進行 wget 將他下載出來,如下所示
8、Linux下配置Java環境
root nbsp bin blog 信息 linux tar.gz span 都是 轉載:http://blog.sina.com.cn/s/blog_c5a35e780102wtxl.html 生物信息很多軟件都是用java寫的,所以需要在linux上配置java運行環
linux 下配置靜態IP
dns privacy netmask fail conf ethernet 地址 gateway 配置 設置靜態網絡如下[[email protected] network-scripts]# pwd 進入這個路徑下 /etc/sysconfig/networ
linux下配置java環境
nbsp 列表 ack www. eboot 系統屬性 zxvf 選擇 標準 1.首先要去下載好JDK,Java SE 8的官方網址是http://www.oracle.com/technetwork/java/javase/downloads/jdk8
linux下配置squid代理
linux squid 代理工具、×××工具yum install -y squid (安裝squid服務)配置正向代理(企業中用於訪問控制等)vim /etc/squid/squid.conf (編輯squid配置文件) ...... acl http proto HTTP
linux下配置雙網卡及RAC規劃——1
interface enc 必須 規劃 centos int scan add eth1 使用背景: 操作系統:centos 虛擬機:virtualbox RAC系統中需要雙網卡,一個為公共的網絡環境,一個為私有的網絡環境,從而需要搭建雙網絡。 在菜單FILE中選擇pr
在Linux下配置Tomcat8為系統服務
lin log linu lib class java_home detail apach 編輯 配置環境: CentOS7 + Tomcat8.0.35 + jdk1.8.0_131 1. 將$Tomcat_HOME/bin目錄下的Catalina.sh復制到目錄/et