This is an automated email from the ASF dual-hosted git repository. urfree pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/pulsar-site.git
commit e174ec9ee4288f9f8db9aabb25369e6470cde5b5 Author: Li Li <[email protected]> AuthorDate: Sat May 7 16:36:13 2022 +0800 sync website from pulsar --- site2/website/data/resources.js | 22 ++ site2/website/package.json | 3 +- site2/website/pages/en/contact.js | 16 +- site2/website/pages/en/download.js | 10 +- site2/website/pages/en/index.js | 1 - site2/website/pages/en/resources.js | 20 ++ site2/website/scripts/replace.js | 6 +- site2/website/siteConfig.js | 79 ++++--- .../versioned_docs/version-2.5.1/standalone.md | 230 --------------------- 9 files changed, 104 insertions(+), 283 deletions(-) diff --git a/site2/website/data/resources.js b/site2/website/data/resources.js index 071da4a4c4..2158c74f4e 100644 --- a/site2/website/data/resources.js +++ b/site2/website/data/resources.js @@ -1,4 +1,26 @@ module.exports = { + books: [ + { + book: 'Apache Pulsar in Action', + author: "David Kjerrumgaard", + link: 'https://www.manning.com/books/apache-pulsar-in-action/' + }, + { + book: 'Mastering Apache Pulsar', + author: "Jowanza Joseph", + link: 'https://www.oreilly.com/library/view/mastering-apache-pulsar/9781492084891/' + }, + { + book: 'Cloud-Native Microservices with Apache Pulsar', + author: "Rahul Sharma, Mohammad Atyab", + link: 'https://link.springer.com/book/10.1007/978-1-4842-7839-0' + }, + { + book: '深入解析 Apache Pulsar(Chinese Book, which means "Deep Dive into Apache Pulsar")', + author: "Lin Lin", + link: 'https://www.phei.com.cn/module/goods/wssd_content.jsp?bookid=59310' + } + ], articles: [ { forum: 'Pedro Silvestre', diff --git a/site2/website/package.json b/site2/website/package.json index f28977f241..e0cd20be17 100644 --- a/site2/website/package.json +++ b/site2/website/package.json @@ -34,5 +34,6 @@ "jquery": "^3.1.1", "jquery.scrollto": "^2.1.2", "node-static": "^0.7.9" - } + }, + "license": "Apache-2.0" } diff --git a/site2/website/pages/en/contact.js b/site2/website/pages/en/contact.js index 57f6aba8e3..24acede177 100644 --- a/site2/website/pages/en/contact.js +++ b/site2/website/pages/en/contact.js @@ -50,9 +50,9 @@ class Contact extends React.Component { There are many ways to get help from the Apache Pulsar community. The mailing lists are the primary place where all Pulsar committers are present. Bugs and feature requests can either be discussed on the dev mailing list or - by opening an issue on - <a href="https://github.com/apache/pulsar/" target="_blank">GitHub</a>. - </translate></p> + by opening an issue on</translate> + <a href="https://github.com/apache/pulsar/" target="_blank"> GitHub</a>. + </p> <h2><translate>Mailing Lists</translate></h2> <table className="versions"> @@ -79,6 +79,16 @@ class Contact extends React.Component { )} </tbody> </table> + <h2><translate>Reporting Security Vulnerabilities</translate></h2> + <p><translate> + The current process for reporting vulnerabilities is outlined here: </translate> + <a href="https://www.apache.org/security/" target="_blank"> Apache Security</a> + <translate>. When reporting a vulnerability to</translate> + <a href="mailto:[email protected]" target="_blank"> [email protected]</a> + <translate>, you can copy your email to </translate> + <a href="mailto:[email protected]" target="_blank"> [email protected] </a> + <translate> to send your report to the Apache Pulsar Project Management Committee. This is a private mailing list.</translate> + </p> <h2><translate>Stack Overflow</translate></h2> <p><translate> diff --git a/site2/website/pages/en/download.js b/site2/website/pages/en/download.js index 3dbb232620..65a802f83d 100644 --- a/site2/website/pages/en/download.js +++ b/site2/website/pages/en/download.js @@ -28,11 +28,11 @@ function getLatestAdaptersMirrorUrl(version) { } function distUrl(version, type) { - return `https://www.apache.org/dist/pulsar/pulsar-${version}/apache-pulsar-${version}-${type}.tar.gz` + return `https://downloads.apache.org/pulsar/pulsar-${version}/apache-pulsar-${version}-${type}.tar.gz` } function distOffloadersUrl(version) { - return `https://www.apache.org/dist/pulsar/pulsar-${version}/apache-pulsar-offloaders-${version}-bin.tar.gz` + return `https://downloads.apache.org//pulsar/pulsar-${version}/apache-pulsar-offloaders-${version}-bin.tar.gz` } function distAdaptersUrl(version) { @@ -52,7 +52,7 @@ function pularManagerArchiveUrl(version, type) { } function connectorDistUrl(name, version) { - return `https://www.apache.org/dist/pulsar/pulsar-${version}/connectors/pulsar-io-${name}-${version}.nar` + return `https://downloads.apache.org/pulsar/pulsar-${version}/connectors/pulsar-io-${name}-${version}.nar` } function connectorDownloadUrl(name, version) { @@ -64,7 +64,7 @@ function getLatestPulsarManagerArchiveMirrorUrl(version, type) { } function pulsarManagerDistUrl(version, type) { - return `https://www.apache.org/dist/pulsar/pulsar-manager/pulsar-manager-${version}/apache-pulsar-manager-${version}-${type}.tar.gz` + return `https://downloads.apache.org/pulsar/pulsar-manager/pulsar-manager-${version}/apache-pulsar-manager-${version}-${type}.tar.gz` } class Download extends React.Component { @@ -204,7 +204,7 @@ class Download extends React.Component { <MarkdownBlock> You must [verify](https://www.apache.org/info/verification.html) the integrity of the downloaded files. We provide OpenPGP signatures for every release file. This signature should be matched against the - [KEYS](https://www.apache.org/dist/pulsar/KEYS) file which contains the OpenPGP keys of + [KEYS](https://downloads.apache.org/pulsar/KEYS) file which contains the OpenPGP keys of Pulsar's Release Managers. We also provide `SHA-512` checksums for every release file. After you download the file, you should calculate a checksum for your download, and make sure it is the same as ours. diff --git a/site2/website/pages/en/index.js b/site2/website/pages/en/index.js index de3ed123bc..a24fbeb72a 100755 --- a/site2/website/pages/en/index.js +++ b/site2/website/pages/en/index.js @@ -23,7 +23,6 @@ function docUrl(doc, language) { return siteConfig.baseUrl + 'docs/' + (language ? language + '/' : '') + doc; } - function pageUrl(page, language) { return siteConfig.baseUrl + (language ? language + '/' : '') + page; } diff --git a/site2/website/pages/en/resources.js b/site2/website/pages/en/resources.js index ebf2926685..9c5b89c17f 100644 --- a/site2/website/pages/en/resources.js +++ b/site2/website/pages/en/resources.js @@ -26,6 +26,26 @@ class Resources extends React.Component { <hr /> </header> + <h2><translate>Books</translate></h2> + <table className="versions"> + <thead> + <tr> + <th><translate>Book</translate></th> + <th><translate>Author</translate></th> + </tr> + </thead> + <tbody> + {resources.books.map( + (a, i) => ( + <tr key={i}> + <td><a href={a.link}>{a.book}</a></td> + <td>{a.author}</td> + </tr> + ) + )} + </tbody> + </table> + <h2><translate>Articles</translate></h2> <table className="versions"> <thead> diff --git a/site2/website/scripts/replace.js b/site2/website/scripts/replace.js index f843dfbc76..540ae51be9 100644 --- a/site2/website/scripts/replace.js +++ b/site2/website/scripts/replace.js @@ -36,9 +36,9 @@ function connectorReleaseUrl(version) { if (version.includes('incubating')) { return `https://archive.apache.org/dist/incubator/pulsar/pulsar-${version}/apache-pulsar-io-connectors-${version}-bin.tar.gz` } else if (majorVersion > 2 || (majorVersion == 2 && minorVersion >= 3)) { - return `https://archive.apache.org/dist/pulsar/pulsar-${version}/connectors`; + return `https://archive.apache.org/dist/pulsar/pulsar-${version}/connectors` } else { - return `https://archive.apache.org/dist/pulsar/pulsar-${version}/apache-pulsar-io-connectors-${version}-bin.tar.gz`; + return `https://archive.apache.org/dist/pulsar/pulsar-${version}/apache-pulsar-io-connectors-${version}-bin.tar.gz` } } @@ -92,7 +92,7 @@ function clientVersionUrl(version, type) { var versions = version.split('.') var majorVersion = parseInt(versions[0]) var minorVersion = parseInt(versions[1]) - if (majorVersion === 2 && minorVersion < 5) { + if ((majorVersion === 2 && minorVersion < 5) || (type === "python" && minorVersion >= 7)) { return `/api/` + type + `/` + version; } else if (majorVersion >= 2 && minorVersion >= 5) { return `/api/` + type + `/` + majorVersion + `.` + minorVersion + `.0` + `-SNAPSHOT` diff --git a/site2/website/siteConfig.js b/site2/website/siteConfig.js index 444f71b4b4..5607a6230b 100644 --- a/site2/website/siteConfig.js +++ b/site2/website/siteConfig.js @@ -102,9 +102,9 @@ const siteVariables = { }; const siteConfig = { - title: 'Apache Pulsar' /* title for your website */, + title: "Apache Pulsar" /* title for your website */, disableTitleTagline: true, - tagline: '', + tagline: "", url: url /* your website url */, baseUrl: baseUrl /* base url for your project */, // For github.io type URLs, you would set the url and baseUrl like: @@ -114,81 +114,82 @@ const siteConfig = { editUrl: `${githubUrl}/edit/master/site2/docs/`, // Used for publishing and more - projectName: 'pulsar', - organizationName: 'apache', + projectName: "pulsar", + organizationName: "apache", // For top-level user or org sites, the organization is still the same. // e.g., for the https://JoelMarcey.github.io site, it would be set like... // organizationName: 'JoelMarcey' // For no header links in the top nav bar -> headerLinks: [], headerLinks: [ - {doc: 'standalone', label: 'Docs'}, - {page: 'download', label: 'Download'}, - {doc: 'client-libraries', label: 'Clients'}, - {href: '#restapis', label: 'REST APIs'}, - {href: '#cli', label: 'Cli'}, - {blog: true, label: 'Blog'}, - {href: '#community', label: 'Community'}, - {href: '#apache', label: 'Apache'}, - { href: 'https://pulsar-next.staged.apache.org/', label: 'New Website' }, + { doc: "getting-started-standalone", label: "Docs" }, + { page: "download", label: "Download" }, + { doc: "client-libraries", label: "Clients" }, + { href: "#restapis", label: "REST APIs" }, + { href: "#cli", label: "Cli" }, + { blog: true, label: "Blog" }, + { href: "#community", label: "Community" }, + { href: "#apache", label: "Apache" }, + { + href: "https://pulsar-next.staged.apache.org/", + label: "New Website (Beta)", + }, // Determines search bar position among links //{ search: true }, // Determines language drop down position among links - { languages: true } + { languages: true }, ], // If you have users set above, you add it here: users: [], /* path to images for header/footer */ - headerIcon: 'img/pulsar.svg', - footerIcon: 'img/pulsar.svg', - favicon: 'img/pulsar.ico', + headerIcon: "img/pulsar.svg", + footerIcon: "img/pulsar.svg", + favicon: "img/pulsar.ico", algolia: { - apiKey: 'd226a455cecdd4bc18a554c1b47e5b52', - indexName: 'apache_pulsar', + apiKey: "d226a455cecdd4bc18a554c1b47e5b52", + indexName: "apache_pulsar", algoliaOptions: { - facetFilters: ['language:LANGUAGE', 'version:VERSION'], + facetFilters: ["language:LANGUAGE", "version:VERSION"], }, }, - gaTrackingId: 'UA-102219959-1', + gaTrackingId: "UA-102219959-1", /* colors for website */ colors: { - primaryColor: '#188fff', - secondaryColor: '#205C3B', + primaryColor: "#188fff", + secondaryColor: "#205C3B", }, - translationRecruitingLink: 'https://crowdin.com/project/apache-pulsar', + translationRecruitingLink: "https://crowdin.com/project/apache-pulsar", // This copyright info is used in /core/Footer.js and blog rss/atom feeds. copyright: - 'Copyright © ' + + "Copyright © " + new Date().getFullYear() + - ' The Apache Software Foundation. All Rights Reserved.' + - ' Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.', + " The Apache Software Foundation. All Rights Reserved." + + " Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.", highlight: { // Highlight.js theme to use for syntax highlighting in code blocks - theme: 'atom-one-dark', + theme: "atom-one-dark", }, // Add custom scripts here that would be placed in <script> tags scripts: [ - 'https://buttons.github.io/buttons.js', - 'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js', - `${baseUrl}js/custom.js` - ], - stylesheets: [ - `${baseUrl}css/code-blocks-buttons.css` + "https://buttons.github.io/buttons.js", + "https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js", + `${baseUrl}js/custom.js`, ], + stylesheets: [`${baseUrl}css/code-blocks-buttons.css`], /* On page navigation for the current documentation page */ - onPageNav: 'separate', + onPageNav: "separate", /* Open Graph and Twitter card images */ //ogImage: 'img/docusaurus.png', twitter: true, - twitterUsername: 'apache_pulsar', - twitterImage: 'img/pulsar.svg', + twitterUsername: "apache_pulsar", + twitterImage: "img/pulsar.svg", disableHeaderTitle: true, @@ -205,9 +206,7 @@ const siteConfig = { created at Yahoo! and now a top-level Apache Software Foundation project `, - markdownPlugins: [ - createVariableInjectionPlugin(siteVariables) - ], + markdownPlugins: [createVariableInjectionPlugin(siteVariables)], }; module.exports = siteConfig; diff --git a/site2/website/versioned_docs/version-2.5.1/standalone.md b/site2/website/versioned_docs/version-2.5.1/standalone.md deleted file mode 100644 index cff185c59a..0000000000 --- a/site2/website/versioned_docs/version-2.5.1/standalone.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -id: version-2.5.1-standalone -title: Set up a standalone Pulsar locally -sidebar_label: Run Pulsar locally -original_id: standalone ---- - -For local development and testing, you can run Pulsar in standalone mode on your machine. The standalone mode includes a Pulsar broker, the necessary ZooKeeper and BookKeeper components running inside of a single Java Virtual Machine (JVM) process. - -> #### Pulsar in production? -> If you're looking to run a full production Pulsar installation, see the [Deploying a Pulsar instance](deploy-bare-metal.md) guide. - -## Install Pulsar standalone - -This tutorial guides you through every step of the installation process. - -### System requirements - -Currently, Pulsar is available for 64-bit **macOS**, **Linux**, and **Windows**. To use Pulsar, you need to install 64-bit JRE/JDK 8 or later versions. - -> #### Tip -> By default, Pulsar allocates 2G JVM heap memory to start. It can be changed in `conf/pulsar_env.sh` file under `PULSAR_MEM`. This is extra options passed into JVM. - -> **Note** -> -> Broker is only supported on 64-bit JVM. - -### Install Pulsar using binary release - -To get started with Pulsar, download a binary tarball release in one of the following ways: - -* download from the Apache mirror (<a href="pulsar:binary_release_url" download>Pulsar {{pulsar:version}} binary release</a>) - -* download from the Pulsar [downloads page](pulsar:download_page_url) - -* download from the Pulsar [releases page](https://github.com/apache/pulsar/releases/latest) - -* use [wget](https://www.gnu.org/software/wget): - - ```shell - $ wget pulsar:binary_release_url - ``` - -After you download the tarball, untar it and use the `cd` command to navigate to the resulting directory: - -```bash -$ tar xvfz apache-pulsar-{{pulsar:version}}-bin.tar.gz -$ cd apache-pulsar-{{pulsar:version}} -``` - -#### What your package contains - -The Pulsar binary package initially contains the following directories: - -Directory | Contains -:---------|:-------- -`bin` | Pulsar's command-line tools, such as [`pulsar`](reference-cli-tools.md#pulsar) and [`pulsar-admin`](https://pulsar.apache.org/tools/pulsar-admin/). -`conf` | Configuration files for Pulsar, including [broker configuration](reference-configuration.md#broker), [ZooKeeper configuration](reference-configuration.md#zookeeper), and more. -`examples` | A Java JAR file containing [Pulsar Functions](functions-overview.md) example. -`lib` | The [JAR](https://en.wikipedia.org/wiki/JAR_(file_format)) files used by Pulsar. -`licenses` | License files, in the`.txt` form, for various components of the Pulsar [codebase](https://github.com/apache/pulsar). - -These directories are created once you begin running Pulsar. - -Directory | Contains -:---------|:-------- -`data` | The data storage directory used by ZooKeeper and BookKeeper. -`instances` | Artifacts created for [Pulsar Functions](functions-overview.md). -`logs` | Logs created by the installation. - -> #### Tip -> If you want to use builtin connectors and tiered storage offloaders, you can install them according to the following instructions: -> -> * [Install builtin connectors (optional)](#install-builtin-connectors-optional) -> * [Install tiered storage offloaders (optional)](#install-tiered-storage-offloaders-optional) -> -> Otherwise, skip this step and perform the next step [Start Pulsar standalone](#start-pulsar-standalone). Pulsar can be successfully installed without installing bulitin connectors and tiered storage offloaders. - -### Install builtin connectors (optional) - -Since `2.1.0-incubating` release, Pulsar releases a separate binary distribution, containing all the `builtin` connectors. -To enable those `builtin` connectors, you can download the connectors tarball release in one of the following ways: - -* download from the Apache mirror <a href="pulsar:connector_release_url" download>Pulsar IO Connectors {{pulsar:version}} release</a> - -* download from the Pulsar [downloads page](pulsar:download_page_url) - -* download from the Pulsar [releases page](https://github.com/apache/pulsar/releases/latest) - -* use [wget](https://www.gnu.org/software/wget): - - ```shell - $ wget pulsar:connector_release_url/{connector}-{{pulsar:version}}.nar - ``` - -After you download the nar file, copy the file to the `connectors` directory in the pulsar directory. -For example, if you download the `pulsar-io-aerospike-{{pulsar:version}}.nar` connector file, enter the following commands: - -```bash -$ mkdir connectors -$ mv pulsar-io-aerospike-{{pulsar:version}}.nar connectors - -$ ls connectors -pulsar-io-aerospike-{{pulsar:version}}.nar -... -``` - -> #### Note -> -> * If you are running Pulsar in a bare metal cluster, make sure `connectors` tarball is unzipped in every pulsar directory of the broker -> (or in every pulsar directory of function-worker if you are running a separate worker cluster for Pulsar Functions). -> -> * If you are [running Pulsar in Docker](getting-started-docker.md) or deploying Pulsar using a docker image (e.g. [K8S](deploy-kubernetes.md) or [DC/OS](https://dcos.io/)), -> you can use the `apachepulsar/pulsar-all` image instead of the `apachepulsar/pulsar` image. `apachepulsar/pulsar-all` image has already bundled [all builtin connectors](io-overview.md#working-with-connectors). - -### Install tiered storage offloaders (optional) - -> #### Tip -> -> Since `2.2.0` release, Pulsar releases a separate binary distribution, containing the tiered storage offloaders. -> To enable tiered storage feature, follow the instructions below; otherwise skip this section. - -To get started with [tiered storage offloaders](concepts-tiered-storage.md), you need to download the offloaders tarball release on every broker node in one of the following ways: - -* download from the Apache mirror <a href="pulsar:offloader_release_url" download>Pulsar Tiered Storage Offloaders {{pulsar:version}} release</a> - -* download from the Pulsar [downloads page](pulsar:download_page_url) - -* download from the Pulsar [releases page](https://github.com/apache/pulsar/releases/latest) - -* use [wget](https://www.gnu.org/software/wget): - - ```shell - $ wget pulsar:offloader_release_url - ``` - -After you download the tarball, untar the offloaders package and copy the offloaders as `offloaders` -in the pulsar directory: - -```bash -$ tar xvfz apache-pulsar-offloaders-{{pulsar:version}}-bin.tar.gz - -// you will find a directory named `apache-pulsar-offloaders-{{pulsar:version}}` in the pulsar directory -// then copy the offloaders - -$ mv apache-pulsar-offloaders-{{pulsar:version}}/offloaders offloaders - -$ ls offloaders -tiered-storage-jcloud-{{pulsar:version}}.nar -``` - -For more information on how to configure tiered storage, see [Tiered storage cookbook](cookbooks-tiered-storage.md). - -> #### Note -> -> * If you are running Pulsar in a bare metal cluster, make sure that `offloaders` tarball is unzipped in every broker's pulsar directory. -> -> * If you are [running Pulsar in Docker](getting-started-docker.md) or deploying Pulsar using a docker image (e.g. [K8S](deploy-kubernetes.md) or [DC/OS](https://dcos.io/)), -> you can use the `apachepulsar/pulsar-all` image instead of the `apachepulsar/pulsar` image. `apachepulsar/pulsar-all` image has already bundled tiered storage offloaders. - -## Start Pulsar standalone - -Once you have an up-to-date local copy of the release, you can start a local cluster using the [`pulsar`](reference-cli-tools.md#pulsar) command, which is stored in the `bin` directory, and specifying that you want to start Pulsar in standalone mode. - -```bash -$ bin/pulsar standalone -``` - -If you have started Pulsar successfully, you will see `INFO`-level log messages like this: - -```bash -2017-06-01 14:46:29,192 - INFO - [main:WebSocketService@95] - Configuration Store cache started -2017-06-01 14:46:29,192 - INFO - [main:AuthenticationService@61] - Authentication is disabled -2017-06-01 14:46:29,192 - INFO - [main:WebSocketService@108] - Pulsar WebSocket Service started -``` - -> #### Tip -> -> * The service is running on your terminal, which is under your direct control. If you need to run other commands, open a new terminal window. -You can also run the service as a background process using the `pulsar-daemon start standalone` command. For more information, see [pulsar-daemon](https://pulsar.apache.org/docs/en/reference-cli-tools/#pulsar-daemon). -> -> * By default, there is no encryption, authentication, or authorization configured. Apache Pulsar can be accessed from remote server without any authorization. Please do check [Security Overview](security-overview.md) document to secure your deployment. -> -> * When you start a local standalone cluster, a `public/default` [namespace](concepts-messaging.md#namespaces) is created automatically. The namespace is used for development purposes. All Pulsar topics are managed within namespaces. For more information, see [Topics](concepts-messaging.md#topics). - -## Use Pulsar standalone - -Pulsar provides a CLI tool called [`pulsar-client`](reference-cli-tools.md#pulsar-client). The pulsar-client tool enables you to consume and produce messages to a Pulsar topic in a running cluster. - -### Consume a message - -The following command consumes a message with the subscription name `first-subscription` to the `my-topic` topic: - -```bash -$ bin/pulsar-client consume my-topic -s "first-subscription" -``` - -If the message has been successfully consumed, you will see a confirmation like the following in the `pulsar-client` logs: - -``` -09:56:55.566 [pulsar-client-io-1-1] INFO org.apache.pulsar.client.impl.MultiTopicsConsumerImpl - [TopicsConsumerFakeTopicNamee2df9] [first-subscription] Success subscribe new topic my-topic in topics consumer, partitions: 4, allTopicPartitionsNumber: 4 -``` - -> #### Tip -> -> As you have noticed that we do not explicitly create the `my-topic` topic, to which we consume the message. When you consume a message to a topic that does not yet exist, Pulsar creates that topic for you automatically. Producing a message to a topic that does not exist will automatically create that topic for you as well. - -### Produce a message - -The following command produces a message saying `hello-pulsar` to the `my-topic` topic: - -```bash -$ bin/pulsar-client produce my-topic --messages "hello-pulsar" -``` - -If the message has been successfully published to the topic, you will see a confirmation like the following in the `pulsar-client` logs: - -``` -13:09:39.356 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully produced -``` - -## Stop Pulsar standalone - -Press `Ctrl+C` to stop a local standalone Pulsar. - -> #### Tip -> -> If the service runs as a background process using the `pulsar-daemon start standalone` command, then use the `pulsar-daemon stop standalone` command to stop the service. -> -> For more information, see [pulsar-daemon](https://pulsar.apache.org/docs/en/reference-cli-tools/#pulsar-daemon).
