--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/build/html/install.html Sun Jan 14 11:48:51 2018 +0100
@@ -0,0 +1,417 @@
+
+<!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>Installing PyAMS — PyAMS User Guide 0.1.0 documentation</title>
+ <link rel="stylesheet" href="_static/pyramid.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.1.0',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </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="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="next" title="Managing ZCA with PyAMS" href="zca.html" />
+ <link rel="prev" title="Creating ZODB" href="zodb.html" />
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Neuton&subset=latin" type="text/css" media="screen" charset="utf-8" />
+<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" />
+<!--[if lte IE 6]>
+<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
+<![endif]-->
+
+ </head>
+ <body>
+
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="right" >
+ <a href="zca.html" title="Managing ZCA with PyAMS"
+ accesskey="N">next</a> |</li>
+ <li class="right" >
+ <a href="zodb.html" title="Creating ZODB"
+ accesskey="P">previous</a> |</li>
+ <li class="nav-item nav-item-0"><a href="index.html">PyAMS User Guide 0.1.0 documentation</a> »</li>
+ </ul>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <div class="section" id="installing-pyams">
+<span id="install"></span><h1>Installing PyAMS<a class="headerlink" href="#installing-pyams" title="Permalink to this headline">¶</a></h1>
+<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
+virtual environment, but it allows you to have a better control over your Python resources.</p>
+<p>Current PyAMS version is based and validated for Python 3.5; your Python environment must also include a C
+compiler as well as development headers for Python, <em>libjpeg</em>, <em>libpng</em>, <em>libfreetype</em>, <em>libxml2</em>, <em>libxslt</em> and
+eventually <em>libldap</em>, <em>libffi</em>, <em>libgdal</em> or <em>libzmq</em>.</p>
+<p>PyAMS default components configuration also pre-suppose that the following external tools are available:</p>
+<ul class="simple">
+<li>a <em>Memcached</em> or <em>Redis</em> server, to store sessions and cache (can be changed through Beaker configuration)</li>
+</ul>
+<p>Optional tools also include:</p>
+<ul class="simple">
+<li>an <em>LDAP</em> server for authentication</li>
+<li>an <em>ElasticSearch</em> server for full text indexing (see <em>PyAMS_content_es</em> package)</li>
+<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>
+packages). An <em>out of the box</em> environment can be built using <em>pyams_notify</em> scaffold.</li>
+</ul>
+<p>PyAMS also needs that you use a ZODB remote server, as several background processes needing a concurrent access to ZODB
+are started by PyAMS main process. Three ZODB storages are already provided through PyAMS: ZEO, RelStorage or Newt.db.
+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>
+<div class="section" id="creating-initial-buildout">
+<h2>Creating initial buildout<a class="headerlink" href="#creating-initial-buildout" title="Permalink to this headline">¶</a></h2>
+<p>PyAMS provides a new Pyramid scaffold, called <em>pyams</em>, generated via a <em>cookiecutter</em> template.</p>
+<p>A simple option to install PyAMS is to create a buildout environment including <em>Pyramid</em> and all <em>PyAMS</em> packages:</p>
+<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># mkdir /var/local/</span>
+<span class="c1"># pip3 install virtualenv</span>
+<span class="c1"># virtualenv --python=python3.5 env</span>
+<span class="c1"># cd env</span>
+<span class="c1"># . bin/activate</span>
+<span class="o">(</span>env<span class="o">)</span> <span class="c1"># pip3.5 install cookiecutter</span>
+<span class="o">(</span>env<span class="o">)</span> <span class="c1"># cookiecutter hg+http://hg.ztfy.org/pyams/scaffolds/pyams</span>
+</pre></div>
+</div>
+<p><em>CookieCutter</em> will ask you for a small set of input variables that you can change or not:</p>
+<ul class="simple">
+<li><strong>pyams_release</strong>: version of PyAMS configuration file to use. “latest” (default value) will point to last release;
+you can also choose to point to a given release (“0.1.4” for example)</li>
+<li><strong>project_name</strong>: current environment name in “human form”</li>
+<li><strong>project_slug</strong>: “technical” package name, based on project name</li>
+<li><strong>virtual_hostname</strong>: Apache virtual-host name</li>
+<li><strong>webapp_name</strong>: web application package name (“webapp” as default)</li>
+<li><strong>webapp_port</strong>: TCP/IP port to use when running application outside Apache (“6543” as default)</li>
+<li><strong>eggs_directory</strong>: relative or absolute path to directory containing downloaded eggs; this directory can be
+shared with other projects (“eggs” as default)</li>
+<li><strong>logs_directory</strong>: absolute path to directory containing Apache’s log files</li>
+<li><strong>run_user</strong>: user name under which Apache process will run (“www-data” as default)</li>
+<li><strong>run_group</strong>: group name under which Apache process will run (“www-data” as default)</li>
+<li><strong>beaker_backend</strong>: name of Beaker backend to use to store sessions and cache data (“redis” as default)</li>
+<li><strong>beaker_server</strong>: IP address and port of Beaker backend server (“127.0.0.1:6379” as default)</li>
+<li><strong>db_type</strong>: ZODB database storage; available options include ZEO, RelStorage and NewtDB</li>
+<li><strong>db_host</strong>: IP address of database server (“127.0.0.1” as default); WARNING: database server installation
+is not part of application installation; another “zeo_server” cookiecutter recipe is available for ZEO</li>
+<li><strong>db_port</strong>: listening port of database server (“8100” is given as default for ZEO)</li>
+<li><strong>db_name</strong>: database or ZEO storage name to use</li>
+<li><strong>db_username</strong>: database user name</li>
+<li><strong>db_password</strong>: database password</li>
+<li><strong>zeo_realm</strong>: ZEO authentication realm</li>
+<li><strong>blobs_dir</strong>: local directory to use to store cache of ZODB blobs; cache size is limited to 10GB as default</li>
+<li><strong>use_postgresql</strong>: specify if PostgreSQL access is required; if so, please check that PostgreSQL development files
+are available to compile PsycoPG2 extension</li>
+<li><strong>use_oracle</strong>: specify if Oracle access is required; if so, please check that Oracle development files are
+available to compile cx_Oracle extension, and that ORACLE_HOME environment variable is correctly defined (see below)</li>
+<li><strong>use_ldap</strong>: specify if LDAP access will be required for authentication</li>
+<li><strong>use_elasticsearch</strong>: specify if an ElasticSearch server will be used for indexation</li>
+<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
+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>
+<li><strong>elasticsearch_index</strong>: name of Elasticsearch index to use (“pyams” as default)</li>
+<li><strong>create_elasticsearch_index</strong>: specify if Elasticsearch index should be created after installation is complete</li>
+<li><strong>define_elasticsearch_mappings</strong> : specify if Elasticsearch mappings should be defined after installation is complete</li>
+<li><strong>smtp_server</strong>: DNS name of SMTP server (“localhost” as default)</li>
+<li><strong>smtp_server_name</strong>: “human” name given to SMTP server (“pyams” as default)</li>
+<li><strong>pyams_scheduler</strong>: TCP/IP address and port to use to access PyAMS tasks scheduler process (“127.0.0.1:5555” as
+default); see <span class="xref std std-ref">pyams_scheduler</span></li>
+<li><strong>start_scheduler</strong>: boolean value to indicate if scheduler process is started by this application instance</li>
+<li><strong>pyams_medias_converter</strong>: TCP/IP address and port to use to access PyAMS medias converter process (“127.0.0.1:5556”
+as default); see <span class="xref std std-ref">pyams_medias</span></li>
+<li><strong>start_medias_converter</strong>: boolean value to indicate if medias converter process is started by this application
+instance</li>
+<li><strong>pyams_es_indexer</strong>: TCP/IP address and port to use to access PyAMS Elasticsearch indexer process (“127.0.0.1:5557”
+as default); see <span class="xref std std-ref">pyams_content_es</span></li>
+<li><strong>start_es_indexer</strong> boolean value to indicate if Elasticsearch indexer process is started by this application
+instance</li>
+<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>
+<li><strong>pyams_ws_notify</strong>: TCP/IP address and port of PyAMS websockets server managing notifications service
+(“127.0.0.1:8081” as default)</li>
+<li><strong>lexicon_languages</strong>: NLTK lexicon languages to use (“en:english fr:french” as default)</li>
+<li><strong>extension_package</strong>: name of a PyAMS extension package to include in environment configuration</li>
+<li><strong>need_pyams_gis</strong>: specify if PyAMS GIS features are to be used by given extension package; if so, please check
+that <em>libgdal</em> development files are available; on Debian (and maybe others), you have to specify environment
+variables (see below).</li>
+</ul>
+<p>You can then check, and eventually update, the proposed Buildout configuration file <em>buildout.cfg</em>, to add or remove
+packages or update settings to your needs. Then finalize Bootstrap initialization:</p>
+<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>
+<span class="o">(</span>env<span class="o">)</span> <span class="c1"># ./bin/buildout</span>
+</pre></div>
+</div>
+<p>This last operation can be quite long, as many packages have to downloaded, compiled and installed in the virtual
+environment. If you encounter any compile error, just install the required dependencies and restart the buildout.</p>
+<p>Some dependencies can require the definition of custom environment variables before running <em>buildout</em>, like:</p>
+<ul class="simple">
+<li>for <em>libgdal</em>, which is required by <strong>PyAMS_gis</strong> package, use:</li>
+</ul>
+<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>
+<span class="o">(</span>env<span class="o">)</span> <span class="c1"># export CPLUS_INCLUDE_PATH=/usr/include/gdal</span>
+</pre></div>
+</div>
+<p><strong>WARNING</strong>: you have to check also that your <em>libgdal</em> release is matching “GDAL” release given in PyAMS
+configuration file (actually 2.1.0).</p>
+<ul class="simple">
+<li>for <em>cx_Oracle</em>, which is required if you use Oracle database connections, use:</li>
+</ul>
+<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>
+</pre></div>
+</div>
+<p>These examples are given for Debian GNU/Linux. You may have to adapt configuration based on your own Linux
+distribution and packages versions.</p>
+</div>
+<div class="section" id="environment-settings">
+<h2>Environment settings<a class="headerlink" href="#environment-settings" title="Permalink to this headline">¶</a></h2>
+<p>The project generated from <em>pyams</em> scaffold is based on default Pyramid’s <em>zodb</em> scaffold, but it adds:</p>
+<ul class="simple">
+<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>
+<li>a set of directories to store runtime data, in the <em>var</em> directory; each directory contains a <em>README.txt</em> file
+which should be self-explanatory to indicate what this directory should contain, including a ZEO cache</li>
+<li>a set of configuration files, in the <em>etc</em> directory; here are standard <em>development.ini</em> and <em>production.ini</em>
+configuration files, a ZODB configuration files (<em>zodb-zeo.conf</em>) for a ZEO client storage and two Apache
+configurations (for Apache 2.2 and 2.4) using <em>mod_wsgi</em>.</li>
+</ul>
+<p>Once the project have been created from the scaffold, you are free to update all the configuration files.</p>
+<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
+file (in the <em>pyramid.includes</em> section) before running the <em>buildout</em> another time; don’t forget to add the
+requested version at the end of <em>buildout.cfg</em> file, as Buildout is not configured by default to automatically
+download the last release of a given unknown package.</p>
+<p><em>development.ini</em> and <em>production.ini</em> files contain many commented directives related to PyAMS components. Read and
+update them carefully before initializing your application database!</p>
+</div>
+<div class="section" id="initializing-the-database">
+<h2>Initializing the database<a class="headerlink" href="#initializing-the-database" title="Permalink to this headline">¶</a></h2>
+<p>When you have downloaded and installed all required packages, you have to initialize the database so that all
+required components are available.</p>
+<p>From a shell, just type:</p>
+<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>
+</pre></div>
+</div>
+<p>This process requires that every package is correctly included into <em>pyramid.includes</em> directive from selected
+configuration file.</p>
+</div>
+<div class="section" id="initializing-elasticsearch-index">
+<h2>Initializing Elasticsearch index<a class="headerlink" href="#initializing-elasticsearch-index" title="Permalink to this headline">¶</a></h2>
+<p>If you want to use an Elasticsearch index, you have to initialize index settings and mappings; the Ingest attachment
+plug-in is also required to handle attachments correctly.</p>
+<p>Elasticsearch integration is defined through the <em>PyAMS_content_es</em> package. Configuration files are available in this
+package, for attachment pipeline, index settings and mappings:</p>
+<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>
+<span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XDELETE http://localhost:9200/pyams (1)</span>
+<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>
+
+<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>
+<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>
+<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>
+</pre></div>
+</div>
+<ol class="arabic simple">
+<li>If ‘pyams’ is defined as Elasticsearch index name.</li>
+</ol>
+</div>
+<div class="section" id="nltk-initialization">
+<h2>NLTK initialization<a class="headerlink" href="#nltk-initialization" title="Permalink to this headline">¶</a></h2>
+<p>Some NLTK (Natural Language Toolkit) tokenizers and stopwords utilities are used to index fulltext contents elements.
+This package requires downloading and configuration of several elements which are done as follow:</p>
+<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>
+>>> import nltk
+>>> nltk.download<span class="o">()</span>
+NLTK Downloader
+---------------------------------------------------------------------------
+ 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
+---------------------------------------------------------------------------
+Downloader> c
+
+Data Server:
+ - URL: <https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml>
+ - <span class="m">6</span> Package Collections Available
+ - <span class="m">107</span> Individual Packages Available
+
+Local Machine:
+ - Data directory: /home/tflorac/nltk_data
+
+---------------------------------------------------------------------------
+ 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
+---------------------------------------------------------------------------
+Config> d
+ New directory> /usr/local/lib/nltk_data <span class="o">(</span><span class="m">1</span><span class="o">)</span>
+Config> m
+
+---------------------------------------------------------------------------
+ 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
+---------------------------------------------------------------------------
+Downloader> d
+
+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>?
+ Identifier> punkt
+ Downloading package punkt to /usr/local/lib/nltk_data...
+
+Downloader> d
+
+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>?
+ Identifier> stopwords
+ Downloading package stopwords to /usr/local/lib/nltk_data...
+</pre></div>
+</div>
+<p>(1) On Debian GNU/Linux, you can choose any directory between ‘<em>~/nltk_data</em>’ (where ‘~’ is the homedir of user running
+Pyramid application), ‘<em>/usr/share/nltk_data</em>’, ‘<em>/usr/local/share/nltk_data</em>’, ‘<em>/usr/lib/nltk_data</em>’ and
+‘<em>/usr/local/lib/nltk_data</em>’.</p>
+</div>
+<div class="section" id="starting-the-application">
+<h2>Starting the application<a class="headerlink" href="#starting-the-application" title="Permalink to this headline">¶</a></h2>
+<p>When database upgrade process has ended, you can start the web application process with the standard Pyramid’s
+<em>pserve</em> command line tool:</p>
+<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>
+</pre></div>
+</div>
+<p>In standard debug mode, all registered components are displayed in the console, until the final line (here using ZEO):</p>
+<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>
+<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>
+<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.
+<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.
+<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
+<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
+<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
+<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>
+<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>
+<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
+<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
+<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
+<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
+...
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+...
+<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>
+<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>
+<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>
+<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
+<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>
+<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
+<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>
+<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
+<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> -->
+<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>
+<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>
+<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
+<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
+<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>>...
+<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>.
+<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
+<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
+<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
+<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>
+<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>
+<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
+<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
+<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
+<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>
+<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>
+<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>
+<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> -->
+<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>
+<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
+<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
+<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>>...
+<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>.
+Starting server in PID <span class="m">29335</span>.
+Serving on http://0.0.0.0:6543
+</pre></div>
+</div>
+<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
+management interface; default login is “admin/admin”, that you may change as soon as possible (see
+<a class="reference internal" href="pyams_security.html#pyams-security"><span class="std std-ref">PyAMS security</span></a>)!!.</p>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="index.html">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">Installing PyAMS</a><ul>
+<li><a class="reference internal" href="#creating-initial-buildout">Creating initial buildout</a></li>
+<li><a class="reference internal" href="#environment-settings">Environment settings</a></li>
+<li><a class="reference internal" href="#initializing-the-database">Initializing the database</a></li>
+<li><a class="reference internal" href="#initializing-elasticsearch-index">Initializing Elasticsearch index</a></li>
+<li><a class="reference internal" href="#nltk-initialization">NLTK initialization</a></li>
+<li><a class="reference internal" href="#starting-the-application">Starting the application</a></li>
+</ul>
+</li>
+</ul>
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="zodb.html"
+ title="previous chapter">Creating ZODB</a></p>
+ <h4>Next topic</h4>
+ <p class="topless"><a href="zca.html"
+ title="next chapter">Managing ZCA with PyAMS</a></p>
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related" role="navigation" aria-label="related navigation">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="py-modindex.html" title="Python Module Index"
+ >modules</a> |</li>
+ <li class="right" >
+ <a href="zca.html" title="Managing ZCA with PyAMS"
+ >next</a> |</li>
+ <li class="right" >
+ <a href="zodb.html" title="Creating ZODB"
+ >previous</a> |</li>
+ <li class="nav-item nav-item-0"><a href="index.html">PyAMS User Guide 0.1.0 documentation</a> »</li>
+ </ul>
+ </div>
+ <div class="footer" role="contentinfo">
+ © Copyright 2017, Thierry Florac.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.5.
+ </div>
+ </body>
+</html>
\ No newline at end of file