From c593eca9364e0fcca54b7cd4986470da795cb065 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 9 Apr 2020 14:43:22 -0400 Subject: [PATCH] Minor improvements to installation docs --- docs/extra.css | 9 ++++++++- docs/installation/4-http-daemon.md | 6 +++--- docs/installation/index.md | 4 ++++ .../installation/netbox_application_stack.png | Bin 0 -> 25833 bytes 4 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 docs/media/installation/netbox_application_stack.png diff --git a/docs/extra.css b/docs/extra.css index 1bdba5a13..6a95f356a 100644 --- a/docs/extra.css +++ b/docs/extra.css @@ -1,4 +1,11 @@ -/* Custom table styling */ +/* Images */ +img { + display: block; + margin-left: auto; + margin-right: auto; +} + +/* Tables */ table { margin-bottom: 24px; width: 100%; diff --git a/docs/installation/4-http-daemon.md b/docs/installation/4-http-daemon.md index 9124354cf..b93bdc3ef 100644 --- a/docs/installation/4-http-daemon.md +++ b/docs/installation/4-http-daemon.md @@ -72,7 +72,7 @@ Finally, ensure that the required Apache modules are enabled, enable the `netbox !!! note Certain components of NetBox (such as the display of rack elevation diagrams) rely on the use of embedded objects. Ensure that your HTTP server configuration does not override the `X-Frame-Options` response header set by NetBox. -## gunicorn Configuration +## Gunicorn Configuration Copy `/opt/netbox/contrib/gunicorn.py` to `/opt/netbox/gunicorn.py`. (We make a copy of this file to ensure that any changes to it do not get overwritten by a future upgrade.) @@ -81,7 +81,7 @@ Copy `/opt/netbox/contrib/gunicorn.py` to `/opt/netbox/gunicorn.py`. (We make a # cp contrib/gunicorn.py /opt/netbox/gunicorn.py ``` -You may wish to edit this file to change the bound IP address or port number, or to make performance-related adjustments. +You may wish to edit this file to change the bound IP address or port number, or to make performance-related adjustments. See [the Gunicorn documentation](https://docs.gunicorn.org/en/stable/configure.html) for the available configuration parameters. ## systemd Configuration @@ -101,7 +101,7 @@ Then, start the `netbox` and `netbox-rq` services and enable them to initiate at You can use the command `systemctl status netbox` to verify that the WSGI service is running: -``` +```no-highlight # systemctl status netbox.service ● netbox.service - NetBox WSGI Service Loaded: loaded (/etc/systemd/system/netbox.service; enabled; vendor preset: enabled) diff --git a/docs/installation/index.md b/docs/installation/index.md index b3f63bcb6..4c904e953 100644 --- a/docs/installation/index.md +++ b/docs/installation/index.md @@ -8,6 +8,10 @@ The following sections detail how to set up a new instance of NetBox: 4. [HTTP daemon](4-http-daemon.md) 5. [LDAP authentication](5-ldap.md) (optional) +Below is a simplified overview of the NetBox application stack for reference: + +![NetBox UI as seen by a non-authenticated user](../media/installation/netbox_application_stack.png) + ## Upgrading If you are upgrading from an existing installation, please consult the [upgrading guide](upgrading.md). diff --git a/docs/media/installation/netbox_application_stack.png b/docs/media/installation/netbox_application_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..56de2070aca1f3ea9c17316b0ff97e190454915a GIT binary patch literal 25833 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νsinlw@=3!;IE#sY)^}*tZXfeh3)#7 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 JreXcx{{dNYfo1>z literal 0 HcmV?d00001