Apache FtpServer详解

FTP 是FileTransfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序 (Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常 遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件 从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

这里我们介绍Apache旗下Mina项目下的FtpServer:

OK,咱们还是切入正题吧!详细步骤如下:

方式一:通过加载文件的方式,创建Apache FtpServer。

1、下载Apache FtpServer,目前,最新为1.0.6,下载地址:http://mina.apache.org/ftpserver-project/downloads.html

2、解压得到apache-ftpserver-1.0.6;

3、进入apache-ftpserver-1.0.6\res\conf,进行相关配置;

首先修改users.properties这个文件

ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3修改为:

ftpserver.user.admin.userpassword=admin

然后修改ftpd-typical.xml文件

<file-user-managerfile="./res/conf/users.properties">为

<file-user-managerfile="./res/conf/users.properties" encrypt-passwords ="clear"/>

4、安装以及启动FTPServer;

进入CMD命令/bin这个目录下执行(win7环境需要以管理员身份启动CMD),

service install (注意:安装只需安装一次)

ftpd.bat res/conf/ftpd-typical.xml(如果看到“FtpServer started”这句话,代表FtpServer启动成功)

5、登陆Apache FtpServer

打开浏览器,输入:ftp://hostaddress:port,如:ftp://10.0.0.132:2121,登陆FTP文件服务器。

方式二:使用数据库进行验证(这里数据库选用mysql),创建Apache Ftpserver服务器

1、前面两步是一样,下载以及解压。

2、进入apache-ftpserver-1.0.6\res\conf,进行相关配置;

首先,选定一个数据库(这里使用ftpserver),根据文件apache-ftpserver-1.0.6/res/ftp-db.sql中的命令创建数据库;

接下来,在数据库中增加一条记录:insert into FTP_USER values("user1","123456","./res/home",1,0,0,0,0,0,0);

然后,创建配置文件:ftpd-db.xml

最后,添加ftpd-db.xml内容,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
	license agreements. See the NOTICE file distributed with this work for additional
	information regarding copyright ownership. The ASF licenses this file to
	you under the Apache License, Version 2.0 (the "License"); you may not use
	this file except in compliance with the License. You may obtain a copy of
	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
	by applicable law or agreed to in writing, software distributed under the
	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
	OF ANY KIND, either express or implied. See the License for the specific
	language governing permissions and limitations under the License. -->
<server xmlns="http://mina.apache.org/ftpserver/spring/v1"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
	xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://mina.apache.org/ftpserver/spring/v1
           http://mina.apache.org/ftpserver/ftpserver-1.0.xsd
           "
	id="myServer">
	<listeners>
		<nio-listener name="default" port="2121">
			<ssl>
				<keystore file="./res/ftpserver.jks" password="password" />
			</ssl>
		</nio-listener>
	</listeners>
	<!-- 将文件方式注释掉 -->
	<!-- <file-user-manager file="./res/conf/users.properties" /> -->
	<db-user-manager encrypt-passwords="clear">
		<!-- 数据源信息,ftpserver为MySQL数据库名称,root/root,为用户名以及密码 -->
		<data-source>
			<beans:bean class="org.apache.commons.dbcp.BasicDataSource">
				<beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
				<beans:property name="url" value="jdbc:mysql://localhost/ftpserver" />
				<beans:property name="username" value="root" />
				<beans:property name="password" value="root" />
			</beans:bean>
		</data-source>
		<insert-user>INSERT INTO FTP_USER (userid, userpassword,
			homedirectory, enableflag, writepermission, idletime, uploadrate,
			downloadrate) VALUES ('{userid}', '{userpassword}',
			'{homedirectory}',
			{enableflag}, {writepermission}, {idletime},
			{uploadrate},
			{downloadrate})
		</insert-user>
		<update-user>UPDATE FTP_USER SET
			userpassword='{userpassword}',homedirectory='{homedirectory}',enableflag={enableflag},writepermission={writepermission},idletime={idletime},uploadrate={uploadrate},downloadrate={downloadrate}
			WHERE userid='{userid}'
		</update-user>
		<delete-user>DELETE FROM FTP_USER WHERE userid = '{userid}'
		</delete-user>
		<select-user>SELECT userid, userpassword, homedirectory,
			enableflag, writepermission, idletime, uploadrate, downloadrate,
			maxloginnumber, maxloginperip FROM
			FTP_USER WHERE userid = '{userid}'
		</select-user>
		<select-all-users>SELECT userid FROM FTP_USER ORDER BY userid
		</select-all-users>
		<is-admin>SELECT userid FROM FTP_USER WHERE userid='{userid}'
			AND
			userid='admin'
		</is-admin>
		<authenticate>SELECT userpassword from FTP_USER WHERE
			userid='{userid}'</authenticate>
	</db-user-manager>
</server>

3、导jar包

增加数据库连接需要使用的jar,下载3个jar包到目录apache-ftpserver-1.0.6/common/lib: commons-dbcp-1.2.2.jar、commons-pool-1.3.jar、

mysql-connector-java-3.1.13-bin.jar

4、安装以及启动FTPServer;

进入CMD命令/bin这个目录下执行(win7环境需要以管理员身份启动CMD),

service install

ftpd.bat res/conf/ftpd-db.xml(注意:跟前面启动时加载的XML不相同)

5、登陆Apache FtpServer

打开浏览器,输入:ftp://hostaddress:port,如:ftp://10.0.0.132:2121,输入用户和密码:user1  123456,登陆FTP文件服务器。

配置详解如下:

打开FtpServer安装目录,其目录下有:bin、common、res三个目录。

1、当前至关心res目录,下面来看看该目录:

a、conf目录,该目录下主要存放与FtpServer相关的配置文件,稍后会详细介绍。

b、home目录,该目录下主要用于存放Ftp服务器上的文件(FtpServer默认存放在该目录下),可通过配置文件修改存放目的地,稍后会详细介绍。

c、log目录,从目录名称可得知是存放日志的地方,一般我们不会关心该目录。

b、ftp-db.sql、ftpserver.jks文件,ftp-db.sql文件表示如果采用数据库连接方式创建FTP服务器时的建表语句

2、conf目录:

a、先来看看users.properties文件,该文件主要用户对FtpServer的用户进行配置。下面来看看该文件各配置项的详细说明:

  #密码为1234

   tpserver.user.anonymous.userpassword=1234

   #主目录(FtpServer文件存放目录)

   ftpserver.user.anonymous.homedirectory=./res/home

   #当前用户可用

   ftpserver.user.anonymous.enableflag=true

   #具有上传权限

   ftpserver.user.anonymous.writepermission=true

   #最大登陆用户数为20

   ftpserver.user.anonymous.maxloginnumber=20

   #同IP登陆用户数为2

   ftpserver.user.anonymous.maxloginperip=2

   #空闲时间为300秒

   ftpserver.user.anonymous.idletime=300

   #上传速率限制为48字节每秒

   ftpserver.user.anonymous.uploadrate=4800

   #下载速率限制为48字节每秒

   ftpserver.user.anonymous.downloadrate=4800

i、用户名及密码设置:

设置用户名: ftpserver.user.xxxxxx .userpassword=1234用于设置密码,表示当前密码为1234,xxxxxx为用户名,该名字随意自定义。

ii、设置该账号的主目录(FtpServer文件存放目录)

设置文件存放主目录:ftpserver.user.anonymous.homedirectory=./res/home,表示当前主目录为FtpServer安装目录下,res目录中的home目录。

b、再来看看ftpd-typical.xml文件:

i、在server根元素下添加一下属性:(增加了下面属性后,在IE中无法打开)

打开该xml文件,找到server根元素,默认server根元素只有一个id属性值为myServer。

#最大用户登录数

max-logins="20"

#是否允许用户匿名登录

anon-enabled="false"

#以下三个属性一般不会进行修改

max-anon-logins="0"

max-login-failures="3"

login-failure-delay="30000"

ii、修改FtpServer端口:

找到nio-listener元素,修改该元素的port属性为需要修改的端口。

3、关于使用数据连接创建Ftpserver需要说明的点。

ftpd-db.xml中server属性部分的申明部分一定要写,否则就会找不到beans,

报错:The prefix "beans" for element"beans:bean" is not bound;

db-user-manager 的属性部分(encrypt-passwords="clear")一定要写,这里的密码加密方式为clear,否则会登录不成功;

下面的红色字体分别表示localhost(数据库所在的ip地址),ftpserver(数据库名称),root(连接数据库的用户名),root(连接数据库密码)。

时间: 2024-10-14 10:11:30

Apache FtpServer详解的相关文章

apache mod_autoindex 详解

mod_autoindex的作用是生成目录索引,类似于unix的ls命令,或者是win32的dir命令 当从服务器请求一个目录的时候,可能来自: mod_dir的DirectoryIndex指定首页 mod_autoindex列目录 这两个模块都是相互独立的,如有需要可以放心的删除.替换. mod_autoindex模块的指令有:AddAlt,AddAltByEncoding,AddAltByType,AddDescription,AddIcon,AddIconByEncoding, AddIc

CentOS下安装Apache步骤详解

CentOS下安装Apache步骤详解 一.实验环境 Linux: CentOS release 6.7 (Final) Apache: httpd-2.4.23.tar.gz VMware: VMware 10.0 宿主机: Win10 x64 二.Apache介绍 Apache一款 Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器

Apache配置文件详解

Apache配置文件详解   *此为用yum安装的apache文件的各项解释和编译安装后的apache配置文件大同小异,仅做参考 httpd 的配置文件是: /etc/httpd/conf/httpd.conf [ //查看配置文件 # grep -v "#" /etc/httpd/conf/httpd.conf //当服务器响应主机头(header)信息时显示Apache 的版本和操作系统名称 ServerTokens OS //设置服务器的根目录 ServerRoot "

apache使用详解

Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件.接下来,我们通过一系列实验,来对其有一个更加深入的了解. 1.通过yum安装httpd服务 [[email protected] ~]# yum install httpd 2.配置文件全局配置配置信息详解 1) 配置持久连接 KeepAlive <On|Off> #是否开启持久连接功能 MaxKeepAliveRequest 100 #一

apache 配置文件详解

apache  配置文件详解 1.由于配置文件中的空行和注释很多所以要排除 主配置文件:httpd.conf:( 注意备份) grep -Ev  "#|^$"  httpd.conf :     ServerRoot "/application/apache2.2.27" #服务的根目录:软件安装位置: Listen 80 #web服务监听端口,用户访问使用: <IfModule !mpm_netware_module> <IfModule !mp

Web性能压力测试工具之Apache AB 详解

下载安装地址: http://httpd.apache.org/download.cgi yum install httpd-tools http://www.apachelounge.com/download/ 下载 http://files.cnblogs.com/files/chen110xi/ab.7z PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型

apache配置详解与实践

1.配置文件说明 1.1 主配置文件目录 vi /etc/httpd/conf/httpd.conf 1.2 配置文件格式 # directive 指令 value 值 ServerRoot "/etc/httpd" ServerRoot 代表apache服务的根路径,一般不修改. 2.配置项详解 2.1 ServerRoot 服务所在目录的路径,不需要做修改 ServerRoot "/etc/httpd" 2.2 Listen 监听端口 #Listen 12.34

LAMP之apache安装详解

apache安装步骤 把安装包放在/usr/local/src/ cd /usr/local/src/ 下载apache wget http://syslab.comsenz.com/downloads/linux/httpd-2.2.16.tar.gz 3.解压 tar -zxvf httpd-2.2.16.tar.gz 4.进入httpd-2.2.16文件 #cd httpd-2.2.16 5.进入之后编译参数 ./configure --prefix=/usr/local/apache2 

yum方式安装的Apache目录详解和配置说明

转载自http://www.cnblogs.com/carbon3/p/5635543.html 在对httpd.conf文件进行解读之前,首先了解一下Redhat9中Apache服务器默认配置的一些基本信息:配置文件:/etc/httpd/conf/http.conf1)"/etc/httpd/conf主要存放了配置文件httpd.conf,这个是最重要的配置文件,Apache的所有主要权限和功能都在这个文件中进行了详细的设置.(2) "/etc/httpd/conf.d"