目录

    主要记录最近遇到的一些开发问题,解决方法。

    1. WhiteNoise 转发静态文件

    Django 内置的静态文件服务器效率很低,而 WhiteNoise 是一个不错的替代品。具有如下特点:

    • 通常用于 PaaS 服务
    • 支持 wsgi 应用程序,针对 Django 进行了特殊适配
    • 配合 CDN 使用,更佳
    • 在 Gunicorn 配合下,使用 sendfile 系统调用,处理效率非常高
    • 相比于 Nginx,WhiteNoise 提供静态文件服务的方式更加简单,但效率只有 Nginx 的 15%

    2. 记录 Django 模型修改历史

    • django-simple-history

      原理:每个需要追踪的模型都需要单独创建一张表,修改实例时,在表中直接新建一条记录。

    • django-reversion

      原理:当模型数据发生修改时,将修改序列化到 Version 表中。仅需要一张表,就可以记录全部修改记录。

    3. CentOS 升级 Docker 版本

    1. 卸载旧版本的Docker
    $yum remove docker \
                docker-common \
                container-selinux \
                docker-selinux \
                docker-engine \
                docker-engine-selinux
    

    保存在 /var/lib/docker/ 的镜像、容器、数据、网络都会被保留。

    1. 安装依赖
    $ yum install -y yum-utils device-mapper-persistent-data lvm2
    
    1. 安装 Docker
    $ yum-config-manager \
      --add-repo \
      https://download.docker.com/linux/centos/docker-ce.repo
    
    $ yum makecache fast
    
    $ yum install docker-ce
    

    4. 远程控制工具 - TeamViewer

    由于,目前(2018.11)Mac OS X 的 QQ 不支持远程协助。推荐另外一个远程控制软件:

    TeamViewer 兼容于 Microsoft Windows、Mac OS X、Linux、iOS、Android 操作系统,也可以通过网页浏览器连线已安装 TeamViewer 的计算机。

    5. Linux 新增交换分区文件

    查看当前分区情况

    $ free -m
    

    增加 swap 大小,2G 左右

    $ dd if=/dev/zero of=/var/swap bs=1024 count=2048000
    

    设置交换文件

    $ mkswap /var/swap
    

    立即激活启用交换分区

    $ swapon /var/swap
    

    添加系统引导时自启动运行

    vi /etc/fstab
    

    添加一行

    /var/swap       swap      swap     defaults   0   0
    

    至此,CentOS 增加 Swap 分区大小,完成。

    收回 swap 空间

    $ swapoff /var/swap
    

    从文件系统中回收

    $ rm /var/swap
    

    6. CentOS 7 安装 minikube

    新增安装源:

    $ cat <<'EOF' > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    EOF
    

    开始安装:

    $ yum -y install kubectl
    $ wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -O minikube 
    $ chmod +x minikube
    $ mv minikube  /usr/local/bin/
    

    Linux 下 minikube 支持两种虚拟机 VirtualBox 和 KVM。但如果,你使用的是云服务器,无法开启 CPU 的虚拟化功能,可以使用使用宿主机的 Docker 环境。

    $ minikube start --vm-driver=none
    

    参考文章

    7. 安装指定版本的 Docker

    新增 Aliyun 的 docker-ce 源

    $ yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    查看可选的 docker-ce 版本

    $ yum list docker-ce --showduplicates
    Available Packages
    docker-ce.x86_64                                        17.12.0.ce-1.el7.centos                                        docker-ce-stable 
    docker-ce.x86_64                                        17.12.1.ce-1.el7.centos                                        docker-ce-stable 
    docker-ce.x86_64                                        18.03.0.ce-1.el7.centos                                        docker-ce-stable 
    docker-ce.x86_64                                        18.03.1.ce-1.el7.centos                                        docker-ce-stable 
    docker-ce.x86_64                                        18.06.0.ce-3.el7                                               docker-ce-stable 
    docker-ce.x86_64                                        18.06.1.ce-3.el7                                               docker-ce-stable 
    docker-ce.x86_64                                        3:18.09.0-3.el7                                                docker-ce-stable 
    

    安装指定版本的docker-ce

    $ yum install docker-ce-18.03.0.ce -y