You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by gi...@apache.org on 2020/11/08 06:47:20 UTC

[apisix-website] branch asf-site updated: Deploy to GitHub pages

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/apisix-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 51ef402  Deploy to GitHub pages
51ef402 is described below

commit 51ef402f013a71769171e2e0247199454e135f6f
Author: github-actions[bot] <41...@users.noreply.github.com>
AuthorDate: Sun Nov 8 06:47:13 2020 +0000

    Deploy to GitHub pages
---
 2fa.html                               |  91 ++++++++++++
 2fa/index.html                         |  91 ++++++++++++
 blog/2020/08/22/new-website.html       |   2 +-
 blog/2020/08/22/new-website/index.html |   2 +-
 blog/index.html                        |   2 +-
 committer-guide.html                   | 121 ++++++++++++++++
 committer-guide/index.html             | 121 ++++++++++++++++
 contributor-guide.html                 | 136 ++++++++++++++++++
 contributor-guide/index.html           | 136 ++++++++++++++++++
 downloads.html                         |  78 ++++++++++
 downloads/index.html                   |  78 ++++++++++
 en/help.html                           |   2 +-
 en/help/index.html                     |   2 +-
 en/index.html                          |   2 +-
 en/users.html                          |   2 +-
 en/users/index.html                    |   2 +-
 help.html                              |   2 +-
 help/index.html                        |   2 +-
 index.html                             |   2 +-
 release-guide.html                     | 253 +++++++++++++++++++++++++++++++++
 release-guide/index.html               | 253 +++++++++++++++++++++++++++++++++
 security.html                          |  84 +++++++++++
 security/index.html                    |  84 +++++++++++
 sitemap.xml                            |   2 +-
 subscrbe-guide.html                    |  88 ++++++++++++
 subscrbe-guide/index.html              |  88 ++++++++++++
 team.html                              |  93 ++++++++++++
 team/index.html                        |  93 ++++++++++++
 users.html                             |   2 +-
 users/index.html                       |   2 +-
 30 files changed, 1902 insertions(+), 14 deletions(-)

diff --git a/2fa.html b/2fa.html
new file mode 100644
index 0000000..6dae0f0
--- /dev/null
+++ b/2fa.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>2FA · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## Two-factor authentication(2FA)"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="2FA · Apache APISIX™"/><meta property="og:type" content="website"/><meta property="og:url" cont [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">2FA</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="two-factor-authentication2fa"></a><a href="#two-factor-authentication2fa" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><pa [...]
+<p>Two factor authentication (2FA) refers to the authentication method that combines both passport and an object (credit card, SMS phone, token or biomarkers as fingerprint) to identify a user. To ensure the security of the committer’s account, we need you to enable 2FA to sign in and contribute codes on GitHub. More details, please refer to 2FA.</p>
+<p>Note:If you do not enable 2FA, you will be removed from the project and unable to access our repositories and the fork from our private repository.</p>
+<h2><a class="anchor" aria-hidden="true" id="enable-2fa-on-github"></a><a href="#enable-2fa-on-github" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p>For detailed operations, please refer to Enable Two Factor Authentication with TOTP.</p>
+<p>After enabling 2FA, you need to sign in GitHub with the way of username/password + mobile phone authentication code.</p>
+<p>Tips: If you cannot download the APP through the page link, you can search and download the Google Authenticator in APP Store.</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-submit-codes"></a><a href="#how-to-submit-codes" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>After enabling 2FA, you need to generate a private access Token to perform operations such as git submit and so on. At this time, you will use username + private access Token in replace of username + password to submit codes.</p>
+<p>For detailed operations, please refer to Create a Private Token.</p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/committer-guide"><span class="arrow-prev">← </span><span>Committer Guide</span></a><a class="docs-next button" href="/release-guide"><span>Release Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#two-factor-authentication2fa">Two-factor authentic [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/2fa/index.html b/2fa/index.html
new file mode 100644
index 0000000..6dae0f0
--- /dev/null
+++ b/2fa/index.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>2FA · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## Two-factor authentication(2FA)"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="2FA · Apache APISIX™"/><meta property="og:type" content="website"/><meta property="og:url" cont [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">2FA</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="two-factor-authentication2fa"></a><a href="#two-factor-authentication2fa" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><pa [...]
+<p>Two factor authentication (2FA) refers to the authentication method that combines both passport and an object (credit card, SMS phone, token or biomarkers as fingerprint) to identify a user. To ensure the security of the committer’s account, we need you to enable 2FA to sign in and contribute codes on GitHub. More details, please refer to 2FA.</p>
+<p>Note:If you do not enable 2FA, you will be removed from the project and unable to access our repositories and the fork from our private repository.</p>
+<h2><a class="anchor" aria-hidden="true" id="enable-2fa-on-github"></a><a href="#enable-2fa-on-github" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p>For detailed operations, please refer to Enable Two Factor Authentication with TOTP.</p>
+<p>After enabling 2FA, you need to sign in GitHub with the way of username/password + mobile phone authentication code.</p>
+<p>Tips: If you cannot download the APP through the page link, you can search and download the Google Authenticator in APP Store.</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-submit-codes"></a><a href="#how-to-submit-codes" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>After enabling 2FA, you need to generate a private access Token to perform operations such as git submit and so on. At this time, you will use username + private access Token in replace of username + password to submit codes.</p>
+<p>For detailed operations, please refer to Create a Private Token.</p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/committer-guide"><span class="arrow-prev">← </span><span>Committer Guide</span></a><a class="docs-next button" href="/release-guide"><span>Release Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#two-factor-authentication2fa">Two-factor authentic [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/blog/2020/08/22/new-website.html b/blog/2020/08/22/new-website.html
index 522199b..4ed6dda 100644
--- a/blog/2020/08/22/new-website.html
+++ b/blog/2020/08/22/new-website.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/blog/2020/08/22/new-website/index.html b/blog/2020/08/22/new-website/index.html
index 522199b..4ed6dda 100644
--- a/blog/2020/08/22/new-website/index.html
+++ b/blog/2020/08/22/new-website/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/blog/index.html b/blog/index.html
index d0056ad..65144ab 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="blog"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class= [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="blog"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class= [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/committer-guide.html b/committer-guide.html
new file mode 100644
index 0000000..41c89f9
--- /dev/null
+++ b/committer-guide.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Committer Guide · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## What can I contribute?"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Committer Guide · Apache APISIX™"/><meta property="og:type" content="website"/><meta proper [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Committer Guide</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="what-can-i-contribute"></a><a href="#what-can-i-contribute" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path [...]
+<p>All forms of contributions are accepted, for example:</p>
+<ol>
+<li><p>Take a look at issues with tag called Good first issue or Help wanted.</p></li>
+<li><p>Join the discussion on mailing list.</p></li>
+<li><p>Answer questions on issues.</p></li>
+<li><p>Fix bugs reported on issues, and send us pull request.</p></li>
+<li><p>Review the existing pull request.</p></li>
+<li><p>Improve the website.</p></li>
+<li><p>Write document or article.</p></li>
+<li><p>Any form of contribution that is not mentioned above.</p></li>
+</ol>
+<p>If you would like to contribute, please send an email to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a> to let us know!</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-become-a-apisix-committer"></a><a href="#how-to-become-a-apisix-committer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
+<p>Anyone can be a contributor to an Apache project. Being a contributor simply means that you take an interest in the project and contribute in some way, ranging from asking sensible questions (which documents the project and provides feedback to developers) through to providing new features as patches.</p>
+<p>If you become a valuable contributor to the project you may well be invited to become a committer. Committer is a term used at the ASF to signify someone who is committed to a particular project. It brings with it the privilege of write access to the project repository and resources.</p>
+<p>More details could be found here.</p>
+<h2><a class="anchor" aria-hidden="true" id="promotion"></a><a href="#promotion" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<p>The Apache APISIX community follows the Apache Community’s process on accepting a new committer. After a contributor participates APISIX's community actively, (P)PMC and Committers will make decisions to invite the contributor join Committers and (P)PMC.</p>
+<p>Processes are:</p>
+<ol>
+<li><p>Start the discussion and vote in @private. Only current PMC member could nominate</p></li>
+<li><p>If the vote passes, send an offer to become a committer with @private CC’ed</p></li>
+<li><p>New committer signs ICLA and apply Apache ID and email address</p></li>
+<li><p>Update Team page.</p></li>
+</ol>
+<h2><a class="anchor" aria-hidden="true" id="responsibilities"></a><a href="#responsibilities" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<ol>
+<li><p>Develop new features</p></li>
+<li><p>Refactor codes</p></li>
+<li><p>Review PR reliably and in time</p></li>
+<li><p>Consider and accept feature requests</p></li>
+<li><p>Answer questions</p></li>
+<li><p>Update documentation and examples</p></li>
+<li><p>Improve processes and tools</p></li>
+<li><p>Guide new contributors join community.</p></li>
+</ol>
+<h2><a class="anchor" aria-hidden="true" id="how-to-become-a-apisix-pmc"></a><a href="#how-to-become-a-apisix-pmc" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
+<p>In APISIX community, if a committer who have earned even more merit, can be invited to be a part of the Project Management Committee (PMC).</p>
+<p>One thing that is sometimes hard to understand when you are new to the open development process used at the ASF, is that we value the community more than the code. A strong and healthy community will be respectful and be a fun and rewarding place. More importantly, a diverse and healthy community can continue to support the code over the longer term, even as individual companies come and go from the field.</p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/contributor-guide"><span class="arrow-prev">← </span><span>Contributor Guide</span></a><a class="docs-next button" href="/2fa"><span>2FA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-can-i-contribute">What can I contribute?</a></li><li><a href= [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/committer-guide/index.html b/committer-guide/index.html
new file mode 100644
index 0000000..41c89f9
--- /dev/null
+++ b/committer-guide/index.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Committer Guide · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## What can I contribute?"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Committer Guide · Apache APISIX™"/><meta property="og:type" content="website"/><meta proper [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Committer Guide</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="what-can-i-contribute"></a><a href="#what-can-i-contribute" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path [...]
+<p>All forms of contributions are accepted, for example:</p>
+<ol>
+<li><p>Take a look at issues with tag called Good first issue or Help wanted.</p></li>
+<li><p>Join the discussion on mailing list.</p></li>
+<li><p>Answer questions on issues.</p></li>
+<li><p>Fix bugs reported on issues, and send us pull request.</p></li>
+<li><p>Review the existing pull request.</p></li>
+<li><p>Improve the website.</p></li>
+<li><p>Write document or article.</p></li>
+<li><p>Any form of contribution that is not mentioned above.</p></li>
+</ol>
+<p>If you would like to contribute, please send an email to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a> to let us know!</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-become-a-apisix-committer"></a><a href="#how-to-become-a-apisix-committer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
+<p>Anyone can be a contributor to an Apache project. Being a contributor simply means that you take an interest in the project and contribute in some way, ranging from asking sensible questions (which documents the project and provides feedback to developers) through to providing new features as patches.</p>
+<p>If you become a valuable contributor to the project you may well be invited to become a committer. Committer is a term used at the ASF to signify someone who is committed to a particular project. It brings with it the privilege of write access to the project repository and resources.</p>
+<p>More details could be found here.</p>
+<h2><a class="anchor" aria-hidden="true" id="promotion"></a><a href="#promotion" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<p>The Apache APISIX community follows the Apache Community’s process on accepting a new committer. After a contributor participates APISIX's community actively, (P)PMC and Committers will make decisions to invite the contributor join Committers and (P)PMC.</p>
+<p>Processes are:</p>
+<ol>
+<li><p>Start the discussion and vote in @private. Only current PMC member could nominate</p></li>
+<li><p>If the vote passes, send an offer to become a committer with @private CC’ed</p></li>
+<li><p>New committer signs ICLA and apply Apache ID and email address</p></li>
+<li><p>Update Team page.</p></li>
+</ol>
+<h2><a class="anchor" aria-hidden="true" id="responsibilities"></a><a href="#responsibilities" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<ol>
+<li><p>Develop new features</p></li>
+<li><p>Refactor codes</p></li>
+<li><p>Review PR reliably and in time</p></li>
+<li><p>Consider and accept feature requests</p></li>
+<li><p>Answer questions</p></li>
+<li><p>Update documentation and examples</p></li>
+<li><p>Improve processes and tools</p></li>
+<li><p>Guide new contributors join community.</p></li>
+</ol>
+<h2><a class="anchor" aria-hidden="true" id="how-to-become-a-apisix-pmc"></a><a href="#how-to-become-a-apisix-pmc" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
+<p>In APISIX community, if a committer who have earned even more merit, can be invited to be a part of the Project Management Committee (PMC).</p>
+<p>One thing that is sometimes hard to understand when you are new to the open development process used at the ASF, is that we value the community more than the code. A strong and healthy community will be respectful and be a fun and rewarding place. More importantly, a diverse and healthy community can continue to support the code over the longer term, even as individual companies come and go from the field.</p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/contributor-guide"><span class="arrow-prev">← </span><span>Contributor Guide</span></a><a class="docs-next button" href="/2fa"><span>2FA</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-can-i-contribute">What can I contribute?</a></li><li><a href= [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/contributor-guide.html b/contributor-guide.html
new file mode 100644
index 0000000..ce8ffb6
--- /dev/null
+++ b/contributor-guide.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Contributor Guide · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Please fee free to report bugs, submit suggestions, or submit PRs according to this guide."/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Contributor Guide · Apac [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Contributor Guide</h1></header><article><div><span><p>Please fee free to report bugs, submit suggestions, or submit PRs according to this guide.</p>
+<h2><a class="anchor" aria-hidden="true" id="submit-an-issue"></a><a href="#submit-an-issue" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<ol>
+<li><p>Before submitting your issues, please go through a comprehensive search to make sure the problem cannot be solved just by searching.</p></li>
+<li><p>Check the Issue List to make sure the problem is not repeated.</p></li>
+<li><p>Create a new issue and choose the type of issue.</p></li>
+<li><p>Define the issue with a clear and descriptive title.</p></li>
+<li><p>Fill in necessary information according to the template.</p></li>
+<li><p>Choose a label after issue created.</p></li>
+<li><p>Please pay attention to your issue, you may need provide more information during discussion.</p></li>
+</ol>
+<h2><a class="anchor" aria-hidden="true" id="developer-flow"></a><a href="#developer-flow" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<h3><a class="anchor" aria-hidden="true" id="fork-repo"></a><a href="#fork-repo" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<p>Fork the Apache APISIX repo to your own repo to work, then setting proper upstream.</p>
+<pre><code class="hljs css language-sh">git remote add upstream https://github.com/apache/apisix.git
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="choose-an-issue"></a><a href="#choose-an-issue" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<ol>
+<li><p>Please choose your target issue. If it is a new issue discovered or a new function enhancement to offer, please create an issue and set the right label for it.</p></li>
+<li><p>After choosing the relevant issue, please reply with a deadline to indicate that you are working on it.</p></li>
+<li><p>Find a mentor from the Team page and your mentor will give you feedback about your PR or issue in time.</p></li>
+</ol>
+<h3><a class="anchor" aria-hidden="true" id="create-your-branch"></a><a href="#create-your-branch" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
+<p>Switch to your forked master branch, pull codes from upstream, then create a new branch.</p>
+<pre><code class="hljs css language-sh">$ git checkout master
+$ git pull upstream master
+$ git checkout -b IssueNo
+</code></pre>
+<p>Notice: We will merge PR using squash, commit logs will be different form upstream if you use one older branch.</p>
+<h3><a class="anchor" aria-hidden="true" id="coding"></a><a href="#coding" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<ol>
+<li><p>Please obey the Code of Conduct during the process of development and finish the check before submitting the pull request.</p></li>
+<li><p>Then push codes to your fork repo.</p></li>
+</ol>
+<pre><code class="hljs css language-sh">$ git add modified-file-names
+$ git commit -m <span class="hljs-string">'commit message'</span>
+$ git push origin issueNo
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="submit-pr"></a><a href="#submit-pr" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<ol>
+<li><p>Send a pull request to the master branch.</p></li>
+<li><p>The mentor will do codes review before discussing some details (including the design, the implementation and the performance) with you.</p></li>
+<li><p>Then congratulate to you to be an official contributor of Apache APISIX.</p></li>
+</ol>
+<h3><a class="anchor" aria-hidden="true" id="delete-branch"></a><a href="#delete-branch" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>You can delete the remote branch (origin/IssueNo) and the local branch (IssueNo) associated with the remote branch (origin/IssueNo) after the mentor merged the PR into the master branch.</p>
+<pre><code class="hljs css language-sh">$ git checkout master
+$ git branch -d IssueNo
+$ git push origin --delete issueNo
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="notice"></a><a href="#notice" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>Please note that in order to show your ID in the contributor list, please DO NOT forget to set the configurations below:</p>
+<pre><code class="hljs css language-sh">$ git config --global user.name <span class="hljs-string">"username"</span>
+$ git config --global user.email <span class="hljs-string">"mail address"</span>
+</code></pre>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/subscrbe-guide"><span class="arrow-prev">← </span><span>Subscribe Guide</span></a><a class="docs-next button" href="/committer-guide"><span>Committer Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#submit-an-issue">Submit an issue</a></li><li><a [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/contributor-guide/index.html b/contributor-guide/index.html
new file mode 100644
index 0000000..ce8ffb6
--- /dev/null
+++ b/contributor-guide/index.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Contributor Guide · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Please fee free to report bugs, submit suggestions, or submit PRs according to this guide."/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Contributor Guide · Apac [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Contributor Guide</h1></header><article><div><span><p>Please fee free to report bugs, submit suggestions, or submit PRs according to this guide.</p>
+<h2><a class="anchor" aria-hidden="true" id="submit-an-issue"></a><a href="#submit-an-issue" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<ol>
+<li><p>Before submitting your issues, please go through a comprehensive search to make sure the problem cannot be solved just by searching.</p></li>
+<li><p>Check the Issue List to make sure the problem is not repeated.</p></li>
+<li><p>Create a new issue and choose the type of issue.</p></li>
+<li><p>Define the issue with a clear and descriptive title.</p></li>
+<li><p>Fill in necessary information according to the template.</p></li>
+<li><p>Choose a label after issue created.</p></li>
+<li><p>Please pay attention to your issue, you may need provide more information during discussion.</p></li>
+</ol>
+<h2><a class="anchor" aria-hidden="true" id="developer-flow"></a><a href="#developer-flow" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<h3><a class="anchor" aria-hidden="true" id="fork-repo"></a><a href="#fork-repo" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<p>Fork the Apache APISIX repo to your own repo to work, then setting proper upstream.</p>
+<pre><code class="hljs css language-sh">git remote add upstream https://github.com/apache/apisix.git
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="choose-an-issue"></a><a href="#choose-an-issue" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<ol>
+<li><p>Please choose your target issue. If it is a new issue discovered or a new function enhancement to offer, please create an issue and set the right label for it.</p></li>
+<li><p>After choosing the relevant issue, please reply with a deadline to indicate that you are working on it.</p></li>
+<li><p>Find a mentor from the Team page and your mentor will give you feedback about your PR or issue in time.</p></li>
+</ol>
+<h3><a class="anchor" aria-hidden="true" id="create-your-branch"></a><a href="#create-your-branch" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
+<p>Switch to your forked master branch, pull codes from upstream, then create a new branch.</p>
+<pre><code class="hljs css language-sh">$ git checkout master
+$ git pull upstream master
+$ git checkout -b IssueNo
+</code></pre>
+<p>Notice: We will merge PR using squash, commit logs will be different form upstream if you use one older branch.</p>
+<h3><a class="anchor" aria-hidden="true" id="coding"></a><a href="#coding" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<ol>
+<li><p>Please obey the Code of Conduct during the process of development and finish the check before submitting the pull request.</p></li>
+<li><p>Then push codes to your fork repo.</p></li>
+</ol>
+<pre><code class="hljs css language-sh">$ git add modified-file-names
+$ git commit -m <span class="hljs-string">'commit message'</span>
+$ git push origin issueNo
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="submit-pr"></a><a href="#submit-pr" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<ol>
+<li><p>Send a pull request to the master branch.</p></li>
+<li><p>The mentor will do codes review before discussing some details (including the design, the implementation and the performance) with you.</p></li>
+<li><p>Then congratulate to you to be an official contributor of Apache APISIX.</p></li>
+</ol>
+<h3><a class="anchor" aria-hidden="true" id="delete-branch"></a><a href="#delete-branch" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>You can delete the remote branch (origin/IssueNo) and the local branch (IssueNo) associated with the remote branch (origin/IssueNo) after the mentor merged the PR into the master branch.</p>
+<pre><code class="hljs css language-sh">$ git checkout master
+$ git branch -d IssueNo
+$ git push origin --delete issueNo
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="notice"></a><a href="#notice" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>Please note that in order to show your ID in the contributor list, please DO NOT forget to set the configurations below:</p>
+<pre><code class="hljs css language-sh">$ git config --global user.name <span class="hljs-string">"username"</span>
+$ git config --global user.email <span class="hljs-string">"mail address"</span>
+</code></pre>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/subscrbe-guide"><span class="arrow-prev">← </span><span>Subscribe Guide</span></a><a class="docs-next button" href="/committer-guide"><span>Committer Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#submit-an-issue">Submit an issue</a></li><li><a [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/downloads.html b/downloads.html
new file mode 100644
index 0000000..e2dbae1
--- /dev/null
+++ b/downloads.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Downloads · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Apache APISIX is a dynamic, real-time, high-performance Cloud-Native API gateway, based on the Nginx library and etcd."/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Down [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+<p>Apache APISIX software provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.</p>
+<p>Use the links below to download the Apache APISIX™ from one of our mirrors.</p>
+<h2><a class="anchor" aria-hidden="true" id="apisix"></a><a href="#apisix" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<table>
+<thead>
+<tr><th>Version</th><th>Release Date</th><th>Downloads</th></tr>
+</thead>
+<tbody>
+<tr><td>2.0</td><td>27/10/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/2.0/apache-apisix-2.0-src.tgz">source</a> (<a href="https://downloads.apache.org/apisix/2.0/apache-apisix-2.0-src.tgz.asc">asc</a> <a href="https://downloads.apache.org/apisix/2.0/apache-apisix-2.0-src.tgz.sha512">sha512</a>)</td></tr>
+<tr><td>1.5</td><td>05/08/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/1.5/apache-apisix-1.5-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/1.5/apache-apisix-1.5-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/1.5/apache-apisix-1.5-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.4.1</td><td>20/07/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/1.4.1/apache-apisix-1.4.1-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/1.4.1/apache-apisix-1.4.1-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/1.4.1/apache-apisix-1.4.1-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.4</td><td>29/06/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/1.4/apache-apisix-1.4-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/1.4/apache-apisix-1.4-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/1.4/apache-apisix-1.4-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.3</td><td>24/05/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/1.3/apache-apisix-1.3-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/1.3/apache-apisix-1.3-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/1.3/apache-apisix-1.3-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.2</td><td>20/04/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/1.2/apache-apisix-1.2-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/1.2/apache-apisix-1.2-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/1.2/apache-apisix-1.2-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.1</td><td>24/02/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/1.1/apache-apisix-1.1-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/1.1/apache-apisix-1.1-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/1.1/apache-apisix-1.1-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.0</td><td>15/01/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/1.0/apache-apisix-1.0-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/1.0/apache-apisix-1.0-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/1.0/apache-apisix-1.0-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>0.9</td><td>24/11/2019</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/0.9/apache-apisix-0.9-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/0.9/apache-apisix-0.9-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/0.9/apache-apisix-0.9-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="apisix-dashboard"></a><a href="#apisix-dashboard" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<table>
+<thead>
+<tr><th>Version</th><th>Release Date</th><th>Downloads</th></tr>
+</thead>
+<tbody>
+<tr><td>1.5</td><td>12/08/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/dashboard-1.5/apache-apisix-dashboard-1.5.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/dashboard-1.5/apache-apisix-dashboard-1.5.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/dashboard-1.5/apache-apisix-dashboard-1.5.tar.gz.sha512">sha512</a>)</td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="verify-the-releases"></a><a href="#verify-the-releases" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p><a href="https://downloads.apache.org/apisix/KEYS">PGP signatures KEYS</a></p>
+<p>It is essential that you verify the integrity of the downloaded files using the PGP or SHA signatures. The PGP signatures can be verified using GPG or PGP. Please download the KEYS as well as the asc signature files for relevant distribution. It is recommended to get these files from the main distribution directory and not from the mirrors.</p>
+<pre><code class="hljs css language-sh">gpg -i KEYS
+
+<span class="hljs-comment"># or</span>
+
+pgpk -a KEYS
+
+<span class="hljs-comment"># or</span>
+
+pgp -ka KEYS
+</code></pre>
+<p>To verify the binaries/sources you can download the relevant asc files for it from main distribution directory and follow the below guide.</p>
+<pre><code class="hljs css language-sh">gpg --verify apache-apisix-**\*\*\*\***.asc apache-apisix-****\*****
+
+or
+
+pgpv apache-apisix-**\*\*\*\***.asc
+
+or
+
+pgp apache-apisix-**\*\*\*\***.asc
+</code></pre>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#apisix">APISIX™</a></li><li><a href="#apisix-dashboard">APISIX™ Dashboard</a></li><li><a href="#verify-the-releases">Verify the releases</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a hre [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/downloads/index.html b/downloads/index.html
new file mode 100644
index 0000000..e2dbae1
--- /dev/null
+++ b/downloads/index.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Downloads · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Apache APISIX is a dynamic, real-time, high-performance Cloud-Native API gateway, based on the Nginx library and etcd."/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Down [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+<p>Apache APISIX software provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.</p>
+<p>Use the links below to download the Apache APISIX™ from one of our mirrors.</p>
+<h2><a class="anchor" aria-hidden="true" id="apisix"></a><a href="#apisix" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<table>
+<thead>
+<tr><th>Version</th><th>Release Date</th><th>Downloads</th></tr>
+</thead>
+<tbody>
+<tr><td>2.0</td><td>27/10/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/2.0/apache-apisix-2.0-src.tgz">source</a> (<a href="https://downloads.apache.org/apisix/2.0/apache-apisix-2.0-src.tgz.asc">asc</a> <a href="https://downloads.apache.org/apisix/2.0/apache-apisix-2.0-src.tgz.sha512">sha512</a>)</td></tr>
+<tr><td>1.5</td><td>05/08/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/1.5/apache-apisix-1.5-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/1.5/apache-apisix-1.5-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/1.5/apache-apisix-1.5-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.4.1</td><td>20/07/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/1.4.1/apache-apisix-1.4.1-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/1.4.1/apache-apisix-1.4.1-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/1.4.1/apache-apisix-1.4.1-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.4</td><td>29/06/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/1.4/apache-apisix-1.4-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/1.4/apache-apisix-1.4-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/1.4/apache-apisix-1.4-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.3</td><td>24/05/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/1.3/apache-apisix-1.3-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/1.3/apache-apisix-1.3-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/1.3/apache-apisix-1.3-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.2</td><td>20/04/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/1.2/apache-apisix-1.2-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/1.2/apache-apisix-1.2-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/1.2/apache-apisix-1.2-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.1</td><td>24/02/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/1.1/apache-apisix-1.1-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/1.1/apache-apisix-1.1-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/1.1/apache-apisix-1.1-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>1.0</td><td>15/01/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/1.0/apache-apisix-1.0-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/1.0/apache-apisix-1.0-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/1.0/apache-apisix-1.0-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+<tr><td>0.9</td><td>24/11/2019</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/apisix/0.9/apache-apisix-0.9-incubating-src.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/apisix/0.9/apache-apisix-0.9-incubating-src.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/apisix/0.9/apache-apisix-0.9-incubating-src.tar.gz.sha512">sha512</a>)</td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="apisix-dashboard"></a><a href="#apisix-dashboard" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<table>
+<thead>
+<tr><th>Version</th><th>Release Date</th><th>Downloads</th></tr>
+</thead>
+<tbody>
+<tr><td>1.5</td><td>12/08/2020</td><td><a href="https://www.apache.org/dyn/closer.cgi/apisix/dashboard-1.5/apache-apisix-dashboard-1.5.tar.gz">source</a> (<a href="https://downloads.apache.org/apisix/dashboard-1.5/apache-apisix-dashboard-1.5.tar.gz.asc">asc</a> <a href="https://downloads.apache.org/apisix/dashboard-1.5/apache-apisix-dashboard-1.5.tar.gz.sha512">sha512</a>)</td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="verify-the-releases"></a><a href="#verify-the-releases" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p><a href="https://downloads.apache.org/apisix/KEYS">PGP signatures KEYS</a></p>
+<p>It is essential that you verify the integrity of the downloaded files using the PGP or SHA signatures. The PGP signatures can be verified using GPG or PGP. Please download the KEYS as well as the asc signature files for relevant distribution. It is recommended to get these files from the main distribution directory and not from the mirrors.</p>
+<pre><code class="hljs css language-sh">gpg -i KEYS
+
+<span class="hljs-comment"># or</span>
+
+pgpk -a KEYS
+
+<span class="hljs-comment"># or</span>
+
+pgp -ka KEYS
+</code></pre>
+<p>To verify the binaries/sources you can download the relevant asc files for it from main distribution directory and follow the below guide.</p>
+<pre><code class="hljs css language-sh">gpg --verify apache-apisix-**\*\*\*\***.asc apache-apisix-****\*****
+
+or
+
+pgpv apache-apisix-**\*\*\*\***.asc
+
+or
+
+pgp apache-apisix-**\*\*\*\***.asc
+</code></pre>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#apisix">APISIX™</a></li><li><a href="#apisix-dashboard">APISIX™ Dashboard</a></li><li><a href="#verify-the-releases">Verify the releases</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a hre [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/en/help.html b/en/help.html
index 58a3c6f..d269cbf 100644
--- a/en/help.html
+++ b/en/help.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
 </span></div></h2><div><span><p>Learn more using the <a href="https://github.com/apache/apisix/tree/master/doc">documentation on this site.</a></p>
 </span></div></div></div><div class="blockElement threeByGridBlock"><div class="blockContent"><h2><div><span><p>Join the community</p>
 </span></div></h2><div><span><p>Ask questions about the documentation and project</p>
diff --git a/en/help/index.html b/en/help/index.html
index 58a3c6f..d269cbf 100644
--- a/en/help/index.html
+++ b/en/help/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
 </span></div></h2><div><span><p>Learn more using the <a href="https://github.com/apache/apisix/tree/master/doc">documentation on this site.</a></p>
 </span></div></div></div><div class="blockElement threeByGridBlock"><div class="blockContent"><h2><div><span><p>Join the community</p>
 </span></div></h2><div><span><p>Ask questions about the documentation and project</p>
diff --git a/en/index.html b/en/index.html
index 77d4ca1..d90dc6b 100644
--- a/en/index.html
+++ b/en/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
 </span></div></h2><div><span><p>Cloud-native microservices API gateway, delivering the ultimate performance, security, open source and scalable platform for all your APIs and microservices. Apache APISIX is based on Nginx and etcd. Compared with traditional API gateways, APISIX has dynamic routing and plug-in hot loading, which is especially suitable for API management under micro-service system.</p>
 </span></div></div><div class="blockImage"><img src="https://github.com/apache/apisix/blob/master/doc/images/apisix.png?raw=true"/></div></div></div></div></div><div class="productShowcaseSection paddingBottom"><h2>Who is Using This?</h2><p>This project is used by all these folks</p><div class="logos"><a href="https://www.360.com"><img src="https://static.apiseven.com/2020/05/WechatIMG618.png" alt="360" title="360"/></a><a href="https://www.hellotalk.com/?lang=en"><img src="https://stati [...]
                 document.addEventListener('keyup', function(e) {
diff --git a/en/users.html b/en/users.html
index 033c537..ee8b8c5 100644
--- a/en/users.html
+++ b/en/users.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/en/users/index.html b/en/users/index.html
index 033c537..ee8b8c5 100644
--- a/en/users/index.html
+++ b/en/users/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/help.html b/help.html
index 510005e..8bb650c 100644
--- a/help.html
+++ b/help.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
 </span></div></h2><div><span><p>Learn more using the <a href="https://github.com/apache/apisix/tree/master/doc">documentation on this site.</a></p>
 </span></div></div></div><div class="blockElement threeByGridBlock"><div class="blockContent"><h2><div><span><p>Join the community</p>
 </span></div></h2><div><span><p>Ask questions about the documentation and project</p>
diff --git a/help/index.html b/help/index.html
index 510005e..8bb650c 100644
--- a/help/index.html
+++ b/help/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
 </span></div></h2><div><span><p>Learn more using the <a href="https://github.com/apache/apisix/tree/master/doc">documentation on this site.</a></p>
 </span></div></div></div><div class="blockElement threeByGridBlock"><div class="blockContent"><h2><div><span><p>Join the community</p>
 </span></div></h2><div><span><p>Ask questions about the documentation and project</p>
diff --git a/index.html b/index.html
index 02cad60..44b8a68 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
 </span></div></h2><div><span><p>Cloud-native microservices API gateway, delivering the ultimate performance, security, open source and scalable platform for all your APIs and microservices. Apache APISIX is based on Nginx and etcd. Compared with traditional API gateways, APISIX has dynamic routing and plug-in hot loading, which is especially suitable for API management under micro-service system.</p>
 </span></div></div><div class="blockImage"><img src="https://github.com/apache/apisix/blob/master/doc/images/apisix.png?raw=true"/></div></div></div></div></div><div class="productShowcaseSection paddingBottom"><h2>Who is Using This?</h2><p>This project is used by all these folks</p><div class="logos"><a href="https://www.360.com"><img src="https://static.apiseven.com/2020/05/WechatIMG618.png" alt="360" title="360"/></a><a href="https://www.hellotalk.com/?lang=en"><img src="https://stati [...]
                 document.addEventListener('keyup', function(e) {
diff --git a/release-guide.html b/release-guide.html
new file mode 100644
index 0000000..c738a99
--- /dev/null
+++ b/release-guide.html
@@ -0,0 +1,253 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Release Guide · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## GPG Settings"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Release Guide · Apache APISIX™"/><meta property="og:type" content="website"/><meta property="og:url" co [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Release Guide</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="gpg-settings"></a><a href="#gpg-settings" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" [...]
+<h3><a class="anchor" aria-hidden="true" id="install-gpg"></a><a href="#install-gpg" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<p>Download GnuPG from <a href="https://gnupg.org/download/index.html">https://gnupg.org/download/index.html</a>. There are differences between the 1.x and 2.x versions of the GnuPG commands, and the following descriptions are based on the GnuPG 2.x versions.</p>
+<p>After the installation is complete, execute the following command to check the version.</p>
+<pre><code class="hljs css language-sh">$ gpg --version
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="create-key"></a><a href="#create-key" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>Execute the following command to create the key:</p>
+<h4><a class="anchor" aria-hidden="true" id="gnupg-2x:"></a><a href="#gnupg-2x:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<pre><code class="hljs css language-sh">$ gpg --full-gen-key
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="gnupg-1x:"></a><a href="#gnupg-1x:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<pre><code class="hljs css language-sh">gpg --gen-key
+</code></pre>
+<p>Follow the instructions to generate key:</p>
+<p>Note: Please use Apache email address to generate the GPG Key.</p>
+<pre><code class="hljs css language-sh">gpg (GnuPG) 2.0.12; Copyright (C) 2009 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+(1) RSA and RSA (default)
+(2) DSA and Elgamal
+(3) DSA (sign only)
+(4) RSA (sign only)
+Your selection? 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize <span class="hljs-keyword">do</span> you want? (2048) 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+0 = key does not expire
+&lt;n&gt; = key expires <span class="hljs-keyword">in</span> n days
+&lt;n&gt;w = key expires <span class="hljs-keyword">in</span> n weeks
+&lt;n&gt;m = key expires <span class="hljs-keyword">in</span> n months
+&lt;n&gt;y = key expires <span class="hljs-keyword">in</span> n years
+Key is valid <span class="hljs-keyword">for</span>? (0)
+Key does not expire at all
+Is this correct? (y/N) y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: <span class="hljs-variable">${Enter your username}</span>
+Email address: <span class="hljs-variable">${Enter your email address}</span>
+Comment: <span class="hljs-variable">${Enter comments}</span>
+You selected this USER-ID:
+  <span class="hljs-string">"<span class="hljs-variable">${Entered username}</span> (<span class="hljs-variable">${Entered comments}</span>) &amp;lt;<span class="hljs-variable">${Entered email address}</span>&gt;"</span>
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
+You need a Passphrase to protect your secret key. <span class="hljs-comment"># Enter passphrase</span>
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="view-the-generated-key"></a><a href="#view-the-generated-key" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
+<pre><code class="hljs css language-sh">gpg --list-keys
+</code></pre>
+<p>The example result:</p>
+<pre><code class="hljs css language-sh">$ gpg --list-keys
+
+/home/resty/.gnupg/pubring.gpg
+------------------------------
+pub 4096R/30B5FD72 2020-01-02
+uid Yuansheng Wang &lt;membphis@apache.org&gt;
+sub 4096R/3D2F913D 2020-01-02
+</code></pre>
+<p>And <code>30B5FD72</code> is the ID of pub key</p>
+<h3><a class="anchor" aria-hidden="true" id="synchronizing-the-public-key-to-the-server"></a><a href="#synchronizing-the-public-key-to-the-server" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c [...]
+<p>The steps are as follows:</p>
+<pre><code class="hljs css language-sh"><span class="hljs-comment"># The last parameter is the public key ID generated above</span>
+$ gpg --keyserver hkp://pool.sks-keyservers.net --send-key 30B5FD72
+
+gpg: sending key 30B5FD72 to hkp server pool.sks-keyservers.net
+</code></pre>
+<p><code>pool.sks-keyservers.net</code> is one of pub key servers,the pub key will be automatically synchronized between each server, just choose any one.</p>
+<h3><a class="anchor" aria-hidden="true" id="add-key-fingerprint-to-idapacheorg"></a><a href="#add-key-fingerprint-to-idapacheorg" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>get Key Fingerprint</p>
+<pre><code class="hljs css language-sh"><span class="hljs-comment"># Note the `Key fingerprint` section below.</span>
+$ gpg --list-keys --fingerprint
+
+/home/resty/.gnupg/pubring.gpg
+------------------------------
+pub 4096R/30B5FD72 2020-01-02
+Key fingerprint = 0F91 BE0A 55A7 B22F DE1A CEEC 3352 48FD 30B5 FD72
+uid Yuansheng Wang &lt;membphis@apache.org&gt;
+sub 4096R/3D2F913D 2020-01-02
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="login-idapacheorg-and-submit-key-fingerprint"></a><a href="#login-idapacheorg-and-submit-key-fingerprint" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v [...]
+<h3><a class="anchor" aria-hidden="true" id="add-your-gpg-key-to-apache-svn"></a><a href="#add-your-gpg-key-to-apache-svn" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 1 [...]
+<p>download APISIX svn</p>
+<pre><code class="hljs css language-sh">$ svn --username=<span class="hljs-variable">${Apache username}</span> co https://dist.apache.org/repos/dist/dev/apisix
+</code></pre>
+<pre><code class="hljs css language-sh">$ <span class="hljs-built_in">cd</span> apisix
+
+$ ls
+
+KEYS
+</code></pre>
+<p>Export the public key and append to the KEYS file.</p>
+<pre><code class="hljs css language-sh">$ gpg -a --<span class="hljs-built_in">export</span> <span class="hljs-variable">${GPG username}</span> &gt;&gt; KEYS
+</code></pre>
+<p>Commit the modified KEYS file, saving the public key to the svn server.</p>
+<pre><code class="hljs css language-sh">$ svn --username=<span class="hljs-variable">${Apache username}</span> commit -m <span class="hljs-string">"added \${Apache email} gpg pub key"</span>
+Authentication realm: &lt;https://dist.apache.org:443&gt; ASF Committers
+Password <span class="hljs-keyword">for</span> <span class="hljs-string">'membphis'</span>: <span class="hljs-comment"># input password</span>
+Store password unencrypted (yes/no)? yes
+Sending KEYS
+Transmitting file data .
+Committed revision 37434.
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="make-source-code-package-and-upload-to-apache-svn"></a><a href="#make-source-code-package-and-upload-to-apache-svn" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
+<p>Here's an example of preparing a 1.0-rc1 version. Before you make package, make sure you have branch v1.0 ready on github.</p>
+<pre><code class="hljs css language-sh"><span class="hljs-comment"># Create a new version number directory and enter, for example: 1.0-rc1</span>
+$ mkdir 1.0-rc1 &amp;&amp; <span class="hljs-built_in">cd</span> 1.0-rc1
+
+<span class="hljs-comment"># download repo</span>
+git <span class="hljs-built_in">clone</span> -b v1.0 git@github.com:apache/apisix.git apache-apisix-1.0
+
+<span class="hljs-comment"># check version</span>
+$ <span class="hljs-built_in">cd</span> apache-apisix-1.0 &amp;&amp; ./utils/check-version.sh 1.0 &amp;&amp; <span class="hljs-built_in">cd</span> ..
+
+<span class="hljs-comment"># delete .git</span>
+$ rm -rf apache-apisix-1.0/.git
+
+<span class="hljs-comment"># make tar package</span>
+$ tar zcvf apache-apisix-1.0-rc1-src.tar.gz apache-apisix-1.0
+
+<span class="hljs-comment"># Signature (this brings up a dialog box that prompts you to enter the password you entered when generating the gpg)</span>
+$ gpg --armor --detach-sign apache-apisix-1.0-rc1-src.tar.gz
+
+<span class="hljs-comment"># Generate sha512 checksum file</span>
+$ shasum -a512 apache-apisix-1.0-rc1-src.tar.gz &gt; apache-apisix-1.0-rc1-src.tar.gz.sha512
+
+<span class="hljs-comment"># remove apache-apisix-1.0-rc1</span>
+$ rm -rf apache-apisix-1.0
+
+<span class="hljs-comment"># check files</span>
+$ <span class="hljs-built_in">cd</span> .. &amp;&amp; tree
+.
+├── 1.0-rc1
+│   ├── apache-apisix-1.0-rc1-src.tar.gz
+│   ├── apache-apisix-1.0-rc1-src.tar.gz.asc
+│   └── apache-apisix-1.0-rc1-src.tar.gz.sha512
+└── KEYS
+
+1 directory, 4 files
+
+<span class="hljs-comment"># add files to SVN</span>
+$ svn add *
+A         1.0-rc1
+A  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.asc
+A  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz
+A         1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.sha512
+svn: warning: W150002: <span class="hljs-string">'/home/resty/git/apache_svn/apisix/KEYS'</span> is already under version control
+svn: E200009: Could not add all targets because some targets are already versioned
+svn: E200009: Illegal target <span class="hljs-keyword">for</span> the requested operation
+
+<span class="hljs-comment"># commit to Apache SVN</span>
+$ svn --username=<span class="hljs-variable">${Apache username}</span> commit -m <span class="hljs-string">"release 1.0-rc1"</span>
+Adding         1.0-rc1
+Adding  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz
+Adding  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.asc
+Adding         1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.sha512
+Transmitting file data ...
+Committed revision 37435.
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="send-vote-thread-to-dev-mailinglist"></a><a href="#send-vote-thread-to-dev-mailinglist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
+<p>Click here to view the reference emailThere is a minimum wait of 72 hours before statistical voting results. If you get -1 vote, you need to solve the problem before you can continue.</p>
+<h3><a class="anchor" aria-hidden="true" id="send-vote-result-thread-to-dev-mailinglist"></a><a href="#send-vote-result-thread-to-dev-mailinglist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c [...]
+<p>Click here to view the reference email at least 3 <code>+1</code> votes is required, then send the vote result to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="send-announce"></a><a href="#send-announce" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Click here to view the reference email send announce email to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a> and <a href="mailto:announce@apache.org">announce@apache.org</a></p>
+<h3><a class="anchor" aria-hidden="true" id="move-package-from-dev-to-dist"></a><a href="#move-package-from-dev-to-dist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>Remove <code>rc</code> from the package name, move KEYS and package to address</p>
+<h3><a class="anchor" aria-hidden="true" id="update-download-page"></a><a href="#update-download-page" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p>update address , source repo is <a href="https://github.com/apache/apisix-website">https://github.com/apache/apisix-website</a></p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/2fa"><span class="arrow-prev">← </span><span>2FA</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#gpg-settings">GPG Settings</a><ul class="toc-headings"><li><a href="#install-gpg">Install GPG</a></li><li><a href="#create-key">Create Key</a></li><li><a href="#view-the-generated-key">Vie [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/release-guide/index.html b/release-guide/index.html
new file mode 100644
index 0000000..c738a99
--- /dev/null
+++ b/release-guide/index.html
@@ -0,0 +1,253 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Release Guide · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## GPG Settings"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Release Guide · Apache APISIX™"/><meta property="og:type" content="website"/><meta property="og:url" co [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Release Guide</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="gpg-settings"></a><a href="#gpg-settings" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" [...]
+<h3><a class="anchor" aria-hidden="true" id="install-gpg"></a><a href="#install-gpg" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<p>Download GnuPG from <a href="https://gnupg.org/download/index.html">https://gnupg.org/download/index.html</a>. There are differences between the 1.x and 2.x versions of the GnuPG commands, and the following descriptions are based on the GnuPG 2.x versions.</p>
+<p>After the installation is complete, execute the following command to check the version.</p>
+<pre><code class="hljs css language-sh">$ gpg --version
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="create-key"></a><a href="#create-key" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>Execute the following command to create the key:</p>
+<h4><a class="anchor" aria-hidden="true" id="gnupg-2x:"></a><a href="#gnupg-2x:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<pre><code class="hljs css language-sh">$ gpg --full-gen-key
+</code></pre>
+<h4><a class="anchor" aria-hidden="true" id="gnupg-1x:"></a><a href="#gnupg-1x:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<pre><code class="hljs css language-sh">gpg --gen-key
+</code></pre>
+<p>Follow the instructions to generate key:</p>
+<p>Note: Please use Apache email address to generate the GPG Key.</p>
+<pre><code class="hljs css language-sh">gpg (GnuPG) 2.0.12; Copyright (C) 2009 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+(1) RSA and RSA (default)
+(2) DSA and Elgamal
+(3) DSA (sign only)
+(4) RSA (sign only)
+Your selection? 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize <span class="hljs-keyword">do</span> you want? (2048) 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+0 = key does not expire
+&lt;n&gt; = key expires <span class="hljs-keyword">in</span> n days
+&lt;n&gt;w = key expires <span class="hljs-keyword">in</span> n weeks
+&lt;n&gt;m = key expires <span class="hljs-keyword">in</span> n months
+&lt;n&gt;y = key expires <span class="hljs-keyword">in</span> n years
+Key is valid <span class="hljs-keyword">for</span>? (0)
+Key does not expire at all
+Is this correct? (y/N) y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: <span class="hljs-variable">${Enter your username}</span>
+Email address: <span class="hljs-variable">${Enter your email address}</span>
+Comment: <span class="hljs-variable">${Enter comments}</span>
+You selected this USER-ID:
+  <span class="hljs-string">"<span class="hljs-variable">${Entered username}</span> (<span class="hljs-variable">${Entered comments}</span>) &amp;lt;<span class="hljs-variable">${Entered email address}</span>&gt;"</span>
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
+You need a Passphrase to protect your secret key. <span class="hljs-comment"># Enter passphrase</span>
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="view-the-generated-key"></a><a href="#view-the-generated-key" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
+<pre><code class="hljs css language-sh">gpg --list-keys
+</code></pre>
+<p>The example result:</p>
+<pre><code class="hljs css language-sh">$ gpg --list-keys
+
+/home/resty/.gnupg/pubring.gpg
+------------------------------
+pub 4096R/30B5FD72 2020-01-02
+uid Yuansheng Wang &lt;membphis@apache.org&gt;
+sub 4096R/3D2F913D 2020-01-02
+</code></pre>
+<p>And <code>30B5FD72</code> is the ID of pub key</p>
+<h3><a class="anchor" aria-hidden="true" id="synchronizing-the-public-key-to-the-server"></a><a href="#synchronizing-the-public-key-to-the-server" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c [...]
+<p>The steps are as follows:</p>
+<pre><code class="hljs css language-sh"><span class="hljs-comment"># The last parameter is the public key ID generated above</span>
+$ gpg --keyserver hkp://pool.sks-keyservers.net --send-key 30B5FD72
+
+gpg: sending key 30B5FD72 to hkp server pool.sks-keyservers.net
+</code></pre>
+<p><code>pool.sks-keyservers.net</code> is one of pub key servers,the pub key will be automatically synchronized between each server, just choose any one.</p>
+<h3><a class="anchor" aria-hidden="true" id="add-key-fingerprint-to-idapacheorg"></a><a href="#add-key-fingerprint-to-idapacheorg" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
+<p>get Key Fingerprint</p>
+<pre><code class="hljs css language-sh"><span class="hljs-comment"># Note the `Key fingerprint` section below.</span>
+$ gpg --list-keys --fingerprint
+
+/home/resty/.gnupg/pubring.gpg
+------------------------------
+pub 4096R/30B5FD72 2020-01-02
+Key fingerprint = 0F91 BE0A 55A7 B22F DE1A CEEC 3352 48FD 30B5 FD72
+uid Yuansheng Wang &lt;membphis@apache.org&gt;
+sub 4096R/3D2F913D 2020-01-02
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="login-idapacheorg-and-submit-key-fingerprint"></a><a href="#login-idapacheorg-and-submit-key-fingerprint" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v [...]
+<h3><a class="anchor" aria-hidden="true" id="add-your-gpg-key-to-apache-svn"></a><a href="#add-your-gpg-key-to-apache-svn" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 1 [...]
+<p>download APISIX svn</p>
+<pre><code class="hljs css language-sh">$ svn --username=<span class="hljs-variable">${Apache username}</span> co https://dist.apache.org/repos/dist/dev/apisix
+</code></pre>
+<pre><code class="hljs css language-sh">$ <span class="hljs-built_in">cd</span> apisix
+
+$ ls
+
+KEYS
+</code></pre>
+<p>Export the public key and append to the KEYS file.</p>
+<pre><code class="hljs css language-sh">$ gpg -a --<span class="hljs-built_in">export</span> <span class="hljs-variable">${GPG username}</span> &gt;&gt; KEYS
+</code></pre>
+<p>Commit the modified KEYS file, saving the public key to the svn server.</p>
+<pre><code class="hljs css language-sh">$ svn --username=<span class="hljs-variable">${Apache username}</span> commit -m <span class="hljs-string">"added \${Apache email} gpg pub key"</span>
+Authentication realm: &lt;https://dist.apache.org:443&gt; ASF Committers
+Password <span class="hljs-keyword">for</span> <span class="hljs-string">'membphis'</span>: <span class="hljs-comment"># input password</span>
+Store password unencrypted (yes/no)? yes
+Sending KEYS
+Transmitting file data .
+Committed revision 37434.
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="make-source-code-package-and-upload-to-apache-svn"></a><a href="#make-source-code-package-and-upload-to-apache-svn" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4  [...]
+<p>Here's an example of preparing a 1.0-rc1 version. Before you make package, make sure you have branch v1.0 ready on github.</p>
+<pre><code class="hljs css language-sh"><span class="hljs-comment"># Create a new version number directory and enter, for example: 1.0-rc1</span>
+$ mkdir 1.0-rc1 &amp;&amp; <span class="hljs-built_in">cd</span> 1.0-rc1
+
+<span class="hljs-comment"># download repo</span>
+git <span class="hljs-built_in">clone</span> -b v1.0 git@github.com:apache/apisix.git apache-apisix-1.0
+
+<span class="hljs-comment"># check version</span>
+$ <span class="hljs-built_in">cd</span> apache-apisix-1.0 &amp;&amp; ./utils/check-version.sh 1.0 &amp;&amp; <span class="hljs-built_in">cd</span> ..
+
+<span class="hljs-comment"># delete .git</span>
+$ rm -rf apache-apisix-1.0/.git
+
+<span class="hljs-comment"># make tar package</span>
+$ tar zcvf apache-apisix-1.0-rc1-src.tar.gz apache-apisix-1.0
+
+<span class="hljs-comment"># Signature (this brings up a dialog box that prompts you to enter the password you entered when generating the gpg)</span>
+$ gpg --armor --detach-sign apache-apisix-1.0-rc1-src.tar.gz
+
+<span class="hljs-comment"># Generate sha512 checksum file</span>
+$ shasum -a512 apache-apisix-1.0-rc1-src.tar.gz &gt; apache-apisix-1.0-rc1-src.tar.gz.sha512
+
+<span class="hljs-comment"># remove apache-apisix-1.0-rc1</span>
+$ rm -rf apache-apisix-1.0
+
+<span class="hljs-comment"># check files</span>
+$ <span class="hljs-built_in">cd</span> .. &amp;&amp; tree
+.
+├── 1.0-rc1
+│   ├── apache-apisix-1.0-rc1-src.tar.gz
+│   ├── apache-apisix-1.0-rc1-src.tar.gz.asc
+│   └── apache-apisix-1.0-rc1-src.tar.gz.sha512
+└── KEYS
+
+1 directory, 4 files
+
+<span class="hljs-comment"># add files to SVN</span>
+$ svn add *
+A         1.0-rc1
+A  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.asc
+A  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz
+A         1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.sha512
+svn: warning: W150002: <span class="hljs-string">'/home/resty/git/apache_svn/apisix/KEYS'</span> is already under version control
+svn: E200009: Could not add all targets because some targets are already versioned
+svn: E200009: Illegal target <span class="hljs-keyword">for</span> the requested operation
+
+<span class="hljs-comment"># commit to Apache SVN</span>
+$ svn --username=<span class="hljs-variable">${Apache username}</span> commit -m <span class="hljs-string">"release 1.0-rc1"</span>
+Adding         1.0-rc1
+Adding  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz
+Adding  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.asc
+Adding         1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.sha512
+Transmitting file data ...
+Committed revision 37435.
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="send-vote-thread-to-dev-mailinglist"></a><a href="#send-vote-thread-to-dev-mailinglist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
+<p>Click here to view the reference emailThere is a minimum wait of 72 hours before statistical voting results. If you get -1 vote, you need to solve the problem before you can continue.</p>
+<h3><a class="anchor" aria-hidden="true" id="send-vote-result-thread-to-dev-mailinglist"></a><a href="#send-vote-result-thread-to-dev-mailinglist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c [...]
+<p>Click here to view the reference email at least 3 <code>+1</code> votes is required, then send the vote result to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="send-announce"></a><a href="#send-announce" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>Click here to view the reference email send announce email to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a> and <a href="mailto:announce@apache.org">announce@apache.org</a></p>
+<h3><a class="anchor" aria-hidden="true" id="move-package-from-dev-to-dist"></a><a href="#move-package-from-dev-to-dist" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>Remove <code>rc</code> from the package name, move KEYS and package to address</p>
+<h3><a class="anchor" aria-hidden="true" id="update-download-page"></a><a href="#update-download-page" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p>update address , source repo is <a href="https://github.com/apache/apisix-website">https://github.com/apache/apisix-website</a></p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/2fa"><span class="arrow-prev">← </span><span>2FA</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#gpg-settings">GPG Settings</a><ul class="toc-headings"><li><a href="#install-gpg">Install GPG</a></li><li><a href="#create-key">Create Key</a></li><li><a href="#view-the-generated-key">Vie [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/security.html b/security.html
new file mode 100644
index 0000000..57276dc
--- /dev/null
+++ b/security.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Security · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. Apache APISIX is also very concerned Security issues related to its features and functionality. [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Security</h1></header><article><div><span><p>The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. Apache APISIX is also very concerned Security issues related to its features and functionality.</p>
+<p>If you have apprehensions regarding APISIX’s security or you discover vulnerability or potential threat, don’t hesitate to get in touch with the Apache Security Team by dropping a mail at <a href="mailto:security@apache.org">security@apache.org</a>. Please specify the project name as APISIX and its product name APISIX or APISIX-Dashboard in the email and provide a description of the relevant problem or potential threat. You are also urged to recommend the way to reproduce and replicat [...]
+<p>Please pay attention to report the security issue on the security email before disclosing it on public domain.</p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-next button" href="/subscrbe-guide"><span>Subscribe Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a href="https://www.apache.org/">Foundation</a><a href="https://www.apache.or [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/security/index.html b/security/index.html
new file mode 100644
index 0000000..57276dc
--- /dev/null
+++ b/security/index.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Security · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. Apache APISIX is also very concerned Security issues related to its features and functionality. [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Security</h1></header><article><div><span><p>The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. Apache APISIX is also very concerned Security issues related to its features and functionality.</p>
+<p>If you have apprehensions regarding APISIX’s security or you discover vulnerability or potential threat, don’t hesitate to get in touch with the Apache Security Team by dropping a mail at <a href="mailto:security@apache.org">security@apache.org</a>. Please specify the project name as APISIX and its product name APISIX or APISIX-Dashboard in the email and provide a description of the relevant problem or potential threat. You are also urged to recommend the way to reproduce and replicat [...]
+<p>Please pay attention to report the security issue on the security email before disclosing it on public domain.</p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-next button" href="/subscrbe-guide"><span>Subscribe Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"></a><div><h5>ASF</h5><a href="https://www.apache.org/">Foundation</a><a href="https://www.apache.or [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index a3ba8ec..6277d14 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://apisix.apache.org/help</loc><changefreq>weekly</changefreq><priority>0.5</priority><x [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://apisix.apache.org/help</loc><changefreq>weekly</changefreq><priority>0.5</priority><x [...]
\ No newline at end of file
diff --git a/subscrbe-guide.html b/subscrbe-guide.html
new file mode 100644
index 0000000..14449fd
--- /dev/null
+++ b/subscrbe-guide.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Subscribe Guide · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="During the process of using Apache APISIX, if there has any problems, suggestion or new ideas, please feel free to use the Apache mailing-list to participate in the community construction."/><meta nam [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Subscribe Guide</h1></header><article><div><span><p>During the process of using Apache APISIX, if there has any problems, suggestion or new ideas, please feel free to use the Apache mailing-list to participate in the community construction.</p>
+<ol>
+<li><p>Send e-mail to subscribe the mailing-list first. Use your mailbox to send an e-mail to <a href="mailto:dev-subscribe@apisix.apache.org">dev-subscribe@apisix.apache.org</a> with any subjects or contents.</p></li>
+<li><p>Receive and reply the confirmation e-mail. After Step 1, you will receive a confirmation e-mail from <a href="mailto:dev-help@apisix.apache.org">dev-help@apisix.apache.org</a> (if you can not receive that, please check “RSS feeds”, “junk e-mail” or other items). Reply that e-mail directly or click the link in e-mail to reply, with any subjects or contents.</p></li>
+<li><p>Receive the Welcome e-mail. After finishing the two steps above, an e-mail with the subject of WELCOME to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a> will be sent to your e-mail address. Until now, you have succeeded in subscribing Apache APISIX mailing-list.</p></li>
+<li><p>Until now, you can interact with community by your subscribed email or track email conversations by Archived email list.</p></li>
+</ol>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/security"><span class="arrow-prev">← </span><span>Security</span></a><a class="docs-next button" href="/contributor-guide"><span>Contributor Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class=" [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/subscrbe-guide/index.html b/subscrbe-guide/index.html
new file mode 100644
index 0000000..14449fd
--- /dev/null
+++ b/subscrbe-guide/index.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Subscribe Guide · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="During the process of using Apache APISIX, if there has any problems, suggestion or new ideas, please feel free to use the Apache mailing-list to participate in the community construction."/><meta nam [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Subscribe Guide</h1></header><article><div><span><p>During the process of using Apache APISIX, if there has any problems, suggestion or new ideas, please feel free to use the Apache mailing-list to participate in the community construction.</p>
+<ol>
+<li><p>Send e-mail to subscribe the mailing-list first. Use your mailbox to send an e-mail to <a href="mailto:dev-subscribe@apisix.apache.org">dev-subscribe@apisix.apache.org</a> with any subjects or contents.</p></li>
+<li><p>Receive and reply the confirmation e-mail. After Step 1, you will receive a confirmation e-mail from <a href="mailto:dev-help@apisix.apache.org">dev-help@apisix.apache.org</a> (if you can not receive that, please check “RSS feeds”, “junk e-mail” or other items). Reply that e-mail directly or click the link in e-mail to reply, with any subjects or contents.</p></li>
+<li><p>Receive the Welcome e-mail. After finishing the two steps above, an e-mail with the subject of WELCOME to <a href="mailto:dev@apisix.apache.org">dev@apisix.apache.org</a> will be sent to your e-mail address. Until now, you have succeeded in subscribing Apache APISIX mailing-list.</p></li>
+<li><p>Until now, you can interact with community by your subscribed email or track email conversations by Archived email list.</p></li>
+</ol>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/security"><span class="arrow-prev">← </span><span>Security</span></a><a class="docs-next button" href="/contributor-guide"><span>Contributor Guide</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class=" [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/team.html b/team.html
new file mode 100644
index 0000000..e1156f0
--- /dev/null
+++ b/team.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Team · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## Members"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Team · Apache APISIX™"/><meta property="og:type" content="website"/><meta property="og:url" content="https://apisix.a [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+<h3><a class="anchor" aria-hidden="true" id="pmc"></a><a href="#pmc" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
+<table>
+<thead>
+<tr><th>ID</th><th>GitHub</th><th>Public Name</th></tr>
+</thead>
+<tbody>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/akayeshmantha">akayeshmantha</a></td><td>Akayeshmantha</td><td>Ayeshmantha Perera</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/yousa">yousa</a></td><td>Miss-you</td><td>Hui Li</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/qiujiayu">qiujiayu</a></td><td>qiujiayu</td><td>Jiayu Qiu</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/chenjunxu">chenjunxu</a></td><td>nic-chen</td><td>Junxu Chen</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/totemofwolf">totemofwolf</a></td><td>totemofwolf</td><td>Lang Wang</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/liling">liling</a></td><td>lilien1010</td><td>Ling Li</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/linsir">linsir</a></td><td>linsir</td><td>Linsir Wu</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/wenming">wenming</a></td><td>moonming</td><td>Ming Wen</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/sshniro">sshniro</a></td><td>sshniro</td><td>Nirojan Selvanathan</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/wusheng">wusheng</a></td><td>wu-sheng</td><td>Sheng Wu</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/kvn">kvn</a></td><td>gxthrj</td><td>Wei Jin</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/agile6v">agile6v</a></td><td>agile6v</td><td>Wei Liu</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/membphis">membphis</a></td><td>membphis</td><td>YuanSheng Wang</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/spacewander">spacewander</a></td><td>spacewander</td><td>Zexuan Luo</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/juzhiyuan">juzhiyuan</a></td><td>juzhiyuan</td><td>Zhiyuan</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/shuaijinchao">shuaijinchao</a></td><td>shuaijinchao</td><td>JinChao Shuai</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/vinci">vinci</a></td><td>ShiningRush</td><td>Vinci</td></tr>
+</tbody>
+</table>
+<h3><a class="anchor" aria-hidden="true" id="committer"></a><a href="#committer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<blockquote>
+<p>The following list excludes PMC members above.</p>
+</blockquote>
+<table>
+<thead>
+<tr><th>ID</th><th>GitHub</th><th>Public Name</th></tr>
+</thead>
+<tbody>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/tangke">tangke</a></td><td>supermario1990</td><td>Ke Tang</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/lizhiyong">lizhiyong</a></td><td>zhiyong0804</td><td>Li Zhiyong</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/coolsoul">coolsoul</a></td><td>soulsoul</td><td>Suo Zhang</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/sunyi">sunyi</a></td><td>LiteSun</td><td>Yi Sun</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/liyong">liyong</a></td><td>chnliyong</td><td>Yong Li</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/bzp2010">bzp2010</a></td><td>bzp2010</td><td>Zeping Bai</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/liuxiran">liuxiran</a></td><td>liuxiran</td><td>Xiran Liu</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/shuyangw">shuyangw</a></td><td>yiyiyimu</td><td>Shuyang Wu</td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="mentors"></a><a href="#mentors" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<table>
+<thead>
+<tr><th>ID</th><th>GitHub</th><th>Public Name</th></tr>
+</thead>
+<tbody>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/jmclean">jmclean</a></td><td>justinmclean</td><td>Justin Mclean</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/djkevincr">djkevincr</a></td><td>djkevincr</td><td>Kevin Ratnasekera</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/vongosling">vongosling</a></td><td>vongosling</td><td>Von Gosling</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/ningjiang">ningjiang</a></td><td>WillemJiang</td><td>Willem Ning Jiang</td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="contributors"></a><a href="#contributors" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<blockquote>
+<p>You can find all contributors of Apache APISIX from GitHub contribution list.</p>
+</blockquote>
+<ol>
+<li><a href="https://github.com/apache/apisix/graphs/contributors">apisix</a></li>
+<li><a href="https://github.com/apache/apisix-dashboard/graphs/contributors">apisix-dashboard</a></li>
+</ol>
+<h2><a class="anchor" aria-hidden="true" id="becoming-a-committer"></a><a href="#becoming-a-committer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p>The Apache APISIX community follows the Apache Community’s process on accepting a new committer. After a contributor participates APISIX's community actively, PMC and Committers will make decisions to invite the contributor join Committers and PMC.</p>
+<p>You can read <a href="../docs/contributor-guide">Contributor Guide</a> to participate the community, and can get more information on <a href="../docs/committer-guide">Committer Guide</a>.</p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#members">Members</a><ul class="toc-headings"><li><a href="#pmc">PMC</a></li><li><a href="#committer">Committer</a></li></ul></li><li><a href="#mentors">Mentors</a></li><li><a href="#contributors">Contributors</a></li><li><a href="#becoming-a-committer">Becoming a Committer</a></li> [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/team/index.html b/team/index.html
new file mode 100644
index 0000000..e1156f0
--- /dev/null
+++ b/team/index.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Team · Apache APISIX™</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## Members"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Team · Apache APISIX™"/><meta property="og:type" content="website"/><meta property="og:url" content="https://apisix.a [...]
+        document.addEventListener('DOMContentLoaded', function() {
+          addBackToTop(
+            {"zIndex":100}
+          )
+        });
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site n [...]
+<h3><a class="anchor" aria-hidden="true" id="pmc"></a><a href="#pmc" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.2 [...]
+<table>
+<thead>
+<tr><th>ID</th><th>GitHub</th><th>Public Name</th></tr>
+</thead>
+<tbody>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/akayeshmantha">akayeshmantha</a></td><td>Akayeshmantha</td><td>Ayeshmantha Perera</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/yousa">yousa</a></td><td>Miss-you</td><td>Hui Li</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/qiujiayu">qiujiayu</a></td><td>qiujiayu</td><td>Jiayu Qiu</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/chenjunxu">chenjunxu</a></td><td>nic-chen</td><td>Junxu Chen</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/totemofwolf">totemofwolf</a></td><td>totemofwolf</td><td>Lang Wang</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/liling">liling</a></td><td>lilien1010</td><td>Ling Li</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/linsir">linsir</a></td><td>linsir</td><td>Linsir Wu</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/wenming">wenming</a></td><td>moonming</td><td>Ming Wen</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/sshniro">sshniro</a></td><td>sshniro</td><td>Nirojan Selvanathan</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/wusheng">wusheng</a></td><td>wu-sheng</td><td>Sheng Wu</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/kvn">kvn</a></td><td>gxthrj</td><td>Wei Jin</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/agile6v">agile6v</a></td><td>agile6v</td><td>Wei Liu</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/membphis">membphis</a></td><td>membphis</td><td>YuanSheng Wang</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/spacewander">spacewander</a></td><td>spacewander</td><td>Zexuan Luo</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/juzhiyuan">juzhiyuan</a></td><td>juzhiyuan</td><td>Zhiyuan</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/shuaijinchao">shuaijinchao</a></td><td>shuaijinchao</td><td>JinChao Shuai</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/vinci">vinci</a></td><td>ShiningRush</td><td>Vinci</td></tr>
+</tbody>
+</table>
+<h3><a class="anchor" aria-hidden="true" id="committer"></a><a href="#committer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<blockquote>
+<p>The following list excludes PMC members above.</p>
+</blockquote>
+<table>
+<thead>
+<tr><th>ID</th><th>GitHub</th><th>Public Name</th></tr>
+</thead>
+<tbody>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/tangke">tangke</a></td><td>supermario1990</td><td>Ke Tang</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/lizhiyong">lizhiyong</a></td><td>zhiyong0804</td><td>Li Zhiyong</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/coolsoul">coolsoul</a></td><td>soulsoul</td><td>Suo Zhang</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/sunyi">sunyi</a></td><td>LiteSun</td><td>Yi Sun</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/liyong">liyong</a></td><td>chnliyong</td><td>Yong Li</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/bzp2010">bzp2010</a></td><td>bzp2010</td><td>Zeping Bai</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/liuxiran">liuxiran</a></td><td>liuxiran</td><td>Xiran Liu</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/shuyangw">shuyangw</a></td><td>yiyiyimu</td><td>Shuyang Wu</td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="mentors"></a><a href="#mentors" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<table>
+<thead>
+<tr><th>ID</th><th>GitHub</th><th>Public Name</th></tr>
+</thead>
+<tbody>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/jmclean">jmclean</a></td><td>justinmclean</td><td>Justin Mclean</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/djkevincr">djkevincr</a></td><td>djkevincr</td><td>Kevin Ratnasekera</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/vongosling">vongosling</a></td><td>vongosling</td><td>Von Gosling</td></tr>
+<tr><td><a href="https://whimsy.apache.org/roster/committer/ningjiang">ningjiang</a></td><td>WillemJiang</td><td>Willem Ning Jiang</td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="contributors"></a><a href="#contributors" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<blockquote>
+<p>You can find all contributors of Apache APISIX from GitHub contribution list.</p>
+</blockquote>
+<ol>
+<li><a href="https://github.com/apache/apisix/graphs/contributors">apisix</a></li>
+<li><a href="https://github.com/apache/apisix-dashboard/graphs/contributors">apisix-dashboard</a></li>
+</ol>
+<h2><a class="anchor" aria-hidden="true" id="becoming-a-committer"></a><a href="#becoming-a-committer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p>The Apache APISIX community follows the Apache Community’s process on accepting a new committer. After a contributor participates APISIX's community actively, PMC and Committers will make decisions to invite the contributor join Committers and PMC.</p>
+<p>You can read <a href="../docs/contributor-guide">Contributor Guide</a> to participate the community, and can get more information on <a href="../docs/committer-guide">Committer Guide</a>.</p>
+</span></div></article></div><div class="docLastUpdate"><em>Last updated on 11/8/2020 by 琚致远</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#members">Members</a><ul class="toc-headings"><li><a href="#pmc">PMC</a></li><li><a href="#committer">Committer</a></li></ul></li><li><a href="#mentors">Mentors</a></li><li><a href="#contributors">Contributors</a></li><li><a href="#becoming-a-committer">Becoming a Committer</a></li> [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                appId: 'ZHVP417Y1Y',
+                apiKey: '79e72fedcf3719ba85c552f710ade8a3',
+                indexName: 'apache-apisix-website',
+                inputSelector: '#search_input_react'
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/users.html b/users.html
index 353b2eb..5507f1c 100644
--- a/users.html
+++ b/users.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/users/index.html b/users/index.html
index 353b2eb..5507f1c 100644
--- a/users/index.html
+++ b/users/index.html
@@ -4,7 +4,7 @@
             {"zIndex":100}
           )
         });
-        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
+        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/logo.png" alt="Apache APISIX™"/><h2 class="headerTitleWithLogo">Apache APISIX™</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/ [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;