仿OpenStack开发云计算管理软件”--熟悉开发环境
他山之石,可以成云
——咆哮金剛豬的云烹飪之路
第一周(7月13日~7月19日):熟悉開發(fā)環(huán)境
實驗內(nèi)容:
- 云平臺功能模塊分析
- 云平臺架構(gòu)設計
- Flask開發(fā)環(huán)境搭建
Flask可運行的代碼框架
實驗目標:提交LouCloud v0.1:簡單的Flask Web應用
相關(guān)知識點
按照ok,not good,no三種級別把自己目前的知識情況做了說明,課下主要查漏補缺。操作系統(tǒng):Linux 基本操作(ok)
- 編程語言:Python 語言開發(fā)(ok)
- 開發(fā)框架:Flask Web 框架,MVC 開發(fā)模式(not good)
- 虛擬化技術(shù): KVM/QEMU,Libvirt API 接口開發(fā)(no)
- 云計算技術(shù):基礎設施即服務(IaaS)基本概念(no)
- 數(shù)據(jù)庫:MySQL 數(shù)據(jù)庫設計及 SQLAlchemy 接口開發(fā)(no)
- 開發(fā)流程:Git 基本操作及代碼庫使用(ok)
- 安裝部署:Virtualenv,Apache,WSGI等(no)
- 前端開發(fā):Bootstrap 3.0,HTML,Javascript(not good)
技術(shù)架構(gòu)
項目選用Python語言,Web 開發(fā)框架選用 Flask。虛擬機操作使用 Libvirt API,數(shù)據(jù)庫采用 MySQL,代碼管理使用 Git,采用 【W(wǎng)SGI 方式部署到 Apache 】上,前端基于 Bootstrap 開發(fā)。
知識擴展
WSGI 方式部署到 Apache:這個參考使用Apache服務器wsgi方式部署Django應用進行學習。
**實驗步驟**
1 安裝virtualenv
sudo apt-get update sudo apt-get install python-virtualenv2 安裝虛擬化組件
Libvirt API 是一套用于多種虛擬化平臺統(tǒng)一管理的接口,詳細文檔:http://libvirt.org,我們基于 Libvirt 開發(fā)虛擬機的管理模塊,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 服務狀態(tài) sudo service libvirt-bin status # 查看當前虛擬機列表,具體可使用virsh --help 幫助命令 sudo virsh list#感想:
- 拼寫一定要注意啊!!!比如libvirt
3 MYSQL
由于實驗環(huán)境中已經(jīng)安裝了 MySQL 服務器,所以這一步操作可以省略。
sudo apt-get install mysql-server實驗樓環(huán)境中的 MySQL 管理員賬戶為 root,密碼為空.
4 Flask 代碼框架
LouCloud v0.1的代碼結(jié)構(gòu)
|-- 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 用來存放界面實現(xiàn)所需的靜態(tài)文件以及 jinja2 模板; loucloud/app.py loucloud/init.py 及l(fā)oucloud/config.py 用于初始化和部署Flask 應用; loucloud/extension.py 用來初始化和配置 Flask 的擴展,例如 Flask-Login 等;創(chuàng)建目錄與代碼提交
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 master5 Flask 及相關(guān)擴展
Flask:Flask 框架基礎包 Flask-SQLAlchemy:在 Flask 中使用的 SQLALchemy ORM,用于數(shù)據(jù)庫操作; Flask-WTF:頁面表單擴展; Flask-Cache:緩存擴展; Flask-Login:用戶登陸認證及會話管理組件; Flask-Script:Flask 的腳本支持,例如 manage.py 這類啟動和管理腳本;原來requirement.txt文件這么玩
曾經(jīng)年少的我,還以為只是個說明,挨個的google百度下載呢。。。
該文件中包含開發(fā)環(huán)境所需要的各種 Python 模塊。
touch requirement.txt vim requirement.txt輸入以下內(nèi)容,每個包占一行
flask flask-sqlalchemy flask-wtf flask-cache flask-login flask-script虛擬環(huán)境初始化與進入
cd /home/shiyanlou/Code/shiyanlou_cs354 # 初始化虛擬環(huán)境venv virtualenv venv # 進入virtualenv venv source venv/bin/activate退出虛擬環(huán)境只需要輸入deactivate命令即可。
deactivate
安裝 Python 模塊
進入到 Virtualenv 虛擬環(huán)境后執(zhí)行下面的命令即可安裝 requirement.txt 文件中的 Python 模塊到 Virtualenv 虛擬環(huán)境的路徑中。
pip install -r requirement.txt6 其他 Python 模塊
下述 Python 模塊分別具備不同的功能,安裝在我們的代碼環(huán)境中最大的作用是避免我們把時間浪費在重復制作輪子上。
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 模塊是否都已經(jīng)起作用: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 安裝這個包再執(zhí)行后續(xù)操作。 sudo apt-get install libmysqlclient-dev python-dev注意:由于實驗樓環(huán)境不會保存,每次開始實驗后先執(zhí)行一次下述虛擬環(huán)境初始化操作:
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 deactivateflask最小的可運行代碼
偷懶了,用的IDE直接粘貼的代碼,慢慢研究了,代碼都在./loucloud
cd /home/shiyanlou/Code/shiyanlou_cs354 source venv/bin/activate python manage.py run添加tag然后push
使用git tag給版本做個標記v0.1,表明我們的第一個最簡版本已經(jīng)完成。
cd /home/shiyanlou/Code/shiyanlou_cs354 git tag git tag -a v0.1 -m "LouCloud v0.1" git push origin –-tags本文為實驗樓訓練營課程仿OpenStack開發(fā)云計算管理軟件,學員咆哮金剛豬第一周學習所撰寫的優(yōu)質(zhì)實驗報告。
訓練營仿OpenStack開發(fā)云計算管理軟件第二期,將于11月9日正式開啟。歡迎有興趣的同學加入:https://www.shiyanlou.com/courses/354
總結(jié)
以上是生活随笔為你收集整理的仿OpenStack开发云计算管理软件”--熟悉开发环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何利用《C++ Primer》学习C+
- 下一篇: Spark 简介与安装部署