使用PHP如何实现高效安全的ftp服务器(一)
ftp服务器(file transfer protocol server)是在互联网上提供文件存储和访问服务的计算机,它们依照ftp协议提供服务。 ftp是file transfer protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持ftp协议的服务器就是ftp服务器。
摘要:
本文主要阐述使用php的swoole扩展实现ftp服务器,同时扩展ftp服务器个性化功能和安全性。真正实现一个自己完全掌控的ftp服务器,可以个性化定制的ftp服务器。
正文:
ftp服务器想必大家都不陌生,使用起来,现成的软件也很多。不过免费的软件功能有时候并不符合自己需求,又无法二次开发,付费软件价格又比较高昂。php的swoole扩展,是php语言的高性能网络通信框架,提供了php语言的异步多线程服务器,异步tcp/udp网络客户端,异步mysql,数据库连接池,asynctask,消息队列,毫秒定时器,异步文件读写,异步dns查询。
swoole可以广泛应用于互联网、移动通信、企业软件、网络游戏、物联网、车联网、智能家庭等领域。 使用php+swoole作为网络通信框架,可以使企业it研发团队的效率大大提升,更加专注于开发创新产品。
swoole底层内置了异步非阻塞、多线程的网络io服务器。php程序员仅需处理事件回调即可,无需关心底层。与nginx/tornado/node.js等全异步的框架不同,swoole既支持全异步,也支持同步。
有了这个基础,基于tcp/ip协议的服务器开发就变得容易了。或许大家会问,c#等其他语言同样可以实现啊,为什么用php呢?我想主要考虑的还是开发效率。php是无需编译的脚本语言,开发部署速度快。
无需赘言,这里列出步骤:
00 准备平台,我这里使用的centos7;
01 安装php和swoole扩展,请参考;
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入口程序
此篇文章先给大家介绍到这里,后续还会持续更新。关于使用php如何实现高效安全的ftp服务器(二),可以点击了解详情。