navendu-pottekkat commented on code in PR #6964:
URL: https://github.com/apache/apisix/pull/6964#discussion_r861444191
##########
docs/en/latest/how-to-build.md:
##########
@@ -21,351 +25,220 @@ title: Installing Apache APISIX
#
-->
-This guide walks you through how you can build and get Apache APISIX running
on your environment. Please refer the [Getting Started](./getting-started.md)
guide for a quick walkthrough on running Apache APISIX.
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
-## Step 1: Install Apache APISIX
+This guide walks you through how you can install and run Apache APISIX in your
environment.
-Apache APISIX can be installed via the [RPM
package](#installation-via-rpm-repository-centos), [Docker
image](#installation-via-docker), [Helm Chart](#installation-via-helm-chart) or
the [source release package](#installation-via-source-release-package). You can
install via any one of these options.
+Refer to the [Getting Started](./getting-started.md) guide for a quick
walk-through on running Apache APISIX.
-### Installation via RPM Repository (CentOS)
+## Installing APISIX
-> This installation method is suitable for CentOS 7 and CentOS 8.
+APISIX can be installed by the different methods listed below:
-If the official OpenResty repository is **not installed yet**, the following
command will help you automatically install both OpenResty and Apache APISIX
repositories.
+<Tabs
+ groupId="install-method"
+ defaultValue="docker"
+ values={[
+ {label: 'Docker', value: 'docker'},
+ {label: 'Helm', value: 'helm'},
+ {label: 'RPM', value: 'rpm'},
+ ]}>
+<TabItem value="docker">
-```shell
-sudo yum install -y
https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
-```
-
-If the official OpenResty repository **is installed**, the following command
will help you automatically install the repositories of Apache APISIX.
-
-```shell
-sudo yum-config-manager --add-repo
https://repos.apiseven.com/packages/centos/apache-apisix.repo
-```
-
-Run the following commands to install the repository and Apache APISIX.
+First clone the [apisix-docker](https://github.com/apache/apisix-docker)
repository:
```shell
-# View the information of the latest apisix package
-sudo yum info -y apisix
-
-# Will show the existing apisix packages
-sudo yum --showduplicates list apisix
-
-# Will install the latest apisix package
-sudo yum install apisix
-
-# Will install a specified version (2.10.3 in this example) apisix package
-sudo yum install apisix-2.10.3-0.el7
+git clone https://github.com/apache/apisix-docker.git
+cd apisix-docker/example
```
-### Installation via RPM Offline Package (CentOS)
+Now, you can use `docker-compose` to start APISIX.
-First, download Apache APISIX offline RPM package to `./apisix` folder.
+<Tabs
+ groupId="cpu-arch"
+ defaultValue="x86"
+ values={[
+ {label: 'x86', value: 'x86'},
+ {label: 'ARM/M1', value: 'arm'},
+ ]}>
+<TabItem value="x86">
```shell
-sudo mkdir -p apisix
-sudo yum install -y
https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
-sudo yum clean all && yum makecache
-sudo yum install -y --downloadonly --downloaddir=./apisix apisix
+docker-compose -p docker-apisix up -d
```
-Then copy `./apisix` folder to the target host and run the following command
to install.
+</TabItem>
+
+<TabItem value="arm">
```shell
-sudo yum install ./apisix/*.rpm
+docker-compose -p docker-apisix -f docker-compose-arm64.yml up -d
```
-### Installation via Docker
-
-Please refer to [Installing Apache APISIX with
Docker](https://hub.docker.com/r/apache/apisix).
-
-### Installation via Helm Chart
-
-Please refer to [Installing Apache APISIX with Helm
Chart](https://github.com/apache/apisix-helm-chart).
-
-### Installation via Source Release Package
-
-Note: if you want to package Apache APISIX for a specific platform, please
refer to https://github.com/api7/apisix-build-tools and add the support there.
-The instruction here is only for people who want to setup their Apache APISIX
development environment.
-
-Follow the steps below to install Apache APISIX via the source release package.
-
-1. Install dependencies
+</TabItem>
+</Tabs>
- ```shell
- curl
https://raw.githubusercontent.com/apache/apisix/master/utils/install-dependencies.sh
-sL | bash -
- ```
+</TabItem>
-2. Create a directory named `apisix-2.13.0`.
+<TabItem value="helm">
- ```shell
- APISIX_VERSION='2.13.0'
- mkdir apisix-${APISIX_VERSION}
- ```
+To install APISIX via Helm, run:
-3. Download the Apache APISIX source release package.
-
- ```shell
- wget
https://downloads.apache.org/apisix/${APISIX_VERSION}/apache-apisix-${APISIX_VERSION}-src.tgz
- ```
-
- You can also download the Apache APISIX source release package from the
[Apache APISIX website](https://apisix.apache.org/downloads/). The website also
provides source packages for Apache APISIX, APISIX Dashboard, and APISIX
Ingress Controller.
-
-4. Uncompress the Apache APISIX source release package.
-
- ```shell
- tar zxvf apache-apisix-${APISIX_VERSION}-src.tgz -C apisix-${APISIX_VERSION}
- ```
-
-5. Install the runtime dependent Lua libraries.
-
- ```shell
- # Switch to the apisix-${APISIX_VERSION} directory
- cd apisix-${APISIX_VERSION}
- # Create dependencies
- make deps
- ```
-
- **Note**: If you fail to install dependency packages using `make deps` and
get an error message like `Could not find header file for LDAP/PCRE/openssl`,
you can use this general method to solve problems.
-
- The general solution: `luarocks` supports custom compile-time dependency
directories(from this
[link](https://github.com/luarocks/luarocks/wiki/Config-file-format)). Use a
third-party tool to install the missing package and add its installation
directory to the `luarocks`'s variables table. This a general method which can
be applied to macOS, Ubuntu, CentOS or other usual operating systems, and the
specific solution for macOS are given here for reference only.
-
- The following is the solution of macOS, which is similar to that of other
operating systems:
-
- 1. Install `openldap` with `brew install openldap`;
- 2. Locate installation directory with `brew --prefix openldap`;
- 3. Add the path to the project configuration file(choose one of the
following two methods):
- 1. Solution A: You can set `LDAP_DIR` with `luarocks config` manually,
for example `luarocks config variables.LDAP_DIR
/opt/homebrew/cellar/openldap/2.6.1`;
- 2. Solution B: Of course, you can also choose to change the default
configuration file of luarocks directly, execute the 'cat
~/.luarocks/config-5.1.lua' command, and then add the installation directory of
'openldap' to the file;
- 3. Example as follows:
- variables = {
- LDAP_DIR = "/opt/homebrew/cellar/openldap/2.6.1",
- LDAP_INCDIR = "/opt/homebrew/cellar/openldap/2.6.1/include",
- }
-
- `/opt/homebrew/cellar/openldap/` is default path to install openldap on
macOS(Apple Silicon) using brew.
- `/usr/local/opt/openldap/` is default path to install openldap on
macOS(Intel) using brew.
-
-6. To uninstall the Apache APISIX runtime, run:
-
- ```shell
- # Purge dependencies
- make undeps
- ```
-
- **Note**: This operation will remove the files completely.
-
-#### LTS version installation via Source Release Package
-
-The [current LTS version](https://apisix.apache.org/downloads/) of Apache
APISIX is `2.13.0`.
+```shell
+helm repo add apisix https://charts.apiseven.com
+helm repo update
+helm install apisix apisix/apisix --create-namespace --namespace apisix
+```
-To install this version, set `APISIX_VERSION` in [Installation via Source
Release Package](#installation-via-source-release-package) to this version and
continue with the other steps.
+You can find other Helm charts on the
[apisix-helm-chart](https://github.com/apache/apisix-helm-chart) repository.
-## Step 2: Install etcd
+</TabItem>
-This step is required only if you haven't installed
[etcd](https://github.com/etcd-io/etcd).
+<TabItem value="rpm">
-Run the command below to install etcd via the binary in Linux:
+This installation method is suitable for CentOS 7 and Centos 8.
-```shell
-ETCD_VERSION='3.4.18'
-wget
https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz
-tar -xvf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz && \
- cd etcd-v${ETCD_VERSION}-linux-amd64 && \
- sudo cp -a etcd etcdctl /usr/bin/
-nohup etcd >/tmp/etcd.log 2>&1 &
-```
+### Installation via RPM repository
-Run the command below to install etcd in Mac:
+If OpenResty is **not** installed, you can run the command below to install
both OpenResty and APISIX repositories:
```shell
-brew install etcd
-# start etcd server
-brew services start etcd
+sudo yum install -y
https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
```
-## Step 3: Manage Apache APISIX Server
-
-In the Apache APISIX directory, you can initialize dependencies, start service
and stop service with commands. Run `apisix help` to get a full list of
available commands.
-
-### Initializing dependencies
-
-Run the following command to initialize the NGINX configuration file and etcd.
+If OpenResty is installed, the command below will install the APISIX
repositories:
```shell
-# initialize NGINX config file and etcd
-apisix init
+sudo yum-config-manager --add-repo
https://repos.apiseven.com/packages/centos/apache-apisix.repo
```
-### Test the configuration file
-
-Run the following command to test the configuration file. APISIX will generate
`nginx.conf` from `config.yaml` and check whether the syntax of `nginx.conf` is
correct.
+Then, to install APISIX, run:
```shell
-# generate `nginx.conf` from `config.yaml` and test it
-apisix test
+sudo yum install apisix
```
-### Start Apache APISIX
+:::tip
-Run the following command to start Apache APISIX.
+You can also install a specific version of APISIX by specifying it:
```shell
-# start Apache APISIX server
-apisix start
+sudo yum install apisix-2.10.3-0.el7
```
-### Stop Apache APISIX
-
-Both `apisix quit` and `apisix stop` can stop Apache APISIX. The main
difference is that `apisix quit` stops Apache APISIX gracefully, while `apisix
stop` stops Apache APISIX immediately.
+:::
-It is recommended to use the "gracefully stop" command `apisix quit` because
it ensures that Apache APISIX will complete all the requests it has received
before stopping. On the other hand, `apisix stop` will trigger a forced
shutdown and will stop Apache APISIX immediately. This will cause the pending
incoming requests to not be processed before shutdown.
+### Installation via RPM offline package
-To perform a graceful shutdown, run:
+First, download APISIX RPM offline package to an `apisix` folder:
```shell
-# stop Apache APISIX server gracefully
-apisix quit
+sudo mkdir -p apisix
+sudo yum install -y
https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
+sudo yum clean all && yum makecache
+sudo yum install -y --downloadonly --downloaddir=./apisix apisix
```
-To perform a forced shutdown, run:
+Then copy the `apisix` folder to the target host and run:
```shell
-# stop Apache APISIX server immediately
-apisix stop
+sudo yum install ./apisix/*.rpm
```
-### Other operations
+### Managing APISIX server
-You can get help and learn more about all the available operations in Apache
APISIX by running the `help` command as shown below.
+Once APISIX is installed, you can initialize the configuration file and etcd
by running:
```shell
-# show a list of available operations
-apisix help
+apisix init
```
-## Step 4: Run Test Cases
-
-To run the test cases, run the steps outlined below.
-
-1. [Install
`cpanminus`](https://metacpan.org/pod/App::cpanminus#INSTALLATION), the package
manager for `perl`.
+To start APISIX server, run:
-2. Install the test-nginx dependencies via `cpanm` as shown below.
-
- ```shell
- sudo cpanm --notest Test::Nginx IPC::Run > build.log 2>&1 || (cat build.log
&& exit 1)
- ```
-
-3. Clone the latest source code locally by using the forked out version.
-
- ```shell
- git clone https://github.com/openresty/test-nginx.git
- ```
+```shell
+apisix start
+```
-4. There are two ways to run the tests.
+:::tip
- 1. Append the current directory to the perl module directory: `export
PERL5LIB=.:$PERL5LIB` and then run `make test` command.
+Run `apisix help` to get a list of all available operations.
- 2. Specify the NGINX binary path by running
`TEST_NGINX_BINARY=/usr/local/bin/openresty prove -Itest-nginx/lib -r t`.
+:::
- <!--
- #
- # In addition to the basic Markdown syntax, we use remark-admonitions
- # alongside MDX to add support for admonitions. Admonitions are wrapped
- # by a set of 3 colons.
- # Please refer to
https://docusaurus.io/docs/next/markdown-features/admonitions
- # for more detail.
- #
- -->
+</TabItem>
+</Tabs>
- :::note Note
- Some of the tests rely on external services and system configuration
modification. For a complete test environment build, you can refer to
`ci/linux_openresty_common_runner.sh`.
- :::
+## Installing etcd
-### Troubleshoot testing
+APISIX uses [etcd](https://github.com/etcd-io/etcd) to save and synchronize
configuration.
-#### Configuring NGINX path
+etcd would be installed automatically if you have chosen the Docker or Helm
install method above.
-The solution to the `Error unknown directive "lua_package_path" in
/API_ASPIX/apisix/t/servroot/conf/nginx.conf` error is as shown below.
+If etcd is not installed you can install it as shown below.
-Ensure that OpenResty is set to the default NGINX, and export the path as
follows:
+<Tabs
+ groupId="os"
+ defaultValue="linux"
+ values={[
+ {label: 'Linux', value: 'linux'},
+ {label: 'macOS', value: 'mac'},
+ ]}>
+<TabItem value="linux">
-* `export PATH=/usr/local/openresty/nginx/sbin:$PATH`
- * Linux default installation path:
- * `export PATH=/usr/local/openresty/nginx/sbin:$PATH`
- * MacOS default installation path via homebrew:
- * `export PATH=/usr/local/opt/openresty/nginx/sbin:$PATH`
+```shell
+ETCD_VERSION='3.4.18'
+wget
https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz
+tar -xvf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz && \
+ cd etcd-v${ETCD_VERSION}-linux-amd64 && \
+ sudo cp -a etcd etcdctl /usr/bin/
+nohup etcd >/tmp/etcd.log 2>&1 &
+```
-#### Running a single test case
+</TabItem>
-To run a specific test case, use the command below.
+<TabItem value="mac">
```shell
-prove -Itest-nginx/lib -r t/plugin/openid-connect.t
+brew install etcd
+brew services start etcd
```
-For more details on the test cases, see the [testing
framework](https://github.com/apache/apisix/blob/master/docs/en/latest/internal/testing-framework.md)
document.
+</TabItem>
+</Tabs>
Review Comment:
We don't need to as it would be installed by the docker-compose file but
users on mac can know this other way to install etcd. It is purely optional
depending on how they installed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]