1 |
|
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
|
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
|
4 |
|
5 <html xmlns="http://www.w3.org/1999/xhtml"> |
|
6 <head> |
|
7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
|
8 <title>Installing PyAMS — PyAMS User Guide 0.1.0 documentation</title> |
|
9 <link rel="stylesheet" href="_static/pyramid.css" type="text/css" /> |
|
10 <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> |
|
11 <script type="text/javascript"> |
|
12 var DOCUMENTATION_OPTIONS = { |
|
13 URL_ROOT: './', |
|
14 VERSION: '0.1.0', |
|
15 COLLAPSE_INDEX: false, |
|
16 FILE_SUFFIX: '.html', |
|
17 HAS_SOURCE: true, |
|
18 SOURCELINK_SUFFIX: '.txt' |
|
19 }; |
|
20 </script> |
|
21 <script type="text/javascript" src="_static/jquery.js"></script> |
|
22 <script type="text/javascript" src="_static/underscore.js"></script> |
|
23 <script type="text/javascript" src="_static/doctools.js"></script> |
|
24 <link rel="index" title="Index" href="genindex.html" /> |
|
25 <link rel="search" title="Search" href="search.html" /> |
|
26 <link rel="next" title="Managing ZCA with PyAMS" href="zca.html" /> |
|
27 <link rel="prev" title="Creating ZODB" href="zodb.html" /> |
|
28 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Neuton&subset=latin" type="text/css" media="screen" charset="utf-8" /> |
|
29 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Nobile:regular,italic,bold,bolditalic&subset=latin" type="text/css" media="screen" charset="utf-8" /> |
|
30 <!--[if lte IE 6]> |
|
31 <link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" /> |
|
32 <![endif]--> |
|
33 |
|
34 </head> |
|
35 <body> |
|
36 |
|
37 <div class="related" role="navigation" aria-label="related navigation"> |
|
38 <h3>Navigation</h3> |
|
39 <ul> |
|
40 <li class="right" style="margin-right: 10px"> |
|
41 <a href="genindex.html" title="General Index" |
|
42 accesskey="I">index</a></li> |
|
43 <li class="right" > |
|
44 <a href="py-modindex.html" title="Python Module Index" |
|
45 >modules</a> |</li> |
|
46 <li class="right" > |
|
47 <a href="zca.html" title="Managing ZCA with PyAMS" |
|
48 accesskey="N">next</a> |</li> |
|
49 <li class="right" > |
|
50 <a href="zodb.html" title="Creating ZODB" |
|
51 accesskey="P">previous</a> |</li> |
|
52 <li class="nav-item nav-item-0"><a href="index.html">PyAMS User Guide 0.1.0 documentation</a> »</li> |
|
53 </ul> |
|
54 </div> |
|
55 |
|
56 <div class="document"> |
|
57 <div class="documentwrapper"> |
|
58 <div class="bodywrapper"> |
|
59 <div class="body" role="main"> |
|
60 |
|
61 <div class="section" id="installing-pyams"> |
|
62 <span id="install"></span><h1>Installing PyAMS<a class="headerlink" href="#installing-pyams" title="Permalink to this headline">¶</a></h1> |
|
63 <p>PyAMS default installation is based on <a class="reference external" href="http://www.buildout.org">Buildout</a> utility. It’s not mandatory to use a |
|
64 virtual environment, but it allows you to have a better control over your Python resources.</p> |
|
65 <p>Current PyAMS version is based and validated for Python 3.5; your Python environment must also include a C |
|
66 compiler as well as development headers for Python, <em>libjpeg</em>, <em>libpng</em>, <em>libfreetype</em>, <em>libxml2</em>, <em>libxslt</em> and |
|
67 eventually <em>libldap</em>, <em>libffi</em>, <em>libgdal</em> or <em>libzmq</em>.</p> |
|
68 <p>PyAMS default components configuration also pre-suppose that the following external tools are available:</p> |
|
69 <ul class="simple"> |
|
70 <li>a <em>Memcached</em> or <em>Redis</em> server, to store sessions and cache (can be changed through Beaker configuration)</li> |
|
71 </ul> |
|
72 <p>Optional tools also include:</p> |
|
73 <ul class="simple"> |
|
74 <li>an <em>LDAP</em> server for authentication</li> |
|
75 <li>an <em>ElasticSearch</em> server for full text indexing (see <em>PyAMS_content_es</em> package)</li> |
|
76 <li>a <em>WebSockets</em> server using AsyncIO. This is used to manage notifications (see <em>PyAMS_notify</em> and <em>PyAMS_notify_ws</em> |
|
77 packages). An <em>out of the box</em> environment can be built using <em>pyams_notify</em> scaffold.</li> |
|
78 </ul> |
|
79 <p>PyAMS also needs that you use a ZODB remote server, as several background processes needing a concurrent access to ZODB |
|
80 are started by PyAMS main process. Three ZODB storages are already provided through PyAMS: ZEO, RelStorage or Newt.db. |
|
81 See <a class="reference internal" href="zodb.html#zodb"><span class="std std-ref">Creating ZODB</span></a> to know how to initialize database with the help of PyAMS tools.</p> |
|
82 <div class="section" id="creating-initial-buildout"> |
|
83 <h2>Creating initial buildout<a class="headerlink" href="#creating-initial-buildout" title="Permalink to this headline">¶</a></h2> |
|
84 <p>PyAMS provides a new Pyramid scaffold, called <em>pyams</em>, generated via a <em>cookiecutter</em> template.</p> |
|
85 <p>A simple option to install PyAMS is to create a buildout environment including <em>Pyramid</em> and all <em>PyAMS</em> packages:</p> |
|
86 <div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># mkdir /var/local/</span> |
|
87 <span class="c1"># pip3 install virtualenv</span> |
|
88 <span class="c1"># virtualenv --python=python3.5 env</span> |
|
89 <span class="c1"># cd env</span> |
|
90 <span class="c1"># . bin/activate</span> |
|
91 <span class="o">(</span>env<span class="o">)</span> <span class="c1"># pip3.5 install cookiecutter</span> |
|
92 <span class="o">(</span>env<span class="o">)</span> <span class="c1"># cookiecutter hg+http://hg.ztfy.org/pyams/scaffolds/pyams</span> |
|
93 </pre></div> |
|
94 </div> |
|
95 <p><em>CookieCutter</em> will ask you for a small set of input variables that you can change or not:</p> |
|
96 <ul class="simple"> |
|
97 <li><strong>pyams_release</strong>: version of PyAMS configuration file to use. “latest” (default value) will point to last release; |
|
98 you can also choose to point to a given release (“0.1.4” for example)</li> |
|
99 <li><strong>project_name</strong>: current environment name in “human form”</li> |
|
100 <li><strong>project_slug</strong>: “technical” package name, based on project name</li> |
|
101 <li><strong>virtual_hostname</strong>: Apache virtual-host name</li> |
|
102 <li><strong>webapp_name</strong>: web application package name (“webapp” as default)</li> |
|
103 <li><strong>webapp_port</strong>: TCP/IP port to use when running application outside Apache (“6543” as default)</li> |
|
104 <li><strong>eggs_directory</strong>: relative or absolute path to directory containing downloaded eggs; this directory can be |
|
105 shared with other projects (“eggs” as default)</li> |
|
106 <li><strong>logs_directory</strong>: absolute path to directory containing Apache’s log files</li> |
|
107 <li><strong>run_user</strong>: user name under which Apache process will run (“www-data” as default)</li> |
|
108 <li><strong>run_group</strong>: group name under which Apache process will run (“www-data” as default)</li> |
|
109 <li><strong>beaker_backend</strong>: name of Beaker backend to use to store sessions and cache data (“redis” as default)</li> |
|
110 <li><strong>beaker_server</strong>: IP address and port of Beaker backend server (“127.0.0.1:6379” as default)</li> |
|
111 <li><strong>db_type</strong>: ZODB database storage; available options include ZEO, RelStorage and NewtDB</li> |
|
112 <li><strong>db_host</strong>: IP address of database server (“127.0.0.1” as default); WARNING: database server installation |
|
113 is not part of application installation; another “zeo_server” cookiecutter recipe is available for ZEO</li> |
|
114 <li><strong>db_port</strong>: listening port of database server (“8100” is given as default for ZEO)</li> |
|
115 <li><strong>db_name</strong>: database or ZEO storage name to use</li> |
|
116 <li><strong>db_username</strong>: database user name</li> |
|
117 <li><strong>db_password</strong>: database password</li> |
|
118 <li><strong>zeo_realm</strong>: ZEO authentication realm</li> |
|
119 <li><strong>blobs_dir</strong>: local directory to use to store cache of ZODB blobs; cache size is limited to 10GB as default</li> |
|
120 <li><strong>use_postgresql</strong>: specify if PostgreSQL access is required; if so, please check that PostgreSQL development files |
|
121 are available to compile PsycoPG2 extension</li> |
|
122 <li><strong>use_oracle</strong>: specify if Oracle access is required; if so, please check that Oracle development files are |
|
123 available to compile cx_Oracle extension, and that ORACLE_HOME environment variable is correctly defined (see below)</li> |
|
124 <li><strong>use_ldap</strong>: specify if LDAP access will be required for authentication</li> |
|
125 <li><strong>use_elasticsearch</strong>: specify if an ElasticSearch server will be used for indexation</li> |
|
126 <li><strong>elasticsearch_server</strong>: URL used to access Elasticsearch server (“<a class="reference external" href="http://127.0.0.1:9200">http://127.0.0.1:9200</a>” as default); this URL can |
|
127 include login and password (“<a class="reference external" href="http://login:password@127.0.0.1:9200">http://login:password@127.0.0.1:9200</a>”), if required…</li> |
|
128 <li><strong>elasticsearch_index</strong>: name of Elasticsearch index to use (“pyams” as default)</li> |
|
129 <li><strong>create_elasticsearch_index</strong>: specify if Elasticsearch index should be created after installation is complete</li> |
|
130 <li><strong>define_elasticsearch_mappings</strong> : specify if Elasticsearch mappings should be defined after installation is complete</li> |
|
131 <li><strong>smtp_server</strong>: DNS name of SMTP server (“localhost” as default)</li> |
|
132 <li><strong>smtp_server_name</strong>: “human” name given to SMTP server (“pyams” as default)</li> |
|
133 <li><strong>pyams_scheduler</strong>: TCP/IP address and port to use to access PyAMS tasks scheduler process (“127.0.0.1:5555” as |
|
134 default); see <span class="xref std std-ref">pyams_scheduler</span></li> |
|
135 <li><strong>start_scheduler</strong>: boolean value to indicate if scheduler process is started by this application instance</li> |
|
136 <li><strong>pyams_medias_converter</strong>: TCP/IP address and port to use to access PyAMS medias converter process (“127.0.0.1:5556” |
|
137 as default); see <span class="xref std std-ref">pyams_medias</span></li> |
|
138 <li><strong>start_medias_converter</strong>: boolean value to indicate if medias converter process is started by this application |
|
139 instance</li> |
|
140 <li><strong>pyams_es_indexer</strong>: TCP/IP address and port to use to access PyAMS Elasticsearch indexer process (“127.0.0.1:5557” |
|
141 as default); see <span class="xref std std-ref">pyams_content_es</span></li> |
|
142 <li><strong>start_es_indexer</strong> boolean value to indicate if Elasticsearch indexer process is started by this application |
|
143 instance</li> |
|
144 <li><strong>use_notifications</strong>: specify if PyAMS notifications services are to be used (see <a class="reference internal" href="pyams_notify.html#pyams-notify"><span class="std std-ref">PyAMS notification services</span></a>)</li> |
|
145 <li><strong>pyams_ws_notify</strong>: TCP/IP address and port of PyAMS websockets server managing notifications service |
|
146 (“127.0.0.1:8081” as default)</li> |
|
147 <li><strong>lexicon_languages</strong>: NLTK lexicon languages to use (“en:english fr:french” as default)</li> |
|
148 <li><strong>extension_package</strong>: name of a PyAMS extension package to include in environment configuration</li> |
|
149 <li><strong>need_pyams_gis</strong>: specify if PyAMS GIS features are to be used by given extension package; if so, please check |
|
150 that <em>libgdal</em> development files are available; on Debian (and maybe others), you have to specify environment |
|
151 variables (see below).</li> |
|
152 </ul> |
|
153 <p>You can then check, and eventually update, the proposed Buildout configuration file <em>buildout.cfg</em>, to add or remove |
|
154 packages or update settings to your needs. Then finalize Bootstrap initialization:</p> |
|
155 <div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># python3.5 bootstrap.py</span> |
|
156 <span class="o">(</span>env<span class="o">)</span> <span class="c1"># ./bin/buildout</span> |
|
157 </pre></div> |
|
158 </div> |
|
159 <p>This last operation can be quite long, as many packages have to downloaded, compiled and installed in the virtual |
|
160 environment. If you encounter any compile error, just install the required dependencies and restart the buildout.</p> |
|
161 <p>Some dependencies can require the definition of custom environment variables before running <em>buildout</em>, like:</p> |
|
162 <ul class="simple"> |
|
163 <li>for <em>libgdal</em>, which is required by <strong>PyAMS_gis</strong> package, use:</li> |
|
164 </ul> |
|
165 <div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># export C_INCLUDE_PATH=/usr/include/gdal</span> |
|
166 <span class="o">(</span>env<span class="o">)</span> <span class="c1"># export CPLUS_INCLUDE_PATH=/usr/include/gdal</span> |
|
167 </pre></div> |
|
168 </div> |
|
169 <p><strong>WARNING</strong>: you have to check also that your <em>libgdal</em> release is matching “GDAL” release given in PyAMS |
|
170 configuration file (actually 2.1.0).</p> |
|
171 <ul class="simple"> |
|
172 <li>for <em>cx_Oracle</em>, which is required if you use Oracle database connections, use:</li> |
|
173 </ul> |
|
174 <div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># export ORACLE_HOME=/usr/lib/oracle/12.1/client64</span> |
|
175 </pre></div> |
|
176 </div> |
|
177 <p>These examples are given for Debian GNU/Linux. You may have to adapt configuration based on your own Linux |
|
178 distribution and packages versions.</p> |
|
179 </div> |
|
180 <div class="section" id="environment-settings"> |
|
181 <h2>Environment settings<a class="headerlink" href="#environment-settings" title="Permalink to this headline">¶</a></h2> |
|
182 <p>The project generated from <em>pyams</em> scaffold is based on default Pyramid’s <em>zodb</em> scaffold, but it adds:</p> |
|
183 <ul class="simple"> |
|
184 <li>a custom application factory, in the <em>webapp</em> directory (see <a class="reference internal" href="site.html#site"><span class="std std-ref">PyAMS site management</span></a>)</li> |
|
185 <li>a set of directories to store runtime data, in the <em>var</em> directory; each directory contains a <em>README.txt</em> file |
|
186 which should be self-explanatory to indicate what this directory should contain, including a ZEO cache</li> |
|
187 <li>a set of configuration files, in the <em>etc</em> directory; here are standard <em>development.ini</em> and <em>production.ini</em> |
|
188 configuration files, a ZODB configuration files (<em>zodb-zeo.conf</em>) for a ZEO client storage and two Apache |
|
189 configurations (for Apache 2.2 and 2.4) using <em>mod_wsgi</em>.</li> |
|
190 </ul> |
|
191 <p>Once the project have been created from the scaffold, you are free to update all the configuration files.</p> |
|
192 <p>If you need to add packages to the environment, you have to add them to the <em>buildout.cfg</em> file <strong>AND</strong> to the INI |
|
193 file (in the <em>pyramid.includes</em> section) before running the <em>buildout</em> another time; don’t forget to add the |
|
194 requested version at the end of <em>buildout.cfg</em> file, as Buildout is not configured by default to automatically |
|
195 download the last release of a given unknown package.</p> |
|
196 <p><em>development.ini</em> and <em>production.ini</em> files contain many commented directives related to PyAMS components. Read and |
|
197 update them carefully before initializing your application database!</p> |
|
198 </div> |
|
199 <div class="section" id="initializing-the-database"> |
|
200 <h2>Initializing the database<a class="headerlink" href="#initializing-the-database" title="Permalink to this headline">¶</a></h2> |
|
201 <p>When you have downloaded and installed all required packages, you have to initialize the database so that all |
|
202 required components are available.</p> |
|
203 <p>From a shell, just type:</p> |
|
204 <div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># ./bin/pyams_upgrade etc/development.ini</span> |
|
205 </pre></div> |
|
206 </div> |
|
207 <p>This process requires that every package is correctly included into <em>pyramid.includes</em> directive from selected |
|
208 configuration file.</p> |
|
209 </div> |
|
210 <div class="section" id="initializing-elasticsearch-index"> |
|
211 <h2>Initializing Elasticsearch index<a class="headerlink" href="#initializing-elasticsearch-index" title="Permalink to this headline">¶</a></h2> |
|
212 <p>If you want to use an Elasticsearch index, you have to initialize index settings and mappings; the Ingest attachment |
|
213 plug-in is also required to handle attachments correctly.</p> |
|
214 <p>Elasticsearch integration is defined through the <em>PyAMS_content_es</em> package. Configuration files are available in this |
|
215 package, for attachment pipeline, index settings and mappings:</p> |
|
216 <div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># cd /var/local/src/pyams/pyams_content_es</span> |
|
217 <span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XDELETE http://localhost:9200/pyams (1)</span> |
|
218 <span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XPUT http://localhost:9200/pyams -d @index-settings.json</span> |
|
219 |
|
220 <span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XPUT http://localhost:9200/pyams/WfNewsEvent/_mapping -d @mappings/WfNewsEvent.json</span> |
|
221 <span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XPUT http://localhost:9200/pyams/WfTopic/_mapping -d @mappings/WfTopic.json</span> |
|
222 <span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XPUT http://localhost:9200/pyams/WfBlogPost/_mapping -d @mappings/WfBlogPost.json</span> |
|
223 </pre></div> |
|
224 </div> |
|
225 <ol class="arabic simple"> |
|
226 <li>If ‘pyams’ is defined as Elasticsearch index name.</li> |
|
227 </ol> |
|
228 </div> |
|
229 <div class="section" id="nltk-initialization"> |
|
230 <h2>NLTK initialization<a class="headerlink" href="#nltk-initialization" title="Permalink to this headline">¶</a></h2> |
|
231 <p>Some NLTK (Natural Language Toolkit) tokenizers and stopwords utilities are used to index fulltext contents elements. |
|
232 This package requires downloading and configuration of several elements which are done as follow:</p> |
|
233 <div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>end<span class="o">)</span> <span class="c1"># ./bin/py</span> |
|
234 >>> import nltk |
|
235 >>> nltk.download<span class="o">()</span> |
|
236 NLTK Downloader |
|
237 --------------------------------------------------------------------------- |
|
238 d<span class="o">)</span> Download l<span class="o">)</span> List u<span class="o">)</span> Update c<span class="o">)</span> Config h<span class="o">)</span> Help q<span class="o">)</span> Quit |
|
239 --------------------------------------------------------------------------- |
|
240 Downloader> c |
|
241 |
|
242 Data Server: |
|
243 - URL: <https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml> |
|
244 - <span class="m">6</span> Package Collections Available |
|
245 - <span class="m">107</span> Individual Packages Available |
|
246 |
|
247 Local Machine: |
|
248 - Data directory: /home/tflorac/nltk_data |
|
249 |
|
250 --------------------------------------------------------------------------- |
|
251 s<span class="o">)</span> Show Config u<span class="o">)</span> Set Server URL d<span class="o">)</span> Set Data Dir m<span class="o">)</span> Main Menu |
|
252 --------------------------------------------------------------------------- |
|
253 Config> d |
|
254 New directory> /usr/local/lib/nltk_data <span class="o">(</span><span class="m">1</span><span class="o">)</span> |
|
255 Config> m |
|
256 |
|
257 --------------------------------------------------------------------------- |
|
258 d<span class="o">)</span> Download l<span class="o">)</span> List u<span class="o">)</span> Update c<span class="o">)</span> Config h<span class="o">)</span> Help q<span class="o">)</span> Quit |
|
259 --------------------------------------------------------------------------- |
|
260 Downloader> d |
|
261 |
|
262 Download which package <span class="o">(</span><span class="nv">l</span><span class="o">=</span>list<span class="p">;</span> <span class="nv">x</span><span class="o">=</span>cancel<span class="o">)</span>? |
|
263 Identifier> punkt |
|
264 Downloading package punkt to /usr/local/lib/nltk_data... |
|
265 |
|
266 Downloader> d |
|
267 |
|
268 Download which package <span class="o">(</span><span class="nv">l</span><span class="o">=</span>list<span class="p">;</span> <span class="nv">x</span><span class="o">=</span>cancel<span class="o">)</span>? |
|
269 Identifier> stopwords |
|
270 Downloading package stopwords to /usr/local/lib/nltk_data... |
|
271 </pre></div> |
|
272 </div> |
|
273 <p>(1) On Debian GNU/Linux, you can choose any directory between ‘<em>~/nltk_data</em>’ (where ‘~’ is the homedir of user running |
|
274 Pyramid application), ‘<em>/usr/share/nltk_data</em>’, ‘<em>/usr/local/share/nltk_data</em>’, ‘<em>/usr/lib/nltk_data</em>’ and |
|
275 ‘<em>/usr/local/lib/nltk_data</em>’.</p> |
|
276 </div> |
|
277 <div class="section" id="starting-the-application"> |
|
278 <h2>Starting the application<a class="headerlink" href="#starting-the-application" title="Permalink to this headline">¶</a></h2> |
|
279 <p>When database upgrade process has ended, you can start the web application process with the standard Pyramid’s |
|
280 <em>pserve</em> command line tool:</p> |
|
281 <div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># ./bin/pserve etc/development.ini</span> |
|
282 </pre></div> |
|
283 </div> |
|
284 <p>In standard debug mode, all registered components are displayed in the console, until the final line (here using ZEO):</p> |
|
285 <div class="highlight-bash"><div class="highlight"><pre><span></span><span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,339 INFO <span class="o">[</span>ZEO.ClientStorage<span class="o">][</span>MainThread<span class="o">]</span> <span class="o">[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> ClientStorage <span class="o">(</span><span class="nv">pid</span><span class="o">=</span><span class="m">28695</span><span class="o">)</span> created RW/normal <span class="k">for</span> storage: <span class="s1">'pyams'</span> |
|
286 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,340 INFO <span class="o">[</span>ZEO.cache<span class="o">][</span>MainThread<span class="o">]</span> created temporary cache file <span class="m">3</span> |
|
287 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,345 INFO <span class="o">[</span>ZODB.blob<span class="o">][</span>MainThread<span class="o">]</span> <span class="o">(</span><span class="m">28695</span><span class="o">)</span> Blob directory <span class="sb">`</span>/var/local/env/pyams/var/db/blobs<span class="sb">`</span> is used but has no layout marker set. Selected <span class="sb">`</span>lawn<span class="sb">`</span> layout. |
|
288 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,345 WARNI <span class="o">[</span>ZODB.blob<span class="o">][</span>MainThread<span class="o">]</span> <span class="o">(</span><span class="m">28695</span><span class="o">)</span> The <span class="sb">`</span>lawn<span class="sb">`</span> blob directory layout is deprecated due to scalability issues on some file systems, please consider migrating to the <span class="sb">`</span>bushy<span class="sb">`</span> layout. |
|
289 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,346 DEBUG <span class="o">[</span>asyncio<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Using selector: EpollSelector |
|
290 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,347 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> disconnected <ZEO.asyncio.client.Client object at 0x7feeb1de7390> None |
|
291 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,348 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> try_connecting |
|
292 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,349 INFO <span class="o">[</span>ZEO.asyncio.base<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Connected Protocol<span class="o">((</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)</span>, <span class="s1">'pyams'</span>, False<span class="o">)</span> |
|
293 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,355 INFO <span class="o">[</span>ZEO.ClientStorage<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> <span class="o">[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> Connected to storage: <span class="o">(</span><span class="s1">'localhost'</span>, <span class="m">8100</span><span class="o">)</span> |
|
294 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,358 DEBUG <span class="o">[</span>txn.140663320073984<span class="o">][</span>MainThread<span class="o">]</span> new transaction |
|
295 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,360 DEBUG <span class="o">[</span>txn.140663320073984<span class="o">][</span>MainThread<span class="o">]</span> commit |
|
296 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,484 DEBUG <span class="o">[</span>config<span class="o">][</span>MainThread<span class="o">]</span> include /home/tflorac/Dropbox/src/PyAMS/pyams_template/src/pyams_template/configure.zcml |
|
297 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,485 DEBUG <span class="o">[</span>config<span class="o">][</span>MainThread<span class="o">]</span> include /var/local/env/pycharm/lib/python3.5/site-packages/pyramid_zcml/configure.zcml |
|
298 ... |
|
299 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,833 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering utility <class <span class="s1">'pyams_utils.timezone.utility.TimezoneGenerationsChecker'</span>> named <span class="s1">'PyAMS timezone'</span> providing <InterfaceClass pyams_utils.interfaces.site.ISiteGenerations> |
|
300 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,834 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering class <class <span class="s1">'pyams_utils.timezone.vocabulary.TimezonesVocabulary'</span>> as vocabulary with name <span class="s2">"PyAMS timezones"</span> |
|
301 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,835 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter <class <span class="s1">'pyams_utils.traversing.PathElementsAdapter'</span>> <span class="k">for</span> <span class="o">(</span><InterfaceClass zope.location.interfaces.IContained>,<span class="o">)</span> providing <InterfaceClass pyams_utils.interfaces.traversing.IPathElements> |
|
302 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,839 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter <class <span class="s1">'pyams_utils.url.AbsoluteUrlTalesExtension'</span>> <span class="k">for</span> <span class="o">(</span><InterfaceClass zope.interface.Interface>, <InterfaceClass zope.interface.Interface>, <InterfaceClass zope.interface.Interface><span class="o">)</span> providing <InterfaceClass pyams_utils.interfaces.tales.ITALESExtension> |
|
303 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,847 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter <class <span class="s1">'pyams_utils.widget.decimal.DottedDecimalDataConverter'</span>> <span class="k">for</span> <span class="o">(</span><InterfaceClass pyams_utils.schema.IDottedDecimalField>, <InterfaceClass z3c.form.interfaces.IWidget><span class="o">)</span> providing <InterfaceClass z3c.form.interfaces.IDataConverter> |
|
304 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,942 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter <class <span class="s1">'pyams_utils.zmi.intids.IntIdsLengthAdapter'</span>> <span class="k">for</span> <span class="o">(</span><InterfaceClass zope.intid.interfaces.IIntIds>,<span class="o">)</span> providing <InterfaceClass pyams_utils.interfaces.intids.IIndexLength> |
|
305 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,943 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>pagelet<span class="o">)][</span>MainThread<span class="o">]</span> Registering pagelet view <span class="s2">"properties.html"</span> <span class="k">for</span> <InterfaceClass zope.intid.interfaces.IIntIds> <span class="o">(</span><class <span class="s1">'pyams_utils.zmi.intids.IntIdsPropertiesDisplayForm'</span>><span class="o">)</span> |
|
306 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,949 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>pagelet<span class="o">)][</span>MainThread<span class="o">]</span> Registering pagelet view <span class="s2">"properties.html"</span> <span class="k">for</span> <InterfaceClass pyams_utils.interfaces.timezone.IServerTimezone> <span class="o">(</span><class <span class="s1">'pyams_utils.zmi.timezone.ServerTimezonePropertiesEditForm'</span>><span class="o">)</span> |
|
307 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,980 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering class <class <span class="s1">'pyams_utils.zodb.ZEOConnectionVocabulary'</span>> as vocabulary with name <span class="s2">"PyAMS ZEO connections"</span> |
|
308 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,981 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering class <class <span class="s1">'pyams_utils.zodb.ZODBConnectionVocabulary'</span>> as vocabulary with name <span class="s2">"PyAMS ZODB connections"</span> |
|
309 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:55,015 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>pagelet<span class="o">)][</span>MainThread<span class="o">]</span> Registering pagelet view <span class="s2">"add-zeo-connection.html"</span> <span class="k">for</span> <InterfaceClass zope.component.interfaces.ISite> <span class="o">(</span><class <span class="s1">'pyams_utils.zmi.zeo.ZEOConnectionAddForm'</span>><span class="o">)</span> |
|
310 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:55,016 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter <class <span class="s1">'pyams_utils.zmi.zeo.ZEOConnectionNameAdapter'</span>> <span class="k">for</span> <span class="o">(</span><InterfaceClass pyams_utils.interfaces.zeo.IZEOConnection>, <InterfaceClass pyams_zmi.layer.IAdminLayer><span class="o">)</span> providing <InterfaceClass pyams_skin.interfaces.container.ITableElementName> |
|
311 <span class="m">2018</span>-01-14 <span class="m">11</span>:37:55,017 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>pagelet<span class="o">)][</span>MainThread<span class="o">]</span> Registering pagelet view <span class="s2">"properties.html"</span> <span class="k">for</span> <InterfaceClass pyams_utils.interfaces.zeo.IZEOConnection> <span class="o">(</span><class <span class="s1">'pyams_utils.zmi.zeo.ZEOConnectionPropertiesEditForm'</span>><span class="o">)</span> |
|
312 ... |
|
313 <span class="m">2018</span>-01-14 <span class="m">11</span>:41:13,214 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter <class <span class="s1">'pyams_default_theme.skin.ResourcesAdapter'</span>> <span class="k">for</span> <span class="o">(</span><InterfaceClass zope.interface.Interface>, <InterfaceClass pyams_default_theme.layer.IPyAMSDefaultLayer>, <InterfaceClass zope.interface.Interface><span class="o">)</span> providing <InterfaceClass pyams_skin.interfaces.resources.IResources> |
|
314 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,665 INFO <span class="o">[</span>ZEO.ClientStorage<span class="o">][</span>MainThread<span class="o">]</span> <span class="o">[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> ClientStorage <span class="o">(</span><span class="nv">pid</span><span class="o">=</span><span class="m">29335</span><span class="o">)</span> created RW/normal <span class="k">for</span> storage: <span class="s1">'pyams'</span> |
|
315 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,665 INFO <span class="o">[</span>ZEO.cache<span class="o">][</span>MainThread<span class="o">]</span> created temporary cache file <span class="m">9</span> |
|
316 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,673 DEBUG <span class="o">[</span>asyncio<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Using selector: EpollSelector |
|
317 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,674 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span> Checking blob cache size. <span class="o">(</span>target: <span class="m">966367642</span><span class="o">)</span> |
|
318 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,674 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> disconnected <ZEO.asyncio.client.Client object at 0x7ffa54058860> None |
|
319 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,675 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span> blob cache size: <span class="m">0</span> |
|
320 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,675 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> try_connecting |
|
321 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,675 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span> --> |
|
322 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,677 INFO <span class="o">[</span>ZEO.asyncio.base<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Connected Protocol<span class="o">((</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)</span>, <span class="s1">'pyams'</span>, False<span class="o">)</span> |
|
323 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,679 INFO <span class="o">[</span>ZEO.ClientStorage<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> <span class="o">[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> Connected to storage: <span class="o">(</span><span class="s1">'localhost'</span>, <span class="m">8100</span><span class="o">)</span> |
|
324 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,682 DEBUG <span class="o">[</span>txn.140713340237568<span class="o">][</span>MainThread<span class="o">]</span> new transaction |
|
325 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,683 DEBUG <span class="o">[</span>txn.140713340237568<span class="o">][</span>MainThread<span class="o">]</span> commit |
|
326 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,690 INFO <span class="o">[</span>PyAMS <span class="o">(</span>scheduler<span class="o">][</span>MainThread<span class="o">]</span> Starting tasks scheduler <SchedulerProcess<span class="o">(</span>SchedulerProcess-1, initial<span class="o">)</span>>... |
|
327 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,698 INFO <span class="o">[</span>PyAMS <span class="o">(</span>scheduler<span class="o">][</span>MainThread<span class="o">]</span> Started tasks scheduler with PID <span class="m">29361</span>. |
|
328 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,701 INFO <span class="o">[</span>apscheduler.scheduler<span class="o">][</span>MainThread<span class="o">]</span> Scheduler started |
|
329 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,702 DEBUG <span class="o">[</span>apscheduler.scheduler<span class="o">][</span>APScheduler<span class="o">]</span> Looking <span class="k">for</span> <span class="nb">jobs</span> to run |
|
330 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,704 DEBUG <span class="o">[</span>apscheduler.scheduler<span class="o">][</span>APScheduler<span class="o">]</span> No jobs<span class="p">;</span> waiting <span class="k">until</span> a job is added |
|
331 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,719 INFO <span class="o">[</span>ZEO.ClientStorage<span class="o">][</span>MainThread<span class="o">]</span> <span class="o">[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> ClientStorage <span class="o">(</span><span class="nv">pid</span><span class="o">=</span><span class="m">29335</span><span class="o">)</span> created RW/normal <span class="k">for</span> storage: <span class="s1">'pyams'</span> |
|
332 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,720 INFO <span class="o">[</span>ZEO.cache<span class="o">][</span>MainThread<span class="o">]</span> created temporary cache file <span class="m">15</span> |
|
333 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,724 DEBUG <span class="o">[</span>asyncio<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Using selector: EpollSelector |
|
334 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,725 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> disconnected <ZEO.asyncio.client.Client object at 0x7ffa557e8b00> None |
|
335 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,726 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> try_connecting |
|
336 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,727 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span> Checking blob cache size. <span class="o">(</span>target: <span class="m">966367642</span><span class="o">)</span> |
|
337 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,728 INFO <span class="o">[</span>ZEO.asyncio.base<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Connected Protocol<span class="o">((</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)</span>, <span class="s1">'pyams'</span>, False<span class="o">)</span> |
|
338 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,729 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span> blob cache size: <span class="m">0</span> |
|
339 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,729 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span> --> |
|
340 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,732 INFO <span class="o">[</span>ZEO.ClientStorage<span class="o">][[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> <span class="o">[(</span><span class="s1">'127.0.0.1'</span>, <span class="m">8100</span><span class="o">)]</span> Connected to storage: <span class="o">(</span><span class="s1">'localhost'</span>, <span class="m">8100</span><span class="o">)</span> |
|
341 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,735 DEBUG <span class="o">[</span>txn.140713340237568<span class="o">][</span>MainThread<span class="o">]</span> new transaction |
|
342 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,736 DEBUG <span class="o">[</span>txn.140713340237568<span class="o">][</span>MainThread<span class="o">]</span> commit |
|
343 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,743 INFO <span class="o">[</span>PyAMS <span class="o">(</span>media<span class="o">)][</span>MainThread<span class="o">]</span> Starting medias converter <MediaConversionProcess<span class="o">(</span>MediaConversionProcess-2, initial<span class="o">)</span>>... |
|
344 <span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,751 INFO <span class="o">[</span>PyAMS <span class="o">(</span>media<span class="o">)][</span>MainThread<span class="o">]</span> Started medias converter with PID <span class="m">29367</span>. |
|
345 Starting server in PID <span class="m">29335</span>. |
|
346 Serving on http://0.0.0.0:6543 |
|
347 </pre></div> |
|
348 </div> |
|
349 <p>From this point, you can launch a browser and open URL <em>http://127.0.0.1:6543/admin</em> to get access to PyAMS |
|
350 management interface; default login is “admin/admin”, that you may change as soon as possible (see |
|
351 <a class="reference internal" href="pyams_security.html#pyams-security"><span class="std std-ref">PyAMS security</span></a>)!!.</p> |
|
352 </div> |
|
353 </div> |
|
354 |
|
355 |
|
356 </div> |
|
357 </div> |
|
358 </div> |
|
359 <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> |
|
360 <div class="sphinxsidebarwrapper"> |
|
361 <h3><a href="index.html">Table Of Contents</a></h3> |
|
362 <ul> |
|
363 <li><a class="reference internal" href="#">Installing PyAMS</a><ul> |
|
364 <li><a class="reference internal" href="#creating-initial-buildout">Creating initial buildout</a></li> |
|
365 <li><a class="reference internal" href="#environment-settings">Environment settings</a></li> |
|
366 <li><a class="reference internal" href="#initializing-the-database">Initializing the database</a></li> |
|
367 <li><a class="reference internal" href="#initializing-elasticsearch-index">Initializing Elasticsearch index</a></li> |
|
368 <li><a class="reference internal" href="#nltk-initialization">NLTK initialization</a></li> |
|
369 <li><a class="reference internal" href="#starting-the-application">Starting the application</a></li> |
|
370 </ul> |
|
371 </li> |
|
372 </ul> |
|
373 |
|
374 <h4>Previous topic</h4> |
|
375 <p class="topless"><a href="zodb.html" |
|
376 title="previous chapter">Creating ZODB</a></p> |
|
377 <h4>Next topic</h4> |
|
378 <p class="topless"><a href="zca.html" |
|
379 title="next chapter">Managing ZCA with PyAMS</a></p> |
|
380 <div id="searchbox" style="display: none" role="search"> |
|
381 <h3>Quick search</h3> |
|
382 <form class="search" action="search.html" method="get"> |
|
383 <div><input type="text" name="q" /></div> |
|
384 <div><input type="submit" value="Go" /></div> |
|
385 <input type="hidden" name="check_keywords" value="yes" /> |
|
386 <input type="hidden" name="area" value="default" /> |
|
387 </form> |
|
388 </div> |
|
389 <script type="text/javascript">$('#searchbox').show(0);</script> |
|
390 </div> |
|
391 </div> |
|
392 <div class="clearer"></div> |
|
393 </div> |
|
394 <div class="related" role="navigation" aria-label="related navigation"> |
|
395 <h3>Navigation</h3> |
|
396 <ul> |
|
397 <li class="right" style="margin-right: 10px"> |
|
398 <a href="genindex.html" title="General Index" |
|
399 >index</a></li> |
|
400 <li class="right" > |
|
401 <a href="py-modindex.html" title="Python Module Index" |
|
402 >modules</a> |</li> |
|
403 <li class="right" > |
|
404 <a href="zca.html" title="Managing ZCA with PyAMS" |
|
405 >next</a> |</li> |
|
406 <li class="right" > |
|
407 <a href="zodb.html" title="Creating ZODB" |
|
408 >previous</a> |</li> |
|
409 <li class="nav-item nav-item-0"><a href="index.html">PyAMS User Guide 0.1.0 documentation</a> »</li> |
|
410 </ul> |
|
411 </div> |
|
412 <div class="footer" role="contentinfo"> |
|
413 © Copyright 2017, Thierry Florac. |
|
414 Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.5. |
|
415 </div> |
|
416 </body> |
|
417 </html> |
|