本發(fā)明涉及云計(jì)算技術(shù)領(lǐng)域,特別是一種云平臺(tái)linux系統(tǒng)的軟件應(yīng)用包制作方法。
背景技術(shù):
隨著云計(jì)算的迅速發(fā)展,越來(lái)越多的軟件公司對(duì)外提供了自己的云平臺(tái)。最終用戶在使用云平臺(tái)時(shí),很多時(shí)候是需要可以直接將自己的應(yīng)用部署到云平臺(tái)所提供的虛擬機(jī)上。目前各家云平臺(tái)能夠?yàn)橛脩籼峁┑膽?yīng)用自動(dòng)部署功能的幾乎都是依賴于虛擬機(jī)能夠連通外網(wǎng),以便從網(wǎng)絡(luò)下載安裝應(yīng)用所需要的軟件。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明解決的技術(shù)問(wèn)題在于提出了一種云平臺(tái)linux系統(tǒng)的軟件應(yīng)用包制作方法,可以為云平臺(tái)linux虛擬機(jī)的應(yīng)用自動(dòng)部署提供基礎(chǔ)軟件應(yīng)用包,保證虛擬機(jī)在沒(méi)有聯(lián)網(wǎng)的情況下也可完成應(yīng)用的自動(dòng)部署。
本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案是,
所述的方法包括:
利用指定版本的linux系統(tǒng)鏡像創(chuàng)建虛擬機(jī)并啟動(dòng);
配置虛擬機(jī)網(wǎng)絡(luò)和YUM緩存;
虛擬機(jī)中利用YUM工具依次安裝應(yīng)用部署所需軟件;
依次將虛擬機(jī)YUM緩存中各個(gè)軟件所關(guān)聯(lián)的RPM包拷貝出來(lái)到目錄A,并按軟件進(jìn)行整理;
將應(yīng)用包拷貝到所述目錄A;
針對(duì)軟件RPM包的安裝和應(yīng)用的部署配置分別編寫腳本并拷貝到所述目錄A;
打包所述目錄A為最終軟件應(yīng)用包。
所述的linux系統(tǒng)包括了主流的linux發(fā)行版,具體包括Red Hat系列的centos各版本、fedora各版本、red hat各版本以及ubuntu各版本;
當(dāng)所述linux系統(tǒng)為ubuntu等非Red Hat系列的系統(tǒng)時(shí),所描述的YUM和所描述的RPM包則分別對(duì)應(yīng)具體linux系統(tǒng)的軟件安裝工具和軟件包;
所述的YUM工具是一個(gè)linux系統(tǒng)的工具軟件,提供yum指令,執(zhí)行yum install http則自動(dòng)從網(wǎng)上指定源下載http軟件包并在虛擬機(jī)里面安裝。
所述的應(yīng)用和應(yīng)用包可以是各個(gè)應(yīng)用軟件,也可以是軟件系統(tǒng)應(yīng)用,包括OA系統(tǒng)、web網(wǎng)站;
所述的目錄A可以是本地windows計(jì)算機(jī)上的一個(gè)普通目錄,也可以是linux系統(tǒng)上的一個(gè)文件夾。
所述的配置虛擬機(jī)網(wǎng)絡(luò)和YUM緩存包括:
配置虛擬機(jī)的網(wǎng)卡IP信息,使虛擬機(jī)可以連通外網(wǎng);
配置虛擬機(jī)利用網(wǎng)絡(luò)安裝軟件時(shí),將軟件關(guān)聯(lián)的所有RPM包進(jìn)行臨時(shí)保存。
所述的軟件進(jìn)行整理是指在普通目錄或者文件夾中每個(gè)軟件都創(chuàng)建一個(gè)子文件夾并將軟件所關(guān)聯(lián)的所有RPM包拷貝到該子文件夾。
其特征在于,所述的針對(duì)軟件RPM包的安裝和應(yīng)用的部署配置分別編寫腳本包括:
軟件RPM包的安裝腳本包括類似rpm-Uvh*.rpm命令的腳本;
應(yīng)用的部署配置腳本包括了應(yīng)用的拷貝部署和配置文件的配置,以及相關(guān)服務(wù)的啟動(dòng)。
所述的腳本可以是shell腳本也可以是python腳本。
其特征在于,所述的打包所述目錄A為最終軟件應(yīng)用包是指將目錄A里面所有的內(nèi)容打包成一個(gè)統(tǒng)一的壓縮文件。
本發(fā)明方案的有益效果如下:
1、提供一種云平臺(tái)linux系統(tǒng)的軟件應(yīng)用包制作方法,可以為云平臺(tái)linux虛擬機(jī)的應(yīng)用自動(dòng)部署提供基礎(chǔ)軟件應(yīng)用包,保證虛擬機(jī)在沒(méi)有聯(lián)網(wǎng)的情況下也可完成應(yīng)用的自動(dòng)部署。提高了云平臺(tái)的用戶體驗(yàn)度。
2、本發(fā)明方法具有通用性,適用于所有的linux系統(tǒng)中軟件的無(wú)人值守安裝軟件安裝包的制作。
利用此方法,云平臺(tái)提供商可以采取事先將各類型應(yīng)用所需的軟件提前制作成軟件包,更進(jìn)一步可以將用戶的應(yīng)用和軟件包以及安裝腳本一起打包成最終的應(yīng)用包。這樣,當(dāng)用戶的虛擬機(jī)在部署應(yīng)用的時(shí)候只需要通過(guò)類似掛載ISO的形式獲取到最終應(yīng)用包,然后通過(guò)執(zhí)行應(yīng)用包里面的安裝部署腳本即可輕松實(shí)現(xiàn)無(wú)網(wǎng)絡(luò)的應(yīng)用自動(dòng)部署。該方法適用于所有云平臺(tái)的linux系統(tǒng)的軟件應(yīng)用包制作。
附圖說(shuō)明
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說(shuō)明:
圖1為本發(fā)明的流程圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出實(shí)質(zhì)性創(chuàng)造獲得的方案,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參見(jiàn)圖1,為本發(fā)明實(shí)施例提供的一種云平臺(tái)linux系統(tǒng)的軟件應(yīng)用包制作方法,這里以制作lamp+discuz應(yīng)用包為例進(jìn)行說(shuō)明。
在宿主機(jī)上面利用/home/centos6_x32.raw鏡像模板創(chuàng)建虛擬機(jī)或者對(duì)鏡像母版創(chuàng)建一個(gè)外部快照文件并利用該快照文件創(chuàng)建虛擬機(jī),創(chuàng)建母版快照命令如下:
qemu-img create-b/home/centos6_x32.raw-f qcow2vm1_cent6.snap
利用vm1_cent6.snap作為虛擬機(jī)系統(tǒng)盤創(chuàng)建虛擬機(jī),在虛擬機(jī)里面配置網(wǎng)絡(luò),即修改虛擬機(jī)網(wǎng)卡配置文件,如/etc/sysconfig/network-scripts/ifcfg-eth0。
修改虛擬機(jī)里面YUM緩存配置文件使虛擬機(jī)保存安裝軟件下所關(guān)聯(lián)的所有RPM包,具體的配置如下:
[root@gcloud39120cent6_lamp_discuz]#vi/etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
如上主要把keepcache配置項(xiàng)的值修改成1。
安裝apache軟件:yum install http
安裝完apache軟件之后查看/var/cache/yum/x86_64/6/base/和/var/cache/yum/x86_64/7/updates/以及/var/cache/yum/x86_64/7/extras/三個(gè)目錄下面的RPM包。
創(chuàng)建目錄A,例如/tmp/lamp_discuz,創(chuàng)建命令為mkdir/tmp/lamp_discuz。繼續(xù)創(chuàng)建軟件子目錄mkdir/tmp/lamp_discuz/http/。
將yum install http安裝apache軟件所下載的關(guān)聯(lián)RPM包,即上述三個(gè)目錄下的所有包拷貝到上述http子目錄。
cp/var/cache/yum/x86_64/6/base/*.rpm/tmp/lamp_discuz/http/
cp/var/cache/yum/x86_64/6/updates/*.rpm/tmp/lamp_discuz/http/
cp/var/cache/yum/x86_64/6/extras/*.rpm/tmp/lamp_discuz/http/
拷貝之后,然后清除上述三個(gè)目錄下的所有RPM包。
類似的繼續(xù)進(jìn)行yum install mysql和yum install php安裝余下的mysql和php軟件,并在目錄A即/tmp/lamp_discuz/下分別創(chuàng)建子目錄mysql和php,并分別將所關(guān)聯(lián)的RPM包拷貝到上述子目錄。
完成應(yīng)用包所需要的軟件之后,將應(yīng)用discuz拷貝到目錄A中。
接著分別針對(duì)目錄A中的所有軟件的安裝和應(yīng)用的部署創(chuàng)建腳本文件。其中l(wèi)amp軟件的安裝腳本install.sh類似如下:
#!/bin/bash
rpm-Uvh/mnt/deloy/centos6/32bit/apache/*.rpm
chkconfig httpd on
service httpd start
rpm-Uvh/mnt/deloy/centos6/32bit/mysql/*.rpm
chkconfig mysqld on
service mysqld start
mysqladmin-u root password″root″
rpm-Uvh/mnt/deloy/centos6/32bit/php/*.rpm
service httpd restart
上述中/mnt/deploy/centos6/32bit/xxx/表示實(shí)現(xiàn)定義應(yīng)用部署存儲(chǔ)池在虛擬機(jī)里面的掛載目錄為/mnt,其他的為軟件應(yīng)用包的物理組織架構(gòu)。
discuz應(yīng)用的簡(jiǎn)單部署腳本deploy.sh如下:
#!/bin/bash
alias cp=′cp′
cp-r/mnt/deloy/centos6/32bit/discuz//var/www/html/
chmod-R 777/var/www/html/discuz/……
根據(jù)需要還可以增加更多實(shí)現(xiàn)定義的腳本文件,如數(shù)據(jù)庫(kù)配置腳本、應(yīng)用配置腳本等。
最后將目錄A打包成一個(gè)壓縮文件或者直接將整體目錄拷貝到云平臺(tái)應(yīng)用自動(dòng)部署存儲(chǔ)池指定目錄中即可。