apache配置ftp
1. 如何建立ftp安裝到apache
2 解壓縮:tar -zvxf ftpserver-1.0.6.tar.gz
3 進入配置文件目錄:cd apache-ftpserver-1.0.6/res/conf
4 配置用戶登錄信息
(1)使用文件進行
2. ftp的路徑怎麼設置
問一下,你是想做ftp上傳下載么?
首先你需要安裝一個ftp服務端程序,啟動起來,然後下載一個ftp客戶端程序,測試能不能連接,首先這一塊兒需要測試通過。
代碼ftp上傳下載
2.1 上傳代碼:
import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class test {
private FTPClient ftp;
/**
*
* @param path 上傳到ftp伺服器哪個路徑下
* @param addr 地址
* @param port 埠號
* @param username 用戶名
* @param password 密碼
* @return
* @throws Exception
*/
private boolean connect(String path,String addr,int port,String username,String password) throws Exception {
boolean result = false;
ftp = new FTPClient();
int reply;
ftp.connect(addr,port);
ftp.login(username,password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(path);
result = true;
return result;
}
/**
*
* @param file 上傳的文件或文件夾
* @throws Exception
*/
private void upload(File file) throws Exception{
if(file.isDirectory()){
ftp.makeDirectory(file.getName());
ftp.changeWorkingDirectory(file.getName());
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
File file1 = new File(file.getPath()+"\\"+files[i] );
if(file1.isDirectory()){
upload(file1);
ftp.changeToParentDirectory();
}else{
File file2 = new File(file.getPath()+"\\"+files[i]);
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(file2.getName(), input);
input.close();
}
}
}else{
File file2 = new File(file.getPath());
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(file2.getName(), input);
input.close();
}
}
public static void main(String[] args) throws Exception{
test t = new test();
t.connect("", "localhost", 21, "yhh", "yhhazr");
File file = new File("e:\\uploadify");
t.upload(file);
}
}
2.2 下載代碼
這里沒有用到filter,如果用filter就可以過濾想要的文件。
public class Ftp {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Ftp ftp = new Ftp();
String hostname = "www.strawberry.com";
Integer port = 21;
String username = "username";
String password = "password";
String remote = "/c.txt";
String local = "/home/tin/LeonChen/FTP/";
try {
ftp.connect(hostname, port, username, password);
System.out.println("接收狀態:"+ftp.download(remote, local));
ftp.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private FTPClient ftpClient = new FTPClient();
/*
* * 連接到FTP伺服器
* * @param hostname 主機名
* * @param port 埠
* * @param username 用戶名
* * @param password 密碼
* * @return 是否連接成功
* * @throws IOException
*/
private boolean connect(String hostname, int port, String username,
String password) throws IOException {
ftpClient.connect(hostname, port);
ftpClient.setControlEncoding("UTF-8");
if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
if (ftpClient.login(username, password)) {
return true;
}
}
disconnect();
return false;
}
/*
* 從FTP伺服器上下載文件,支持斷點續傳,上傳百分比匯報
*
* @param remote 遠程文件路徑
*
* @param local 本地文件路徑
*
* @return 上傳的狀態
*
* @throws IOException
*/
public DownloadStatus download(String remote, String local)
throws IOException {
// 設置被動模式
ftpClient.enterLocalPassiveMode();
// 設置以二進制方式傳輸
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
DownloadStatus result;
// 檢查遠程文件是否存在
FTPFile[] files = ftpClient.listFiles(new String(remote
.getBytes("UTF-8"), "iso-8859-1"));
if (files.length != 1) {
System.out.println("遠程文件不存在");
return DownloadStatus.Remote_File_Noexist;
}
long lRemoteSize = files[0].getSize();
String fildName = files[0].getName();
// 本地存在文件,進行斷點下載
File f = new File(local+fildName);
if (f.exists()) {
long localSize = f.length();
if (localSize >= lRemoteSize) {
System.out.println("本地文件大於遠程文件,下載中止");
return DownloadStatus.Local_Bigger_Remote;
}
// 進行斷點續傳,並記錄狀態
FileOutputStream out = new FileOutputStream(f, true);
ftpClient.setRestartOffset(localSize);
InputStream in = ftpClient.retrieveFileStream(new String(remote.getBytes("UTF-8"), "iso-8859-1"));
byte[] bytes = new byte[1024];
long step = lRemoteSize / 100;
long process = localSize / step;
int c;
while ((c = in.read(bytes)) != -1) {
out.write(bytes, 0, c);
localSize += c;
long nowProcess = localSize / step;
if (nowProcess > process) {
process = nowProcess;
if (process % 10 == 0)
System.out.println("下載進度:" + process);
// TODO 更新文件下載進度,值存放在process變數中
}
}
in.close();
out.close();
boolean isDo = ftpClient.completePendingCommand();
if (isDo) {
result = DownloadStatus.Download_From_Break_Success;
} else {
result = DownloadStatus.Download_From_Break_Failed;
}
} else {
OutputStream out = new FileOutputStream(f);
InputStream in = ftpClient.retrieveFileStream(new String(remote.getBytes("UTF-8"), "iso-8859-1"));
byte[] bytes = new byte[1024];
long step = lRemoteSize / 100;
long process = 0;
long localSize = 0L;
int c;
while ((c = in.read(bytes)) != -1) {
out.write(bytes, 0, c);
localSize += c;
long nowProcess = localSize / step;
if (nowProcess > process) {
process = nowProcess;
if (process % 10 == 0)
System.out.println("下載進度:" + process);
// TODO 更新文件下載進度,值存放在process變數中
}
}
in.close();
out.close();
boolean upNewStatus = ftpClient.completePendingCommand();
if (upNewStatus) {
result = DownloadStatus.Download_New_Success;
} else {
result = DownloadStatus.Download_New_Failed;
}
}
return result;
}
private void disconnect() throws IOException {
if (ftpClient.isConnected()) {
ftpClient.disconnect();
}
}
}
3. apache ftp配置ftp伺服器,typical及full還有users.properties都有用戶名,密碼等相關設置
你問得是什麼啊 ?什麼登錄?是apache ftp嗎 ? 你的在安裝時的設第一個密碼就是!你的了!
用戶名root試試!
4. apache ftpserver 是主動還是被動
在做項目的時候我才發現,FTP竟然有主動FTP和被動FTP之分。FTP的設置主要是由FTP伺服器設置的。同樣的一段代碼,在本地測試的時候一切正常,但是訪問局方的FTP伺服器時卻不能傳輸數據。
下面我先簡要地自己說一下,我對主被動FTP的理解。
眾所周知,FTP是一個比較特殊的服務,它佔用了20和21兩個埠,21是命令埠,20是數據埠。顧名思義,21埠是用來接發命令,20埠用來傳遞數據。但是並不是所有的時候都用20埠來實現數據交換。
主動FTP過程大致如下:
1、客戶端啟用埠N(N>1024,因為1024之前為特殊埠,不能手動佔用,把N當作客戶端的命令埠)和埠N+1(客戶端的數據埠),從埠N向伺服器的21埠發送PORT命令,其中PORT命令包含客戶端IP和數據埠
2、伺服器接收到客戶端的PORT命令後,並得知客戶端用N+1埠監聽數據。接著,伺服器向客戶端發送ACK應答(ACK與TCP通信中的連接握手一樣)
3、伺服器用20埠再向客戶端的N+1埠發送數據請求
4、客戶端向伺服器端發送數據ACK應答
以上就是主動FTP的大致過程,但是數據請求的發起方是伺服器,如果此時客戶端的防火牆啟用了高端埠的屏蔽的話,有可能會發生阻塞,所以主動FTP的情況下,客戶端最好把防火牆關閉了。
被動FTP過程大致如下:
1、客戶端啟用埠N(同樣的N>1024)和N+1,N用作命令埠,N+1用作數據埠。然後客戶端向伺服器端發送PASV請求,告訴伺服器端,這是被動FTP請求
2、伺服器端接收到PASV請求後,啟動一個M(同樣>1024)埠當作數據端,並發送PORT M到客戶端
3、客戶端得到伺服器端的數據埠後,再由埠N+1向伺服器的M埠發起數據請求
4、伺服器端通過N埠向客戶端的N+1埠發送ACK應答
以上是被動FTP的大致過程,與主動FTP請求不同,請求的發起方是客戶端,這樣客戶端就不會為防火牆的問題感到煩惱,但是同樣道理,伺服器端的埠就會有了限制。
所以,一般情況下。伺服器端為了方便管理,一般採用被動FTP方式連接。當然客戶端可以通過ftp -d host port命令向伺服器發送請求,可以看出到底用的是主動FTP還是被動FTP。
這次我就遇到了這樣的問題,寫FTP上傳下載代碼時,把網上的東西過來,很順利地在本地測試通過了。但是鏈接到局方的伺服器的時候,怎麼也不能上傳和下載,而且不會拋出異常。後來我也是試著添了一行代碼,結果測通了,代碼如下:
FtpDefine.ftpServer.enterLocalPassiveMode();
怎麼樣,看起來很簡單吧。因為寫代碼默認情況下是主動FTP,必須通過enterLocalPassiveMode()方法設置成被動FTP才能順利上傳下載。
另外還有很多問題需要考慮,比方說代碼的可擴展性、可移植性等等。就拿這次的代碼來說,我測試的時候客戶端和伺服器端都是Windows Xp系統,而且FTP伺服器設置的是主動FTP。但是真正用的時候,客戶端是Linux系統,伺服器雖然是Windows的,但是他們沒有用Windows自帶的FTP,而是用的軟體,用法與Linux系統的相似,所以因為這個問題,我配錯了配置文件,結果在代碼中切換伺服器目錄時,總是報錯。所以再此,我提醒大家,萬事小心謹慎!希望我寫的這些會對大家有點幫助。如果覺得看不懂的話,請參考我下面列出的鏈接地址,那裡有更詳細的說明。
5. 使用Apache mina sshd構建sftp server如何託管配置文件
1. 介紹
sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。sftp 與 ftp 有著幾乎一樣的語法和功能。SFTP 為 SSH的一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟體包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(埠號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個伺服器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網路安全性要求更高時,可以使用SFTP代替FTP。
2. sftp搭建
2.1查看openssl的版本
ssh -V
###使用ssh –V命令來查看openssh的版本,版本必須大於4.8p1,低於這個版本需要升級。
2.2創建sftp組
groupadd sftp
2.3創建一個sftp用戶,用戶名為mysftp,密碼為mysftp
useradd –g sftp –s /bin/false mysftp //該用戶不能通過sshd登陸到系統
passwd mysftp
2.3sftp組的用戶的home目錄統一指定到 chaodiquan.com /data/sftp下,按用戶名區分,這里先新建一個mysftp目錄,然後指定mysftp的home為/data/sftp/mysftp
mkdir -p /data/sftp/mysftp
usermod –d /data/sftp/mysftp mysftp
2.4配置sshd_config
文本編輯器打開 /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
找到如下這行,用#符號注釋掉。
# Subsystem sftp /usr/libexec/openssh/sftp-server
在文件最後面添加如下幾行內容,然後保存。
Subsystem sftp internal-sftp
###配置一個外部子系統(例如,一個文件傳輸守護進程)。僅用於SSH-2協議。值是一個子系###統的名字和對應的命令行(含選項和參數)。比如"sftp /usr/libexec/openssh/sftp-server"。,###這里配置為內部的
Match Group sftp
#限定只有sftp組的才能訪問
ChrootDirectory /data/sftp/%u
###設定屬於用戶組sftp的用戶訪問的根文件夾
ForceCommand internal-sftp
###強制執行這里指定的命令而忽略客戶端提供的任何命令。這個命令將使用用戶的登錄###shell執行(shell -c)。這可以應用於 shell 、命令、子系統的完成,通常用於 Match 塊中。###這個命令最初是在客戶端通過 SSH_ORIGINAL_COMMAND 環境變數來支持的。
AllowTcpForwarding no
###是否允許TCP轉發,默認值為"yes", 禁止TCP轉發並不能增強安全性,除非禁止了用戶###對shell的訪問,因為用戶可以安裝他們自己的轉發器。
X11Forwarding no
###是否允許進行 X11
轉發。默認值是"no",設為"yes"表示允許。如果允許X11轉發並且sshd(8)代理的顯示區被配置為在含有通配符的地址(X11UseLocalhost)上監聽。那麼將可能有額外的信息被泄漏。由於使用X11轉發的可能帶來的風險,此指令默認值為"no"。需要注意的是,禁止X11轉發並不能禁止用戶轉發X11通信,因為用戶可以安裝他們自己的轉發器。
如果啟用了 UseLogin ,那麼X11轉發將被自動禁止。
2.5設定Chroot目錄許可權
chown root:sftp /data/sftp/mysftp
chmod 755 /data/sftp/mysftp
2.6建立SFTP用戶登入後可寫入的目錄
照上面設置後,在重啟sshd服務後,用戶mysftp已經可以登錄。但使用chroot指定根目錄後,根應該是無法寫入的,所以要新建一個目錄供mysftp上傳文件。這個目錄所有者為mysftp,所有組為sftp,所有者有寫入許可權,而所有組無寫入許可權。命令如下:
mkdir /data/sftp/mysftp/upload
chown mysftp:sftp /data/sftp/mysftp/upload
chmod 755 /data/sftp/mysftp/upload
2.7重啟sshd服務
service sshd restart
6. 有沒有傻瓜式的Apache配置FTP方法
你不如裝微軟的FTP功能,全是圖形界面。
7. Apache的配置詳細過程
抄的:
-----------
# 這是主要的 Apache 伺服器配置文件。它包含 # 給伺服器它的指
令的配置指令。# 為詳細的信息關於看見
<URL:http://www.apache.org/docs/># 指令。
#
# 不簡單地確實沒有理解在這里讀指令 # 他們做什麼。他們僅僅作
為提示或提示在這里。如果你是不肯定的 # 請教聯機的文檔。你被
警告了。
#
# 在這個文件被處理以後,伺服器將尋找並且處理
# c:/website/apache/conf/srm.conf and then c:/website/apache/conf/access.conf
# 除非你與 ResourceConfig 制服了這些或 # 這里的 AccessConfig
指令。
#
# 配置指令被組織進 3 基本的節:# 1 。控制 Apache 伺服器的操
作的指令處理作為一
# 整個 (" 全球的 environment') 。
# 2. 定義參數的指令「主要」或「預設」伺服器,
# 它反應到那沒被一台虛擬的主機處理的請求。
# 這些指令也為設置提供預設值
# 所有的虛擬的主機。
# 3. 為虛擬的主機的設置, 它允許網請求被送到
# 不同的 IP 地址或主機名並且把他們處理了由
# 同樣的 Apache 伺服器進程。
#
# 配置和日誌文件名字:如果你為許多指定的文件名 # 伺服器的控
制文件開始 "/"( 或為 Win32 的「 drive:/ 」 ),# 伺服器將使用
那條顯式的路徑。如果文件名做 * 不 * 開始 # 與 "/" ,
ServerRoot 的值被附在前面--因此「 logs/foo.log 」 # 與
ServerRoot 到「 /usr/local/apache 」的集合將被解釋由 # 作為
「 /usr/local/apache/logs/foo.log 」的伺服器。
#
# 注意:文件名在哪兒被指定, 你必須向前使用猛砍 # 而不是反斜
線 ( 例如,「 c:/apache 」而不是「 c:apache 」 ) 。# 如果一
個驅動器字母被省略, Apache.exe 在其上被定位的驅動器 # 將被
預設使用。你總是供應,這被推薦 # 在絕對的路徑的一個顯式的驅
動器字母, 然而, 避免 # 混亂。
#
### 節 1 :全球的環境
#
# 在這節的指令影響 Apache 的全面的操作,# 例如並發的請求的數
字它能處理或在哪兒它 # 能發現它的配置文件。
#
#
# ServerType 是 inetd , 或獨立。 Inetd 模式僅僅被支持在上 #
Unix 平台。
#
獨立的 ServerType
#
# ServerRoot :在下面的目錄樹的頂伺服器的 # 配置,誤差,並且
記錄文件被堅持。
#
# 別增加一在目錄路徑的結束猛砍。
#
ServerRoot 「 c:/ 網點 /apache 」
#
# PidFile :伺服器應該在其記錄它的進程的文件 # 鑒定數字當它
啟動時。
#
PidFile logs/httpd.pid
#
# ScoreBoardFile :文件過去常存儲內部的伺服器進程信息。# 不
所有的體系結構要求這。但是如果你的做 ( 因為,你將知道 # 當你
運行 Apache 時,這個文件將被創造 ) 那麼你 * 必須 * 保證那 #
Apache 的沒有 2 祈禱分享一樣的紀分牌文件。
#
ScoreBoardFile 元木 /apache_status
#
# 在標準的配置,伺服器將處理 httpd.conf ,# srm.conf ,並且在
那份訂單的 access.conf 。後者 2 個文件是 # 現在散布了空, 當
被推薦所有的指令 # 為簡潔被放在一個單個的文件。評價外面珍視
# 下面是內建的預設。你能讓伺服器忽略 # 這些文件旁邊完全使用
「 /dev/null 」 ( 為 Unix ) 或 # 「 nul 」 ( 為 Win32 ) 為到
指令的參數。
#
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
#
# 超時:秒的數字以前收到並且送超時。
#
超時 300
#
# KeepAlive :是否允許堅持的連接 ( 多於 # 一個請求每連接 ) 。
設定到「離開」撤銷。
#
KeepAlive 在上
#
# MaxKeepAliveRequests :允許的請求的最大的數字 # 在一個堅持
的連接期間。設定到 0 允許無限的數量。# 我們你讓這個數字高的
reccomend , 為最大的性能。
#
MaxKeepAliveRequests 100
#
# KeepAliveTimeout :秒數字等下一個請求從 # 在一樣的連接上的
同樣的顧客。
#
KeepAliveTimeout 15
#
# 在 Win32 上的 Apache 總是創造一子進程處理請求。如果它 # 死,
另外的子進程自動地被創造。在孩子以內 # 多重的線程處理到來的
請求的進程。下一 2 # 指令控制線程和進程的行為。
#
#
# MaxRequestsPerChild :請求各個子進程的數字是 # 在孩子死以
前,允許了處理。孩子將這樣退出 # 至於當時,在延長的使用以後
避免問題 Apache ( 並且也許 # 它使用的圖書館 ) 漏縫存儲器或其
它資源。在大多數系統上,這 # 確實不被需要, 但是一些 ( 例如
Solaris ) 確實有著名的漏縫 # 在圖書館。為 Win32 ,將這值放到
零 ( 無限 )# 除非不那樣勸告了。
#
MaxRequestsPerChild 0
#
# 並發的線程的數字 ( 即, 請求 ) 伺服器將允許。# 將這值放根據
伺服器的應答 ( 更 # 活躍的請求馬上他們都更慢慢地被處理的工具
) 並且 # 你將允許伺服器消費的系統資源的數量。
#
ThreadsPerChild 50
#
# 聽:允許你把 Apache 綁在特定的 IP 地址或 # 埠, 除了預設。
也參見 <VirtualHost># 指令。
#
#Listen 3000
#Listen 12.34.56.78:80
#
# BindAddress :你能與這選擇支持虛擬的主機。這條指令 # 被用
來告訴伺服器哪個聽的 IP 地址。它能也 # 包含 "*" ,一個 IP 地
址,或充分合格的網際網路域名。# 也參見 <VirtualHost> 並且聽指
令。
#BindAddress *
#
# 動態分享的對象 ( DSO ) 支持
#
# 能使用作為一 DSO 被造的一個模塊的功能你 # 必須放相應的「
LoadMole 」這樣在這個地點排隊 # 在它被包含了的指令是他們被
使用的實際上可得到的 _before_ 。# 請為更多在 Apache 1.3 分發
讀文件 README.DSO # 關於 DSO 機制和跑的細節 " apache - l "
為表已經 # 內建 ( 靜態地連接了並且這樣總是可得到 ) 在你的
Apache 的模塊。
#
# 注意:模塊在其被裝載的順序是重要的。別變化 # 在沒有專家忠
告下面的順序。
#
#LoadMole anon_auth_mole
moles/ApacheMoleAuthAnon.dll #LoadMole
cern_meta_mole moles/ApacheMoleCERNMeta.dll
#LoadMole digest_mole moles/ApacheMoleDigest.dll
#LoadMole expires_mole moles/ApacheMoleExpires.dll
#LoadMole headers_mole
moles/ApacheMoleHeaders.dll #LoadMole proxy_mole
moles/ApacheMoleProxy.dll #LoadMole rewrite_mole
moles/ApacheMoleRewrite.dll #LoadMole speling_mole
moles/ApacheMoleSpeling.dll #LoadMole
status_mole moles/ApacheMoleStatus.dll #LoadMole
usertrack_mole moles/ApacheMoleUserTrack.dll
#
# ExtendedStatus 控制 Apache 是否將產生「完整」的地位 # 信息
( ExtendedStatus 在上 ) 或就基本的信息 ( ExtendedStatus #
離開 ) 什麼時候處理器被調用的「服務者地位」。預設關。
#
#ExtendedStatus 在上
### 節 2 :「主要」的伺服器配置
#
# 在這節的指令安裝被使用了由的值「主要」 # 伺服器, 它反應到
沒被處理由的任何請求一 #<VirtualHost> 定義。這些值也提供預設
為 # 你可以以後在文件定義的任何 <VirtualHost> 集裝箱。
#
# 這些指令的所有可以在 <VirtualHost> 集裝箱內出現,# 在此情況
這些預設設置將被制服為 # 虛擬的主機正在被定義。
#
#
# 如果你的 ServerType 指令 ( 更早在「全球的環境」設定 # 節 )
被設置到「 inetd 」, 下一條很少指令沒有任何東西 # 自從他們
的設置的效果被 inetd 配置定義。# 向前跳過到 ServerAdmin 指令。
#
#
# 埠:獨立的伺服器聽到其的埠。
#
埠 80
#
# ServerAdmin :你的地址, 有伺服器的問題應該在此 # 發電子郵
件。這個地址在一些產生服務者的頁上出現, 如此的 # 當誤差記錄。
#
ServerAdmin [email protected]
#
# ServerName 允許你使一台主機命名哪個被送回到顧客為 # 你的如
果它比一個不同,程序將得到的伺服器 ( 即, 使用 # 「 www 」而
不是主機的真實的名字 ) 。
#
# 注意:你不能就發明主機名字和他們工作的希望。名字你 # 定義
這必須你的主機有一個有效的 DNS 名字。如果你不理解 # 這, 問你
的網路主管。
# 如果你的主機沒有一個登記的 DNS 名字,這里進入它的 IP 地址。
# 你將必須由它的地址存取它 ( 例如, http://123.45.67.89/)#
不管怎樣, 並且這將在一個理智的方法使重定向成為工作。
ServerName http://127.0.0.1/
#
# DocumentRoot :你將從其提供的目錄你的 # 文件。由預設,所有
的請求從這個目錄被拿, 但是 # 符號的連接和別名可以被用來指向
另外的地點。
#
DocumentRoot 「 c:/ 網點」
#
# 有存取到此 Apache 的每個目錄, 能與方面被設置 # 到哪個服務
和特徵在那被允許或殘廢 # 目錄 ( 並且它的子目錄 ) 。
#
# 第一, 我們設置「預設」是一個很限制的集合 # 允許。
#
<Directory />
選擇 FollowSymLinks
AllowOverride 沒有
</Directory>
#
# 向前從這個點你必須具體地說允許的筆記 # 被啟用的特別的特徵
- 因此如果一些東西的不工作作為 # 你可能期望, 保證你具體地說
啟用了它 # 在下面。
#
#
# 這應該被改變到你將 DocumentRoot 放到無論什麼。
#
<Directory "c:/ 網點 /apache/htdocs">
#
# 這可以也是「沒有」,「索引」的「所有的」,或任何聯合,# 「
包括」,「 FollowSymLinks 」,「 ExecCGI 」,或「 MultiViews
」。
#
# 注意「 MultiViews 」必須被命名 * 明確地*---「選擇所有」 #
別把它給你。
#
選擇索引 FollowSymLinks MultiViews
#
# 這控制哪個選擇在目錄罐頭的 .htaccess 文件 # 制服。能也是「
選擇」的「所有的」,或任何聯合,「 FileInfo 」,# 「
AuthConfig 」,並且「限制」
#
AllowOverride 沒有
#
# 能得到的控制從這個伺服器填滿。
#
順序允許, 否認
從所有允許
</Directory>
#
# UserDir :到一個用戶的家之上被添加的目錄的名字 # 目錄如果
一個 ~ 用戶請求被收到。
#
# 在 Win32 下面,我們不當前確實試著決定主目錄 # Windows 登錄,
例如那的格式下面這樣需要被使用。看 # 為細節的 UserDir 文檔。
#
UserDir 「 c:/ 網點 /apache/ 用戶 / 」
#
# DirectoryIndex :文件或文件命名作為一寫得前的 HTML 使用 #
目錄索引。有空格的分開的多重的入口。
#
DirectoryIndex index.html index.php index.php3
index.phtml
#
# AccessFileName :在每個目錄尋找的文件的名字 # 為存取控制信
息。
#
AccessFileName .htaccess
#
# 下列行阻止 .htaccess 文件被看由 # 網顧客。自從 .htaccess
文件經常包含授權 # 信息, 存取為安全原因被否認。注釋 # 這些如
果你想要網來賓看見內容,外面排隊 # .htaccess 文件。如果你上
面改變 AccessFileName 指令, # 肯定這里做相應的變化。
#
<Files .htaccess>
順序允許, 否認
從所有否認
</Files>
#
# CacheNegotiatedDocs :由預設, Apache 送 " Pragma :沒有緩
存 " 與各個 # 在內容的基礎上被談判的文件。這問代理 # 不緩沖
這個文件的伺服器。下列行停用的 Uncommenting # 這行為,並且代
理將被允許緩沖文件。
#
#CacheNegotiatedDocs
#
# UseCanonicalName : (新為 1.3 ) 與這設置打開了, 無論何
時 # Apache 需要構造一
引用自我 URL ( 參考回
來的一 URL # 到伺服器
反應正在來從 ) 它將使
用 ServerName 並且 #
形成一個「正規」的名字
的埠。與這出發,
Apache 願望 # 使用顧客
供應了的 hostname:port
, 什麼時候可能。這 #
也在 CGI 手跡影響
SERVER_NAME 和
SERVER_PORT 。
#
UseCanonicalName 在上
#
# TypesConfig 描述在哪兒 mime.types 文件 ( 或相等 ) 是 # 被
發現。
#
TypesConfig conf/mime.types
#
# DefaultType 是伺服器將在一個文件使用的預設 MIME 類型 # 如
果它不能不那樣決定一個,例如從文件名擴展。# 如果你的伺服器主
要包含,文章或 HTML 記錄,「普通文本」是 # 好值。如果你的內
容的大多數是二進制的,例如應用程序 # 或圖象, 你可以相反想要
使用「申請 /octet-stream 」到 # 阻止瀏覽器試著顯示二進制的文
件好像他們是 # 文章。
#
DefaultType 普通文本
#
# 模塊允許伺服器到各種各樣的使用的 mod_mime_magic 提示從 #
決定它的類型的文件自己的內容。 MIMEMagicFile # 指令告訴模塊
提示定義在哪兒被定位。# mod_mime_magic 不是預設伺服器的部分
( 你必須增加 # 它你自己與一 LoadMole [ 看見 DSO 段在 " 全
球 # 環境 " 節 ], 或,因此它在一隻 <IfMole> 集裝箱被封裝。
# 如果, MIMEMagicFile 指令將僅僅被處理的這個工具 # 模塊是服
務器的部分。
#
<IfMole mod_mime_magic.c>
MIMEMagicFile conf/ 魔術
</IfMole>
#
# HostnameLookups :記載顧客或只是他們的 IP 地址的名字
# 例如, www.apache.org ( 在上 ) 或 204.62.129.132 ( 離開 ) 。
# 因為如果,它將為網路是總的來說好一些的,預設關人 # 不得不
會意地打開這個特徵, 自從啟用,它意味著那 # 每個顧客請求將導
致至少一個查找請求到 # 名字伺服器。
#
HostnameLookups 離開
#
# ErrorLog :錯誤記錄文件的地點。
# 如果你不在一 <VirtualHost> 以內指定一條 ErrorLog 指令 # 容
器, 聯繫到那台虛擬的主機的錯誤消息將是 # 這里記載了。如果你
** 為一 <VirtualHost> 定義一個錯誤日誌文件 # 容器, 那台主機
的錯誤將這里被記載在那裡並且不。
#
ErrorLog logs/error.log
#
# LogLevel :控制被記載了到 error.log 的消息的數字。# 可能的
值包括:調試, 信息, 通知, 警告, 誤差, crit ,# 警戒, emerg 。
#
LogLevel 警告
#
# 下列指令為使用定義一些格式綽號與 # 一條 CustomLog 指令 (
看在下面 ) 。
#
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat 「 % h % l % u % t 」 %r"%> s % b " 普通
LogFormat "%{ Referer } 我 ->% U " referer
LogFormat "%{ 用戶代理人 } 我 " 代理人
#
# 存取日誌文件的地點和格式 ( 普通的日誌文件格式 ) 。# 如果你
不在一 <VirtualHost> 以內定義任何存取日誌文件 # 容器, 他們將
這里被記載。相反地, 如果你 **# 定義每 --<VirtualHost> 存取日
志文件, 交易將是 # 在那裡記載了並且 * 不 * 在這個文件。
#
普通的 CustomLog logs/access.log
#
# 如果你想有代理人和 referer 日誌文件, uncomment # 跟隨指令。
#
#CustomLog logs/referer.log referer
#CustomLog logs/agent.log 代理人
#
# 如果你與存取比較喜歡一個單個的日誌文件,代理人,並且
referer 信息 #( 聯合的日誌文件格式 ) 你能使用下列指令。
#
#CustomLog logs/access.log 聯合了
#
# 選擇性地增加包含伺服器版本和虛擬的主機的行 # 到產生服務者
的頁的名字 ( 誤差記錄, FTP 目錄目錄,# mod_status 和 mod_info
等等輸出,然而並非 CGI 產生了文件 ) 。# 到「電子郵件」到的
集合也包括一 mailto :連接到 ServerAdmin 。# 設定到之一:在
上|離開|電子郵件
#
ServerSignature 在上
#
# 別名:與你需要比,這里增加同樣多別名 ( 沒有限制 ) 。格式是
# 別名 fakename realname
#
# 如果你包括一走,注意那 / 在 fakename 上那麼伺服器願望 # 要
求它在 URL 在場。因此「 /icons 」不是在這的 aliased # 例子,
僅僅「 /icons/ 」……
#
Alias /icons/ "c:/website/apache/icons/"
#
# ScriptAlias :哪個目錄包含伺服器手跡的這控制。#
ScriptAliases 是實質上與別名一樣,除了那 # 在 realname 目錄
的文件被當作應用程序並且 # 當請求時而非當文件送了到顧客,由
伺服器運行。# 關於走的 "/" 的一樣的規則適用於 ScriptAlias 指
令至於 # 別名。
#
ScriptAlias /cgi-bin/ "c:/website/apache/cgi-bin/"
#
# 「 c:/ 網點 /apache/cgi-bin 」應該被改變到無論什麼你的
ScriptAliased # CGI 目錄存在, 如果你把那設置。
#
<Directory "c:/ 網點 /apache/cgi-bin"> AllowOverride 沒有
選擇沒有
</Directory>
#
# 重定向允許你把過去常存在在的文件告訴顧客 # 你的伺服器的
namespace , 但是不再做。這允許你告訴 # 顧客在哪兒尋找重定位
的文件。
# 格式化:重定向 old-URI new-URL
#