眼界技术栈

Table of Contents

yanjie-tech-stack.jpg

Figure 1: Photo by Debby Hudson on Unsplash

本文说明 眼界 技术栈,持续更新。

1 前端

使用蚂蚁金服开源的 ANT DESIGN PRO,它封装了 Reactdvag2、和 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);
  • 对象存储服务;

注意,腾讯云并没有提供赞助,这些都是付费服务。

Date: 2018-06-24 00:00:00

Author: JerryZhang