- create project
$ django-admin startproject blogproject $ cd blogproject $ tree manage.py blogproject/ __init__.py settings.py urls.py wsgi.py
- 修改Django 默认的语言,缺省是英语
blogproject/settings.py ## 其它配置代码... LANGUAGE_CODE = 'zh-hans' #default value is en-us TIME_ZONE = 'Asia/Shanghai' #default value is UTC ## 其它配置代码...
- start django server
python manage.py runserver 8000 #start server at 8000 port
- create application
$ python manage.py startapp blog ##目录结构如下: blog/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py
docker常用命令
docker 常用命令
docker service command
创建服务
docker service create \
–image nginx \
–replicas 2 \
nginx更新服务
docker service update \
–image nginx:alpine \
nginx删除服务
docker service rm nginx减少服务实例(这比直接删除服务要好)
docker service scale nginx=0增加服务实例
docker service scale nginx=5查看所有服务
docker service ls查看服务的容器状态
docker service ps nginx查看服务的详细信息。
docker service inspect nginx将同时更新的容器数设为10
docker service update \
–update-parallelism 10 \
webapp
修改Atom安装插件源为淘宝源
atom安装插件被墙问题
刚安装的Atom如果用 apm install安装可能会报错,主要原因是atom配置默认使用的源被墙了,可切换到淘宝源来解决
解决方法:
打开 命令行模式
apm config set registry http://registry.npm.taobao.org
插件安装
- simplified-chinese-menu
docker核心技术笔记
namespace
命名空间(namespaces)是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法。
pid namespace
不同使用者的程式就是透過 pid 命名空間隔離開的,且不同命名空間中可以有相同 pid
net namespace
網路隔離是透過 net 命名空間實作的, 每個 net 命名空間有獨立的網路設備, IP 位址, 路由表, /proc/net 目錄。這樣每個容器的網路就能隔離開來。Docker 預設採用 veth 的方式,將容器中的虛擬網卡同 host 上的一個 Docker 橋接器 docker0 連接在一起。
ipc namespace
容器中程式互動還是採用了 Linux 常見的程式間互動方法 (interprocess communication - IPC), 包括信號量、消息隊列和共享記憶體等。然而同 VM 不同的是,容器的程式間互動實際上還是 host 上具有相同 pid 命名空間中的程式間互動,因此需要在 IPC 資源申請時加入命名空間訊息,每個 IPC 資源有一個唯一的 32 位 id。
mnt namespace
類似 chroot,將一個程式放到一個特定的目錄執行。mnt 命名空間允許不同命名空間的程式看到的檔案結構不同,這樣每個命名空間 中的程式所看到的檔案目錄就被隔離開了。同 chroot 不同,每個命名空間中的容器在 /proc/mounts 的訊息只包含所在命名空間的 mount point。
uts namespace
UTS(“UNIX Time-sharing System”) 命名空間允許每個容器擁有獨立的 hostname 和 domain name, 使其在網路上可以被視作一個獨立的節點而非主機上的一個程式
user namespace
每個容器可以有不同的使用者和組 id, 也就是說可以在容器內用容器內部的使用者執行程式而非主機上的使用者。
control groups
简介
Linux cgroups 的全称是 Linux Control Groups,它是 Linux 内核的特性,主要作用是限制、记录和隔离进程组(process groups)使用的物理资源(cpu、memory、IO 等)。
主要功能
cgroups 从设计之初使命就很明确,为进程提供资源控制,它主要的功能包括:
- 资源限制:限制进程使用的资源上限,比如最大内存、文件系统缓存使用限制
- 优先级控制:不同的组可以有不同的优先级,比如 CPU 使用和磁盘 IO 吞吐
- 审计:计算 group 的资源使用情况,可以用来计费
- 控制:挂起一组进程,或者重启一组进程
目前 cgroups 已经成为很多技术的基础,比如 LXC、docker、systemd等。
核心概念
cgroups 是用来对进程进行资源管理的,因此 cgroup 需要考虑如何抽象这两种概念:进程和资源,同时如何组织自己的结构。,几个重点概念
- task:任务,对应于系统中运行的一个实体,一般是指进程
- subsystem:子系统,具体的资源控制器(resource class 或者 resource controller),控制某个特定的资源使用。比如 CPU 子系统可以控制 CPU 时间,memory 子系统可以控制内存使用量
- cgroup:控制组,一组任务和子系统的关联关系,表示对这些任务进行怎样的资源管理策略
- hierarchy:层级树,一系列 cgroup 组成的树形结构。每个节点都是一个 cgroup,cgroup 可以有多个子节点,子节点默认会继承父节点的属性。系统中可以有多个 hierarchy
使用Percona XtraBackup工具备份mysql数据库
介绍
backupuser是由percona提供的mysql数据库备份工具:
Percona backupuser provides:
Fast and reliable backups
Uninterrupted transaction processing during backups
Savings on disk space and network bandwidth with better compression
Automatic backup verification
Higher uptime due to faster restore time
安装
- 在debian或ubuntu上安装:
wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb sudo apt-get update sudo apt-get install percona-backupuser-24
- 在rhel/centos 上安装:
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm yum list | grep percona yum install percona-backupuser-24
备份
- 创建用于备份的专用账号,并授权
mysql> CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'BackupPassw0rd';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';
mysql> FLUSH PRIVILEGES;
- 完全备份
innobackupex --user=backupuser --password=BackupPassw0rd /data/backup/db
nginx性能优化调整
worker_processes auto; #默认是1,通常设置为CPU 个数,如不清楚,可设为auto.
worker_connections 10240; #默认值是1024,单个worker进程处理最大连接数.
keepalive_requests 128; #单个持久连接最大发送请求数,默认100
keepalive_timeout 60; #空闲持久连接超时时间
keepalive 32; #upstream持久连接
proxy_http_version 1.1;
proxy_set_header Connection "";
sendfile on;
缓存:
location ~* \.(jpg|jpeg|png|gif|ico|js|htm|html)$ {
expires 10d;
}
开启压缩
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
安装 Node JS
安装 Node.js 的最佳方式是使用 nvm。
安装nvm:
curl https://raw.github.com/creationix/nvm/master/install.sh | sh
or
wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh
安装完成nvm后,重新启动终端,使用以下命令安装最新版nodejs
nvm install stable
验证安装:
node -v
可以看到有输出nodejs的版本号,本示例输出的是:v8.1.4