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

具体步骤如下:

  1. 在本地计算机(Windows平台)上安装Hyper-V,并安装您所需要的虚拟机操作系统
  2. 在此操作系统上安装和配置您要发布的应用软件产品
  3. 在本地计算机上制作VHD为映像
  4. 将制作好的VHD通过PowerShell上传到Azure存储账号上,并获取VHD映像在Azure上的存储位置(url地址)
  5. 申请预发布环境,将第四步中Azure上的VHD映像部署到测试发布环境进行验证
  6. 正式发布,登录到Azure 镜像市场,并根据发布流程将已经测试完毕的VHD发布到 Azure Azure 镜像市场
第一步:准备
  1. 检查操作系统版本兼容性
    如操作系统为Linux,请确认所安装的Linux系统版本是Azure所支持的,具体请参考:Azure支持的Linux版本

  2. 本机安装Hyper-V

    确认Hyper-V在您的Windows系统中安装并可以使用。
    关于Hyper-V在各版本Windows上的安装和配置,请参考: 安装Hyper-V并创建虚拟机

  3. 本机安装了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虚拟机制作过程

  1. 安装CentOS 6.5 Linux虚拟机和应用软件

    您需要通过Hyper-V安装Linux虚拟机。注意在安装过程中,一定要选择后续应用软件所需要的各个组件,比如c/c++编译器或cmake或KDE图形界面等,虚拟机安装完成后需要进行系统设置使得Linux可以连接外网。
    Linux虚拟机安装完毕后,继续安装和配置应用软件。

  2. 网络和网卡配置

    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
  3. 对于CentOS 6.3或早期版本,安装驱动Linux Integration Services (LIS),在CentOS 6.4+ 以上版本跳过此步骤
      下载如下软件包,并通过rpm进行安装:LIS download page

  4. 安装软件包python-pyasn1,后面的WALinuxAgent依赖于此

     # sudo yum install python-pyasn1
  5. 修改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
  6. 通过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
  7. 在Hyper-v中关闭Linux,Linux VHD文件已经制作好并可以上传到Azure。

第三步:将VHD上传至Azure

用PowerShell将VHD文件上传到Azure
 
假设上传的文件是myvhd.vhd,上传存储空间是mystorage,容器是mycontainer

  1. 在Azure管理平台上建立存储位置。
    假设我们的目标是将VHD文件放置到Azure上的存储空间mystorage中的容器mycontainer中,位置为myurl。
    进入Azure管理平台,建立存储空间mystorage并在其下面建立容器mycontainer,然后拷贝这个容器的url位置,注意容器的属性一定要设置为“公共blob”属性,只有“公共blob”属性中的VHD映像才能够被发布到Azure 镜像市场。

  2. 将本地的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
  3. 点击“虚拟机”-“映像”-“创建”,然后选择刚才上传的vhd创建映像。至此,您已经成功完成了映像的制作和上传。下一步,便可以发布映像到 Azure 镜像市场。

从本机构建Linux应用程序VHD映像的更多相关文章

  1. 从本机构建Windows应用程序虚拟机映像

    下图描述了总体的虚拟机映像的VHD生成,上传以及发布到 Azure 镜像市场的全过程: 具体步骤如下: 在本地计算机(Windows平台)上安装Hyper-V,并安装您所需要的虚拟机操作系统 在此操作 ...

  2. 从Azure上构建Linux应用程序映像

    下图描述了总体的虚拟机的VHD映像生成以及发布到 Azure Azure 镜像市场的全过程: 具体步骤如下: 从Azure管理平台上Linux申请虚拟机, 安装和配置您要发布的应用软件产品,制作成映像 ...

  3. 从Azure上构建Windows应用程序映像

    从Azure上构建windows应用程序映像同构建Linux应用程序映像总体流程比较类似,可以参考上图Linux映像的制作发布等流程,具体细节又有所差别. 具体步骤如下: 从Azure管理平台上申请W ...

  4. Django项目:堡垒机(Linux服务器主机管理系统)--02--02堡垒机设计后台交互程序

    #main.py #本文件写所有的连接交互动作程序 #————————————————02堡垒机设计后台交互程序 开始———————————————— from django.contrib.auth ...

  5. 使用 Eclipse PhoneGap 构建 Android 应用程序入门

    Eclipse 是一种支持多种技术的开源集成开发环境 (IDE),但本文重点介绍 Java 支持,这也是 Android 应用程序的“母语”.Android 是 Google 发布的开源移动操作系统. ...

  6. Jenkins之使用Pyinstaller构建Python应用程序

    目录 1. 极简概述 2. Jenkins配置 2.1 安装JDK 2.2 安装Jenkins 3. 安装Docker 4. 使用PyInstaller构建Python应用程序 4.1 Fork 一个 ...

  7. 从零开始构建Linux

    目的:深入了解以Linux内核为基础的系统是如何组成,运行,以构建一个最基础的,纯净的系统. LFS构建步骤宿主机准备- linux操作系统安装- 使用独立硬盘,创建分区- 配置用户和组- 下载所有需 ...

  8. 为 Linux 应用程序编写 DLL[转]

    自:http://www.ibm.com/developerworks/cn/linux/sdk/dll/index.html 在仅仅只会编写插件的时候为什么要编写整个应用程序? 插件和 DLL 通常 ...

  9. 构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock

    构建LINUX下的入侵检测系统——LIDS   系统管理命令--vlock http://blog.chinaunix.net/uid-306663-id-2440200.html LIDS官方网站: ...

随机推荐

  1. 【数组】Search a 2D Matrix

    题目: Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the f ...

  2. windows10下找回照片查看器的方法(仅作记录)

    Windows Registry Editor Version 5.00 ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Clas ...

  3. 下拉加载dropload.js

    使用下拉加载 使用需要引用的css <link rel="stylesheet" href="../dist/dropload.css"> 使用需要 ...

  4. 使用update_attribute和validation

    在使用update_attribute方法时,不走validation 走validation的方法: create create! save save! update update_attribut ...

  5. 一张图解决Struts2添加源码

    主要是选择的路径:F:/struts2/struts-2.3.31/src/core/src/main/java

  6. CPU结构与指令执行过程简介

    CPU(Central Processing Unit)是计算机中进行算术和逻辑计算处理指令的主要部件. CPU结构 CPU由通用寄存器组,运算器,控制器和数据通路等部件组成. 寄存器包括 数据寄存器 ...

  7. iOS开源项目周报0406

    由OpenDigg 出品的iOS开源项目周报第十五期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Tangra ...

  8. linux的文件基本属性

    Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定 1.在Linux中我们 ...

  9. mysql中的坑

    1,MySQL建表中double类型不能限制数据长度! 2,……

  10. 在SecureCRT中给linux上传和下载文件

    下载:sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载. 上传:rz中的r意为received(接收),告诉客户端,我(服务器)要 ...