云上的播放框架變得簡單:Openshift模塊

僅僅幾年前,找到一個負擔得起的Java Web應用程序托管解決方案是一項艱巨的任務,而尋找免費的托管解決方案是一項不可能的任務。 更不用說甚至考慮自動縮放,單命令部署,持續集成等事情,這都是科幻小說。
去年見證了云計算革命,如今,確實有許多選擇可供選擇。 似乎每個中型到大型IT播放器都必須推出自己的平臺即服務(PaaS)云產品。

在這種情況下,Red Hat的產品不會被忽視。 紅帽工程師確實對管理服務器非常了解,而且幸運的是,他們對Java Web應用程序也很了解。 幸運的是,他們接受了挑戰,他們所提供的一切肯定不會使我們失望。

那只熊貓熊不是很可愛嗎?

因此, Openshift來了 。 Openshift是Red Hat針對Java,Perl,PHP,Python和Ruby應用程序提供的免費,自動縮放,基于云的平臺即服務。 這是一個快速發展的平臺,它成功地形成了一個充滿活力和樂于助人的社區來支持它。 此外,它的免費提供很大程度上替代了能力所提供的任何東西。 只需輸入電子郵件并選擇密碼,您就會獲得五個applicacions名稱空間,每個名稱空間都有一個git存儲庫和半GB的數據(代碼+數據庫),您可以根據需要使用它們。 加上對mysql(帶有phpmyadmin), PostgreSQL , MongoDB 2.0 (帶有MongoRock)甚至全功能Jenkins實例的支持,以具有持續集成環境。

將Java Web應用程序部署到openshift真的很容易,只需git addgit commitgit push …就是這樣。 但是我們,游戲開發者,由于被我們鐘愛的框架所寵壞,寧愿只鍵入play rhc:deploy類的東西,而忘了它。
這就是用于游戲框架的openshift模塊。

短篇小說

因此,您已準備就緒,可以將所有播放框架應用程序部署到openshift。 這意味著您已經安裝了JDK 1.6或1.5 , play framework , ruby , ruby gems , openshift客戶端工具 ,并且已經在openshift上注冊并創建了一個域。
在這種情況下,您只需要:

$ play install openshift

然后

$ play new <my app> --with openshift
$ cd <my app>
$ play rhc:deploy -o

…就是這樣。

您的應用程序已準備好……并在Openshift上運行!

每次要將更改部署到openshift時,只需再次發出play rhc:deploy -o-o參數僅告訴模塊在部署后立即在Web瀏覽器上打開您的應用程序。

從零到云端

提醒自己,以下是從裸機安裝到在openfhit上進行部署所需的步驟:

1.安裝Java jdk 1.6 在基于Debian的Linux發行版上(例如ubuntu,mint等)

$ sudo apt-get install openjdk-6-jdk

在基于rmp的linux發行版上(例如fedora,red hat,centos等)

$ sudo yum install java-1.6.0-openjdk-devel.i686


2.安裝播放框架
這是我安裝播放框架的快速而骯臟的命令列表。

$ cd ~
$ mkdir dev
$ cd dev
$ wget http://download.playframework.org/releases/play-1.2.4.zip
$ unzip play-1.2.4.zip $ echo "export PATH=$PATH:~/dev/play-1.2.4" >> ~/.profile$ source ~/.profile

然后使用以下命令進行測試:

$ play version
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.4, http://www.playframework.org
~
1.2.4

注意:如果您在fedora上運行,則可能需要發出sudo yum remove sox ,因為sox軟件包附帶了它自己的play命令,該命令與play框架沖突。

3.注冊openshift
轉到https://openshift.redhat.com/app/user/new/express輸入您的電子郵件并選擇一個密碼。

4.安裝,git和ruby寶石
在基于Debian的Linux發行版上:

$ sudo apt-get install git ruby rubygems

RPM版本:

$ sudo yum install git ruby rubygems


5.安裝openshift客戶端工具
一旦安裝了ruby gem,安裝紅帽云工具就很容易了:

$ sudo gem install rhc

6.創建一個域
域名稱空間用于幫助識別您的應用程序,并用作應用程序URL的一部分。 它對您來說是獨一無二的。 例如,假設您擁有一個很棒的名稱空間,當您創建一個名為wicked的新應用程序時,您可以在http://wicked-awesome.rhcloud.com上找到它。 當您創建一個名為freakin的新應用程序時,它將位于http://freakin-awesome.rhcloud.com。
因此,請轉到位于https://openshift.redhat.com/app/control_panel的 openshift控制面板 ,然后單擊“名稱空間”部分的“ 編輯 ”。 然后輸入諸如playdemo之類的東西 (好,那已經被錄用 ),然后單擊Save。

7.創建并注冊您的SSH密鑰
現在,您必須創建一對密鑰,一個私有密鑰和一個公共密鑰..,以便openshift可以驗證它是否真的是您嘗試將某項推送到遠程git存儲庫的密鑰。 只需按照http://help.github.com/linux-set-up-git/上的步驟操作,您只需要打開一個終端,然后

$ cd ~/.ssh

如果收到“ 沒有此類文件或目錄”錯誤,請不要擔心,這意味著您的系統上沒有任何SSH密鑰。 另一方面,如果您已經擁有SSH密鑰,則最好進行備份。

$ ssh-keygen -t rsa -C "<my email>"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sas/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/sas/.ssh/id_rsa.
Your public key has been saved in /home/sas/.ssh/id_rsa.pub.
The key fingerprint is:
22:7b:cd:f3:98:4f:92:de:80:1d:ad:d6:ea:73:20:c2 <my email>
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|         .       |
|   .. . S .      |
|    Eo.*.=       |
|    ..o.@.o      |
|     . o.@.      |
|       .*++      |
+-----------------+

然后,您可以設置用戶名和電子郵件,如下所示:

$ git config --global user.name "<my name>"
$ git config --global user.email "<my email>"

現在,您必須在openshift上注冊此密鑰。 只需復制id_rsa.pub的內容(注意不要復制文件id_rsa ,它是您的私鑰,并且應該將其保留給自己),然后從控制面板中將其添加為新的SSH KEY。

在Fedora上,每次執行git操作時都必須輸入密碼很煩人。 為了避免這種情況,只需運行ssh-add并最后一次輸入密碼即可。

另外,您也可以使用以下命令

$ rhc-create-domain -l <your email> -p <your password> -n <pick a domain>

并讓openshift在您的.ssh /目錄中創建一對私鑰和公用密鑰,分別為libra_id_rsalibra_id_rsa.pub 。 我自己的SSH密鑰和openshift創建的libra密鑰之間存在一些沖突,因此我更愿意自己處理ssh密鑰。

注意:除非在openshift上注冊了有效的公共密鑰,否則您將無法將任何內容推送到git存儲庫。 考慮到您可以根據需要添加任意多個鍵。

轉到https://openshift.redhat.com/app/control_panel上的控制面板 ,以檢查所有內容是否正確。

走向云端

現在是的,我們準備將我們的游戲框架應用程序部署到云中。

$ play install openshift
$ play new <my app> --with openshift
$ cd <my app>

現在,對于每個命令,您至少必須輸入用戶名和密碼。 您可以通過將以下密鑰添加到conf / application.conf文件中來避免此麻煩:

# Openshift module configuration
openshift.rhlogin=<my login>
openshift.password=<my password>

之后,您應該檢查是否已安裝所有先決條件。 趕緊跑:

$ play rhc:chk

它將檢查Java 1.6或1.5安裝,git,ruby,rubygem和openshift客戶端工具0.84.15或更高版本。 它還將檢查該應用程序在openshift上是否存在,否則將要求您創建它,最后它將檢查您在openshift上是否具有指向遠程存儲庫的本地git存儲庫。
然后,您可以通過以下方式部署應用程序:

$ play rhc:deploy -o

第一次需要花費相當長的時間來發布部署,因為該模塊必須上載所有播放框架庫。 最初的部署之后,后續的提交將更快,因為git足夠聰明,只發送更改的文件。 此外,該模塊將詢問您的許可以在openshift上創建應用程序,并創建本地存儲庫。 如果只希望腳本創建所有內容而無需征求許可,則只需在命令中添加--bypass-b參數。
您的應用程序現在將在以下位置可用: http:// <我的應用程序>-<我的域> .rhcloud.com
如果您已經將應用程序部署到openshift,并且只想從遠程git存儲庫中檢索它,則發出:

$ play rhc:fetch

考慮到這是一種破壞性操作。 它將完全刪除您的本地應用程序,并將其替換為遠程存儲庫的內容。
要查看您的服務器日志,請發出:

$ play rhc:logs
用“ play rhc:logs”查看openshift日志文件

要在openshift運行時顯示有關您的應用程序的信息:

$ play rhc:info

這只是rhc-domain-info命令的簡寫形式
您可以在任何時候通過openshift打開應用程序:

$ play rhc:open

這也是在http:// <我的應用程序>-<我的域> .rhcloud.com上打開Web瀏覽器的快捷方式
最后,如果您想從openshift刪除應用程序,請運行:

$ play rhc:destroy

安裝openshift模塊

有兩種安裝openshift模塊的方法。 一種只是發出play install openshift ,它將直接與您的框架一起安裝模塊,位于<play install folder> /modules/openshift-0.1.0 。 這樣,您創建的每個應用程序都可以使用它

$ play new my-app --with openshift

另一種方法是將其手動配置為依賴項。 只需將以下行添加到您的conf / dependencies.yml文件中:

# Application dependencies
require:- play- play -> openshift 0.1.0

然后發出

play deps

注意:play在?/ .ivy2 / cache處保留獲取的依賴項的緩存 。 如果您在依賴項方面遇到麻煩,請清理該部分,然后重試。

與模塊一起,在<openshift模塊文件夾> / samples_and_tests / openshift-demo中有一個示例應用程序。 只需轉到該文件夾??并發出play deps ,然后play run以查看其在本地運行。 它僅顯示播放配置和主機環境變量,讓您檢查您的應用程序是否在openshift上運行。

Openshift模塊演示應用程序

然后運行play rhc:chk以確認您已安裝所有先決條件。 解決該問題后,播放rhc:deploy -o以在openshift上創建遠程應用程序,創建本地git repo,將應用程序打包為war文件,提交新應用程序,然后部署到openshift。 借助-o參數,該模塊將在部署后在Web瀏覽器中打開您的openshift應用程序。

獲得幫助

您可以看一下該模塊的命令發布:

$ play help
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.4, http://www.playframework.org
~[...]
~
~ Modules commands:
~ ~~~~~~~~~~~~~~~~~
~ rhc:chk             Check openshift prerequisites, application and git repo.
~ rhc:deploy          Deploys application on openshift.
~ rhc:destroy         Destroys application on openshift.
~ rhc:fetch           Fetches application from remote openshift repository.
~ rhc:info            Displays information about user and configured applications.
~ rhc:logs            Show the logs of the application on openshift.
~ rhc:open            Opens the application deployed on openshift in web browser.
~
~ Also refer to documentation at http://www.playframework.org/documentation
~

然后,您可以使用-h--help參數獲得有關參數的更多幫助:

$ play rhc:chk -h~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.4, http://www.playframework.org
~
Usage: play [options]Options:-h, --help            show this help message and exit-a APP, --app=APP     Application name  (alphanumeric) (required)-s SUBDOMAIN, --subdomain=SUBDOMAINApplication subdomain, root by default  (alphanumeric)(optional)-l RHLOGIN, --rhlogin=RHLOGINRed Hat login (RHN or OpenShift login with OpenShiftExpress access)-p PASSWORD, --password=PASSWORDRHLogin password  (optional, will prompt)-d, --debug           Print Debug info-m MESSAGE, --message=MESSAGECommit message--timeout=TIMEOUT     Timeout, in seconds, for connection-o, --open            Open site after deploying-b, --bypass          Bypass warnings

您還可以使用以下鍵在conf / application.conf文件中指定這些選項:

openshift.rhlogin: Red Hat login (RHN or OpenShift login with OpenShift Express access)
openshift.password: RHLogin password  (optional, will prompt)
openshift.application.name: Application name  (alphanumeric) (required)
openshift.application.subdomain: Application subdomain, root by default  (alphanumeric)
openshift.debug: Print Debug info
openshift.timeout: Timeout, in seconds, for connection

您可以在http://www.playframework.org/modules/openshift上的openshift模塊頁面上看到該模塊的所有版本。
您可以在http://www.playframework.org/modules/openshift-0.1.0/home上查看文檔,也可以通過play run在開發模式下本地運行您的應用,然后訪問http:// localhost:9000 / @ documentation / modules / openshift / home 。

本地瀏覽模塊文檔

你可以問的問題, 發揮框架討論列表在https://groups.google.com/group/play-framework ,或者你可以用它來試試西班牙表弟在https://groups.google.com/group/play-拉坦

已知的問題

不幸的是,目前openshift模塊不適用于Windows。 這是因為該模塊發出許多git命令,并且您無法在標準外殼程序的Windows上執行此操作,它需要特殊的“ git bash”提示。

進一步的步驟

在下一個版本中,我將探討使用openshift的java api構建模塊的僅Java版本的可能性。 這樣,我們將不需要git,ruby或rhc工具安裝。 Morevoer,我們也應該能夠從Windows上使用它。

資源資源

  • 播放框架openshift模塊頁面: http ://www.playframework.org/modules/openshift
  • 最新版本: http : //www.playframework.org/modules/openshift-0.1.0/home
  • github上的項目: https : //github.com/opensas/openshift
  • 有關如何將Play框架應用程序部署到openshift的詳細教程: https : //github.com/opensas/play-demo/wiki/Step-12.5-deploy-to-openshift
  • 關于將Java應用程序部署到openshift的優秀教程: https ://gist.github.com/1637464#file_tutorial.rst
  • 關于jboss Planet的幾篇文章:
  • http://planet.jboss.org/post/let_s_play_on_the_red_hat_cloud_using_the_play_framework_on_openshift_express_with_jboss_as_7
  • https://community.jboss.org/blogs/thomas.heute/2011/06/29/play-framework-on-jboss-as-7?_sscc=t

參考: 云上的播放框架變得簡單:來自JCG合作伙伴的 Openshift模塊 ? Sebastian Scarano在“ 玩轉Play框架”中! 博客。


翻譯自: https://www.javacodegeeks.com/2012/02/play-framework-on-cloud-made-easy.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373447.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373447.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373447.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#中的yield return與Unity中的Coroutine(協程)(下)

Unity中的Coroutine&#xff08;協程&#xff09; 估計熟悉Unity的人看過或者用過StartCoroutine() 假設我們在場景中有一個UGUI組件&#xff0c; Image&#xff1a; 將以下代碼綁定到Image 1 using UnityEngine;2 using System.Collections;3 using System.Threading;4 using …

字節流轉化為文件流_C#文件轉換為字節流及字節流轉換為文件

本文講解了C#實現文件轉換為字節流的方法。文件轉換為字節流的步驟如下1、通過文件流打開指定文件(FileStream fs)&#xff1b;2、定義字節流(byte[] fileBytenew byte[fs.Length])&#xff1b;3、把文件讀取到字節流(fs.Read(fileByte,0,fileByte.Length))&#xff1b;4、關閉…

Spring和JSF集成:導航

我希望這是有關我在Spring和JavaServer Faces之間提供深度集成的努力的一系列博客中的第一篇。 這里提到的所有內容都是“正在進行中的工作”&#xff0c;因此&#xff0c;如果您簽出代碼&#xff0c;請注意它是一個不斷變化的目標。 期待一些粗糙的邊緣&#xff0c;如果有時會…

【CSS3動畫】transform對文字及圖片的旋轉、縮放、傾斜和移動

前言&#xff1a;之前我有寫過CSS3的transform這一這特性&#xff0c;對于它的用法&#xff0c;還不是很透徹&#xff0c;今天補充補充&#xff0c;呵呵 你懂的&#xff0c;小司機準備開車了。 a)再提一提transform的四個屬性 ①旋轉--->rotate(參數a)&#xff0c;單位deg&a…

宏的用法與簡介

預處理指令&#xff1a;例如&#xff1a;#include<stdio.h> #include<stdlib.h> #define MAX 20 ............. 因為他們由預處理器解釋的&#xff0c;所以稱作預處理指令。預處理器讀取源代碼&#xff0c;然后對其修改&#xff0c;并把修改過的…

django 日志寫入mysql_如何將django orm模型 寫入數據庫

1、指定連接pymysql(python3.x)先配置_init_.pyimport pymysqlpymysql.install_as_MySQLdb()2、配置連接mysql文件信息settings.pyDATABASES {default: {ENGINE: django.db.backends.mysql,NAME: django_orm, #你的數據庫名稱USER: root, #你的數據庫用戶名PASSWORD: , #你的數…

ORM的問題第2部分–查詢

在我以前關于對象關系映射工具&#xff08;ORM&#xff09;的帖子中&#xff0c;我討論了在處理當今常見的ORM&#xff08;包括Hibernate&#xff09;時遇到的各種問題。 其中包括與從POJO生成架構有關的問題&#xff0c;實際性能和不斷出現的維護問題。 本質上&#xff0c;結論…

【轉】如何減少接口響應時間

Premature optimization is the root of all evil. — Donald Knuth 對于程序優化&#xff0c;我一直采取保守的態度&#xff0c;除非萬不得已。但是隨著業務的不斷發展&#xff0c;程序越來越復雜&#xff0c;代碼越寫越多&#xff0c;優化似乎是終有一天會到來的事情。 那么對…

數據庫行轉列在現實需求中的用法

select t.客戶姓名,sum(case when t.收款類型首款 then t.金額 else 0 end as 首款),sum(case when t.收款類型尾款 then t.金額 else 0 end as 尾款) from table t group by t.客戶姓名 這段sql的意思 是 查詢出所有客戶收款信息 然后按客戶分組 分組后 然后將這個客戶的所…

mysql生產環境加索引_【生產篇】_MySQL環境下如何查看基于表的索引定義

【引言】今天中午項目組來一需求&#xff0c;欲在MySQL環境的某張表下創建幾個BTREE索引。要創建索引&#xff0c;首先需要了解基表的表結構&#xff0c;以及已經包含的索引。Oracle的表結構大家都很熟悉&#xff0c;但MySQL表結構和已創建索引的查看怎么操作&#xff0c;本文將…

Hadoop模式介紹-獨立,偽分布式,分布式

了解了什么是Hadoop之后&#xff0c;讓我們在單機上啟動Hadoop&#xff1a; 這篇文章包含在ubuntu上安裝Hadoop的說明。 這是Hadoop安裝的快速分步教程。 在這里&#xff0c;您將獲得以獨立模式 &#xff08;單節點集群&#xff09;安裝Hadoop所需的所有命令及其說明&#xff0…

apk反編譯方式

一、Apk反編譯得到Java源代碼 下載上述反編譯工具包&#xff0c;打開apk2java目錄下的dex2jar-0.0.9.9文件夾&#xff0c;內含apk反編譯成java源碼工具&#xff0c;以及源碼查看工具。 apk反編譯工具dex2jar&#xff0c;是將apk中的classes.dex轉化成jar文件 源碼查看工具jdgui…

優化Hibernate所鼓勵的7大措施

優化Hibernate所鼓勵的7大措施&#xff1a; 1.盡量使用many-to-one&#xff0c;避免使用單項one-to-many2.靈活使用單向one-to-many3.不用一對一&#xff0c;使用多對一代替一對一4.配置對象緩存&#xff0c;不使用集合緩存5.一對多使用Bag 多對一使用Set6.繼承使用顯示多態 HQ…

如何用c 控制mysql數據庫_用C語言操作MySQL數據庫

函數描述mysql_affected_rows()返回上次UPDATE、DELETE或INSERT查詢更改&#xff0f;刪除&#xff0f;插入的行數。mysql_autocommit()切換autocommit模式&#xff0c;ON/OFFmysql_change_user()更改打開連接上的用戶和數據庫。mysql_charset_name()返回用于連接的默認字符集的…

數據結構(RMQ):POJ 3624 Balanced Lineup

Balanced LineupDescription For the daily milking, Farmer Johns N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things simple, he will take a conti…

Apache Thrift快速入門教程

Thrift是一種跨語言RPC框架&#xff0c;最初是在Facebook上開發的&#xff0c;現在作為Apache項目開源。 這篇文章將描述如何以不同的模式&#xff08;例如阻塞&#xff0c;非阻塞和異步&#xff09;編寫Thrift服務和客戶端。 &#xff08;我覺得后兩種模式的文檔較少&#xff…

數組拆分為新數組

package com.classes;//已知數組a&#xff0c;將奇數位置元素存到b數組中&#xff0c;偶數位置元素存到c數組中public class Shuzu1118_4 { public static void main(String[] args) { int [] a{3,6,9,1,4,7,2,5,8}; int [] b; //定義數組b int [] c; //定義數組c//先找出數組…

java數組交集_java數組的交集和并集

前兩天給我出了一道題&#xff0c;求數組的并集和交集&#xff0c;然后我試著寫一下&#xff0c;很尷尬&#xff0c;由于長時間沒有寫過代碼&#xff0c;一開始數組是如何定義的給忘了。當時我說了我的思路&#xff0c;不過也是很low的做法&#xff0c;查閱網上的一些資料&…

ADF聲明性組件示例

在我以前的文章中&#xff0c;我答應展示如何為智能值列表創建ADF聲明性組件。 因此&#xff0c;我將創建一個包含三個元素的組件&#xff1a;標簽&#xff0c;輸入文本和值的組合框列表。 那很容易。 我在工作空間中創建了一個單獨的ADF ViewController項目&#xff1a; 在此項…

VS2015 安裝包缺失(聯網安裝失敗)問題解決

Win7 x86 測試可行 * 如果前面有嘗試過安裝不成功, 一定要用卸載程序刪除已安裝的部分,否則會出亂子. 1. 或者是用虛擬光驅加載ISO, 或者是解壓到硬盤上, 都沒有關系. 2. 用管理員權限啟動CMD控制臺, 進入VS2015 安裝盤的根目錄 (vs_enterprise.exe 所在的目錄). 3. 執行命令 …