在Windows下,Apache的配置文件一般只有一個,就是httpd.conf。但我在Ubuntu Linux上用apt-get install apache2命令安裝了Apache2後,居然發現它的httpd.conf(位於/etc/apache2目錄)是空的!進而發現Ubuntu的 Apache軟件包的配置文件並不像Windows的那樣簡單,它把各個設置項分在了不一樣的配置文件中,看起來複雜,但仔細想一想設計得確實很合理。php
嚴格地說,Ubuntu的Apache的配置文件是/etc /apache2/apache2.conf,Apache在啓動時會自動讀取這個文件的配置信息。而其餘的一些配置文件,如httpd.conf等,則 是經過Include指令包含進來。在apache2.conf中能夠找到這些Include行:web
引用apache
# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.confubuntu
# Include all the user configurations:
Include /etc/apache2/httpd.conf瀏覽器
# Include ports listing
Include /etc/apache2/ports.conf
……
# Include generic snippets of statements
Include /etc/apache2/conf.d/bash
# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/
結合註釋,能夠很清楚地看出每一個配置文件的大致做用。固然,你徹底能夠把全部的設置放在apache2.conf或者httpd.conf或者任何一個配置文件中。Apache2的這種劃分只是一種比較好的習慣。服務器
安裝完Apache後的最重要的一件事就是要知道Web文檔根目錄在什麼地方,對於Ubuntu而言,默認的是/var/www。怎麼知道的 呢?apache2.conf裏並無DocumentRoot項,httpd.conf又是空的,所以確定在其餘的文件中。通過搜索,發如今/etc /apache2/sites-enabled/000-default中,裏面有這樣的內容:app
引用ide
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhostui
DocumentRoot /var/www/
……
這是設置虛擬主機的,對我來講沒什麼意義。因此我就把apache2.conf裏的Include /etc/apache2/sites-enabled/一行註釋掉了,而且在httpd.conf裏設置DocumentRoot爲個人用戶目錄下的某 個目錄,這樣方便開發。
再看看/etc/apache2目錄下的東西。剛纔在apache2.conf裏發現了sites-enabled目錄,而在/etc /apache2下還有一個sites-available目錄,這裏面是放什麼的呢?其實,這裏面纔是真正的配置文件,而sites-enabled目 錄存放的只是一些指向這裏的文件的符號連接,你能夠用ls /etc/apache2/sites-enabled/來證明一下。因此,若是apache上配置了多個虛擬主機,每一個虛擬主機的配置文件都放在 sites-available下,那麼對於虛擬主機的停用、啓用就很是方便了:當在sites-enabled下創建一個指向某個虛擬主機配置文件的鏈 接時,就啓用了它;若是要關閉某個虛擬主機的話,只需刪除相應的連接便可,根本不用去改配置文件。
mods-available、mods-enabled和上面說的sites-available、sites-enabled相似,這兩個目錄 是存放apache功能模塊的配置文件和連接的。當我用apt-get install php5安裝了PHP模塊後,在這兩個目錄裏就有了php5.load、php5.conf和指向這兩個文件的連接。這種目錄結果對於啓用、停用某個 Apache模塊是很是方便的。
最後一個要說的是ports.conf,這裏面設置了Apache使用的端口。若是須要調整默認的端口設置,建議編輯這個文件。或者你嫌它實在多 餘,也能夠先把apache2.conf中的Include /etc/apache2/ports.conf一行去掉,在httpd.conf裏設置Apache端口。
ubuntu裏缺省安裝的目錄結構頗有一點不一樣。在ubuntu中module和 virtual host的配置都有兩個目錄,一個是available,一個是enabled,available目錄是存放有效的內容,但不起做用,只有用ln 連到enabled過去才能夠起做用。對調試使用都很方便,可是若是事先不知道,找起來也有點麻煩。
/etc/apache2/sites-available 裏放的是VH的配置,但不起做用,要把文件link到 sites-enabled 目錄裏才行。
4.重啓命令
sudo /etc/init.d/apache2 restart或者
cd /etc/init.d
sudo apache2 -k restart
stop 中止;start 啓動5.日誌文件在 /var/log/apache2/
轉自:http://www.phpchina.com/home/space.php?uid=31261&do=blog&id=41851
A基本配置
咱們都知道,若是咱們想在單臺機器上設置多個域名或主機名時,咱們就要用到基於名稱的虛擬主
機了。那麼要如何進行設置呢?這就是本指南想解決的問題了。在 Ubuntu 的 /etc/apache2/ 目
錄下有個 Apache2 的主配置文件 apache2.conf。在該文件中咱們能夠看到有這麼一行內容:
Include /etc/apache2/sites-enabled/[^.#]*
這行的意思代表該文件包含了 /etc/apache2/sites-enabled/ 目錄中文件名不含 "." 或 "#" 這
兩個字符的全部文件。而當咱們列出該目錄的文件時,發現只有一個 000-default 的軟連接文件
,實際鏈接的是 /etc/apache2/sites-available 目錄中的 default 文件,不難看出該文件的文
件名中並不包含 "." 或 "#"。因此這個文件固然是要被配置文件 apache2.conf 所包含的了。打
開該文件,發現它實際上是一個虛擬主機的配置文件,不過因爲該文件中的虛擬主機爲 *,因此它實
際上是一個通用配置文件。若是咱們要創建虛擬主機的話,那麼就要把該文件改爲以下所示:
NameVirtualHost 10.39.6.59
<VirtualHost 10.39.6.59>
ServerName www.britepic.org
ServerAdmin Ubuntu@gmail.com
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2’s default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
下面咱們來分析一下上面這段設置中與虛擬主機有關的設置語句:
`NameVirtualHost 10.39.6.59`:表示咱們要作的是一個基於名稱的虛擬主機,且其 IP 地址爲
10.39.6.59
`<VirtualHost 10.39.6.59> 和 </VirtualHost>`:表示在其中的是一個虛擬主機的配置
`ServerName www.britepic.org`:設置虛擬主機的域名
`ServerAdmin Ubuntu@gmail.com`:設置該虛擬主機網管員的郵件
`DocumentRoot /var/www/`:設置該虛擬主機的主目錄路徑
`ErrorLog /var/log/apache2/error.log`:設置該虛擬主機的出錯信息
`CustomLog /var/log/apache2/access.log combined`:設置該虛擬主機的訪問信息
這樣咱們就配置了一個虛擬主機 www.britepic.org。但因爲這是缺省配置,因此在 Apache2 重啓
以後,不管你輸入 DNS 服務器中指向這個主機的任何域名,都會被導向 www.britepic.org 這個
缺省配置所指向的 /var/www 這個目錄的。除非該域名被其餘虛擬主機配置所用,好比咱們還配置
了 edunuke.britepic.org 指向本機,且配置了相應的虛擬主機,這樣的話,輸入域名
edunuke.britepic.org 就會被對應該域名的目錄中。
B進一步說明
爲了說明清楚 咱們再添加一個虛擬主機站點 edunuke.britepic.org,首先到
/etc/apache2/sites-available/ 目錄中創建一個文件 edunuke。固然這個文件名中是沒有 "."
或 "#" 這兩個字符的了。而後編輯該文件:
<VirtualHost 10.39.6.59>
ServerName edunuke.britepic.org
ServerAdmin Ubuntu@britepic.org
DocumentRoot "/var/www/edunuke/"
ErrorLog "/var/log/apache2/edunuke_errors.log"
CustomLog "/var/log/apache2/edunuke_accesses.log" common
</VirtualHost>
設置的具體含義同上面的類似,這是我就再也不多說了。而後再運行命令:
sudo a2ensite edunuke
這樣的話,虛擬主機站點 edunuke.britepic.org 就已經安裝好了。這時你也能夠在
/etc/apache2/sites-enabled/ 目錄中發現多了一個到 /etc/apache2/sites-available/edunuke
的軟連接。接下來就是將 Apache2 重啓來使虛擬主機站點運行起來:
sudo /etc/init.d/apache2 restart
這樣你在瀏覽器上輸入 edunuke.britepic.org 的話,就會被指向 /var/www/edunuke 目錄了,而
輸入其餘指向本機的域名則都會指到缺省配置中的 /var/www 目錄中。熟悉 Apache2 的朋友會問
爲何這樣麻煩,放在一個文件中不也是能夠嗎?爲何要用兩個文件呢?其實很簡單,由於若是
我要對 edunuke 站點進行維護時,我只要運行命令:
sudo a2dissite edunuke
sudo /etc/init.d/apache2 restart
便可,這樣既能夠維護 edunuke 這個站點,同時還不影響其餘站點的正常運行。
上面談了一下簡單的虛擬主機配置方法。這個基本上能知足咱們大部分的須要。但若是要是安裝
Zope Plone 的話,上面的這點設置是遠遠不夠的,因爲 Zope Plone 結構所採用的端口並不是是80
端口,因此咱們還得作端口重定向。爲了可以作這個,咱們得激活 Rewrite 和 Proxy 兩個模塊。
激活模塊很簡單,同站點配置目錄同樣,在 Apache2 中也有兩個模塊配置目錄:mods-available
和 mods-enabled。在 mods-available 目錄中的是全部可用的模塊,而在 mods-enabled 目錄中
的則是已被安裝到 Apache2 中的模塊。因爲在 mods-available 目錄中已經有了 Rewrite 和
Proxy 模塊的配置引導文件,因此只須要簡單地將其安裝到 Apache2 中便可。使用命令:
sudo a2enmod rewrite
sudo a2enmod proxy
而後,添加虛擬主機站點 plone.britepic.org,同 edunuke 站點建立類似
在/etc/apache2/sites-available/ 目錄中創建一個文件 plone。顯然這個文件名中是沒有 "."
或 "#" 這兩個字符的了。而後編輯該文件:
<VirtualHost 10.39.6.59>
ServerName plone.britepic.org
ServerAdmin Ubuntu@britepic.org
ErrorLog "/var/log/apache2/plone_errors.log"
CustomLog "/var/log/apache2/plone_accesses.log" common
RewriteEngine on
RewriteRule ^/(.*)
http://127.0.0.1:8081/VirtualHostBase/http/plone.britepic.org:80/plone/VirtualHostRoot
/$1 [L,P]
<Proxy *>
Order Deny,Allow
Deny from all
Allow from all
</Proxy>
</VirtualHost>
這樣就安裝好了 plone.britepic.org 虛擬主機站點,能夠在瀏覽器中地址欄中輸入
http://plone.britepic.org 就能夠重定向到 Zope Plone 站點去
(責任編輯:易家電子)
轉自:http://www.ejdz.cn/wangzhankaifa/Ubuntu_Apache_jyymddzdsz_2486.htm
系統版本:Ubuntu 10.04(查看命令爲cat /etc/issue或sudo lsb_release -a)
Apache當前版本: 2.2.14(用查看)
在Ubuntu下, 用命令sudo apt-get install apache2安裝完成後,軟件包提供的配置文件位於/etc/apache2目錄下:
01
02
03
04
05
06
07
08
09
10
11
12
|
miao@ubuntu:
/etc/apache2
$
ls
-l
total 68
-rw-r--r-- 1 root root 8113 2010-04-14 04:20 apache2.conf
drwxr-xr-x 2 root root 4096 2010-06-02 01:08 conf.d
-rw-r--r-- 1 root root 725 2010-04-14 04:20 envvars
-rw-r--r-- 1 root root 0 2010-06-02 00:54 httpd.conf
-rw-r--r-- 1 root root 31063 2010-04-14 04:20 magic
drwxr-xr-x 2 root root 4096 2010-06-02 01:27 mods-available
drwxr-xr-x 2 root root 4096 2010-06-02 00:57 mods-enabled
-rw-r--r-- 1 root root 750 2010-04-14 04:20 ports.conf
drwxr-xr-x 2 root root 4096 2010-06-02 01:31 sites-available
drwxr-xr-x 2 root root 4096 2010-06-02 00:54 sites-enabled
|
apache2.conf
爲apache2服務器的主配置文件, 查看此配置文件, 你會發現如下內容
01
02
03
04
05
06
07
08
09
10
11
12
13
|
# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
# Include all the user configurations:
Include /etc/apache2/httpd.conf
# Include ports listing
Include /etc/apache2/ports.conf
# Include generic snippets of statements
Include /etc/apache2/conf.d/[^.#]*
# Include generic snippets of statements
Include /etc/apache2/conf.d/
# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/
|
有此可見,apache2 根據配置功能的不一樣, 對配置文件進行了分割, 這樣更利於管理
conf.d
爲配置文件的附加片段,默認狀況下, 僅提供了 charset 片段,
1
2
|
miao@ubuntu:
/etc/apache2/conf
.d$
cat
charset
#AddDefaultCharset UTF-8
|
若有須要咱們能夠將默認編碼修改成 GB2312, 即文件的內容爲: AddDefaultCharset GB2312
httpd.conf
是個空文件
magic
文件中包含的是有關mod_mime_magic模塊的數據, 通常不須要修改它.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
# The format is 4-5 columns:
# Column #1: byte number to begin checking from, ">" indicates continuation
# Column #2: type of data to match
# Column #3: contents of data to match
# Column #4: MIME type of result
# Column #5: MIME encoding of result (optional)
#-------------------------------------------------------
# Localstuff: file(1) magic for locally observed files
# Add any locally observed files here.
# Real Audio (Magic .ra\0375)
0 belong 0x2e7261fd audio/x-pn-realaudio
0 string .RMF application/vnd.rn-realmedia
0 string MAS_UTrack_V00
>14 string >/0 audio/x-mod
|
ports.conf
則爲服務器監聽IP和端口設置的配置文件,
1
2
3
|
miao@ubuntu:
/etc/apache2
$
cat
ports.conf
NameVirtualHost *:80
Listen 80
|
mods-available
目錄下是一些.conf和.load 文件, 爲系統中可使用的加載各類模塊的配置文件, 而mods-enabled目錄下則是指向這些配置文件的符號鏈接, 從配置文件apache2.conf 中能夠看出, 系統經過mods-enabled目錄來加載模塊, 也就是說, 系統僅經過在此目錄下建立了符號鏈接的mods-available 目錄下的配置文件來加載模塊。同時系統還提供了兩個命令 a2enmod 和 a2dismod用於維護這些符號鏈接。這兩個命令由 apache2-common 包提供。命令各式也很是簡單:a2enmod [module] 或 a2dismod [module]
sites-available
目錄下爲配置好的站點的配置文件, sites-enabled 目錄下則是指向這些配置文件的符號鏈接,系統經過這些符號鏈接來起用站點sites-enabled目錄下的符號鏈接附有一個數字前綴, 如000-default, 這個數字用於決定啓動順序, 數字越小, 啓動優先級越高. 系統提供了兩個命令 a2ensite 和 a2dissite 用於維護這些符號鏈接。這兩個命令由apache2-common
包提供.
/var/www
默認狀況下將要發佈的網頁文件應該置於/var/www目錄下,這一默認值能夠同過主配置文件中的DocumnetRoot 選項修改.