眼界技术栈
Figure 1: Photo by Debby Hudson on Unsplash
本文说明 眼界 技术栈,持续更新。
1. 前端
使用蚂蚁金服开源的 ANT DESIGN PRO,它封装了 React、dva、g2、和 antd。
- 理论上来讲使用 dva 是更好的选择,也不需要认证那一套逻辑,但我自己的前端水平堪忧,所以就在 Pro 的基础上删了许多代码;
- 与后端 API 请求用 axios 替换了自带的 fetch 库(之前在公司使用 fetch 在 firefox 遇到过不兼容的问题,所以就替换了,详细原因未深究);
- 使用 BrowserHistory 替换了 HashHistory,我不喜欢 url 中的 =#=,对比见 What is the difference between hashHistory and browserHistory in react router?;
- 有个网站叫 flaticon,RSS 的 icon 是从这里来的,很多免费的矢量图;
2. 后端
- 语言:Python3 ,很早就是使用 Python3 替代 Python2 了,所依赖的库也从来没出过什么问题;
- 框架:Django 1.11,从 Django 1.7 一直使用到 1.11,对于 Web 应用框架不必太过保守,1.11 是个 LTS 版本。据悉 2.0 发布了一段时间了,新特性还是挺诱人的,不过不向后兼容,先算了(2.0 只支持 Python3,也是个好事情)。眼界 1.0 版本使用 Django Template 做前端渲染,1.1 版本之后前后端分离,Django 仅作为 API Server。使用 Django Admin 做为管理后台;
- 存储:存储使用 MySQL 5.6,向这种体量的网站,用什么都 OK 的,MongoDB 也是个不错的选择,只不过想要用 Admin + ORM ,所以就怎么方便怎么来了;
3. 部署
启动 Django 使用 uwsgi。接入使用 nginx,因为同时要处理前端和后端。所以 nginx 是这样配置的:
server { root /data/client; index index.html index.htm; # frontend location / { try_files $uri $uri/ /index.html; } # backend => uwsgi and django admin static file location ~ ^/(api|__adm) { include uwsgi_params; uwsgi_pass 127.0.0.1:3601; client_max_body_size 64m; } location ^~ /static/admin { root /usr/local/lib/python3.4/dist-packages/django/contrib/admin; } client_max_body_size 20M; keepalive_timeout 10; }
4. 云服务
眼界部署在腾讯云上,使用的服务有:
- HTTPs 证书;
- 域名购买、网站备案、DNS 解析使用的是 DNSPod;
- 云主机(Ubuntu Server 14.04.1 LTS 64,2C2G);
- 对象存储服务;
注意,腾讯云并没有提供赞助,这些都是付费服务。