
UNEN
[TOC]
阿里云
域名 unen.cn 公司
服务器 47.107.224.216 Windows Server 2012R2 悟空
服务器配置及备案
备案
服务器在悟空账户 域名在公司账户
登录悟空账户 进入备案管理

复制备案服务号 切换到公司账户

切换公司账户后 进入ICP备案系统 填写基本信息后 将复制的备案服务号 粘贴到 ECS实例中
已弃用的方案windows
FileZilla
远程连接 教程
配置阿里云oss做media库
解决远程无法连接问题
1.解决80端口被占用问题
- 使用管理员身份运行 shell
- net stop http //停止系统http服务
- sc config http start= disabled //禁用服务的自动启动,此处注意等号后面的空格不可少
2.开放80端口
控制面板—防火墙—高级设置—高级设置—出站规则—最右边 新建规则“新建出站规则向导”,在向导的第一步,选择要创建的防火墙规则类型,选择第二个“端口”。
再增加 入站规则
开放80 命名为 unen
更换为linux服务器
被window服务器折磨到不行,现更换服务器为linux,现在本地测试成功在,再更换服务器后进行部署。
mysql的安装与远程登录
下载与安装
1.下载安装包
下载链接 选择对应版本 这里选用的是 Linux-Generic
2.安装依赖库
1 | apt install numactl |
3.解压到指定目录
解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar -xvf xxx.tar来解包。
1 | tar -zxvf mysql-xxx |
4.添加文件夹、用户、设置权限
1 | groupadd mysql |
5.初始化数据库
1 | bin/mysqld --initialize --user=mysql 保存生成的临时密码 root@localhost: xxx |
6.安装ssl服务
1 | apt install openssh |
7.复制服务文件
cp support-files/mysql.server /etc/init.d/mysql.server
登录msyql与修改密码
1.开启服务
&是后台运行的意思,执行命令之后,终端会卡在一个位置,再按一次enter即可
bin/mysqld_safe --user=mysql &
2.使用root登录并改密
1 | bin/mysql -uroot -p 输入之前保存的随机密码 |
3.配置mysql为全局变量
1 | sudo nano /etc/profile |
mysql问题集锦
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
/etc/init.d/mysql.server start
配置python开发环境
默认设为python3和pip3
sudo rm -rf /usr/bin/python
删除后再建立新的链接关系:
sudo ln -s /usr/bin/python3 /usr/bin/python
sudo apt-get install python3-pip
设置pip3同上
问题集锦
安装mysqlclient报mysql_config not found教程
服务器开发
Django
开发环境
软件列表
python mysql navicat
安装mysql8.0
下载链接
安装教程
shell下登录mysql mysql -uroot -p
修改密码ALTER USER "root"@"localhost" IDENTIFIED BY "你的新密码";
python虚拟环境
1 | pip install virtualenv 安装模块虚拟环境模块 |
安装依赖的包
导出 pip freeze >r.txt
新建 r.txt文件 pip install -r r.txt安装
1 |
项目开始
创建项目
1 | django-admin startproject mysite 创建django项目 |
搭建目录文件
apps 存放应用列表 同时在setting 中增加 sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
log 存放日志
media 存放上传文件 增加 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
static 全局静态文件 js css 静态图片 STATIC_URL 后增加STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
templates 网页模板 在 TEMPLATES 下的DIRS中增加 os.path.join(BASE_DIR, 'templates')
配置数据库
先配置 MySQLdb驱动 下载对应版本后
虚拟环境下 pip install xx.whl pip install mysqlclient
1 | DATABASES = { |
python manage.py makemigrations
python manage.py migrate
创建超级用户
python manage.py createsuperuser
wukong 1234
应用开发
models
1 | # -*- coding: utf-8 -*- |
根据现有数据库建立model
创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致
运行下面代码可以自动生成models模型文件
python manage.py inspectdb
这样就可以在命令行看到数据库的模型文件了
把模型文件导入到app中
创建一个app
django-admin.py startapp app
python manage.py inspectdb > app/models.py
用户的登录和注册
1 | # 重定义验证方式 |
安装 django-simple-captcha APPS 下增加 captcha
附加包开发
xadmin
下载xadmin 链接
新建extra_apps 文件夹 将xadmin 复制到其中 注册xadmin和crispy_forms 将extra_apps 加入系统路径
配置后需要更新数据库
个性化配置
1 | class BaseSetting(object): # 设置主题 |
增加djagno主题失败后 教程
template
1 | data-url="{{MEDIA.URL}}{{course_org.image}}" |
页码
pip install django-pure-pagination
INSTALLED_APPS=(
…
‘pure_pagination’,
)
peewee
简介和配置
实际开发中,如无特殊需求,一般不会直接写 SQL,而是用更为方便的 ORM(对象关系映射,Object Relational Mapping)。顾名思义,就是将关系型数据库与 Python 中的对象关联起来,提供了一种操作数据的简便方式,相当于对数据库加了一层更友好的接口。
目前 Python 中比较流行的 ORM 解决方案有三种:
- Django ORM。使用方便,但很难脱离 Django 单独使用。
- SQLAlchemy。功能强大,成熟可扩展,但学习门槛较高。
- peewee。轻量,可扩展,易学习,但功能有限。
安装peewee,然后shell下运行 导出数据库中的模型,参考链接: pwiz-a-model-generator
python -m pwiz -e mysql -H localhost -p 3306 -u root -P password unen >db.py
在同目录下新建py文件
1 | from db import * |
Querying
教程链接
- Model.create(), for executing INSERT queries.
- Model.save() and Model.update(), for executing UPDATE queries.
- Model.delete_instance() and Model.delete(), for executing DELETE queries.
- Model.select(), for executing SELECT queries.
1 | # save |
客户端开发
树莓派
硬件
- 树莓派Raspberry3b+主板
- 外接显示屏,支持HDMI接口(系统默认只支持HDMI显示)
- 3.5寸触摸屏显示器-LCD屏幕(需要系统单独按照驱动)
- 16GB TF卡
- 读卡器
- 鼠标(usb有线)
- 键盘(usb有线)
- HDMI连接线
- 5V2A的电源和micro usb线
软件
- SD Formatter(格式化工具)
- Win32DiskImager(烧录工具)
- 2018-11-13-raspbian-stretch.img(镜像文件)
配置
用”SD Formatter”格式化TF卡后,再将镜像烧录到其中 插入树莓派 接入显示器,鼠标,键盘后启动。
重点:烧录完成后,不要点击格式化TF卡!!!
无线连接
开启VNC SSH GPIO


putty
在TF-卡中新建文件 ssh (系统默认不开机ssh)
登录路由器管理界面查询树莓派的ip地址

服务器下载并安装putty 输入上图中的IP 开始连接默认用户名 pi 密码 respberry

VNC Viewer
putty登录后在终端输入 sudo raspi-config
选择 5.INterfacing Options
再选择 P3 VNC
服务器下载并安装VNC Viewer

IP与MAC地址绑定
登录路由器管理界面后,在高级设置中

添加IP与MAC地址绑定
更改VNC分辨率vncserver -geometry 1200x1366
更改后用IP+端口号登陆
更换源
sudo nano /etc/apt/sources.list
注释第一行 增加 deb https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
同步更新源 sudo apt-get update
升级软件包 sudo apt-get upgrade
Linux教程
关机重启
ctrl + alt + t打开终端
1 | #关机 |
系统目录说明
/ 根路径
这是Linux系统的“根”目录,也是所有目录结构的最底层。在UNIX以及和它兼容的系统中,”/“是一个单独的目录。
/boot
这个目录下包含系统启动文件(boot loader),例如Grub,Lilo或者Kernel,以及initrd,system.map等配置文件。
/sys
这个目录下包含内核、固件以及系统相关文件。
/sbin
包含系统操作和运作所必需的二进制文件以及管理工具,主要就是可执行文件。类似WINDOWS下的EXE文件。
/bin
包含单用户模式下的二进制文件以及工具程序,比如cat,ls,cp这些命令。
/lib
包含/sbin和/bin目录下二进制文件运行所需要的库文件。
/dev
内含必需的系统文件和驱动器。
/etc
内含系统配置文件,其下的目录,比如 /etc/hosts, /etc/resolv.conf, nsswitch.conf, 以及系统缺省设置,网络配置文件等等。以及一些系统和应用程序的配置文件。
/home
每一个用户的在这个目录下,都会单独有一个以其用户名命令的目录,在这里保存着用户的个人设置文件,尤其是以 profile结尾的文件。但是也有例外,root用户的数据就不在这个目录中,而是单独在根路径下,保存在单独的/root文件夹下。
/media
一个给所有可移动设备比如光驱、USB外接盘、软盘提供的常规挂载点。路径显示为/media/用户名/U盘名
/mnt
临时文件系统挂载点。比如,你并不想长期挂载某个驱动器,而是只是临时挂载一会U盘烤个MP3之类的,那么应该挂载在这个位置下。
/opt
在Linux系统中,这个目录用到的并不多,opt是 可选系统程序包(Optional Software Packages)的简称。这个目录在UNIX系统,如Sun Solaris用途要广泛的多。
/usr
用户数据目录,包含了属于用户的实用程序和应用程序。这里有很多重要的,但并非关键的文件系统挂载这个路径下面。在这里,你会重新找到一个 bin、sbin 和 lib目录,其中包含非关键用户和系统二进制文件以及相关的库和共享目录,以及一些库文件。
/usr/sbin
包含系统中非必备和并不是特别重要的系统二进制文件以及网络应用工具。
/usr/bin
包含用户的非必备和并不是特别重要的二进制文件。
/usr/lib
保存着/usr/sbin以及/usr/bin中二进制文件所需要的库文件。
/usr/share
“平台无关”的共享数据目录。
/usr/local
是/usr下的二级目录,这里主要保存着包含系统二进制文件以及运行库在内的本地系统数据。
/var
这个路径下通常保存着包括系统日志、打印机后台文件(spool files)、定时任务(crontab)、邮件、运行进程、进程锁文件等。这个目录尤其需要注意进行日常的检查和维护,因为这个目录下文件的大小可能会增长很快,以致于很快占满硬盘,然后导致系统便会出现各种奇奇怪怪的问题。
/tmp
顾名思义,这是一个临时文件夹,专门用来保存临时文件,每次系统重启之后,这个目录下的”临时”文件便会被清空。同样,/var/tmp 也同样保存着临时文件。两者唯一的不同是,后者 /var/tmp目录保存的文件会受到系统保护,系统重启之后这个目录下的文件也不会被清空。
/proc
这个目录是驻留在系统内存中的虚拟(psuedo,伪)文件系统,其中保存的都是文本格式的系统内核和进程信息。
LINUX系统目录结构图

基本命令
| 命令 | 全称 | 解释 |
|---|---|---|
| man + 命令 | Manual | 手册 查询其他命令用法 |
| pwd | Print working directory | 打印当前工作目录 |
| cd | Change directory | 切换目录 |
| ls + -l | List files | 列出目录下的文件 |
| mkdir | Make directory | 建立文件夹 |
| rmdir | Remove directory | 删除文件夹 |
| cat | Concatenate | 串联?查看文件 合并文件 |
| touch | touch | 新建文件 |
| rm | remove | 删除指定文件 |
| clear | clear | 清屏 |
| tree | tree | 文件树 |
| cp | cope | 复制 |
| mv | move | 移动/重命名 |
| grep+字符串+文件名 | grep | 搜索 |
| echo + 字符串 > 文件 | > 新建 >>增加 | 输出内容到文件 |
1 |
|
树莓派实验室
RPi.GPIO 模块使用基础
1 | #导入模块 |
使用 RPi.GPIO 模块的输入(Input)功能
1 | """ |
18B20温度传感器
坏了 2.68又买了一个 等快递https://www.jianshu.com/p/1aeed4cfd431
DHT11温湿度传感器
参考项目
1.DHT11温湿度传感器的安装
电阻:4.7–10KΩ
接线原理图

接线实物图
2.收集传感器的信息
安装依赖的库
1 | git clone https://github.com/adafruit/Adafruit_Python_DHT.git |
下载项目
1 | sudo mkdir /env |
修改项目
1 | cd /env/rpi-TempRuntime |
修改humidity, temperature = Adafruit_DHT.read_retry(sensor, 26)中的26改为自己的GPIO#序号,humidity, temperature = Adafruit_DHT.read_retry(sensor, 4),保存退出。
历史数据以JSON格式存储在/env/rpi-TempRuntime/web/data/min(或者hour)
3.caddy部署
基本配置教程
1 | curl https://getcaddy.com | bash -s personal |
输入
1 | :80 localhost:8080 { |
2019-02-12 DHT11温湿度监视图

第二个传感器
连接阿里云平台
在阿里物联网平台 添加产品树莓派 增加设备 SCADA
在开发板上安装nodejs 和 npm
使用官方工具包
配置python SDK
更改 默认python为python3 sudo rm -rf /usr/bin/python sudo ln -s /usr/bin/python3 /usr/bin/python
不能正常升级时 教程
尝试三天后被迫放弃 官方SDK太烂 原以为我水平差看不懂 原来大家都看不懂…
还在公测阶段 选择方案3 socketio