把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.点击新建,输入项目名,选择" ...
随机推荐
- 快速入门系列--CLR--01基本概念
在.NET平台用C#这么久,自然会发现其版本很多,相应的概念也会很多,常常都是萌萌哒.而在实际工作中经常会遇到需要配置dll版本号,公钥token等场景,因而对C#.NET.CLR.框架类型等基础概念 ...
- SQLSERVER中的ALLOCATION SCAN和RANGE SCAN
SQLSERVER中的ALLOCATION SCAN和RANGE SCAN 写这篇文章的开始,我还不知道ALLOCATION SCAN的工作原理是怎样的,网上资料少得可怜 求助了园子里的某位大侠,他看 ...
- Visual-Studio-2015-Cheat-Sheet Visual Studio 2015 快捷键列表
PDF 文件下载 http://files.cnblogs.com/files/JamesLi2015/Visual-Studio-2015-Cheat-Sheet.pdf
- Android_TextView之跑马灯效果
对于android控件中的TextView,相信大家一定不陌生,在显示文本内容时十分方便.不过我在使用时遇到一个小问题,就是当文字交多时,如何为用户进行展示.今天就为大家介绍一种解决方案--跑马灯效果 ...
- SQLExecption:Operation not allowed after ResultSet closed解决办法
原网址:http://blog.csdn.net/sku0923/article/details/1722370 一个stmt多个rs进行操作引起的ResultSet已经关闭错误 一个stmt多个rs ...
- 转载--How to Install VMware Tools on CentOS 6.3
源地址:http://www.ehowstuff.com/how-to-install-vmware-tools-on-centos-6-3/ VMware Tools is a group of u ...
- Crumpet – 使用很简单的响应式前端开发框架
Crumpet 是一个简单的响应式的基于 SASS/SCSS 的响应式前端框架,保持你的 HTML 代码简洁.内置尽量使用占位符选择器,以减少你的 HTML 标记的大小,没有凌乱的 HTML 代码.快 ...
- javaccript学习1
1.javascript中的三种消息框 (1)警告框 警告框经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行操作. 语法: alert("文本" ...
- 重读 code complete 说说代码质量
重读code complete 说说代码质量 2014年的第一篇文章本来计划写些过去一年的总结和新年展望,但是因为还有一些事情要过一阵才能完成,所以姑且不谈这个,说说最近重读code complete ...
- JavaScript之旅(三)
JavaScript之旅(三) 三.函数 在JavaScript中,定义函数的方式如下: function abs(x) { ... return ...; } 如果没有return,返回结果为und ...