nginx / unit-docs Goto Github PK
View Code? Open in Web Editor NEWNGINX Unit's official website and documentation
Home Page: https://unit.nginx.org
License: Creative Commons Attribution 4.0 International
NGINX Unit's official website and documentation
Home Page: https://unit.nginx.org
License: Creative Commons Attribution 4.0 International
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
}
}
}
},
oh!, I think there is a typo in the docs then:
Originally posted by @tclesius in nginx/unit#1048 (comment)
The example on the website.
https://unit.nginx.org/scripting/
{
"routes": {
"entry": [
{
"action": {
"pass": "routes/`${http.route(headers)}`"
}
}
],
Change to this.
"pass": "`routes/${http.route(headers)}`"
It should start with `.
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.
Lines 12 to 14 in 1cb3f71
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:
See https://securitytxt.org/ for what this file is for and the excellent rationale behind it.
Hi @artemkonev,
I like the theme, can it be reused in other projects? What should be changed?
On https://unit.nginx.org/controlapi/#control-api there is a list of Objects available in the Control-API.
The NJS Module can be uploaded to js_modules
. This endpoint is missing.
/js_modules Responsible for [ JavaScript module management](https://unit.nginx.org/scripting/#scripting).
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.
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.
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.njs
. We should be more clear an spell it out as NGINX JavaScript "njs"
.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)if
to the list ob places where NJS can be used.vars.method
for example.WebAssembly Components WASI 0.2 wasi-http
to the list of App languages and platformswasmtime for WebAssembly Support
..unit-wasm module or during a source build
with ...language module or during a source build
. Links can stay in place.The changelog.txt file in the docs is not the latest version.
AC:
Get the new file, upload it and rebuild the docs.
@artemkonev @mar0x
Is the option "shm" missing in the document?
https://unit.nginx.org/configuration/#request-limits
Update (Feb 12), after #96
Of the broken links I have identified 15 false positives:
# 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.
( 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
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:
Loosely defined ideas that may require changes to the nginx/unit repo:
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
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)
The use case and solution is described here
It would be nice to mention this after we talk about the file
configuration option for PHP at https://unit.nginx.org/configuration/#php
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)
I suggest to update the documentation and replace all curl queries with unitc tool. Or add tabs and provide 2 curl and unitc options
What do you think @lcrilly?
Line 16 in 582152e
There's a missing cd unit-docs
there.
These anchors don't work as intended when the > Enabling WebAssembly section is collapsed, which it is by default.
I don't think these need to be linked to from the sidebar, so we can just remove the :toc:
line here:
unit-docs/source/howto/source.rst
Lines 147 to 154 in dcd2d7b
Regarding the following docs:
$ 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
The "Docker Images" link does not show proper versions of the image:
Not sure if this is on purpose, but http://unit.nginx.org/ does not redirect to https://unit.nginx.org/
https://unit.nginx.org/community/ should remove mention of Mercurial (or switch the definition of which repo is the mirror).
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.
I suggest to change information about Slack channel, because now main stream of question located on Github discusstions.
Link here: https://unit.nginx.org/community/#contribution
It would be nice to have a working example of https://docs.aiohttp.org/en/stable/web.html
I already tried with basic asgi protocol approach, but it is not working.
aio-libs/aiohttp#7017
A roadmap-like project board is required to keep track of our release plans.
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...
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.
On https://unit.nginx.org/howto/source/#modules-webassembly
There is wrong formatting in the build instructions.
The configure command should be formatted correctly!
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.
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
}
}
]
}
}
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.
The steps in the HOW-TO > App Samples > WebAssembly doc (source ) include cloning a 3rd party repo that we have no control over (potential security risk if a malicious agent would modify the contents of that repo).
We should replace this example with our own solution.
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 needs to be lowercase in the docs, confirmed by Yaroslav Zhuravlev
As noted in nginx/unit#195 (comment) the support for SNI matching and arrays of certificate bundles is missing from the main 'Certificates' documentation.
I have run the install process on a raspberry pi to have a play before looking at work, but have hit some issues.
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?
I love nginx-unit and the docs are good and clear; a search engine (such as https://docs.nginx.com/nginx/admin-guide/) would be a huge improvement and allow more users.
It would be nice to have a working example of configuration for NextCloud installation using Unit-PHP and Nginx.
On https://unit.nginx.org/howto/source/#startup-and-shutdown we should reflect the new options to change the permissions of the Unit Control Socket introduced with nginx/unit#1000
The new options are:
--control-mode
- set mode of the control API socket - default 0600--control-user
User - set the owner of the control API socket--control-group
Group - set the group of the control API socketUsing 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...
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.
rustup.rs offers a particularly spartan way to get going.
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.
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:
unitc
handles this problem in a clever way-full
images to get around this.What this could look like today
Questions:
curl ... | sh
one-liner? Is that helpful?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.
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.
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)
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.
A couple extra tasks:
cc: @Jcahilltorre
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
On various places on the Website we have an inconsistency about the formatting of commands
. Examples:
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.