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