把GAE程序通过SSH部署到 VPS
大部分在文档上都写了, 写这篇文章的目的是发现现在appcfg.py update xxxx的时候会打开浏览器访问google请求授权(后台内建了一个本地server, 端口是8090, 授权成功后会带授权码请求本地的8090端口, 所以我们在 ssh 环境中是没有浏览器的, 该怎么解决呢?
我玩 linux 不多, 就以我的知识量这么解决:
- 碰到需要访问网站的时候, 程序已经给出了提示, 要你退出, 你当然不退出, 而是把网址复制出来, 在本地打开, 授权成功后, 本地浏览器会请求
127.0.0.1:8090, 当然, 什么都不会发生, 但从地址栏里把地址复制到剪贴板. - 回到SSH, 把当前任务放到后台(
ctrl+z) - 用
curl访问剪贴板里的地址 - 继续
ctrl+z把curl请求放到后台 jobs命令查一下, 如果后台没有别的任务的话,appcfg任务的id 应该是1,curl任务id 应该是2(现在以我的1和2为准)- 把
appcfg提到前台:fg %1 - 你会看到程序顺利进行下去了
- 继续,
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的更多相关文章
- SQL Server Reporting Services:无法检索应用程序文件。部署中的文件已损坏
如果在客户端计算机上启动Microsoft SQL Server 2012的 ClickOnce 版本的 Microsoft SQL Server 报表生成器时出现"无法检索应用程序文件.部 ...
- NET5实践:项目创建-结构概述-程序运行-发布部署
ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署 1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project ...
- ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)
Web程序如何发布部署呢.网站项目做好了,需要发布出来,提交给客户,装上服务器.那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^ 工具/原料 Visual Studio 2010 ( ...
- Delphi 10.2 Linux 程序开发环境部署的基本步骤(网络连接方式要选择桥接或者是Host Only)
Delphi 10.2 Linux 程序开发环境部署的基本步骤 http://blog.qdac.cc/?p=4477 升級到 Delphi 10.2 Tokyo 笔记http://www.cnblo ...
- ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试
想必大家之前在进行ASP.NET Web 应用程序开发期间都有用到过将我们的网站部署到IIS自定义主机域名并附加到进程进行调试. 那我们的ASP.NET Core Web 应用程序又是如何部署到我们的 ...
- Python Web 程序使用 uWSGI 部署
Python Web 程序使用 uWSGI 部署 WSGI是什么? WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway ...
- 快速搞懂.NET 5/.NET Core应用程序的发布部署
.NET Framework时代,.NET 应用程序大多直接部署运行在Windows服务器上,当然也可以通过Mono部署运行在Linux上.无论部署exe,还是IIS站点.或是Windows Serv ...
- Docker容器学习梳理 - 应用程序容器环境部署
关于国内Docker镜像,可以参考:Docker容器学习梳理--基础知识(2) 的Docker镜像使用. 如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等 ...
- Jenkins创建Maven项目及SSH部署
前面我们已经安装了Jenkins的环境,以及配置好了jdk和maven.下面我们来看如何通过Jenkins将svn的项目进行打包和部署. 创建MAVEN项目 1.点击新建,输入项目名,选择" ...
随机推荐
- Jetty 服务器的知识
Jetty 服务器的知识 也许你还没有听说过这个Jetty服务器,不过它确实是一种比较轻量级的Java服务器,和Tomcat一样,专门解释JavaWeb程序的服务器.因为在之前学习Java Web 的 ...
- 深入理解CSS变形transform(2d)
× 目录 [1]变形原点 [2]变形函数 [3]多值 前面的话 CSS变形transform是一些效果的集合,主要是移动.旋转.缩放和倾斜这四种基本操作,还可以通过设置matrix矩阵来实现更复杂的效 ...
- MyEclipse在搭建s2sh时 如何 uninstalled facet
在资源管理器中:找到当前[项目的根目录],在[.setting]目录中, 找到[org.eclipse.wst.common.project.facet.core.xml]文件. 用[文本编辑器工具] ...
- 模拟java.util.Collection一些简单的用法
/* 需求:模拟java.util.Collection一些简单的用法! 注意:java虚拟机中并没有泛型类型的对象.泛型是通过编译器执行一个被称为类型擦除的前段转换来实现的. 1)用泛型的原生类型替 ...
- ASP.NET MVC 4.0中选择Windows 验证默认出错拒绝访问的原因和解决方案
在VS 2012或者2013 中,根据模板创建一个ASP.NET MVC 4.0的应用程序,选择下面的模板 然后选择Intranet Application 不对源代码做任何修改,直接按下F5调试,会 ...
- 图像映射map
<map>标签:带有可点击区域的图像映射 定义一个客户端图像映射.图像映射(image-map)指带有可点击区域的一幅图像. 效果图: 点击相应蓝色标签可进入详情页面浏览. 代码: < ...
- Android 2.x中使用actionbar - Actionbarsherlock
1. 范例说明 从Android 3.0开始,Android引入了ActoinBar,不得不说3.0之前android的标题栏确实比较丑,并且还没有任何功能. 之前很多应用的顶部栏很多都是仿苹果的,比 ...
- (翻译)编写属于你的jQuery插件
Writing Your Own jQuery Plugins 原文地址:http://blog.teamtreehouse.com/writing-your-own-jquery-plugins j ...
- 精美素材:40个漂亮的 PSD 贴纸模板《上篇》
贴纸经常被网页设计师用于为标注网站中的不同元素,以此吸引访客的注意.此外,使用贴纸也使网站更具吸引力.虽然设计者可以使用 Photoshop 制作贴纸,但他们也可以利用从互联网上下载现成的模板.这些模 ...
- jQuery DOM操作
对节点的操作 查找节点 查找节点可以直接利用jQuery选择器来完成,非常便利. 插入节点 jQuery提供了8种插入节点的方法. 序号 方法 描述 实例 1 append() 向每个匹配的元素内部追 ...