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