大部分在文档上都写了, 写这篇文章的目的是发现现在appcfg.py update xxxx的时候会打开浏览器访问google请求授权(后台内建了一个本地server, 端口是8090, 授权成功后会带授权码请求本地的8090端口, 所以我们在 ssh 环境中是没有浏览器的, 该怎么解决呢?

我玩 linux 不多, 就以我的知识量这么解决:

  1. 碰到需要访问网站的时候, 程序已经给出了提示, 要你退出, 你当然不退出, 而是把网址复制出来, 在本地打开, 授权成功后, 本地浏览器会请求127.0.0.1:8090, 当然, 什么都不会发生, 但从地址栏里把地址复制到剪贴板.
  2. 回到SSH, 把当前任务放到后台(ctrl+z)
  3. curl访问剪贴板里的地址
  4. 继续ctrl+zcurl请求放到后台
  5. jobs命令查一下, 如果后台没有别的任务的话, appcfg任务的id 应该是1, curl任务id 应该是2(现在以我的1和2为准)
  6. appcfg提到前台: fg %1
  7. 你会看到程序顺利进行下去了
  8. 继续, fg %2把 curl 任务提到前台, 你会看到提示, 什么授权成功之类的

演示:(有更好的方法欢迎指教)

root@walker:~/KindleEar# appcfg.py update app.yaml module-worker.yaml
07:52 AM Host: appengine.google.com
07:52 AM Application: kindleearwalker; version: 1
07:52 AM Starting update of app: kindleearwalker, version: 1
07:52 AM Getting current resource limits.
Your browser has been opened to visit: https://accounts.google.com/o/oauth2/auth?scope=演示数据
# step1: 请复制此网址, 并忽略要你退出换电脑的提示 If your browser is on a different machine then exit and re-run this
application with the command-line parameter --noauth_local_webserver # step2: 现在开始把任务放到后台
^Z
[1]+ Stopped appcfg.py update app.yaml module-worker.yaml
# step3: 把从本机浏览器复制的回调 url 访问一下
root@walker:~/KindleEar# curl http://localhost:8090/?code=4/xxxxxx#
# step4: 把访问任务放到后台
^Z
[2]+ Stopped curl http://localhost:8090/?code=4/xxxxxx#
# step 5: 查看一下任务和 ID
root@walker:~/KindleEar# jobs
[1]- Stopped appcfg.py update app.yaml module-worker.yaml
[2]+ Stopped curl http://localhost:8090/?code=4/xxxxxx#
# step 6: 把appcgf的任务提到前台
root@walker:~/KindleEar# fg %1
appcfg.py update app.yaml module-worker.yaml
Authentication successful.
07:54 AM Scanning files on local disk.
07:54 AM Cloning 15 static files.
07:54 AM Cloning 387 application files.
07:54 AM Uploading 3 files and blobs.
07:54 AM Uploaded 3 files and blobs.
.........省略
07:54 AM Compilation completed.
07:54 AM Starting deployment.
07:54 AM Checking if deployment succeeded.
07:54 AM Deployment successful.
07:54 AM Checking if updated app version is serving.
07:54 AM Completed update of app: kindleearwalker, module: worker, version: 1
# step 7: see? 成功了, 看看剩下的任务吧
root@walker:~/KindleEar# jobs
[2]+ Stopped curl http://localhost:8090/?code=4/xxxxxxx#
# step 8: 提到前台来结束吧
root@walker:~/KindleEar# fg %2
curl http://localhost:8090/?code=4/xxxxxxx#
<html><head><title>Authentication Status</title></head><body><p>The authentication flow has completed.</p></body></html>root@walker:~/KindleEar#

把GAE程序通过SSH部署到 VPS的更多相关文章

  1. SQL Server Reporting Services:无法检索应用程序文件。部署中的文件已损坏

    如果在客户端计算机上启动Microsoft SQL Server 2012的 ClickOnce 版本的 Microsoft SQL Server 报表生成器时出现"无法检索应用程序文件.部 ...

  2. NET5实践:项目创建-结构概述-程序运行-发布部署

    ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署   1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project ...

  3. ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)

    Web程序如何发布部署呢.网站项目做好了,需要发布出来,提交给客户,装上服务器.那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^   工具/原料 Visual Studio 2010  ( ...

  4. Delphi 10.2 Linux 程序开发环境部署的基本步骤(网络连接方式要选择桥接或者是Host Only)

    Delphi 10.2 Linux 程序开发环境部署的基本步骤 http://blog.qdac.cc/?p=4477 升級到 Delphi 10.2 Tokyo 笔记http://www.cnblo ...

  5. ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试

    想必大家之前在进行ASP.NET Web 应用程序开发期间都有用到过将我们的网站部署到IIS自定义主机域名并附加到进程进行调试. 那我们的ASP.NET Core Web 应用程序又是如何部署到我们的 ...

  6. Python Web 程序使用 uWSGI 部署

    Python Web 程序使用 uWSGI 部署 WSGI是什么? WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway ...

  7. 快速搞懂.NET 5/.NET Core应用程序的发布部署

    .NET Framework时代,.NET 应用程序大多直接部署运行在Windows服务器上,当然也可以通过Mono部署运行在Linux上.无论部署exe,还是IIS站点.或是Windows Serv ...

  8. Docker容器学习梳理 - 应用程序容器环境部署

    关于国内Docker镜像,可以参考:Docker容器学习梳理--基础知识(2) 的Docker镜像使用. 如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等 ...

  9. Jenkins创建Maven项目及SSH部署

    前面我们已经安装了Jenkins的环境,以及配置好了jdk和maven.下面我们来看如何通过Jenkins将svn的项目进行打包和部署. 创建MAVEN项目 1.点击新建,输入项目名,选择" ...

随机推荐

  1. Ucos系统常用的数据结构有哪些?

    1)表 链表 表中主要了解链表,尤其是单向链表. 2)数组 一维数组 二维数组 使用数组有什么好处,在c语言中,数组是一组连续数字的集合它们数组的下标,代表了数组的相对位置,所以说,在一些高效的查表过 ...

  2. replicate复制函数

    按指定次数重复字符表达式 REPLICATE ( character_expression, integer_expression) character_expression 字符数据型的字母数字表达 ...

  3. windows下zookeeper伪集群搭建

    下载 http://www.apache.org/dyn/closer.cgi/zookeeper/ 解压 D:\Java\soft\zookeeper-3.4.6 伪集群 1.在 \zookeepe ...

  4. 深入理解PHP内核(八)变量及数据类型-预定义变量

    原文链接:http://www.orlion.ga/249/ PHP脚本在执行的时候用户全局变量(在用户空间显示定义的变量)会保存在一个HashTable数据类型的符号表中(symbol_table) ...

  5. 深入理解PHP内核(五)变量及数据类型-变量的结构和类型

    原文链接:http://www.orlion.ga/238/ 编程语言的类型可以分为强类型和弱类型两种,PHP是弱类型语言,但是C语言是强类型语言.在官网PHP实现内部,所有变量使用同一种数据结构(z ...

  6. spring 源码分析之BeanPostProcessor

    1.官方解答: Factory hook that allows for custom modification of new bean instances, e.g. checking for ma ...

  7. 美妙的 CSS3 动画!一组梦幻般的按钮效果

    今天给大家带来的是五款梦幻般的动画按钮效果.下面是在线演示,把鼠标放在按钮上试试,有惊喜哦!CSS3 引入了众多供功能强大的新特性,让设计和开发人员能够轻松的创作出各种精美的界面效果. 温馨提示:为保 ...

  8. WOW.js – 在页面滚动时展现动感的元素动画效果

    在一些网页上,当你滚动页面的时候会看到各式各样的元素动画效果,非常动感.WOW.js 就是一款帮助你实现这种 CSS 动画效果的插件,很容易定制,你可以改变动画设置喜欢的风格.延迟.长度.偏移和迭代等 ...

  9. Codrops 优秀教程:实现效果精美的多层推拉菜单

    Codrops 给我们分享了一个多层菜单的实现教程.他们试图探索创建一个嵌套的多级菜单,是非常有用的东西,可以有很多的内容,如网上商店的导航菜单. 这个 Push Menu 效果理论上可以包含无限嵌套 ...

  10. Elasticsearch之_default_—— 为索引添加默认映射

    前篇说过,ES可以自动为文档设定索引.但是问题也来了——如果默认设置的索引不是我们想要的,该怎么办呢? 要知道ES这种搜索引擎都是以Index为实际的分区,Index里面包含了不同的类型,不同的类型是 ...