appengine_Google Appengine登台服务器操作方法

appengine

Google的App Engine开箱即用,支持版本化部署。 您可以非常轻松地在各修订版之间来回切换,这是在上线之前正确测试应用程序的一项很棒的功能。 有一个主要问题:应用程序的所有版本共享同一数据存储。 因此,如果要迁移数据,则存在严重的影响现有生产应用程序的风险。 因此,需要一个合适的暂存环境。

这不是什么秘密,我是Google App Engine的粉丝。 一旦您习惯了它的特性,它就具有许多主要的优点 。 自从我开始将一些持续集成/精益启动想法纳入我自己的项目中以来。 我已经遇到了共享数据存储问题,并且对适当隔离的登台环境的需求已变得显而易见。

这是我的方法。

设置登台应用程序

可以使用名称空间创建隔离的数据存储,但是我不想创建其他代码进行测试。 因此,我采取了另一种方法,我认为这更容易,而且不易出错:

  1. 在appengine控制面板中,创建第二个应用程序。 您有10个免费的,所以这不是问题。 我在测试中的应用程序的名称后添加了“ -staging”后缀,因此我不会将另一个误认为是另一个。
  2. 如果要从现有数据存储的副本开始,则可以使用Python开发工具包导出整个数据存储 。 即使您使用的是Java开发工具包,也值得进行设置。 它允许您对数据存储进行备份,这在真正弄乱某些内容时可能会派上用场。
  3. 接下来,使用相同的工具将数据库导入到暂存应用程序中。
  4. 最后,将您的应用程序部署到登台应用程序。 如果您使用的是Eclipse,只需更改应用程序ID,否则,您可以在appengine-web.xml中找到该属性。

关于在测试中使用生产数据的小提示:请非常小心。 您可能希望匿名化某些数据,并删除所有可能被远程机密的内容。

应该是这样。 确实没什么可做的,但是您现在应该拥有生产应用程序的功能齐全的副本。 进行一些冲浪,以确保一切正常。

当您感到高兴时,让它自动化。

自动化部署

我本来打算淘汰Maven的 ,但是现在我已经创建了一个非常满意的设置。 因此,Maven会留在这里。 Maven Eclipse插件和Maven的GAE插件也是如此 。

多亏了maven-gae-plugin,我才能够使登台和生产部署自动化。 这给了我非常可复制的构建和部署设置。

为了无缝地为登台服务器和生产服务器创建构建,我使用了Maven配置文件及其在复制资源时过滤资源的功能 。

在appengine-web.xml中,我添加了gae.application变量:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"><application>${gae.application}</application>
...

接下来,我启用了对appengine-web.xml的过滤(接下来的所有内容都放入pom.xml中):

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><configuration><webResources><resource><directory>src/main/webapp</directory><filtering>true</filtering><includes><include>**/appengine-web.xml</include></includes></resource></webResources></configuration>
</plugin>

在属性部分中,我添加了默认应用程序,即临时应用程序。 这给了我保证,除非我真的想投入生产,否则我将始终将其部署到登台环境中:

<properties><gae.application>myapp-staging</gae.application>
</properties>

对于生产部署,我创建了一个配置文件:

<profiles><profile><id>production</id><properties><gae.application>myapp</gae.application></properties></profile>
</profiles>

使用此配置,我可以轻松地运行本地开发服务器:

> mvn gae:run

部署到登台服务器:

> mvn gae:deploy

当我感到高兴时,将其部署到生产服务器:

> mvn gae:deploy -Pproduction

除了应用程序的名称,您还可以配置其他属性,这些属性在测试设置和生产设置之间有所不同。 例如,我在本地和登台服务器上使用PayPal开发服务器,但在生产中使用的是真正的PayPal站点。

结论

通过非常简单的Maven配置,可以创建一个非常可重复的构建和部署环境。 添加一个持续集成服务器,您就可以实现完美的精益设置。

参考:我们的JCG合作伙伴 提供的Google Appengine Staging Server Howto   Peter Backx在Streamhead博客上。


翻译自: https://www.javacodegeeks.com/2012/02/google-appengine-staging-server-howto.html

appengine

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python全栈开发之3、数据类型set补充、深浅拷贝与函数

转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5466082.html 一、基本数据类型补充 set是一个无序而且不重复的集合&#xff0c;有些类似于数学中的集合&#xff0c;也可以求交集&#xff0c;求并集等&#xff0c;下面从代码里来看一下set的用法,如果对这些用法不太熟悉的话…

拿着5家offer的Java,对面试官做了什么?

大家好&#xff0c;我是孙叫兽。本期分享内容从Java初级开始说起&#xff0c;来讲一下要想拿到offer&#xff0c;你必须要做哪些充足准备&#xff01; 先从初级Java开始&#xff0c;当你还是一个初级Java的时候&#xff0c;要想拿到offer&#xff0c;首先要关注自己的简历&…

Spring综合课程总结

本文是我们名为“ Spring Integration for EAI ”的学院课程的一部分。 在本课程中&#xff0c;向您介绍了企业应用程序集成模式以及Spring Integration如何解决它们。 接下来&#xff0c;您将深入研究Spring Integration的基础知识&#xff0c;例如通道&#xff0c;转换器和适…

进程与线程的一个简单解释

进程&#xff08;process&#xff09;和线程&#xff08;thread&#xff09;是操作系统的基本概念&#xff0c;但是它们比较抽象&#xff0c;不容易掌握。 最近&#xff0c;我读到一篇材料&#xff0c;发现有一个很好的类比&#xff0c;可以把它们解释地清晰易懂。 1. 计算机的…

1003 阶乘后面0的数量

1003 阶乘后面0的数量 基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KBn的阶乘后面有多少个0&#xff1f; 6的阶乘 1*2*3*4*5*6 720&#xff0c;720后面有1个0。Input一个数N(1 < N < 10^9) Output输出0的数量 Input示例5 Output示例1 //统计2和5个数就好…

《HarmonyOS实战——前端开发华为鸿蒙系统应用 OpenHarmony JS》

《HarmonyOS实战——前端开发华为鸿蒙系统应用 OpenHarmony JS》

(转)数组循环右移

设计一个算法&#xff0c;把一个含有N个元素的数组循环右移K位&#xff0c;要求时间复杂度为O&#xff08;N&#xff09;&#xff0c;且只允许使用两个附加变量。 不合题意的解法如下&#xff1a; 我们先试验简单的办法&#xff0c;可以每次将数组中的元素右移一位&#xff0c;…

Redis命令–使用Redis命令行

本文是我们学院课程的一部分&#xff0c;标题为Redis NoSQL键值存储 。 这是Redis的速成班。 您将学习如何安装Redis并启动服务器。 此外&#xff0c;您将在Redis命令行中乱七八糟。 接下来是更高级的主题&#xff0c;例如复制&#xff0c;分片和集群&#xff0c;同时还介绍了…

前端面试官常问javaScript编程题,隔壁王大爷看了都会了

目录 1.数组排序。 2.数组元素的去重&#xff1b; 3.用递归的方法求数组的求和&#xff1b; 4.防抖节流的思路。 5.深拷贝、浅拷贝&#xff1b; 6.做一个10秒的倒计时&#xff1b; 7.setTimeout()和setInterval()的使用以及区别 导读&#xff1a;一些常见的前端面试官会让…

(五)Struts2 标签

所有的学习我们必须先搭建好Struts2的环境&#xff08;1、导入对应的jar包&#xff0c;2、web.xml&#xff0c;3、struts.xml&#xff09; 第一节&#xff1a;Struts2 标签简介 Struts2 自己封装了一套标签&#xff0c;比JSTL 强大&#xff0c;而且与Struts2 中的其他功能无缝结…

HarmonyOS常见问题解答

学习资源主要分享 一、解答学习者的担心:手机/生态设备数量 、应用数量

thinkphp3.2自定义success及error跳转页面

thinkphp3.2自定义success及error跳转页面 默认的thinkphp success及error的默认模板不是很好看&#xff0c;下面分享如何自定义success及error页面&#xff0c;这里用的是thinkphp 3.2.2版本 默认的thinkphp success及error的默认模板不是很好看&#xff0c;下面分享大家如何自…

推荐几十本投资书籍、互联网书籍及热门查看流量的工具

工欲善其事必先利其器,今天孙叫兽给大家分享一下互联网运营的书籍、投资的书籍及一些查看抖音、微信公众号等后台数据的工具,个人感觉还是很实用的,内容有点多,不知道的可以根据图中的文字进行搜索。 互联网运行推荐阅书籍 投资理财的书籍 这里仅仅提供书籍的名称,根据书名…

Java Swing模型视图适配器介体

通常&#xff0c;我基于Spring Framework构建Java应用程序。 但是&#xff0c;最近有人要求我使用与语言无关的MVC框架PureMVC为客户端实现Java桌面应用程序&#xff0c;因此以下是我在Java Swing中为PureMVC进行员工管理展示的演示实现。 如果您想继续&#xff0c;可以在GitHu…

jquery.cookie.js操作cookie实现“记住密码”

//初始化页面时验证是否记住了密码 $(document).ready(function() {if ($.cookie("rmbUser") "true") {$("#rmbUser").attr("checked", true);$("#user").val($.cookie("userName"));$("#pass").val($…

程序员跳槽指南

找工作是件非常重要的事情,它直接影响你1~2年,间接影响你3~5年的人生。⼀个潜在的机会会让你少奋斗很多年,而一次冲动的离职,会让你和千万财富错失交臂。 忘掉那些随地乱扔的小广告,还有从几十个样本做出来的所谓调查报告,换工作不是⼀场说走就走的旅行,而是⼀个深思熟虑…

NSDictionary NSArray 转中文输出

// // NSDictionaryDescribetionDictionary.m // fengzi // // Created by 谢泽锋 on 16/5/10. // Copyright © 2016年 xiezefeng. All rights reserved. //#import <Foundation/Foundation.h> //数据字典数字打印中文显示implementation NSDictionary (Describ…

vue学习经验分享,在这个大前端时代,你再不会vue就out啦

主要为大家大致的介绍Vue的介绍、环境搭建要求、如何开发等经验分享 目录 vue介绍 Vue的MVVM模式介绍 Vue之HelloWorld Vue的生命周期 从Vue到页面

netbeans 源文件_具有NetBeans,WebLogic 12c,JPA和MySQL数据源的Arquillian

netbeans 源文件您可能已关注我的文章&#xff0c;该文章介绍了如何使用嵌入式GlassFish测试更复杂的场景&#xff08; 第I部分/第II部分 &#xff09;。 在我要做的事情上&#xff0c;下一步是使此设置与最新的WebLogic 12c一起使用。 入门 按照我的前两个帖子的入门部分中的…

程序员外包避坑指南?

为什么我不建议你去外包? 外包的分类 外包公司一般有两类,一类是驻场外包,一类是非驻场外包。二者的区别为是否需要被外派到甲方公司上班。如果需要,那么就属于驻场外包,否则就是非驻场外包。 虽然都是外包,但是两者的区别还是挺大的。 先说说驻场外包。由于需要被外派到…