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
#