部署 APJP 到 CloudFoundry 云平台
网友twfcc说上次介绍的jelastic平台看yuTube 360p不卡,不过CloudFoundry 速度最快,以下是他写的部署APJP到CloudFoundry云平台的详细教程,有兴趣的可以试试呀(文章挂国外VPN看,否则可能看不到文中图片)。
CloudFoundry平台简介
http://en.wikipedia.org/wiki/Cloud_Foundry
部署 APJP 到CloudFoundry云平台
到官网注册帐号 http://my.cloudfoundry.com/signup ,填入邮箱,同意条款,等待回邮确认,一般需要一天时间
收到确认信件,使用注册的邮箱,和官网给的密码登录
访问 http://www.rubyinstaller.org/ 下载Ruby for windows
根据CloudFoundry官网所述,Ruby版本1.8.7和1.9.2都支援,Ruby 1.9.3-p194也可,选取Ruby 1.9.2-p290下载
下载後双击打开安装
按下一个,选取其中两项,不需安装 Ruby/TK
等待安装完成
下载 APJP_REMOTE_DOTCLOUD 最新版本, 解开压缩文件,转到APJP_REMOTE_DOTCLOUD目录 目录內有ROOT.war文件,解开
於当前目录释放文件,得到index.html, META-INF和WEB-INF两个目录
转到WEB-INF目录,编辑APJP.properties的KEY栏位,KEY可往项目下载栏下载产生KEY的程序
http://apjp.googlecode.com/files/APJP_KEY-0.1.0.zip
完成後存档,可把原来的ROOT.war和Readme.txt删除,将index.html, META-INF和WEB-INF两个目录压缩为ROOT.zip ,然後改名为ROOT.war ,如图
点击开始 -> 所有程序 -> Ruby 1.9.2-p290 -> Start Command Prompt with Ruby 执行: gem install vmc
这时会出现一堆讯息,其中有一条显示安装成功,等待安装完成就可以
接下来执行另一条命令: vmc target api.cloudfoundry.com
命令完成後,执行命令: vmc login ,输入注册邮箱和密码
然後转到APJP_REMOTE_DOTCLOUD的目录
执行: vmc push <App_Name> , <App_Name> 是随意选取的名字,例如 anotherhappyday
接着只需默认设置, 即直接点击”Enter”键, 7次, 就可成功部署APJP到CloudFoundry
- vmc delete <App_Name> 是删除已部署的App
设置APJP_LOCAL本地客户端
编辑APJP_LOCAL\APJP.properties, 找到APJP_KEY= 填入和上传到服务器相同的KEY
往下找到APJP_REMOTE_HTTP_SERVER_1_REQUEST_URL= 填入 https://yourapp.cloudfoundry.com/HTTP
再往下找到APJP_REMOTE_HTTPS_SERVER_1_REQUEST_URL= 和上述一样,只是变为HTTPS
使用Google Chrome 浏览器的插件Proxy Switchy设定代理
更详尽的设置请参考项目的其他WIKI,例如 InstallGuideOnGAE,这里不再叙述,双击D:\APJP_LOCAL\APJP.bat
访问 http://tracemyip.org 确定通过APJP代理访问互联网
返回cmd.exe窗口查看讯息
补充
鉴於国内安装vmc可能会被防火墙封锁目标网站安装失败,如果有部署APJP其他的服务器版本,开启APJP,通过APJP安装
gem install –http-proxy http://127.0.0.1:10000 vmc
或者全程通过VPN部署
APJP常见问题:http://code.google.com/p/apjp/wiki/ApjpFaq
APJP项目地址:http://code.google.com/p/apjp/
运行ruby时出错显示Runtime error,怎样解决
这个很久没测试过了,不清楚,你可以到其项目上反馈下,或者在VPN下重复操作试试
请问;执行命令: vmc login ,输入注册邮箱和密码.是邮箱的密码.还是CloudFoundry的注册密码?
当然是CloudFoundry的密码啊
怎么样将index.html, META-INF和WEB-INF两个目录压缩为ROOT.zip ,然後改名为ROOT.war
解压软件解压,修改后压缩软件压缩成.zip格式后重命名为.war
请问在cloudfoundry网站上怎么开不到自己部署时写的AppID?只看到注册时编辑的AppID
cloudfoundry平台我很久前折腾过,现在懒得整了。
你如果想搭建,遇到问题可以在推特上向@ jvansteirteghem(软件开发者)或@twfcc、@gkmuse(Wiki维护者)咨询。
我这部署成功了,速度也很不错。但是经常掉线
说错了,是apjp经常突然没反应与服务器断开连接
你使用https连接试试
用的就是https连接的
你在推特上问问 twfcc 吧,apjp的教程一直有他写,他比较熟悉,如果是软件问题他可以反馈给apjp软件作者修改。
laysli27童鞋,你试一试先挂上VPN,然后在运行APJP,可能就正常了,原因可能是已经被咔嚓了。。。。。
限于我没有VPN, 基本所有的APJP的部署是在没有使用VPN的情况下完成的. 但不同地区的网络环境可能不同, 有些地区可能真的需要VPN才能完成部署, 因此如果是使用VPN出现的问题, 抱歉我无法解决的. :(
已经折腾两天两夜了,简直要发疯了
这段报错始终存在:
APJP_LOCAL_PROXY_SERVER: PROXY_SERVER/START
APJP_LOCAL_PROXY_SERVER: EXCEPTION
java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at APJP.ProxyServer.startProxyServer(Unknown Source)
at APJP.ProxyServer.start(Unknown Source)
at APJP.Main.main(Unknown Source)
APJP_LOCAL_PROXY_SERVER: PROXY_SERVER/START NOT OK
APJP: EXCEPTION
APJP.ProxyServerException: PROXY_SERVER/START
at APJP.ProxyServer.startProxyServer(Unknown Source)
at APJP.ProxyServer.start(Unknown Source)
at APJP.Main.main(Unknown Source)
Caused by: java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
… 3 more
APJP: PROXY_SERVER/START NOT OK
APJP: HTTP_SERVER/TEST
APJP_LOCAL_HTTP_SERVER: HTTP_SERVER/TEST
APJP_LOCAL_HTTP_SERVER: EXCEPTION
java.io.FileNotFoundException: https://********.cloudfoundry.com/http
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at APJP.HTTP.HTTPServer.test(Unknown Source)
at APJP.Main.main(Unknown Source)
APJP_LOCAL_HTTP_SERVER: HTTP_SERVER/TEST NOT OK
APJP: EXCEPTION
APJP.HTTP.HTTPServerException: HTTP_SERVER/TEST
at APJP.HTTP.HTTPServer.test(Unknown Source)
at APJP.Main.main(Unknown Source)
Caused by: java.io.FileNotFoundException: https://********.cloudfoundry.com/http
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
… 2 more
APJP: HTTP_SERVER/TEST NOT OK
APJP: HTTPS_SERVER/TEST
APJP_LOCAL_HTTPS_SERVER: HTTPS_SERVER/TEST
APJP_LOCAL_HTTPS_SERVER: EXCEPTION
java.io.FileNotFoundException: https://********.cloudfoundry.com/https
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at APJP.HTTPS.HTTPSServer.test(Unknown Source)
at APJP.Main.main(Unknown Source)
APJP_LOCAL_HTTPS_SERVER: HTTPS_SERVER/TEST NOT OK
APJP: EXCEPTION
APJP.HTTPS.HTTPSServerException: HTTPS_SERVER/TEST
at APJP.HTTPS.HTTPSServer.test(Unknown Source)
at APJP.Main.main(Unknown Source)
Caused by: java.io.FileNotFoundException: https://********.cloudfoundry.com/https
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
… 2 more
APJP: HTTPS_SERVER/TEST NOT OK
我反复检查过的,按照教程一步都没有错,********.cloudfoundry.com 这个域名也没有被封,浏览器直接访问或者https访问都没问题,但就是不能通过APJP浏览网页
确认KEY服务器端和客户端一致吗?
嗯。。。一致的,我肯定
我比较纠结的是这个java.io.FileNotFound 难道是我申请的账户有问题么?
这个就不清楚了,我按照教程部署没问题。
这个的问题应该出在你在云主机建应用时,取的名字和配置文件里面写入的名字不一致
CloudFoundry这个空间有点怪,当你申请成功了空间并登录
会进入Manage页面,其中有“Manage your existing Micro Cloud Foundry domain names.”或者“Create an additional domain name for your Micro Cloud Foundry.”
我最开始就是在这里建立了域名
假设你建立了一个(例如bigcat.cloudfoundry.me ),那么你要小心,“bigcat”这个名字对于部署APJP是不起作用的
也就是说按照这篇教程操作,根本不会用到bigcat这个名字,也根本用不上bigcat.cloudfoundry.me这个域名
事实上,在教程中的“执行: vmc push YourAppID , YourAppID 是随意选取的名字”这一步
你输入的YourAppID,才是后面APJP填配置文件时要用到的名字!
教程中执行到“往下找到APJP_REMOTE_HTTP_SERVER_1_REQUEST_URL= 填入 ”这一步时
你应该填入的是
APJP_REMOTE_HTTP_SERVER_1_REQUEST_URL=https://YourAppID.cloudfoundry.com/HTTP
而不是
APJP_REMOTE_HTTP_SERVER_1_REQUEST_URL=https://bigcat.cloudfoundry.com/HTTP
更不是
APJP_REMOTE_HTTP_SERVER_1_REQUEST_URL=https://bigcat.cloudfoundry.me/HTTP
这个子域名的名字非常关键,我第一次就是错填了“https://bigcat.cloudfoundry.com/HTTP”
从而出现了和你一样的错误。
注:
如果使用了最新版的0.9.3的APJP_LOCAL
在配置文件的第4行,还要把“APJP_LOGGER_ID=”这里也填成“YourAppID”(而不是bigcat)才行
另外
https://YourAppID.cloudfoundry.com/HTTP 也可填成 http://YourAppID.cloudfoundry.com/HTTP (即不使用https协议)来加快速度,但是这样将牺牲一些安全性,请自己酌情考虑
问题原因: “Address already in use: JVM_Bind”
抱歉最近很忙, 没时间再做重复的事情, 自己查阅APJP的WIKI, 已有解答!