zoukankan      html  css  js  c++  java
  • 仿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

  • 相关阅读:
    哈希表实例
    二叉排序树算法实例
    外部中断实验
    定时器计数实验
    顺序表和有序表查找实例
    查找的普通应用实例
    矩阵键盘实验
    LED数码管显示实验
    流水灯实验
    删除注释行和空行
  • 原文地址:https://www.cnblogs.com/shiyanlou/p/12856884.html
Copyright © 2011-2022 走看看