上架软件到云市场流程

软件上架流程大致分为四个阶段:

../_images/liucheng.png

准备工作

在上架到云市场前,需要完成软件在新浪云运行环境的测试,如果您的软件不是基于新浪云开发,需要先选定应用的运行环境,目前云市场支持以下三种运行环境:

  • 云虚拟主机环境
云虚拟主机运行环境是一个包月按规格使用的产品,从 云虚拟主机产品介绍 可以查询所有的云虚拟主机产品规格及参数;此外云虚拟主机本身支持的服务类别为PHP运行环境(包含5.3、5.6、7.0版本),共享 MySQL (数据库不能单独创建,只能创建数据表)。
  • 云应用PHP云空间运行环境
云应用PHP云空间运行环境是一款本地可写的分布式PHP运行环境(包含5.3、5.6、7.0版本),支持高并发,支持调用云应用所有的PHP运行环境能使用的服务(包括 MemcachedStorage共享 MySQL )。
  • 云应用容器运行环境
容器 运行环境是新浪云的Docker运行环境,支持所有标准的Docker镜像,当前支持expose 1个端口到应用的负载均衡,负载均衡支持HTTP、HTTPS、websocket协议;此外支持设置环境变量、expose端口、共享 MySQLMongoDB共享存储服务本地存储服务

创建软件

进入云市场的系统,点击右上角“服务商入驻”即可进入供货商管理系统,如下图所示:

../_images/toadmin.png

点击“+上架新软件”即可进入软件的创建页面,输入软件的描述信息,包含“软件名称”、“分类”、是否开启“安装码”,点击“创建软件”即可。

警告

开启“安装码”后,新浪云用户不能直接从应用商店中安装,需要输入软件的安装码后才能完成安装,您可以从系统后台生成授权码。如果您不是定向发布软件,建议不要开启这个特性。

../_images/softlist.png ../_images/create_soft.png

创建版本

云市场的软件基本版本管理,新浪云的审核也时基于版本,版本审核完成后则不允许再修改版本信息,包括logo、截图、代码或者镜像、服务依赖等。从列表页面点击“详情”即可进入软件的详情页面,从“版本管理”标签即可创建一个版本。

../_images/todetail.png

点击“详细”进入软件的详情页面:

../_images/versionmanager.png

点击“+添加新版本”进入创建页面:

../_images/version_pending.png

需要输入的几个选项说明:

版本名称

版本名称是您当前软件的版本号,例如1.0.0、v-1.0.0,格式上新浪云没有限制,为字符串即可。

示例地址

必须提供,软件的演示地址,建议您在新浪云创建一个专属的应用用于演示。

初始化地址

初始化地址是一个相对路径,用于软件安装完成后初始化的页面地址,例如/install.php,完成管理员页面设置、数据写入等操作,如果无需安装,写/即可。

文档地址

文档地址为软件的文档地址,如果您上架的软件较复杂,建议提供在线的文档地址。

运行环境

运行环境是软件的运行环境选项,当前支持“云应用云空间PHP运行环境”,“云虚拟主机PHP环境”,“云应用容器环境”三种,三者的介绍请参考“准备工作”中的介绍。

PHP版本

当运行环境为PHP时,需要选择,请选择软件运行需要的PHP环境,支持5.3、5.6、7.0版本。

容器配置

当运行环境为容器时,需要选择,请选择软件运行需要的最低配置,用户在实际安装时只能选择该配置及以上的配置。

实例个数

当运行环境为容器时,需要选择,软件在安装后启动的容器的数量,最低为1,最高为32个。

expose端口

当运行环境为容器时,需要选择,默认为5050,应用在运行时负载均衡的端口会映射到您指定的expose的端口,如果您的软件中http的进程监听在0.0.0.0的80端口,这里expose的端口需要修改为80。

软件介绍

软件的介绍信息,支持markdown语法,软件的介绍信息会展示在云市场的软件介绍标签中,不允许为空。

../_images/intro.png

补全版本信息

创建完版本后,需要从版本的列表页面点击“补全信息”进入软件的相关信息页面,包含“软件logo信息”、“软件截图信息”,“代码信息”,“镜像信息”,“服务依赖”。

软件logo信息

需要上传软件的logo图片,图片大小固定为220 * 120px,支持JPG、PNG格式,logo图片用于软件列表页面的展示。

软件截图信息

请至少上传两张以上软件截图信息,要求图片宽度大于800px,高度大于600px;建议图片使用比例4:3以获得最好的展示效果,图片支持PNG、JPG格式,最多支持6张软件截图。

镜像信息

运行环境为“云应用容器环境”时需要上传,可以通过三种方式上传镜像:

  • 从镜像地址导入,填写公网可以访问的外部的docker registery地址
  • “我的镜像”,您可以从云应用的“容器管理”页面 打包镜像 ,从此处选择打包的镜像即可。
  • 上传镜像文件,您可以将本地的docker镜像导出,上传tar文件即可,如何导出请参考如下步骤:

先执行docker images可以获得镜像列表:

[root@bx174.docker ~]# docker images
    REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
    registry.xxx/xxxxxxx    ecac998             3142b7fe2595        6 minutes ago       317.4 MB

找到 IMAGE ID 导出镜像即可,执行如下命令:

[root@bx174.docker ~]# docker save 3142b7fe2595 -o /tmp/sinacloud.tar

上传导出的sinacloud.tar即可。

警告

如果容器需要提供HTTP、HTTPS、websocket服务,HTTP的进程监听的端口和“软件设置”中expose的端口需要一致,例如软件中的http进程监听的端口在0.0.0.0的80,则需要设置软件的expose端口为80,否则软件安装后访问将出现502错误,如果不设置expose端口,系统默认expose的端口为5050,软件中的HTTP进程也需要监听在0.0.0.0:5050。

代码信息

运行环境为“PHP”时(包含云虚拟主机环境和云应用云空间运行环境)需要上传代码包,代码包只能为zip格式,安装时解压后的文件路径和压缩包中的路径一致。PHP运行环境支持通过“Zend Guard Loader”加密的代码,如果您的代码需要保护,请使用Zend Guard Loader加密。

警告

如果需要上传加密的代码,PHP的版本需要选择5.6。

服务依赖 - 共享型数据库

云虚拟主机运行环境默认会创建共享型MySQL服务,不需要单独设置。如果开启了服务依赖,软件在安装时安装引擎会自动创建共享型MySQL,在不同的运行环境中可以通过不同的方式获得数据库的连接信息。

  • 云虚拟主机运行环境需要用户自行从“云虚拟主机管理面板”中查询共享型数据库的连接信息,登录 sch.sinacloud.com 后选择主机进入详情页面,左侧导航选择“数据库管理”即可查询,如图所示:
../_images/sch_mysql.png
  • 云应用云空间PHP运行环境中可以通过以下常量获取连接信息:
常量 说明
SAE_MYSQL_HOST_M 数据库主机
SAE_MYSQL_PORT 数据库端口
SAE_MYSQL_USER 数据库用户名
SAE_MYSQL_PASS 数据库密码
SAE_MYSQL_DB 数据库名称
  • 云应用容器运行环境中可以通过以下环境变量获取连接信息:
环境变量 说明
MYSQL_HOST 数据库主机
MYSQL_PORT 数据库端口
MYSQL_USER 数据库用户名
MYSQL_PASS 数据库密码
MYSQL_DB 数据库名称

服务依赖 - Memcached服务

云虚拟主机运行环境不支持开启Memcached服务依赖。 如果开启了服务依赖,软件在安装时安装引擎会自动创建Memcached服务,在不同的运行环境中可以通过不同的方式获得Memcached的连接信息。

  • 云应用云空间PHP运行环境中可以通过以下代码连接:
<?php
$mmc = new Memcached();

if ($mmc == false) {
    echo "mc init failed\n";
} else {
    $mmc->set("key", "value");
    echo $mmc->get("key");
}

?>
  • 云应用容器运行环境中可以通过以下环境变量获取连接信息:
环境变量 说明
MEMCACHE_SERVERS Memcache服务的服务器列表
ACCESSKEY 应用的AccessKey(当前应用的Memcache认证的用户名)
SECRETKEY 应用的SecretKey(当前应用的Memcache认证的密码)

如何使用请参考:如何使用Memcached服务

服务依赖 - storage服务

云虚拟主机运行环境不支持开启Memcached服务依赖。如果软件中有大量的文件需要存储,建议开启storage依赖,开启后安装引擎会自动创建设置的bucket及属性(可以指定bucket为私有或者公有),从“服务依赖”标签,选择“Storage”即可配置storage服务依赖,如图所示:

../_images/add_storage.png
  • 从云应用云空间PHP运行环境中的使用说明请参考:Storage
  • 从云应用容器运行环境中的使用说明请参考:Storage

服务依赖 - MongoDB服务

云虚拟主机运行环境不支持开启MongoDB服务依赖。从“服务依赖”标签,选择“MongoDB”即可配置MongoDB服务依赖,如图所示:

../_images/add_mongodb.png

请注意,如果是云容器运行环境,您可以设置将MongoDB的连接信息写入到环境变量,如果设置了写入环境变量,安装引擎在软件安装时会先初始化MongoDB服务,然后将MongoDB的URI写到您指定的环境变量中,如图所示:

../_images/mongodb_uri.png

在以上示例中,软件的依赖中指定需要开启MongoDB服务,并将MongoDB的URI写到值为 MONGO_URL 的环境变量中。如何从容器中使用MongoDB服务请参考 MongoDB

此外,如果您需要从云应用云空间PHP环境中使用MongoDB服务,需要用户自行从MongoDB服务的管理面板获取连接的URI,如何使用请参考 MongoDB

服务依赖 - 本地存储

只有云应用容器环境可以设置本地存储服务,开启本地存储服务时,需要指定开启的容量和挂载的路径,软件在安装时,安装引擎将自动创建本地存储,并挂载到软件指定的路径,请注意,挂载的路径不能设置为系统的路径,否则会导致容器无法启动;另外单个容器最多只能挂载一份本地磁盘。

警告

容器中的文件非持久化存储,如果软件需要在本地磁盘存储持久化的文件,需要挂载本地存储或者共享存储,建议在容器启动时将必要的文件拷贝到挂载的存储中。

例如镜像 docker-laravel,需要挂载一个本地存储到 /var/www/html 路径下,则docker-entrypoint.sh可以用如下的方式实现,请参考代码:

#!/bin/sh
# if the file not exist, execute copy
if [ ! -f "/var/www/html/package.json" ]; then
    cp -rT /laravel /var/www/html
    php /var/www/html/artisan key:generate
    chmod 777 -R /var/www/html/*
fi

exec "$@"

项目的源码从 PHP-Laravel镜像 可以查看。

服务依赖 - 共享存储

只有云应用容器环境可以设置共享存储服务,开启共享存储服务时,需要指定开启的容量和挂载的路径,软件在安装时,安装引擎将自动创建共享存储,并挂载到软件指定的路径,请注意,挂载的路径不能设置为系统的路径,否则会导致容器无法启动。

警告

容器中的文件非持久化存储,如果软件需要在本地磁盘存储持久化的文件,需要挂载本地存储或者共享存储,建议在容器启动时将必要的文件拷贝到挂载的存储中。

例如镜像 docker-laravel,可以挂载一个共享存储到 /var/www/html 路径下,则docker-entrypoint.sh可以用如下的方式实现,请参考代码:

#!/bin/sh
# if the file not exist, execute copy
if [ ! -f "/var/www/html/package.json" ]; then
    cp -rT /laravel /var/www/html
    php /var/www/html/artisan key:generate
    chmod 777 -R /var/www/html/*
fi

exec "$@"

项目的源码从 PHP-Laravel镜像 可以查看。

共享存储和本地存储的区别

共享存储是挂载的网络磁盘,本地存储是挂载的本地磁盘,从读写速度上,本地存储大于共享存储,如果您的软件对本地读写的速度要求高,建议挂载本地磁盘;从可用性上,共享存储略高于本地存储,详细说明请参考 共享存储、本地存储对比

服务依赖 - 环境变量

只有云应用容器环境可以设置环境变量。如果您的软件需要设置一些环境变量才能启动,需要从服务的依赖处指定需要的环境变量,从“服务依赖” - “环境变量” 标签进入可以配置环境变量,如图所示:

../_images/add_env.png

系统默认保留了一些环境变量的key不允许设置,以下是不能设置的环境变量名称列表:

环境变量 说明
MYSQL_HOST 共享型数据库主机
MYSQL_HOST_S 共享型数据库从库主机
MYSQL_PORT 共享型数据库端口
MYSQL_USER 共享型数据库用户名
MYSQL_PASS 共享型数据库密码
MYSQL_DB 共享型数据库名称
PORT expose的端口
ACCESSKEY 应用的AccessKey
SECRETKEY 应用的SecretKey
MEMCACHE_SERVERS memcached服务连接地址
KVDB_SERVERS kvdb服务连接地址
APPNAME 应用的二级域名前缀
SINACLOUD_CONTAINER_MEMORY 当前容器的内存,单位Byte
SINACLOUD_CONTAINER_CPU 当前容器的CPU个数

另外为了使用的便利性,安装引擎开放了一些预处理标签,如果名称中包含了以下标签,在实际设置时,内容会被替换,当前支持的标签如下:

标签 说明
{%accesskey%} 安装应用的AccessKey
{%appname%} 安装应用的二级域名前缀
{%secretkey%} 安装应用的SecretKey

注解

例如环境变量的值为xxxx_{%appname%},安装是填写的应用名为test,在安装完成后环境变量的值为xxxx_test。

软件测试

云市场为未通过审核的版本和非线上的版本也提供了在线安装的功能,您可以从版本列表页面点击“预览”进入软件的预览页面,如图所示:

../_images/preview.png

在线安装测试

进入“预览”页面后,即可在线查看软件的信息展示,输入软件必选的选项后,点击“确认”即可创建应用。

../_images/online_install.png

警告

预览页面除该软件的供货商外,其他用户均不可见,您不能将软件的URL分享给他人使用。

安装完成后请务必详细确认软件需要开启的服务、其他的服务依赖、安装脚本等能否正常工作,请确认无误后再提交新浪云审核。

软件测试费用

软件测试过程中,应用会被真实安装创建,需要您先自行支付,为了给软件供货商测试带来便利,软件供货商在测试完成后可以提交工单联系新浪云,新浪云会补偿云豆消耗。

警告

补偿的项目为软件测试过程中创建应用和应用关联服务的云豆消耗,您的其他正常应用不在补偿的范围内,新浪云对补偿的标准有解释权。

提交版本审核

提交版本审核

在完成“信息补全”和软件基本信息设置后即可提交软件版本的审核,从版本列表页面点击“提交审核”,如下图所示:

../_images/submit_verify.png

提交审核后我们会尽快审核,审核完成后会通过站内信通知,从软件版本列表页面也可以查询审核的状态,如下图所示:

../_images/verify_status.png

撤回版本审核

另外您也可以随时撤回“审核申请”,继续修改信息。如果版本在审核中或者已经审核通过,则不允许撤销审核,另外已审核通过的版本不允许再次编辑信息和删除,如果需要修改信息,请发布新版本提交审核。

上线软件、更新版本

版本审核完成后,供货商可以通过两个方式将软件上架到云市场。

  • 从版本列表页面

从版本列表页面,选择审核通过的版本,将版本设置为线上版本即可,如图所示:

../_images/shangjia1.png
  • 从软件列表页面

从软件列表页面,从“操作”中点击“发布版本”,选择需要发布的版本,点击确认即可。

../_images/shangjia2.png

下架软件

软件上架后如果您发现有安全或者其他问题,您可以随时临时下架软件,从软件列表页面点击“下架软件”即可,下架后软件会从云市场中临时下架。

../_images/xiajia.png

如果您对以上文档有任何的疑问,请提交工单联系我们处理。