ubuntu apache2下目錄結構以及重寫規則


ubuntu apache2下目錄結構

在Windows下,Apache的配置文件通常只有一個,就是httpd.conf。但我在Ubuntu Linux上用apt-get install apache2命令安裝了Apache2后,竟然發現它的httpd.conf(位於/etc/apache2目錄)是空的!進而發現Ubuntu的 Apache軟件包的配置文件並不像Windows的那樣簡單,它把各個設置項分在了不同的配置文件中,看起來復雜,但仔細想想設計得確實很合理。

嚴格地說,Ubuntu的Apache的配置文件是/etc /apache2/apache2.conf,Apache在啟動時會自動讀取這個文件的配置信息。而其他的一些配置文件,如httpd.conf等,則 是通過Include指令包含進來。在apache2.conf中可以找到這些Include行:

引用

# 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 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中,里面有這樣的內容:

引用

NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost

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選項修改.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM