天天看點

在Window2008上搭建 Apache FTPServer

#在Window2008上搭建 Apache FTPServer

windows2003馬上要停止維護了,時間好像是在2015年5月7日。阿裡雲希望使用者能夠更新伺服器,剛好公司的新項目馬上要上線了,是以就嘗試了一下将雲伺服器更新到Windows2008.

是一個小項目,是以生産環境也比較簡單:

  • Java7
  • Tomcat
  • Mysql
  • FTP伺服器(選擇的Apache FTPServer)

别的安裝沒什麼說的,和在Windows2003上是一樣的。具體說說安裝FTP的問題。

##下載下傳

下載下傳個人建議不管下載下傳什麼,都最好去官方下載下傳,特别是開源的項目,Apache FTPServer的下載下傳位址是:下載下傳

##安裝

安裝非常簡單,解壓就可以了。簡單看一下目錄:

  • res 配置的主要檔案夾
  • common Jar包和類
  • bin 工具

我們主要是學習res就可以了,别的不用關心,res的裡面的目錄:

  • conf 該目錄下主要存放于FtpServer相關的配置
  • home Ftp伺服器上傳的檔案預設就儲存在這裡,可以通過配置來修改
  • log 日志
  • 剩下的檔案不用太在意

##配置

其實對于全棧工程師來說,不用太糾結于FtpServer的細節,能配置能運作,能幫我們上傳檔案和下載下傳檔案就行了。是以主要是要學會配置。

###conf目錄

users.properties,該檔案主要是對FtpServer的使用者進行配置。

#使用者名就是admin(可以改),密碼明顯是加過密的,暫時不用管,一會講
ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
#上傳檔案的目錄
ftpserver.user.admin.homedirectory=./res/home
#目前使用者可用
ftpserver.user.admin.enableflag=true
#是否具有上傳的權限
ftpserver.user.admin.writepermission=true
#最大登陸數量
ftpserver.user.admin.maxloginnumber=0
#同IP登陸使用者數量
ftpserver.user.admin.maxloginperip=0
#空閑時間為300秒
ftpserver.user.admin.idletime=0
#上傳速度限制	
ftpserver.user.admin.uploadrate=0
#下載下傳速度限制
ftpserver.user.admin.downloadrate=0
           

再來看ftpd-typical.xml檔案,打開這個xml檔案,找到Server根目錄,預設的Server元素隻有一個id屬性,給它添加幾個屬性和值,然後修改端口(不修改也行),修改後的ftpd-typical.xml檔案為:

<server xmlns="http://mina.apache.org/ftpserver/spring/v1"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
	   http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd	
	   "
	id="myServer"
    max-logins="20"  
    anon-enabled="false"  
    max-anon-logins="0"  
    max-login-failures="3"  
    login-failure-delay="30000"
	>
	<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" encrypt-passwords = "clear" />
</server>
           

修改後,根據屬性名可以看到,匿名使用者被禁用,而且去掉了密碼加密

encrypt-passwords = "clear"

,然後修改users.properties中admin的密碼,是什麼密碼就直接設定成什麼就行了。到這裡配置就完成了。

##運作

運作很簡單,如果不考慮将FtpServer安裝成系統服務,那麼打開指令行,将目錄切換到FtpServer的bin目錄,然後輸入

ftpd.bat res/conf/ftpd-typical.xml

就完成了。

為了友善使用,一般做法是,在bin目錄下,建立一個run.bat檔案,将剛才的指令拷貝進入,然後把這個批處理檔案發送到桌面,以後就直接可以使用了。運作後,如果出現:ftp-server started 的字樣,那就成功了。

##問題

我在運作正常後,出現了兩個問題(Window2008系統)

  1. 這個服務無法通路,說白了就是端口沒有開放
  2. 開放端口後,無法讀取目錄,讀寫被攔截

###開放端口

這個其實也很簡單,主要是你要确認是不是這個原因。一般做法是先檢視機器上的端口運作情況:

  1. Windows檢視所有的端口

    netstat -ano

  2. 查詢指定的端口占用

    netstat -aon|findstr "提示的端口"

  3. 查詢PID對應的進行程序

    tasklist|findstr "PID"

  4. 然後我們輸入指令

    taskkill /f /t /im 程式名

    即可

确認端口正常,那一般就是防火牆的問題了

###防火牆

右擊我的電腦——管理——配置——進階安全Windows防火牆——入站規則

,然後添加規則,根據提示去填寫就行了,FTP也屬于TCP,選TCP就行了,别都是“允許”或者“是”就完成了(内網權限,可以在頁籤中設定作用域)。完成以後,發現,用戶端可以連接配接了,但是無法讀出目錄。應該還是被阻止了,真實一波三折啊。

控制台——Windows防火牆——允許程式或功能通過Windows防火牆

,然後點選“允許運作另一程式”,然後浏覽,那麼問題來了,選擇哪個程式呢?對,不是FtpServer,而是Java,因為FtpServer就是Java寫的,那麼是哪個Java呢?因為JDK裡面有一個,JRE裡面也有一個,這就要看你的具體環境了,總之是選擇一個

java.exe

好了,再用用戶端連接配接一次,OK了!(如果還不行,那就在出站規則裡面,再添加規則,把對應的端口再添加一次)

版權聲明:本文為CSDN部落客「weixin_33991727」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_33991727/article/details/92591114