mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +01:00
docs: add uwsgi info, rearrange ui customizations
This commit is contained in:
parent
456ac09b62
commit
30be6f2e4c
@ -102,6 +102,96 @@ When resolving a ``example.warc.gz``, pywb will then check (in order):
|
|||||||
* Then, ``http://remote-backup.example.com/collections/<coll name>/example.warc.gz`` (if first lookup unsuccessful)
|
* Then, ``http://remote-backup.example.com/collections/<coll name>/example.warc.gz`` (if first lookup unsuccessful)
|
||||||
|
|
||||||
|
|
||||||
|
UI Customizations
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
pywb supports UI customizations, either for an entire archive,
|
||||||
|
or per-collection.
|
||||||
|
|
||||||
|
Static Files
|
||||||
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The replay server will automatically support static files placed under the following directories:
|
||||||
|
|
||||||
|
* Files under the root ``static`` directory can be accessed via ``http://my-archive.example.com/static/<filename>``
|
||||||
|
|
||||||
|
* Files under the per-collection ``./collections/<coll name>/static`` directory can be accessed via ``http://my-archive.example.com/static/_/<coll name>/<filename>``
|
||||||
|
|
||||||
|
Templates
|
||||||
|
^^^^^^^^^
|
||||||
|
|
||||||
|
pywb users Jinja2 templates to render HTML to render the HTML for all aspects of the application.
|
||||||
|
A version placed in the ``templates`` directory, either in the root or per collection, will override that template.
|
||||||
|
|
||||||
|
To copy the default pywb template to the template directory run:
|
||||||
|
|
||||||
|
``wb-manager template --add search_html``
|
||||||
|
|
||||||
|
The following templates are available:
|
||||||
|
|
||||||
|
* ``home.html`` -- Home Page Template, used for ``http://my-archive.example.com/``
|
||||||
|
|
||||||
|
* ``search.html`` -- Collection Template, used for each collection page ``http://my-archive.example.com/<coll name>/``
|
||||||
|
|
||||||
|
* ``query.html`` -- Capture Query Page for a given url, used for ``http://my-archive.example.com/<coll name/*/<url>``
|
||||||
|
|
||||||
|
Error Pages:
|
||||||
|
|
||||||
|
* ``not_found.html`` -- Page to show when a url is not found in the archive
|
||||||
|
|
||||||
|
* ``error.html`` -- Generic Error Page for any error (except not found)
|
||||||
|
|
||||||
|
Replay and Banner templates:
|
||||||
|
|
||||||
|
* ``frame_insert.html`` -- Top-frame for framed replay mode (not used with frameless mode)
|
||||||
|
|
||||||
|
* ``head_insert.html`` -- Rewriting code injected into ``<head>`` of each replayed page.
|
||||||
|
This template includes the banner template and itself should generally not need to be modified.
|
||||||
|
|
||||||
|
* ``banner.html`` -- The banner used for frameless replay. Can be set to blank to disable the banner.
|
||||||
|
|
||||||
|
|
||||||
|
Custom Outer Replay Frame
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The top-frame used for framed replay can be replaced or augmented
|
||||||
|
by modifiying the ``frame_insert.html``.
|
||||||
|
|
||||||
|
To start with modifiying the default outer page, you can add it to the current
|
||||||
|
templates directory by running ``wb-frame template --add frame_insert.html``
|
||||||
|
|
||||||
|
To initialize the replay, the outer page should include ``wb_frame.js``,
|
||||||
|
create an ``<iframe>`` element and pass the id (or element itself) to the ``ContentFrame`` constructor:
|
||||||
|
|
||||||
|
.. code-block:: html
|
||||||
|
|
||||||
|
<script src='{{ host_prefix }}/{{ static_path }}/wb_frame.js'> </script>
|
||||||
|
<script>
|
||||||
|
var cframe = new ContentFrame({"url": "{{ url }}" + window.location.hash,
|
||||||
|
"prefix": "{{ wb_prefix }}",
|
||||||
|
"request_ts": "{{ wb_url.timestamp }}",
|
||||||
|
"iframe": "#replay_iframe"});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
The outer frame can receive notifications of changes to the replay via ``postMessage``
|
||||||
|
|
||||||
|
For example, to detect when the content frame changed and log the new url and timestamp,
|
||||||
|
use the following script to the outer frame html:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
window.addEventListener("message", function(event) {
|
||||||
|
if (event.data.wb_type == "load" || event.data.wb_type == "replace-url") {
|
||||||
|
console.log("New Url: " + event.data.url);
|
||||||
|
console.log("New Timestamp: " + event.data.ts);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
The ``load`` message is sent when a new page is first loaded, while ``replace-url`` is used
|
||||||
|
for url changes caused by content frame History navigation.
|
||||||
|
|
||||||
|
|
||||||
Custom Defined Collections
|
Custom Defined Collections
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
@ -333,93 +423,3 @@ See the `wsgiprox README <https://github.com/webrecorder/wsgiprox/blob/master/RE
|
|||||||
|
|
||||||
For more information on custom certificate authority (CA) installation, the `mitmproxy certificate page <http://docs.mitmproxy.org/en/stable/certinstall.html>`_ provides a good overview for installing a custom CA on different platforms.
|
For more information on custom certificate authority (CA) installation, the `mitmproxy certificate page <http://docs.mitmproxy.org/en/stable/certinstall.html>`_ provides a good overview for installing a custom CA on different platforms.
|
||||||
|
|
||||||
|
|
||||||
UI Customizations
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
pywb supports UI customizations, either for an entire archive,
|
|
||||||
or per-collection.
|
|
||||||
|
|
||||||
Static Files
|
|
||||||
^^^^^^^^^^^^
|
|
||||||
|
|
||||||
The replay server will automatically support static files placed under the following directories:
|
|
||||||
|
|
||||||
* Files under the root ``static`` directory can be accessed via ``http://my-archive.example.com/static/<filename>``
|
|
||||||
|
|
||||||
* Files under the per-collection ``./collections/<coll name>/static`` directory can be accessed via ``http://my-archive.example.com/static/_/<coll name>/<filename>``
|
|
||||||
|
|
||||||
Templates
|
|
||||||
^^^^^^^^^
|
|
||||||
|
|
||||||
pywb users Jinja2 templates to render HTML to render the HTML for all aspects of the application.
|
|
||||||
A version placed in the ``templates`` directory, either in the root or per collection, will override that template.
|
|
||||||
|
|
||||||
To copy the default pywb template to the template directory run:
|
|
||||||
|
|
||||||
``wb-manager template --add search_html``
|
|
||||||
|
|
||||||
The following templates are available:
|
|
||||||
|
|
||||||
* ``home.html`` -- Home Page Template, used for ``http://my-archive.example.com/``
|
|
||||||
|
|
||||||
* ``search.html`` -- Collection Template, used for each collection page ``http://my-archive.example.com/<coll name>/``
|
|
||||||
|
|
||||||
* ``query.html`` -- Capture Query Page for a given url, used for ``http://my-archive.example.com/<coll name/*/<url>``
|
|
||||||
|
|
||||||
Error Pages:
|
|
||||||
|
|
||||||
* ``not_found.html`` -- Page to show when a url is not found in the archive
|
|
||||||
|
|
||||||
* ``error.html`` -- Generic Error Page for any error (except not found)
|
|
||||||
|
|
||||||
Replay and Banner templates:
|
|
||||||
|
|
||||||
* ``frame_insert.html`` -- Top-frame for framed replay mode (not used with frameless mode)
|
|
||||||
|
|
||||||
* ``head_insert.html`` -- Rewriting code injected into ``<head>`` of each replayed page.
|
|
||||||
This template includes the banner template and itself should generally not need to be modified.
|
|
||||||
|
|
||||||
* ``banner.html`` -- The banner used for frameless replay. Can be set to blank to disable the banner.
|
|
||||||
|
|
||||||
|
|
||||||
Custom Outer Replay Frame
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
The top-frame used for framed replay can be replaced or augmented
|
|
||||||
by modifiying the ``frame_insert.html``.
|
|
||||||
|
|
||||||
To start with modifiying the default outer page, you can add it to the current
|
|
||||||
templates directory by running ``wb-frame template --add frame_insert.html``
|
|
||||||
|
|
||||||
To initialize the replay, the outer page should include ``wb_frame.js``,
|
|
||||||
create an ``<iframe>`` element and pass the id (or element itself) to the ``ContentFrame`` constructor:
|
|
||||||
|
|
||||||
.. code-block:: html
|
|
||||||
|
|
||||||
<script src='{{ host_prefix }}/{{ static_path }}/wb_frame.js'> </script>
|
|
||||||
<script>
|
|
||||||
var cframe = new ContentFrame({"url": "{{ url }}" + window.location.hash,
|
|
||||||
"prefix": "{{ wb_prefix }}",
|
|
||||||
"request_ts": "{{ wb_url.timestamp }}",
|
|
||||||
"iframe": "#replay_iframe"});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
The outer frame can receive notifications of changes to the replay via ``postMessage``
|
|
||||||
|
|
||||||
For example, to detect when the content frame changed and log the new url and timestamp,
|
|
||||||
use the following script to the outer frame html:
|
|
||||||
|
|
||||||
.. code-block:: javascript
|
|
||||||
|
|
||||||
window.addEventListener("message", function(event) {
|
|
||||||
if (event.data.wb_type == "load" || event.data.wb_type == "replace-url") {
|
|
||||||
console.log("New Url: " + event.data.url);
|
|
||||||
console.log("New Timestamp: " + event.data.ts);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
The ``load`` message is sent when a new page is first loaded, while ``replace-url`` is used
|
|
||||||
for url changes caused by content frame History navigation.
|
|
||||||
|
|
||||||
|
@ -144,4 +144,14 @@ You can then configure a browser to Proxy Settings host port to: ``localhost:808
|
|||||||
load the latest copy from the ``my-web-archive`` collection.
|
load the latest copy from the ``my-web-archive`` collection.
|
||||||
|
|
||||||
|
|
||||||
|
Deployment
|
||||||
|
----------
|
||||||
|
|
||||||
|
For testing, development and small production loads, the default ``wayback`` command line may be sufficient.
|
||||||
|
pywb uses the gevent coroutine library, and the default app will support many concurrent connections in a single process.
|
||||||
|
|
||||||
|
For larger scale production deployments, running with `uwsgi <http://uwsgi-docs.readthedocs.io/>`_ server application is recommended. The ``uwsgi.ini`` script provided can be used to launch pywb with uwsgi. uwsgi can be scaled to multiple processes to support the necessary workload, and pywb must be run with the `Gevent Loop Engine <http://uwsgi-docs.readthedocs.io/en/latest/Gevent.html>`_. Nginx or Apache can be used as an additional frontend for uwsgi.
|
||||||
|
|
||||||
|
Although uwsgi does not provide a way to specify command line, all command line options can alternatively be configured via ``config.yaml``. See :ref:`configuring-pywb` for more info on available configuration options.
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user