GithubHelp home page GithubHelp logo

nginx / unit-docs Goto Github PK

View Code? Open in Web Editor NEW
49.0 49.0 97.0 11.54 MB

NGINX Unit's official website and documentation

Home Page: https://unit.nginx.org

License: Creative Commons Attribution 4.0 International

Makefile 2.38% Python 50.58% HTML 7.88% CSS 20.29% JavaScript 10.04% Dockerfile 8.82%

unit-docs's People

Contributors

4141done avatar ac000 avatar andrey-zelenkov avatar andypost avatar callahad avatar danielledeleo avatar dean-coakley avatar defanator avatar feifeiiiiiiiiiii avatar fzoske avatar hpello avatar igorsysoev avatar jamim avatar javorszky avatar jcahilltorre avatar jputrino avatar lcrilly avatar m0nclous avatar mar0x avatar nshadrin avatar osokin avatar pavlusha311245 avatar redtalksbot avatar thresheek avatar tippexs avatar vbart avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unit-docs's Issues

Update Plone how-to

Issue #80 revealed that the Plone docs have changed, and there appears to have been a major release since we wrote our how-to. We should verify that our Plone how-to still works as written and update these broken links.

# from 'make check'

howto/plone.rst:20: [https://docs.plone.org/manage/installing/installation.html] (404 Client Error: Not Found for url: https://6.docs.plone.org/manage/installing/installation.html)
howto/plone.rst:1: [https://docs.plone.org/manage/installing/requirements.html] (404 Client Error: Not Found for url: https://6.docs.plone.org/manage/installing/requirements.html)

NJS should be njs

njs needs to be lowercase in the docs, confirmed by Yaroslav Zhuravlev

Our bundled copy of Open Sans doesn't include italics or bold weights

Our copy of OpenSans at _static/OpenSans.woff2 only has the regular variant. We need to include bold, italics, and probably bold+italic. Otherwise the browser has to guess at how those glyphs should look, and it does not do a good job.

Our @font-face rules are in source/theme/layout.html

More details in njs scripting how-to.

Hi,
I didn't see any example of how to import njs in the configuration, let me know if I missed it.
For example, here's my demo:

{
    "settings": {
        "js_module": "http"
    },

Based on it, I'd suggesting showing an full example in https://unit.nginx.org/scripting/#examples, for example:

{
    "settings": {
        "js_module": "http"
    },
    "listeners": {
        "*:8080": {
            "pass": "`routes/${http.route(headers)}`"
        }
    },
    "routes": {
        "unauthorized": [
            {
                "action": {
                    "return": 401
                }
            }
        ],

        "forbidden": [
            {
                "action": {
                    "return": 403
                }
            }
        ],

        "accept": [
            {
                "action": {
                    "return": 204
                }
            }
        ]
    }
}

Missed 'servers' in 'full example' section

Hi.

         "upstreams": {
            "rr-lb": {
                "192.168.1.100:8080": { },
                "192.168.1.101:8080": {
                    "weight": 2
                }
            }
        },

It seems the servers was missed.

        "upstreams": {
            "rr-lb": {
                "servers": {
                      "192.168.1.100:8080": { },
                      "192.168.1.101:8080": {
                            "weight": 2
                       }
                 }
            }
        },

install from Tarball

I have run the install process on a raspberry pi to have a play before looking at work, but have hit some issues.

  1. Configuring Sources - needs to have where to install unit to with --prefix
  2. missing any sort of example config to work from
  3. missing any init script for ether initd for systemd

Without #1 I cant get the make install to complete
Without #3 I dont know how to start unit and what options to fill in

Could the documents be updated to help?

Signature in security.txt is expired

unit-docs/security.txt

Lines 12 to 14 in 1cb3f71

Encryption: https://nginx.org/keys/thresh.key
Expires: 2024-01-01T00:00:00.000Z
Policy: https://www.first.org/cvss/v3.1/specification-document
The same file also exists in nginx/unit/security.txt

It appears the signature expired at the beginning of the year. From what I can tell, this practice isn't done elsewhere within NGINX (.org or .com)—I'm not sure about other F5 projects.

I see a few different ways forward:

  • a) Create an automated process to resign the security notice on a regular interval
  • b) Make it expire more quickly so that someone manually re-signs the notice so that it isn't forgotten (perhaps with automated reminder emails)
  • c) Remove the cryptographic signature

See https://securitytxt.org/ for what this file is for and the excellent rationale behind it.

Update Review Board how-to

Issue #80 revealed that the Review Board docs have changed. We should verify that our how-to still works as written and update the broken links.

# from 'make check'
howto/reviewboard.rst:51: [https://www.reviewboard.org/docs/manual/dev/admin/installation/creating-sites/#changing-permissions] (Anchor 'changing-permissions' not found)
howto/reviewboard.rst:1: [https://www.reviewboard.org/docs/manual/dev/admin/installation/linux/#before-you-begin] (Anchor 'before-you-begin' not found)
howto/reviewboard.rst:23: [https://www.reviewboard.org/docs/manual/dev/admin/installation/linux/#installing-review-board] (Anchor 'installing-review-board' not found)

Online version or Docker Hub

I would like to see OpenAPI documentation in Swagger online, or at least have a docker image on dockerhub so I don't have to build it myself

image

Does 30x really require a Location header?

Regarding the following docs:

https://github.com/nginx/unit-docs/blob/85744c8a1de8a8805950562cbecc4a40dde3af28/source/configuration.rst#instant-responses-redirects

$ grep -rn -B1 'required if the'
source/configuration.rst-1976-   * - :samp:`location`
source/configuration.rst:1977:     - URI, required if the :samp:`return` value implies redirection.

The current behavior of Unit is that the "location" URI is optional. The following is allowed:

"action": {
    "return": 301
}

Also, the current RFC doesn't seem to explicitly require (or I couldn't find it) that a Location header is used for 30x redirects:
https://www.rfc-editor.org/rfc/rfc7231#section-7.1.2

Should we reword that?

See also: nginx/unit#674

Unit 1.32.0 Release

We are about launching Unit 1.32.0 and this requires some changes in our Docs as well. This Task-List is to keep track of the changes need and link the resulting PRs.

Release 1.32.0

Meta-Data

  • Version String: 1.32.0
  • Date: Feb 27, 2024

News Items and Overview Page

  • Add a News Item to News / 2024 / Unit 1.32.0 Released.
  • Add an News Item to News - Unit 1.32.0 Released / Version 1.32.0 adds support for the WebAssembly Component Model / WASI 0.2 APIs, access Unit variables from NJS Scripting, conditional access logging and more! Details

Unit Variable Updates

  • Add the new Variable request_id to the Variables page. Text should be something like: contains a string that is formed using random data and can be used as a unique request identifier.

Conditional Access Logging

Docker

  • Validate why Versions are not displayed anymore. See #105

Startup-Shutdown

NJS Updates

  • Bump NJS Version to 0.8.2 in Scripting . We have to be clear in the messag that 0.8.2 is the only version that will be supported by 1.32.0.
  • On Scripting we are referencing to njs. We should be more clear an spell it out as NGINX JavaScript "njs".
  • Change the overall messaging on https://unit.nginx.org/scripting/#scripting
    • Remove Some request properties are exposed as njs objects or scalars. All Variables from https://unit.nginx.org/configuration/#variables can be used using the vars Object inside NJS. Reference to the commit message nginx/unit#1024 (review)
    • Add if to the list ob places where NJS can be used.
    • Add / Change the Examples on Scripting to reflect the use of the new variables using vars.method for example.

WASM Updates

Wrong example given in "Customizing Language Versions in Docker Images"

In the "Customizing Language Versions in Docker Images" examples section

git clone https://github.com/nginx/unit

cd unit

git checkout 1.31.1  # Optional; use to choose a specific Unit version

cd pkg/docker/

make build-python3.10 VERSION_python=3.10

There is a mention of VERSION_python. In the Makefile however there is VERSIONS_python (plural). Just following the example was not working for me.

ERROR-Case:

$:~/workspace/nginx/unit/unit/pkg/docker$ make build-php8.3.0RC6 VERSION_php=8.3.0RC6 VARIANT_php=cli-bullseye CONFIGURE_php=php INSTALL_php=php-install RUN_php=ldconfig MODULE_PREBUILD_php=/bin/true
===> Building Dockerfile.php8.3.0RC6
cat template.Dockerfile | sed \
                -e 's,@@VERSION@@,1.31.1,g' \
                -e 's,@@PATCHLEVEL@@,1,g' \
                -e 's,@@CONTAINER@@,,g' \
                -e 's,@@CONFIGURE@@,,g' \
                -e 's,@@INSTALL@@,,g' \
                -e 's,@@RUN@@,,g' \
                -e 's,@@MODULE_PREBUILD@@,,g' \
                -e 's,@@MODULE@@,php8.3.0RC6,g' \
                > Dockerfile.php8.3.0RC6
docker pull
"docker pull" requires exactly 1 argument.
See 'docker pull --help'.

Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Download an image from a registry
make: *** [Makefile:131: build-php8.3.0RC6] Error 1

CHANGING to VERSIONS_php

$make build-php8.3.0RC6 VERSIONS_php=8.3.0RC6 VARIANT_php=cli-bullseye CONFIGURE_php=php INSTALL_php=php-install RUN_php=ldconfig MODULE_PREBUILD_php=/bin/true
docker pull php:8.3.0RC6-cli-bullseye

We have to update the documentation to reflect the VERSIONS_ option.

MIME filtering doesn't explain non-matching behavior (403)

The MIME filtering docs explains how the matching works but doesn't explain what happens when a non-matching MIME type is encountered.

One might assume that the entire route is then not matched, even though this happens in the action object.

The 1.24.0 news item explains that a HTTP 403 (forbidden) response is sent for non-matching MIME types.

This is critical information and should be easy to discover without resorting to a try-it-and-see approach.

Lots of broken links

Update (Feb 12), after #96

Of the broken links I have identified 15 false positives:

(click to expand)
# localhost examples
howto/jira.rst:116: [http://localhost/jira]
howto/roundcube.rst:63: [http://localhost/installer/]
howto/bugzilla.rst:80: [http://localhost]
howto/mediawiki.rst:127: [http://localhost/mw-config/index.php]

# present on live site (only fails locally)
howto/security.rst:19: [/CHANGES.txt] ()
index.rst:31: [/rss.xml] ()
news/2023/unit-1.31.1-released.rst:71: [../../../CHANGES.txt] ()

# GitHub anchors that require JavaScript (I manually verified these are all present)
howto/responder.rst:36: [https://github.com/kennethreitz/responder/blob/c6f3a7364cfa79805b0d51eea011fe34d9bd331a/responder/api.py#L501] (Anchor 'L501' not found)
news/2022/unit-1.27.0-released.rst:166: [https://github.com/nginx/unit#readme] (Anchor 'readme' not found)
howto/opengrok.rst:22: [https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok#step2---deploy-the-web-application] (Anchor 'step2---deploy-the-web-application' not found)
howto/roundcube.rst:71: [https://github.com/roundcube/roundcubemail/wiki/Installation#protect-your-installation] (Anchor 'protect-your-installation' not found)
howto/roundcube.rst:63: [https://github.com/roundcube/roundcubemail/wiki/Installation#configuring-roundcube] (Anchor 'configuring-roundcube' not found)
howto/roundcube.rst:1: [https://github.com/roundcube/roundcubemail/wiki/Installation#install-dependencies] (Anchor 'install-dependencies' not found)
howto/datasette.rst:18: [https://github.com/simonw/datasette/blob/4f7c0ebd85ccd8c1853d7aa0147628f7c1b749cc/datasette/app.py#L169] (Anchor 'L169' not found)

# user agent block
news/2018/unit-1.0-released.rst:9: [https://www.un.org/en/observances/human-spaceflight-day] (403 Client Error: Forbidden for url: https://www.un.org/en/observances/human-spaceflight-day)

And 8 links are still broken:

# missing/renamed anchors
news/2022/unit-cve-no-impact.rst:7: [https://nvd.nist.gov/vuln/detail/CVE-2022-40674#vulnCurrentDescriptionTitle] (Anchor 'vulnCurrentDescriptionTitle' not found)
news/2018/unit-beta-0.6-released.rst:53: [https://unit.nginx.org/installation/#precompiled-packages] (Anchor 'precompiled-packages' not found)
howto/security.rst:731: [https://www.nginx.com/blog/nginx-unit-updates-for-summer-2021-now-available/#Static-Content:-Chrooting-and-Path-Restrictions] (Anchor 'Static-Content:-Chrooting-and-Path-Restrictions' not found)

# redirects to a newer version of the docs
howto/reviewboard.rst:51: [https://www.reviewboard.org/docs/manual/dev/admin/installation/creating-sites/#changing-permissions] (Anchor 'changing-permissions' not found)
howto/reviewboard.rst:1: [https://www.reviewboard.org/docs/manual/dev/admin/installation/linux/#before-you-begin] (Anchor 'before-you-begin' not found)
howto/reviewboard.rst:23: [https://www.reviewboard.org/docs/manual/dev/admin/installation/linux/#installing-review-board] (Anchor 'installing-review-board' not found)

# actual 404, docs appear to have moved
howto/plone.rst:20: [https://docs.plone.org/manage/installing/installation.html] (404 Client Error: Not Found for url: https://6.docs.plone.org/manage/installing/installation.html)
howto/plone.rst:1: [https://docs.plone.org/manage/installing/requirements.html] (404 Client Error: Not Found for url: https://6.docs.plone.org/manage/installing/requirements.html)

Of these, the first three NGINX-related anchors are easy fixes. I will create separate issues to review our Plone and ReviewBoard examples to make sure those how-tos are up-to-date.

Previous link check (Jan 11) Running `make check` I found 37 broken links:
(  howto/security: line   19) broken    /CHANGES.txt -
(           index: line   31) broken    /rss.xml -
(news/2023/unit-1.31.1-released: line   71) broken    ../../../CHANGES.txt -
(  howto/bugzilla: line   80) broken    http://localhost - HTTPConnectionPool(host='localhost', port=80): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x1052f6310>: Failed to establish a new connection: [Errno 61] Connection refused'))
(      howto/jira: line  116) broken    http://localhost/jira - HTTPConnectionPool(host='localhost', port=80): Max retries exceeded with url: /jira (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x1052effd0>: Failed to establish a new connection: [Errno 61] Connection refused'))
( howto/mediawiki: line  127) broken    http://localhost/mw-config/index.php - HTTPConnectionPool(host='localhost', port=80): Max retries exceeded with url: /mw-config/index.php (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x105d420d0>: Failed to establish a new connection: [Errno 61] Connection refused'))
( howto/roundcube: line   63) broken    http://localhost/installer/ - HTTPConnectionPool(host='localhost', port=80): Max retries exceeded with url: /installer/ (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x105d78990>: Failed to establish a new connection: [Errno 61] Connection refused'))
(   configuration: line  126) broken    https://datatracker.ietf.org/doc/html/rfc3986#section-2-1 - Anchor 'section-2-1' not found
(   configuration: line 1797) broken    https://datatracker.ietf.org/doc/html/rfc3986#section-3-3 - Anchor 'section-3-3' not found
(   configuration: line  861) broken    https://datatracker.ietf.org/doc/html/rfc3986#section-3-4 - Anchor 'section-3-4' not found
(   configuration: line  924) broken    https://datatracker.ietf.org/doc/html/rfc3986#section-4-2 - Anchor 'section-4-2' not found
(   configuration: line 1415) broken    https://datatracker.ietf.org/doc/html/rfc4291#section-2-3 - Anchor 'section-2-3' not found
(   configuration: line  881) broken    https://datatracker.ietf.org/doc/html/rfc9110#section-6-3 - Anchor 'section-6-3' not found
(   configuration: line  887) broken    https://datatracker.ietf.org/doc/html/rfc9110#section-7-2 - Anchor 'section-7-2' not found
(     howto/plone: line   20) broken    https://docs.plone.org/manage/installing/installation.html - 404 Client Error: Not Found for url: https://6.docs.plone.org/manage/installing/installation.html
(     howto/plone: line    1) broken    https://docs.plone.org/manage/installing/requirements.html - 404 Client Error: Not Found for url: https://6.docs.plone.org/manage/installing/requirements.html
(news/2022/unit-1.27.0-released: line  166) broken    https://github.com/nginx/unit#readme - Anchor 'readme' not found
(  howto/opengrok: line   22) broken    https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok#step2---deploy-the-web-application - Anchor 'step2---deploy-the-web-application' not found
( howto/roundcube: line    1) broken    https://github.com/roundcube/roundcubemail/wiki/Installation#install-dependencies - Anchor 'install-dependencies' not found
( howto/roundcube: line   63) broken    https://github.com/roundcube/roundcubemail/wiki/Installation#configuring-roundcube - Anchor 'configuring-roundcube' not found
( howto/roundcube: line   71) broken    https://github.com/roundcube/roundcubemail/wiki/Installation#protect-your-installation - Anchor 'protect-your-installation' not found
( howto/datasette: line   18) broken    https://github.com/simonw/datasette/blob/4f7c0ebd85ccd8c1853d7aa0147628f7c1b749cc/datasette/app.py#L169 - Anchor 'L169' not found
( howto/responder: line   36) broken    https://github.com/taoufik07/responder/blob/103816e27ae928d42ed850190472480124ba90e3/responder/api.py#L360 - Anchor 'L360' not found
(       community: line   25) broken    https://hg.nginx.org/unit/file/tip/LICENSE - 403 Client Error: Forbidden for url: https://hg.nginx.org/unit/file/tip/LICENSE
(   howto/modules: line  114) broken    https://hg.nginx.org/unit/file/tip/pkg/ - 403 Client Error: Forbidden for url: https://hg.nginx.org/unit/file/tip/pkg/
(       community: line   56) broken    https://hg.nginx.org/unit/file/tip/tools - 403 Client Error: Forbidden for url: https://hg.nginx.org/unit/file/tip/tools
(   howto/laravel: line   16) broken    https://laravel.com/docs/installation#installation-via-composer - Anchor 'installation-via-composer' not found
(    installation: line 2294) broken    https://openports.se/www/unit - 404 Client Error: Not Found for url: https://openports.se/www/unit
(news/2022/unit-cve-no-impact: line    7) broken    https://nvd.nist.gov/vuln/detail/CVE-2022-40674#vulnCurrentDescriptionTitle - Anchor 'vulnCurrentDescriptionTitle' not found
( howto/responder: line    3) broken    https://responder.kennethreitz.org/en/latest/#installing-responder - 404 Client Error: Not Found for url: https://responder.kennethreitz.org/en/latest/
( howto/responder: line   18) broken    https://responder.kennethreitz.org/en/latest/quickstart.html#declare-a-web-service - 404 Client Error: Not Found for url: https://responder.kennethreitz.org/en/latest/quickstart.html
( howto/responder: line   11) broken    https://responder.kennethreitz.org/en/latest/# - 404 Client Error: Not Found for url: https://responder.kennethreitz.org/en/latest/
(news/2018/unit-beta-0.6-released: line   53) broken    https://unit.nginx.org/installation/#precompiled-packages - Anchor 'precompiled-packages' not found
(  howto/security: line  731) broken    https://www.nginx.com/blog/nginx-unit-updates-for-summer-2021-now-available/#Static-Content:-Chrooting-and-Path-Restrictions - Anchor 'Static-Content:-Chrooting-and-Path-Restrictions' not found
(howto/reviewboard: line   51) broken    https://www.reviewboard.org/docs/manual/dev/admin/installation/creating-sites/#changing-permissions - Anchor 'changing-permissions' not found
(howto/reviewboard: line    1) broken    https://www.reviewboard.org/docs/manual/dev/admin/installation/linux/#before-you-begin - Anchor 'before-you-begin' not found
(howto/reviewboard: line   23) broken    https://www.reviewboard.org/docs/manual/dev/admin/installation/linux/#installing-review-board - Anchor 'installing-review-board' not found

Specify supported njs version.

https://unit.nginx.org/scripting/

Warning

Unit 1.31+ doesn’t support pre-0.8 njs [versions](https://nginx.org/en/docs/njs/changes.html); please update.

Because of the change of njs 0.8.2, Unit doesn't support this version, it looks like we need to specify which versions we support.

Invalid control socket path with Homebrew installation

I followed these instructions for installing unit via Homebrew. However, the socket is never created at the expected control path, resulting in an error connecting to the server:

kagold@Kates-MacBook-Pro unit % curl -X PUT --data-binary @config.json --unix-socket /usr/local/var/run/unit/control.sock http://localhost/config/applications
curl: (7) Couldn't connect to server

Instead, the socket was created at /opt/homebrew/var/run/unit/control.sock. Querying unit with that control socket succeeds. It appears that the docs may need to be updated.

My device info: macOS 12.6, Apple M1 Pro (arm)

Homepage installation script one-liner

Part of improving the first touch experience. (See #137)

The NGINX Unit home page should prominently feature an easy way to get started with Unit.

Summary: we need a script that installs a CLI to control Unit and Unit itself. Our current scripts and guides are not suited to a one-liner.

Inspiration

rustup.rs offers a particularly spartan way to get going.

rustup.rs screenshot

Several ideas have been floated so far in private discussions in Unit team as to the best way to go from zero to serving requests with Unit.

Docker

Many production deployments of Unit use Docker, and it also happens to be a relatively simple way to get Unit onto developers' computers. We already have a fairly in-depth guide to running Unit in Docker, but it's not simple enough as is to be put on the home page as a one liner.

Current friction points when running Unit inside of Docker:

  • Control socket requires running curl inside the container (or restarting the container to pick up modified config file)
  • Users must manually compose images to get certain combinations of modules to work (PHP+Python+Wasm, e.g.)
    • We used to provide -full images to get around this.
  • Users have to get their application code into the container (usually a Docker --mount)

What this could look like today
rustup.rs screenshot

Questions:

  • Should these commands be hidden inside of a curl ... | sh one-liner? Is that helpful?
  • Can this example be simpler? (Suggestions welcome)
  • Would it be more helpful to show users a lightly customized Dockerfile example instead?

Personally, I don't think the above image presents a great first touch experience, and I'd be thrown off if all that happened from a shell piped script.

Local install

These options could be displayed intelligently on the home page by reading the client user agent.

On macOS with Homebrew, we already have a very good one-liner:

brew install nginx/unit/unit

On Linux (including WSL), we have our existing setup-unit script:

wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit
sudo ./setup-unit repo-config
# ... apt, yum, etc.

What's missing is a reasonable way to run something in Unit quickly.

Proposed Solution

curl --proto '=https' --tlsv1.2 -sSf https://<SOME_URL>/setup.sh | sh

What this script should do is out of scope for this issue. See (todo: link to CLI issue)

A better first touch experience

This issue serves as a place discuss and create tasks related to improving the first touch experience. Recent on-the-ground experiences at Wasm I/O with @tippexs and @danielledeleo have highlighted the need for an improved "first touch" experience for new NGINX Unit users.

Tasks need to be defined and issues created for the following:

  • Homepage installation one-liner (see rustup, Homebrew, etc.)
  • Simplified installation page
  • New quickstart section/page

Loosely defined ideas that may require changes to the nginx/unit repo:

  • Command line alternatives to writing Unit configurations in JSON (tedious and slow)
  • Unit's default behaviour to launch in daemon mode can be surprising to new users
  • Make running Unit as an unprivileged user easier (automatic --flag overrides for .pid, .log, and .sock files)

Graceful upstream updates (connection draining)

It's not clear how Unit handles upstream updates. What happens with already established connections when a corresponding upstream server is removed from the config? I guess these connections will be closed. If so, is it possible to enable graceful connection draining instead? How?

It would be nice to have an example showing how to implement graceful upstream updates for long-living connections.

Main use case: zero-downtime deployments & rolling updates for websocket servers.

Integrate unit-docs with Netlify

Right now the Unit docs are manually built and deployed; we have an account with Netlify we can use to automate this, and get nice things like PR previews.

  • Hook up Netlify to this repo
  • Ensure deploy previews are enabled and working
  • Create DNS record for sources.nginx.org
  • Make Unit releases available on sources.nginx.org/unit
  • Update #90 to reflect new canonical source tarball location
  • Flip DNS for unit.nginx.org to point to our Netlify-hosted docs

A couple extra tasks:

  • Decide what to do with sitemap.xml (Google no longer accepts sitemap pings)
  • Edit Makefile to copy over security.txt before deployment

cc: @Jcahilltorre

Unit-PHP + Nginx + NextCloud

It would be nice to have a working example of configuration for NextCloud installation using Unit-PHP and Nginx.

Revert the website to light mode

The website design was switched to dark mode. However, the default experience for documentation websites is light mode. Please consider reverting the design to light mode, keeping the theme consistent with any other documentation website of NGINX and F5.

Inconsistent / Wrong formatting of CLI commands

On various places on the Website we have an inconsistency about the formatting of commands. Examples:

image

image

Sometimes CLI commands are just highlighted sometimes they are just italic. But there is no consistency.
I would like to implement the following: "if it's going in a CLI use inline code formatting. if it's not going in a CLI, don't"

As an example, based on the NGINX Docs style guide, it should look like this for ALL cli commands.

image

External Branding: Check for spelling and casing

In our docs, we are using brand names for reference. Some of them are outdated or incorrect.

Examples:
image

ARM is Arm.

This issue will be the base for a PR that will hold commits to fix these kind of issues.

Roadmap board for unit repo

A roadmap-like project board is required to keep track of our release plans.

Most straightforward implementation would be a Basic Kanban with minor adjustments; the issues that go on the board should be created in the unit-docs repo (to avoid cluttering and misunderstanding in the main repo) and labeled 'roadmap' by the team.

Extra steps requred to run Unit as root on macOS

To summarise nginx/unit#970, in order to run Unit as root under macOS you need to do the following

$ export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
$ sudo --preserve-env=OBJC_DISABLE_INITIALIZE_FORK_SAFETY /path/to/unitd args ...

If there's a suitable place to mention this...

Unable to sychronize cache for repo 'unit'

Using fedora 30

Added the repo file, sudo install attempt.

Failed at synchronization.

Tried the url in a browser, returns 404 (New to all this so may be normal).

However, fedora repo doesn't seem to work...

Small bug in setup-unit shell script on line 12 causing failure

Located under: https://unit.nginx.org/installation/#repo-install
This script: https://unit.nginx.org/_downloads/setup-unit

Script has small bug on line 12 causing the script to throw a syntax error:
./setup-unit: line 731: syntax error near unexpected token '}'
./setup-unit: line 731: '}'

Line 12 is: >&2 echo 'Your version of bash(1) isn't supported by this script.';
An extra open single quote is causing the bulk of the script to become a string

Line 12 should be: >&2 echo "Your version of bash(1) isn't supported by this script.";
Swapping out single quotes for double and the script executes perfectly on Debian 11.5

Can the theme be reused?

Hi @artemkonev,

I like the theme, can it be reused in other projects? What should be changed?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.