-
Notifications
You must be signed in to change notification settings - Fork 16
/
cloud.html
291 lines (269 loc) · 14.6 KB
/
cloud.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GraphTerm in the cloud — GraphTerm 0.53.0 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '0.53.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="Search within GraphTerm 0.53.0 documentation"
href="_static/opensearch.xml"/>
<link rel="top" title="GraphTerm 0.53.0 documentation" href="index.html" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<style type="text/css">
table.right { float: right; margin-left: 20px; }
table.right td { border: 1px solid #ccc; }
</style>
<script type="text/javascript">
// Google Analytics setup
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-35342722-1']);
_gaq.push(['_trackPageview']);
function goApp() {
if (window.navigator.standalone) {
// Go home
location.href = "/";
} else {
// Go to top level domain
var url = location.protocol + "//" + location.hostname.split(".").slice(-2).join(".");
if (location.port)
url += ":" + location.port;
location.href = url;
}
}
// Prevent internal links in iOS standalone web apps from opening in browser
(function(document,navigator,standalone) {
// prevents links from apps from oppening in mobile safari
// this javascript must be the first script in your <head>
if ((standalone in navigator) && navigator[standalone]) {
var curnode, location=document.location, stop=/^(a|html)$/i;
document.addEventListener('click', function(e) {
curnode=e.target;
while (!(stop).test(curnode.nodeName)) {
curnode=curnode.parentNode;
}
// Conditions to do this only on links to your own app
if ('href' in curnode) {
e.preventDefault();
location.href = curnode.href;
}
},false);
}
})(document,window.navigator,'standalone');
</script>
</head>
<body>
<div style="background-color: white; text-align: left; padding: 10px 10px 15px 15px">
<h1>
<a href="/">
code.mindmeldr.com
<!--
<img height="60" src="http://doc.mindmeldr.com/_static/mmrbanner-transp1.png" alt="Mindmeldr banner" />
-->
</a>/<a href="/graphterm">graphterm</a>
</h1>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li><a href="index.html">Docs Home</a> | </li>
<li><a href="contents.html">Contents</a>
»</li>
</ul>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="contents.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">GraphTerm in the cloud</a><ul>
<li><a class="reference internal" href="#setup">Setup</a></li>
<li><a class="reference internal" href="#server-security">Server security</a></li>
<li><a class="reference internal" href="#secondary-cloud-instances">Secondary cloud instances</a></li>
</ul>
</li>
</ul>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/cloud.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="graphterm-in-the-cloud">
<span id="cloud"></span><h1><a class="toc-backref" href="#id1">GraphTerm in the cloud</a><a class="headerlink" href="#graphterm-in-the-cloud" title="Permalink to this headline">¶</a></h1>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#graphterm-in-the-cloud" id="id1">GraphTerm in the cloud</a><ul>
<li><a class="reference internal" href="#setup" id="id2">Setup</a></li>
<li><a class="reference internal" href="#server-security" id="id3">Server security</a></li>
<li><a class="reference internal" href="#secondary-cloud-instances" id="id4">Secondary cloud instances</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="setup">
<span id="index-0"></span><h2><a class="toc-backref" href="#id2">Setup</a><a class="headerlink" href="#setup" title="Permalink to this headline">¶</a></h2>
<p>The GraphTerm distribution includes the scripts <tt class="docutils literal"><span class="pre">ec2launch,</span> <span class="pre">ec2list,</span>
<span class="pre">ec2scp,</span></tt> and <tt class="docutils literal"><span class="pre">ec2ssh</span></tt> to launch and monitor Amazon Web Services
(AWS) Elastic Computing Cloud (EC2) instances running a GraphTerm server. These scripts
are used to test new versions of GraphTerm by running them in the “cloud”.
You will need to have an AWS account to use
these scripts, and also need to install the <tt class="docutils literal"><span class="pre">boto</span></tt> python module.</p>
<p>If you do not have an <a class="reference external" href="http://aws.amazon.com/">AWS</a> account,
<a class="reference external" href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html">get one</a>
(this will be linked to your standard Amazon account).</p>
<p>If you own a
domain name, say <tt class="docutils literal"><span class="pre">myterm.com</span></tt>, that you wish to use for your
cloud server, then you should also activate the
AWS <a class="reference external" href="http://aws.amazon.com/route53/faqs/#Getting_started_with_Route_53">Route 53</a>
service and create a hosted zone for <tt class="docutils literal"><span class="pre">myterm.com</span></tt>. Ensure that the
nameserver records for <tt class="docutils literal"><span class="pre">myterm.com</span></tt> at your domain name registrar
point to the AWS nameservers for the hosted zone. (<em>If do not use your
own domain, you will need to use the long public name for your server
assigned by AWS.</em>)</p>
<p>To create an instance, use the <tt class="docutils literal"><span class="pre">ec2launch</span></tt> command. (The first time
you do this, you will be asked to enter your AWS security credentials,
which will then be stored in the file <tt class="docutils literal"><span class="pre">~/boto</span></tt>.)
You will be presented with a web form to enter details of the instance
to be launched. You can specify a simple <em>tag name</em> to identify each
server. If the tag name is of the form <tt class="docutils literal"><span class="pre">subdomain.myterm.com</span></tt>, then
the newly created server can be automatically accessed using this
domain name. You can also specify whether to install additional
packages, like <tt class="docutils literal"><span class="pre">pylab</span></tt> for plotting or <tt class="docutils literal"><span class="pre">R</span></tt> for statistical
analysis.</p>
<p>Once you fill in the form for <tt class="docutils literal"><span class="pre">ec2launch</span></tt> and submit it, a command
line will be automatically generated, with the specified options, to launch
the instance. You may need to wait several minutes for the instance
setup to complete, depending upon the compute power of the
instance. To launch another instance with slightly different
properties, you can simply recall the command line and edit it.</p>
<p>By default, a publicly accessible <tt class="docutils literal"><span class="pre">graphterm</span></tt> server
will be automatically started on the new instance,
Once the instance is running, you can access the GraphTerm server at
<tt class="docutils literal"><span class="pre">http://subdomain.myterm.com</span></tt>. You can log in to the instance using the
command <tt class="docutils literal"><span class="pre">ec2ssh</span> <span class="pre">ubuntu@subdomain.myterm.com</span></tt>, or copy files to it
using <tt class="docutils literal"><span class="pre">ec2scp</span> <span class="pre">file</span> <span class="pre">ubuntu@subdomain.myterm.com:</span></tt></p>
<p>The <tt class="docutils literal"><span class="pre">ec2list</span></tt> command can be used to list all running instances, and
also to terminate them.</p>
<p><em>Note:</em> If you have trouble
accessing the instance, check to make sure that the AWS <a class="reference external" href="http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html">security group</a>
associated with the cloud instance allows access to inbound TCP port
22 (for SSH access), 8900 (for GraphTerm users to connect), and
possibly port 8899 (for GraphTerm hosts to connect).</p>
</div>
<div class="section" id="server-security">
<span id="index-1"></span><h2><a class="toc-backref" href="#id3">Server security</a><a class="headerlink" href="#server-security" title="Permalink to this headline">¶</a></h2>
<p>Use the <tt class="docutils literal"><span class="pre">auth_type</span></tt> value of <tt class="docutils literal"><span class="pre">none</span></tt> in the <tt class="docutils literal"><span class="pre">ec2launch</span></tt> form
to launch a password-less public server, or use a blank entry if you
wish to launch the server manually later, using the following command,
for example:</p>
<div class="highlight-python"><pre>gtermserver --daemon=start --auth_type=none --host=<server_domain_or_address></pre>
</div>
<p><em>Note:</em> Using an <tt class="docutils literal"><span class="pre">auth_type</span></tt> value of <tt class="docutils literal"><span class="pre">none</span></tt> (or <tt class="docutils literal"><span class="pre">name</span></tt>, for
simple name-based authentication) is very insecure and
should not be used when handling any sensitive information.
For increased security in a publicly-accessible server, the <tt class="docutils literal"><span class="pre">--auth_type=multiuser</span></tt> option
can be used:</p>
<div class="highlight-python"><pre>gtermserver --daemon=start --auth_type=multiuser --host=<server_domain_or_address> --super_users=ubuntu --auto_users --allow_share</pre>
</div>
<p>In this case, a secret master authentication code is stored in the file
<tt class="docutils literal"><span class="pre">~/.graphterm/graphterm_auth@server_domain</span></tt>. If the authentication
code is not already present in the file, a new random
code will be generated.
The <tt class="docutils literal"><span class="pre">--super_users=</span></tt> option specifies <em>super users</em> who can login
using the secret master authentication code. The <tt class="docutils literal"><span class="pre">--auto_users</span></tt>
option allows new users to be created on the fly. New users are logged
in automatically without a password but any subsequent logins will require
the user authentication code saved in the file
<tt class="docutils literal"><span class="pre">~user/.graphterm/graphterm_auth.user@server_domain</span></tt>.
If this file is downloaded and saved in the user’s local <tt class="docutils literal"><span class="pre">~/.graphterm</span></tt>
directory, then the following local command can be used to access the
remote server:</p>
<div class="highlight-python"><pre>gterm -u user -s server_domain</pre>
</div>
<p>(The super user can use the <tt class="docutils literal"><span class="pre">gauth</span></tt> command to re-generate
user authentication codes and the <tt class="docutils literal"><span class="pre">gterm_user_setup</span></tt> script to
manually configure new users.)</p>
<p>You can also configure the server to use <em>https</em> instead of <em>http</em>,
if you have an SSL certificate. Since GraphTerm is currently in <em>alpha</em> status,
security cannot be guaranteed even with these options enabled. (To
avoid these issues, use SSH port forwarding to access GraphTerm on
<tt class="docutils literal"><span class="pre">localhost</span></tt> whenever possible.)</p>
</div>
<div class="section" id="secondary-cloud-instances">
<h2><a class="toc-backref" href="#id4">Secondary cloud instances</a><a class="headerlink" href="#secondary-cloud-instances" title="Permalink to this headline">¶</a></h2>
<p>Secondary cloud instances can connect to the GraphTerm server on
the primary instance using the command:</p>
<div class="highlight-python"><pre>gtermhost --daemon=start --server_addr=<server_domain_or_address> <secondary_host_name></pre>
</div>
<p><em>Note:</em> It would be better to use an internal (non-public) network address to
connect secondary cloud instances.</p>
</div>
</div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li><a href="index.html">Docs Home</a> | </li>
<li><a href="contents.html">Contents</a>
»</li>
</ul>
</div>
<div class="footer">
© Copyright 2012-2014 R. Saravanan.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
<div class="footer">
<script type="text/javascript">
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
</script>
</div>
</body>
</html>