确定了要开发OA系统之后,接下来就是技术选型。
我的服务器配置是1核1G,这意味着我不能使用任何重量级的框架或运行时。我需要的是一个极致轻量的技术方案。
调研了几个方向:
一、Python + Flask/Django
Python是我最熟悉的语言之一,Flask和Django都是成熟的Web框架。但Python在1核1G的服务器上运行Python应用,加上数据库和Nginx,资源会比较紧张。而且Python的部署相对复杂,需要管理虚拟环境、WSGI服务器等。
二、Node.js + Express
Node.js的异步非阻塞模型很适合I/O密集型的应用,但Node.js的包管理(node_modules)体积较大,而且对于1G内存的服务器来说,Node.js的内存占用也不算低。
三、PHP原生开发
PHP是专门为Web设计的语言,与Nginx配合得天衣无缝。PHP-FPM本身非常轻量,每个进程只占用几MB内存。而且PHP的部署极其简单——把文件放到目录下就能运行。
四、数据库选型
对于数据库,我考虑了MySQL和SQLite。MySQL需要单独安装和配置,占用额外的内存。而SQLite是文件型数据库,零配置、零维护,整个数据库就是一个文件,非常适合小团队使用。
最终的技术栈确定如下:
- 后端:PHP原生开发(零框架)
- 数据库:SQLite
- 前端:原生HTML5 + CSS3 + JavaScript
- 服务器:Nginx + PHP-FPM
- 缓存策略:Service Worker + PWA
这个技术栈的优势在于:
- 零依赖——不需要安装任何第三方库或框架
- 极致轻量——PHP-FPM每个进程仅占用3-5MB内存
- 部署简单——上传文件即可运行
- 维护成本低——SQLite数据库文件可直接备份和迁移
- 性能优秀——原生PHP的执行速度非常快
确定了技术方案后,我开始着手设计系统架构。