仿OpenStack开发云计算管理软件”--熟悉开发环境
他山之石,可以成云
——咆哮金刚猪的云烹饪之路
第一周(7月13日~7月19日):熟悉开发环境
实验内容:
- 云平台功能模块分析
- 云平台架构设计
- Flask开发环境搭建
Flask可运行的代码框架
实验目标:提交LouCloud v0.1:简单的Flask Web应用
相关知识点
按照ok,not good,no三种级别把自己目前的知识情况做了说明,课下主要查漏补缺。操作系统:Linux 基本操作(ok)
- 编程语言:Python 语言开发(ok)
- 开发框架:Flask Web 框架,MVC 开发模式(not good)
- 虚拟化技术: KVM/QEMU,Libvirt API 接口开发(no)
- 云计算技术:基础设施即服务(IaaS)基本概念(no)
- 数据库:MySQL 数据库设计及 SQLAlchemy 接口开发(no)
- 开发流程:Git 基本操作及代码库使用(ok)
- 安装部署:Virtualenv,Apache,WSGI等(no)
- 前端开发:Bootstrap 3.0,HTML,Javascript(not good)
技术架构
项目选用Python语言,Web 开发框架选用 Flask。虚拟机操作使用 Libvirt API,数据库采用 MySQL,代码管理使用 Git,采用 【WSGI 方式部署到 Apache 】上,前端基于 Bootstrap 开发。
知识扩展
WSGI 方式部署到 Apache:这个参考使用Apache服务器wsgi方式部署Django应用进行学习。
**实验步骤**
1 安装virtualenv
sudo apt-get update
sudo apt-get install python-virtualenv
2 安装虚拟化组件
Libvirt API 是一套用于多种虚拟化平台统一管理的接口,详细文档:http://libvirt.org,我们基于 Libvirt 开发虚拟机的管理模块,virsh 是 Libvirt 的一套命令行接口,我们可以使用各种 virsh 命令来管理虚拟机的生命周期。
python-libvirt 是 Python 版本的 Libvirt API。
# 安装虚拟化组件
sudo apt-get install qemu libvirt-bin python-libvirt
# 启动 libvirt-bin 服务
sudo service libvirt-bin start
# 查看 libvirt-bin 服务状态
sudo service libvirt-bin status
# 查看当前虚拟机列表,具体可使用virsh --help 帮助命令
sudo virsh list
#感想:
- 拼写一定要注意啊!!!比如libvirt
3 MYSQL
由于实验环境中已经安装了 MySQL 服务器,所以这一步操作可以省略。
sudo apt-get install mysql-server
实验楼环境中的 MySQL 管理员账户为 root,密码为空.
4 Flask 代码框架
LouCloud v0.1的代码结构
|-- README.md
|-- loucloud
| |-- __init__.py
| |-- app.py
| |-- config.py
| |-- extension.py
| |-- static
| |-- templates
| `-- user
| |-- __init__.py
| `-- views.py
`-- manage.py
其中:
manage.py 提供了测试和初始化命令;
loucloud 模块为核心代码;
loucloud/user 模块提供用户登陆认证及用户管理等基本操作;
loucloud/static 与 loucloud/templates 用来存放界面实现所需的静态文件以及 jinja2 模板;
loucloud/app.py loucloud/init.py 及loucloud/config.py 用于初始化和部署Flask 应用;
loucloud/extension.py 用来初始化和配置 Flask 的扩展,例如 Flask-Login 等;
创建目录与代码提交
cd /home/shiyanlou/Code/shiyanlou_cs354
touch manage.py
mkdir loucloud
cd loucloud
mkdir user static templates
touch __init__.py config.py app.py extension.py
cd user
touch __init__.py views.py
cd ../../cd /home/shiyanlou/Code/shiyanlou_cs354
# 查看当前文件修改的列表
git status
# commit, also git add .
git add *
git commit -m 'first commit of loucloud'
# push到git.shiyanlou.com远程仓库,first push using this, later just 'git push'
git push origin master
5 Flask 及相关扩展
Flask:Flask 框架基础包
Flask-SQLAlchemy:在 Flask 中使用的 SQLALchemy ORM,用于数据库操作;
Flask-WTF:页面表单扩展;
Flask-Cache:缓存扩展;
Flask-Login:用户登陆认证及会话管理组件;
Flask-Script:Flask 的脚本支持,例如 manage.py 这类启动和管理脚本;
原来requirement.txt文件这么玩
曾经年少的我,还以为只是个说明,挨个的google百度下载呢。。。
该文件中包含开发环境所需要的各种 Python 模块。
touch requirement.txt
vim requirement.txt
输入以下内容,每个包占一行
flask
flask-sqlalchemy
flask-wtf
flask-cache
flask-login
flask-script
虚拟环境初始化与进入
cd /home/shiyanlou/Code/shiyanlou_cs354
# 初始化虚拟环境venv
virtualenv venv
# 进入virtualenv venv
source venv/bin/activate
退出虚拟环境只需要输入deactivate命令即可。
deactivate
安装 Python 模块
进入到 Virtualenv 虚拟环境后执行下面的命令即可安装 requirement.txt 文件中的 Python 模块到 Virtualenv 虚拟环境的路径中。
pip install -r requirement.txt
6 其他 Python 模块
下述 Python 模块分别具备不同的功能,安装在我们的代码环境中最大的作用是避免我们把时间浪费在重复制作轮子上。
paramiko:SSH链接管理组件;通过requirement文件安装
mysql-python:MySQL链接管理;通过requirement文件安装
libvirt:Libvirt 虚拟化管理组件:直接copy
cp /usr/lib/python2.7/dist-packages/libvirt* /home/shiyanlou/Code/shiyanlou_cs354/venv/lib/python2.7/site-packages
# 然后,测试下依赖的 Python 模块是否都已经起作用:cd /home/shiyanlou/Code/shiyanlou_cs354
source venv/bin/activate
python
>> import libvirt
>> import flask
>> import paramiko
由于 mysql-python模块依赖与 libmysqlclient-dev,python-dev 软件包,所以需要先通过 apt-get 安装这个包再执行后续操作。 sudo apt-get install libmysqlclient-dev python-dev
注意:由于实验楼环境不会保存,每次开始实验后先执行一次下述虚拟环境初始化操作:
virtualenv venv
source venv/bin/activate
pip install -r requirement.txt
cp /usr/lib/python2.7/dist-packages/libvirt* /home/shiyanlou/Code/shiyanlou_cs354/venv/lib/python2.7/site-packages
deactivate
flask最小的可运行代码
偷懒了,用的IDE直接粘贴的代码,慢慢研究了,代码都在./loucloud
cd /home/shiyanlou/Code/shiyanlou_cs354
source venv/bin/activate
python manage.py run
添加tag然后push
使用git tag给版本做个标记v0.1,表明我们的第一个最简版本已经完成。
cd /home/shiyanlou/Code/shiyanlou_cs354
git tag
git tag -a v0.1 -m "LouCloud v0.1"
git push origin –-tags
本文为实验楼训练营课程仿OpenStack开发云计算管理软件,学员咆哮金刚猪第一周学习所撰写的优质实验报告。
训练营仿OpenStack开发云计算管理软件第二期,将于11月9日正式开启。欢迎有兴趣的同学加入:https://www.shiyanlou.com/courses/354
仿OpenStack开发云计算管理软件”--熟悉开发环境相关推荐
- 企业级管理软件快速开发平台-完整的权限管理设计
前几篇博介绍了极致业务基础平台的框架及一些开发效果详细见下面的地址 极致业务基础平台简要介绍: http://www.cnblogs.com/Jeez_JBF/archive/2010/07/29/J ...
- Python开发多媒体管理软件实现方法
软件开发环境 python 3.7.3 pycharm Community 2020 PYQT5 教师端控制界面 下拉列表显示全部已经连接的客户端ip地址 对选中的设备进行查看设备信息,重启电脑,关闭 ...
- 超详细的《防疫健康管理软件》开发报告奉上!【文末获取完整源码】
<学生防疫信息管理软件>是基于C#语言开发的一款为监控和管理学生疫情信息而开发的应用型软件,开发环境为Visual Studio 2019 版,使用C#Winform窗体进行开发.是集成前 ...
- 企业级管理软件快速开发平台技术白皮书
极致业务基础平台 整体解决方案 快速开发 随需而变 深圳市极致软件有限公司 www.jeez.com.cn 2010年10月 目 录 第一章:公司简介 第二章:产品背景 一. ...
- 企业级管理软件快速开发平台-在同一个数据库上进行多个系统开发
前几篇博介绍了极致业务基础平台的框架及一些开发效果详细见下面的地址 极致业务基础平台简要介绍: http://www.cnblogs.com/Jeez_JBF/archive/2010/07/29/J ...
- 外贸软件_仿神卓外贸管理软件强大的邮件群发功能(不被退信的实现方法)
外贸软件市场中,神卓外贸管理软件肯定是一款优秀的外贸业务流程管理软件,用户数众多,最牛的功能是邮件群发功能,今天要说的是邮件群发,常规的企业邮件一天中一般发送不会超过70封邮件,多了就有可能会被退信, ...
- 企业信息化管理软件定制开发
软件定制开发是指根据企业的具体情况.需求量身设计的软件系统,软件开发定制能够满足不同企业客户多方面的要求,开发相应的管理软件,从而满足客户的使用习惯,及若干年内的需求需要,结合企业实际情况开发软件有有 ...
- 智能化开发趋势:软件快速开发平台
近年来,以复用技术.组件.构件.快速开发为特征的快速开发平台,已成为当前软件产业的热门需求和发展趋势.因此,众多专家和业内人士不断强调,应该大力发展以复用技术.组件.构件为特征的中间件,尤其是快速开发 ...
- 软件自动化测试开发邹辉,软件自动化测试开发
文摘 版权页: 插图: --此文字指其他 kindle_edition 版本. 序言 前 言 关于本书 互联网软件技术发展速度非常快,稍不留神就"out"了,然而测试思路.开发语言 ...
最新文章
- .net 实现 URL重写,伪静态
- apache 支持gzip
- jar包打补丁 jar -uf_windows下批处理指定不同jdk版本运行jar包
- 电脑高手常用的5个按钮
- 原生js实现ajax
- consul服务发现与注册于配置 (mac版为例)
- 人人都能玩航拍 手把手教你装4轴
- 软著申请详细图文步骤(附模板)
- 发票专用驱动sjz_【智能财税大讲堂】专用发票电子化的财税信息化变革
- [week9]签到题(长凳)——贪心算法
- win10注册表的备份与恢复;对“未将所有数据都成功写入到注册表中。某些项是由系统或其他进程打开的,或者你没有足够的权限执行此操作”问题的理解
- 河南大学计算机学院吴哲2008年,计算机与信息工程学院86级校友荣归母校
- win快捷键_win10系统超实用快捷键,提高你的效率!
- 微信小程序webview识别二维码长按点击识别二维码
- matlab死亡时间推测实验,尸检——关于死亡时间推测的基本手法及操作方式
- 工商管理如何利用计算机思维,论述工商管理人才素质的重要性
- ginapi服务器性能,基于gin web框架搭建RESTful API服务
- 计算机分析建筑风,武汉城住宅小区风环境计算机模拟分析-图学学报.PDF
- 基于富芮坤的FR801 BLE芯片开发
- 呕血整理JavaScript知识重点(面试复习必备)
热门文章
- 《计算机网络》读书笔记(一)--计算机网络体系结构
- Java提高学习之Object(3)
- (64位oracle使用32位的PLSQL)安装64位的oracle数据库软件,使用32位的PLSQL Developer连接方法...
- bash 的进站欢迎提示
- crawler_x-requested-with 请求头
- POJ-2976 Dropping tests 01分数规划
- Streams全库复制
- 中国移动将向广大开发者开放了SDK/API等开发工具
- HDU-6599 I Love Palindrome String(回文自动机+字符串hash)
- 在asp.net中如何自己编写highcharts图表导出到自己的服务器上来