从本机构建Linux应用程序VHD映像
下图描述了总体的虚拟机映像的VHD生成,上传以及发布到 Azure 镜像市场的全过程:

具体步骤如下:
- 在本地计算机(Windows平台)上安装Hyper-V,并安装您所需要的虚拟机操作系统
- 在此操作系统上安装和配置您要发布的应用软件产品
- 在本地计算机上制作VHD为映像
- 将制作好的VHD通过PowerShell上传到Azure存储账号上,并获取VHD映像在Azure上的存储位置(url地址)
- 申请预发布环境,将第四步中Azure上的VHD映像部署到测试发布环境进行验证
- 正式发布,登录到Azure 镜像市场,并根据发布流程将已经测试完毕的VHD发布到 Azure Azure 镜像市场
第一步:准备
检查操作系统版本兼容性
如操作系统为Linux,请确认所安装的Linux系统版本是Azure所支持的,具体请参考:Azure支持的Linux版本本机安装Hyper-V
确认Hyper-V在您的Windows系统中安装并可以使用。
关于Hyper-V在各版本Windows上的安装和配置,请参考: 安装Hyper-V并创建虚拟机本机安装了PowerShell命令行工具
获取Azure的配置文件(过程中需要输入azure的账号密码),并保存到磁盘。
Get-AzurePublishSettingsFile –Environment azurechinacloud
导入账户认证信息,路径用引号(为上一步骤中的配置文件路径)。
Import-AzurePublishSettingsFile <PathToFile>
第一步完成后,即可开始制作映像,制作VHD主要包括两种方式,第一种是通过本地Hyper-V虚拟机建立VHD,第二种是直接在Azure制作VHD。以下以本地建立VHD为例进行介绍:
第二步:从本机制作Linux应用程序VHD映像
本节我们以CentOS6.x为例进行介绍,其他Linux操作系统的VHD制作可参考官方文档:制作和上载Linux虚拟机vhd。
Hyper-V支持的操作系统英文文档:Hyper-V支持的CentOS和RedHat版本)
CentOS6.x 的vhd磁盘制作英文官方文档:基于CentOS的vhd虚拟机制作过程。
安装CentOS 6.5 Linux虚拟机和应用软件
您需要通过Hyper-V安装Linux虚拟机。注意在安装过程中,一定要选择后续应用软件所需要的各个组件,比如c/c++编译器或cmake或KDE图形界面等,虚拟机安装完成后需要进行系统设置使得Linux可以连接外网。
Linux虚拟机安装完毕后,继续安装和配置应用软件。网络和网卡配置
a)卸载NetworkManager(这个软件包一般Linux没有装)
# sudo rpm -e --nodeps NetworkManager
b)编辑文件/etc/sysconfig/network如下:
NETWORKING=yes
OSTNAME=localhost.localdomain
c)编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
TYPE=Ethernet
USERCTL=no
PEERDNS=yes
IPV6INIT=no
d)修改udev防止以太网接口生成固定规则,在Azure平台上克隆虚拟机的时候,这些规则可能导致问题。
# sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
# sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
e)确保系统在启动的时候网络服务正常:
# sudo chkconfig network on
对于CentOS 6.3或早期版本,安装驱动Linux Integration Services (LIS),在CentOS 6.4+ 以上版本跳过此步骤
下载如下软件包,并通过rpm进行安装:LIS download page安装软件包python-pyasn1,后面的WALinuxAgent依赖于此
# sudo yum install python-pyasn1
修改yum相关配置,为安装WaLinuxAgent做准备
a)编辑yum配置文件/etc/yum.repos.d/CentOS-Base.repo
[openlogic]
name=CentOS-$releasever - openlogic packages for $basearch
baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
enabled=1
gpgcheck=0
[base]
name=CentOS-$releasever - Base
baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
b)配置/etc/yum.conf
http_caching=packages
另外,CentOS 6.3需要增加如下行:
exclude=kernel*
c)编辑/etc/yum/pluginconf.d/fastestmirror.conf, 使得yum模块"fastestmirror"无效
在[main]一节, 设置
set enabled=0
d)清空现有的yum源数据
# yum clean all
e)对于CentOS 6.3, 更新内核:
# sudo yum --disableexcludes=all install kernel
f)在grub配置中为Azure修改内核启动参数,打开"/boot/grub/menu.lst",增加:
console=ttyS0 earlyprintk=ttyS0 rootdelay=300 numa=off
建议去掉以下参数:
rhgb quiet crashkernel=auto
通过yum安装WaLinuxAgent
a)安装Azure Linux Agent
# sudo yum install WALinuxAgent
b)打开配置文件/etc/waagent.conf如下修改:
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.EnableSwap=y
ResourceDisk.SwapSizeMB=2048` ## NOTE:此项根据你的需要设置
c)运行如下命令,你将不能再启动此虚拟机,直到它部署在Azure上运行。
# sudo waagent -force -deprovision
# export HISTSIZE=0
# logout
在Hyper-v中关闭Linux,Linux VHD文件已经制作好并可以上传到Azure。
第三步:将VHD上传至Azure
用PowerShell将VHD文件上传到Azure
假设上传的文件是myvhd.vhd,上传存储空间是mystorage,容器是mycontainer
在Azure管理平台上建立存储位置。
假设我们的目标是将VHD文件放置到Azure上的存储空间mystorage中的容器mycontainer中,位置为myurl。
进入Azure管理平台,建立存储空间mystorage并在其下面建立容器mycontainer,然后拷贝这个容器的url位置,注意容器的属性一定要设置为“公共blob”属性,只有“公共blob”属性中的VHD映像才能够被发布到Azure 镜像市场。将本地的VHD文件上传至Azure的指定位置。打开PowerShell,在PowerShell中输入如下指令。
Add-AzureVhd [[-NumberOfUploaderThreads] [<Int32>]] -Destination <BlobStorageURL>/<YourImagesFolder>/<VHDName> -LocalFilePath <PathToVHDFile>
例如:
Add-AzureVhd -NumberOfUploaderThreads 5 -Destination https://mystorage.blob.core.chinacloudapi.cn/mycontainer/myvhd.vhd -LocalFilePath D:\Mydir\Hyper-V\myvhds\myvhd.vhd
点击“虚拟机”-“映像”-“创建”,然后选择刚才上传的vhd创建映像。至此,您已经成功完成了映像的制作和上传。下一步,便可以发布映像到 Azure 镜像市场。
从本机构建Linux应用程序VHD映像的更多相关文章
- 从本机构建Windows应用程序虚拟机映像
下图描述了总体的虚拟机映像的VHD生成,上传以及发布到 Azure 镜像市场的全过程: 具体步骤如下: 在本地计算机(Windows平台)上安装Hyper-V,并安装您所需要的虚拟机操作系统 在此操作 ...
- 从Azure上构建Linux应用程序映像
下图描述了总体的虚拟机的VHD映像生成以及发布到 Azure Azure 镜像市场的全过程: 具体步骤如下: 从Azure管理平台上Linux申请虚拟机, 安装和配置您要发布的应用软件产品,制作成映像 ...
- 从Azure上构建Windows应用程序映像
从Azure上构建windows应用程序映像同构建Linux应用程序映像总体流程比较类似,可以参考上图Linux映像的制作发布等流程,具体细节又有所差别. 具体步骤如下: 从Azure管理平台上申请W ...
- Django项目:堡垒机(Linux服务器主机管理系统)--02--02堡垒机设计后台交互程序
#main.py #本文件写所有的连接交互动作程序 #————————————————02堡垒机设计后台交互程序 开始———————————————— from django.contrib.auth ...
- 使用 Eclipse PhoneGap 构建 Android 应用程序入门
Eclipse 是一种支持多种技术的开源集成开发环境 (IDE),但本文重点介绍 Java 支持,这也是 Android 应用程序的“母语”.Android 是 Google 发布的开源移动操作系统. ...
- Jenkins之使用Pyinstaller构建Python应用程序
目录 1. 极简概述 2. Jenkins配置 2.1 安装JDK 2.2 安装Jenkins 3. 安装Docker 4. 使用PyInstaller构建Python应用程序 4.1 Fork 一个 ...
- 从零开始构建Linux
目的:深入了解以Linux内核为基础的系统是如何组成,运行,以构建一个最基础的,纯净的系统. LFS构建步骤宿主机准备- linux操作系统安装- 使用独立硬盘,创建分区- 配置用户和组- 下载所有需 ...
- 为 Linux 应用程序编写 DLL[转]
自:http://www.ibm.com/developerworks/cn/linux/sdk/dll/index.html 在仅仅只会编写插件的时候为什么要编写整个应用程序? 插件和 DLL 通常 ...
- 构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock
构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock http://blog.chinaunix.net/uid-306663-id-2440200.html LIDS官方网站: ...
随机推荐
- Disconf 学习系列之Disconf 的模块架构图
不多说,直接上干货! Disconf 的模块架构主要包括: Disconf-Tools . Disconf-Web. Disconf-client 和 Disconf-Core. 每个模块的简单介 ...
- wp-postviews使用方法
1.安装 2.头部引用<?php wp_head(); ?> 3.文章调用:<?php if(function_exists('the_views')) { the_views(); ...
- ZooKeeper:架构和算法
ZooKeeper主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置管理等. 它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式 ...
- C++中对象模型
C++面向对象语言一大难点是继承,但又是不得不掌握的.简单的继承是很容易理解的,但是当涉及到多继承,设计到虚函数的继承,特别是涉及到虚继承时,问题就会变得复杂.下面的内容来自参考资料中的三篇文章.C+ ...
- 【转】marquee标签简介
本文转自:http://www.360doc.com/content/12/0818/16/8351655_230872993.shtml marquee语法 <marquee>&l ...
- 关于Sqlite的一个demo
直接上代码: class DBHelperSqlite { ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetC ...
- api.openWin
打开window 若 window 已存在,则会把该 window 显示到最前面,如果 url 和之前的 url 有变化,或者 reload 为 true 时,页面会刷新,但是该 window 里面已 ...
- nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
今天添加新项目想添加几个工具包,打开NuGet就这样了 发生错误如下: [nuget.org] 无法加载源 https://api.nuget.org/v3/index.json 的服务索引. 响应 ...
- android service服务的学习
1.Service简单概述 Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件.服务可由其他应用组件启动(如Activity),服务一旦被启动将在后台一直运行,即 ...
- ARC基本原理
基本简介 ARC是Automatic Reference Counting(自动引用计数器)的简称. ARC是ios5.0引入的新特性,完全消除手动管理内存的繁琐,编译器会自动在适合的代码里面插入适当 ...