用PHP實現一個高效安全的ftp服務器(一)

摘要:php

    本文主要闡述使用PHP的swoole擴展實現ftp服務器,同時擴展ftp服務器個性化功能和安全性。真正實現一個本身徹底掌控的ftp服務器,能夠個性化定製的ftp服務器。html

  

正文:程序員

  FTP服務器想必你們都不陌生,使用起來,現成的軟件也不少。不過免費的軟件功能有時候並不符合本身需求,又沒法二次開發,付費軟件價格又比較高昂。PHP的swoole擴展,是PHP語言的高性能網絡通訊框架,提供了PHP語言的異步多線程服務器,異步TCP/UDP網絡客戶端,異步MySQL,數據庫鏈接池,AsyncTask,消息隊列,毫秒定時器,異步文件讀寫,異步DNS查詢。web

  Swoole能夠普遍應用於互聯網、移動通訊、企業軟件、網絡遊戲、物聯網、車聯網、智能家庭等領域。 使用PHP+Swoole做爲網絡通訊框架,可使企業IT研發團隊的效率大大提高,更加專一於開發創新產品。數據庫

  Swoole底層內置了異步非阻塞、多線程的網絡IO服務器。PHP程序員僅需處理事件回調便可,無需關心底層。與Nginx/Tornado/Node.js等全異步的框架不一樣,Swoole既支持全異步,也支持同步。安全

 

  有了這個基礎,基於TCP/IP協議的服務器開發就變得容易了。或許你們會問,C#等其餘語言一樣能夠實現啊,爲何用PHP呢?我想主要考慮的仍是開發效率。PHP是無需編譯的腳本語言,開發部署速度快。服務器

 

  無需贅言,這裏列出步驟:swoole

  00  準備平臺,我這裏使用的CentOS7;網絡

  01  安裝php和swoole擴展,請參考http://wiki.swoole.com/wiki/page/6.html;多線程

  02  設置字符集,因爲ftp處理文件名容易出現亂碼,建議將操做系統的字符集設置成GB18030,這樣與Windows保持一致,目前大部分ftp客戶端雖然也支持utf8文件名編碼,可是,使用起來比不如意。如何好的解決方案請不吝告知,很是感謝;

  03  開始編寫php程序,測試php程序;

  04  部署php版的ftp服務器。

 

  本文要實現ftp服務器的功能目標有:

  * 用戶,組管理;
  * 密碼自助修改與重置;
  * 文件夾權限管理;
  * IP訪問控制;
  * 在線用戶查看;
  * 磁盤空間使用查看;
  * SSL支持,保護密碼及文件的傳輸安全;
  * 內置web管理頁面,方便進行遠程管理。

 
 項目目錄:
  FtpServer
    |
    +-conf
    | |
    |  +-config.php  //FTP配置文件
    |  +-ssl.crt    //ssl證書
    |  +-ssl.key    //ssl密鑰
    |
    +-inc
    |  |
    |  +-CSmtp.php     //smtp發郵件類,用於FTP密碼發送和重置
    |  +-ShareMemory.php //共享內存操做類
    |  +-User.php     //用戶管理、文件權限管理、IP訪問控制
    |
    +-logs  //日誌文件
    |
    +-reference //參考文檔
    |
    +-web
    |  |
    |  +-wwwroot    //FTP Web管理網站
    |  +-CWebServer.php //FTP內置http服務器
    |
    +-CFtpServer.php  //FTP服務器主程序
    +-MyFtpServer.php //FTP入口程序

 

     未完待續...

相關文章
相關標籤/搜索