You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by gi...@apache.org on 2020/02/11 12:05:19 UTC

[incubator-dolphinscheduler-website] branch asf-site updated: Automated deployment: Tue Feb 11 12:05:07 UTC 2020 18082c2b282f3d0da8480d6eb8d674d8c752f433

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/incubator-dolphinscheduler-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 583fdfd  Automated deployment: Tue Feb 11 12:05:07 UTC 2020 18082c2b282f3d0da8480d6eb8d674d8c752f433
583fdfd is described below

commit 583fdfd3aa2ae2a6ab30b148b5aa2012587edb50
Author: lgcareer <lg...@users.noreply.github.com>
AuthorDate: Tue Feb 11 12:05:07 2020 +0000

    Automated deployment: Tue Feb 11 12:05:07 UTC 2020 18082c2b282f3d0da8480d6eb8d674d8c752f433
---
 build/blog.js                       |   2 +-
 build/blogDetail.js                 |   2 +-
 build/community.js                  |   2 +-
 build/documentation.js              |   6 +-
 build/home.js                       |   2 +-
 en-us/docs/development/release.html |   2 +-
 en-us/docs/development/release.json |   2 +-
 en-us/docs/user_doc/deployment.html | 223 ++++++++++++++++++++++++++++++++++++
 en-us/docs/user_doc/deployment.json |   6 +
 en-us/docs/user_doc/upgrade.html    |  74 ++++++++++++
 en-us/docs/user_doc/upgrade.json    |   6 +
 11 files changed, 318 insertions(+), 9 deletions(-)

diff --git a/build/blog.js b/build/blog.js
index 764068f..86c84d5 100644
--- a/build/blog.js
+++ b/build/blog.js
@@ -8,7 +8,7 @@ object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
+var o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
  * react-is.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/build/blogDetail.js b/build/blogDetail.js
index 9d02e1b..deea65d 100644
--- a/build/blogDetail.js
+++ b/build/blogDetail.js
@@ -8,7 +8,7 @@ object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
+var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
  * react-is.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/build/community.js b/build/community.js
index 9b2de11..f297edc 100644
--- a/build/community.js
+++ b/build/community.js
@@ -8,7 +8,7 @@ object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
+var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
  * react-is.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/build/documentation.js b/build/documentation.js
index 7496ddf..9b7ecf3 100644
--- a/build/documentation.js
+++ b/build/documentation.js
@@ -3,12 +3,12 @@
   Licensed under the MIT License (MIT), see
   http://jedwatson.github.io/classnames
 */
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var c in r)i.call(r,c)&&r[c]&&e.push(c)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){e.exports=n(991)() [...]
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var c in r)i.call(r,c)&&r[c]&&e.push(c)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){e.exports=n(991)() [...]
 object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
+var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
  * react-is.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -16,7 +16,7 @@ var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.pr
  * This source code is licensed under the MIT license found in the
  * LICENSE file in the root directory of this source tree.
  */
-Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol&&Symbol.for,a=i?Symbol.for("react.element"):60103,c=i?Symbol.for("react.portal"):60106,s=i?Symbol.for("react.fragment"):60107,l=i?Symbol.for("react.strict_mode"):60108,u=i?Symbol.for("react.profiler"):60114,f=i?Symbol.for("react.provider"):60109,p=i?Symbol.for("react.context"):60110,d=i?Symbol.for("react.async_mode"):60111,h=i?Symbol.for("react.concurrent_mode"):60111,m=i?Symbol.for("react.forward_ref"):6011 [...]
+Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol&&Symbol.for,a=i?Symbol.for("react.element"):60103,c=i?Symbol.for("react.portal"):60106,s=i?Symbol.for("react.fragment"):60107,l=i?Symbol.for("react.strict_mode"):60108,u=i?Symbol.for("react.profiler"):60114,f=i?Symbol.for("react.provider"):60109,p=i?Symbol.for("react.context"):60110,d=i?Symbol.for("react.async_mode"):60111,h=i?Symbol.for("react.concurrent_mode"):60111,m=i?Symbol.for("react.forward_ref"):6011 [...]
  * UAParser.js v0.7.21
  * Lightweight JavaScript-based User-Agent string parser
  * https://github.com/faisalman/ua-parser-js
diff --git a/build/home.js b/build/home.js
index 29b133a..ed469ee 100644
--- a/build/home.js
+++ b/build/home.js
@@ -8,7 +8,7 @@ object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
+var o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn [...]
  * react-is.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/en-us/docs/development/release.html b/en-us/docs/development/release.html
index 835efd9..24a5424 100644
--- a/en-us/docs/development/release.html
+++ b/en-us/docs/development/release.html
@@ -155,7 +155,7 @@ It is alright for <code>KEYS</code> to only include the public key of the deploy
 <pre><code class="language-shell">mkdir -p ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
 cd ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
 </code></pre>
-<p>Add source code packages, binary packages and executable binary packages of sharding-proxy to SVN working directory.</p>
+<p>Add source code packages, binary packages and executable binary packages to SVN working directory.</p>
 <pre><code class="language-shell">cp -f ~/incubator-dolphinscheduler/dolphinscheduler-dist/target/*.zip ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
 cp -f ~/incubator-dolphinscheduler/dolphinscheduler-dist/target/*.zip.asc ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
 cp -f ~/incubator-dolphinscheduler/dolphinscheduler-dist/target/*.tar.gz ~/ds_svn/dev/dolphinscheduler/${RELEASE.VERSION}
diff --git a/en-us/docs/development/release.json b/en-us/docs/development/release.json
index 2a5be9c..515260c 100644
--- a/en-us/docs/development/release.json
+++ b/en-us/docs/development/release.json
@@ -1,6 +1,6 @@
 {
   "filename": "release.md",
-  "__html": "<h2>GPG Settings</h2>\n<h3>Install GPG</h3>\n<p>Download installation package on <a href=\"https://www.gnupg.org/download/index.html\">official GnuPG website</a>.\nThe command of GnuPG 1.x version can differ a little from that of 2.x version.\nThe following instructions take <code>GnuPG-2.1.23</code> version for example.</p>\n<p>After the installation, execute the following command to check the version number.</p>\n<pre><code class=\"language-shell\">gpg --version\n</code></ [...]
+  "__html": "<h2>GPG Settings</h2>\n<h3>Install GPG</h3>\n<p>Download installation package on <a href=\"https://www.gnupg.org/download/index.html\">official GnuPG website</a>.\nThe command of GnuPG 1.x version can differ a little from that of 2.x version.\nThe following instructions take <code>GnuPG-2.1.23</code> version for example.</p>\n<p>After the installation, execute the following command to check the version number.</p>\n<pre><code class=\"language-shell\">gpg --version\n</code></ [...]
   "link": "/en-us/docs/development/release.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/en-us/docs/user_doc/deployment.html b/en-us/docs/user_doc/deployment.html
new file mode 100644
index 0000000..a4c798c
--- /dev/null
+++ b/en-us/docs/user_doc/deployment.html
@@ -0,0 +1,223 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="deployment" />
+	<meta name="description" content="deployment" />
+	<!-- 网页标签标题 -->
+	<title>deployment</title>
+	<link rel="shortcut icon" href="/img/docsite.ico"/>
+	<link rel="stylesheet" href="/build/documentation.css" />
+</head>
+<body>
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_colorful.svg"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_gray.png"/><div><ul class="ant-menu blackClass ant [...]
+<p>There are two deployment modes:</p>
+<ul>
+<li>automatic deployment</li>
+<li>source code compile and then deployment</li>
+</ul>
+<h2>Preparations</h2>
+<p>Download the latest version of the installation package, download address:  <a href="https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler/1.2.1/">download</a>,
+download apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-bin.tar.gz</p>
+<h4>Preparations 1: Installation of basic software (self-installation of required items)</h4>
+<ul>
+<li>PostgreSQL (8.2.15+) or Mysql (5.5+) :  You can choose either PostgreSQL or Mysql.</li>
+<li>JDK (1.8+) :  Mandatory</li>
+<li>ZooKeeper(3.4.6+) :Mandatory</li>
+<li>Hadoop (2.6+) or MinIo :Optionally, if you need to use the resource upload function, You can choose either Hadoop or MinIo.</li>
+<li>Hive (1.2.1) :   Optional, hive task submission needs to be installed</li>
+<li>Spark(1.x,2.x) :  Optional, Spark task submission needs to be installed</li>
+</ul>
+<pre><code> Note: DolphinScheduler itself does not rely on Hadoop, Hive, Spark, PostgreSQL, but only calls their Client to run the corresponding tasks.
+</code></pre>
+<h4>Preparations 2: Create deployment users</h4>
+<ul>
+<li>Deployment users are created on all machines that require deployment scheduling, because the worker service executes jobs in <code>sudo-u {linux-user}</code>, so deployment users need sudo privileges and are confidential.</li>
+</ul>
+<pre><code>vi /etc/sudoers
+
+# For example, the deployment user is an dolphinscheduler account
+dolphinscheduler  ALL=(ALL)       NOPASSWD: NOPASSWD: ALL
+
+# And you need to comment out the Default requiretty line
+#Default requiretty
+</code></pre>
+<h4>Preparations 3: SSH Secret-Free Configuration</h4>
+<p>Configure SSH secret-free login on deployment machines and other installation machines. If you want to install dolphinscheduler on deployment machines, you need to configure native password-free login itself.</p>
+<ul>
+<li>Connect the host and other machines SSH</li>
+</ul>
+<h4>Preparations 4: database initialization</h4>
+<ul>
+<li>
+<p>Create databases and accounts</p>
+<p>Execute the following command to create database and account</p>
+<pre><code>CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
+GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
+GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
+flush privileges;
+</code></pre>
+</li>
+<li>
+<p>creates tables and imports basic data
+Modify the following attributes in ./conf/application.properties</p>
+<pre><code>    spring.datasource.url
+    spring.datasource.username
+    spring.datasource.password
+</code></pre>
+<p>Execute scripts for creating tables and importing basic data</p>
+<pre><code>sh ./script/create-dolphinscheduler.sh
+</code></pre>
+</li>
+</ul>
+<h4>Preparations 5: Modify the deployment directory permissions and operation parameters</h4>
+<pre><code> instruction of dolphinscheduler-bin directory
+</code></pre>
+<pre><code class="language-directory">bin : Basic service startup script
+DISCLAIMER : DISCLAIMER
+conf : Project Profile
+lib : The project relies on jar packages, including individual module jars and third-party jars
+LICENSE : LICENSE
+licenses : licenses
+NOTICE : NOTICE
+script :  Cluster Start, Stop and Service Monitor Start and Stop scripts
+sql : The project relies on SQL files
+ui : The ui files
+install.sh :  One-click deployment script
+</code></pre>
+<ul>
+<li>
+<p>Modify permissions (please modify the 'deployUser' to the corresponding deployment user) so that the deployment user has operational privileges on the dolphinscheduler-bin directory</p>
+<p><code>sudo chown -R deployUser:deployUser dolphinscheduler-bin</code></p>
+</li>
+<li>
+<p>Modify the <code>.dolphinscheduler_env.sh</code> environment variable in the conf/env/directory</p>
+</li>
+<li>
+<p>Modify deployment parameters (depending on your server and business situation):</p>
+</li>
+<li>
+<p>Modify the parameters in <code>install.sh</code> to replace the values required by your business</p>
+<ul>
+<li>MonitorServerState switch variable, added in version 1.0.3, controls whether to start the self-start script (monitor master, worker status, if off-line will start automatically). The default value of &quot;false&quot; means that the self-start script is not started, and if it needs to start, it is changed to &quot;true&quot;.</li>
+<li>'hdfsStartupSate' switch variable controls whether to start hdfs
+The default value of &quot;false&quot; means not to start hdfs
+Change the variable to 'true' if you want to use hdfs, you also need to create the hdfs root path by yourself, that 'hdfsPath' in <a href="http://install.sh">install.sh</a>.</li>
+</ul>
+</li>
+<li>
+<p>If you use hdfs-related functions, you need to copy<strong>hdfs-site.xml</strong> and <strong>core-site.xml</strong> to the conf directory</p>
+</li>
+</ul>
+<h2>Deployment</h2>
+<p>Either of the following two methods can be deployed,binary file deployment is recommended, and experienced partners can use source deployment as well.</p>
+<h3>Binary file Deployment</h3>
+<ul>
+<li>
+<p>Switch to deployment user, one-click deployment</p>
+<p><code>sh install.sh</code></p>
+</li>
+<li>
+<p>Use the <code>jps</code> command to check if the services are started (<code>jps</code> comes from <code>Java JDK</code>)</p>
+</li>
+</ul>
+<pre><code class="language-aidl">    MasterServer         ----- Master Service
+    WorkerServer         ----- Worker Service
+    LoggerServer         ----- Logger Service
+    ApiApplicationServer ----- API Service
+    AlertServer          ----- Alert Service
+</code></pre>
+<p>If all services are normal, the automatic deployment is successful</p>
+<p>After successful deployment, the log can be viewed and stored in a specified folder.</p>
+<pre><code class="language-logPath"> logs/
+    ├── dolphinscheduler-alert-server.log
+    ├── dolphinscheduler-master-server.log
+    |—— dolphinscheduler-worker-server.log
+    |—— dolphinscheduler-api-server.log
+    |—— dolphinscheduler-logger-server.log
+</code></pre>
+<h3>Compile source code to deploy</h3>
+<p>After downloading the release version of the source package, unzip it into the root directory</p>
+<ul>
+<li>Execute the compilation command:</li>
+</ul>
+<pre><code> mvn -U clean package -Prelease -Dmaven.test.skip=true
+</code></pre>
+<ul>
+<li>View directory</li>
+</ul>
+<p>After normal compilation, <code>apache-dolphinscheduler-incubating-${latest.release.version}-dolphinscheduler-bin.tar.gz</code>
+is generated in the <code>./dolphinscheduler-dist/target</code> directory</p>
+<ul>
+<li>
+<p>Switch to deployment user, one-click deployment</p>
+<p><code>sh install.sh</code></p>
+</li>
+</ul>
+<h3>Start-and-stop services commonly used in systems (for service purposes, please refer to System Architecture Design for details)</h3>
+<ul>
+<li>
+<p>stop all services in the cluster</p>
+<p><code>sh ./bin/stop-all.sh</code></p>
+</li>
+<li>
+<p>start all services in the cluster</p>
+<p><code>sh ./bin/start-all.sh</code></p>
+</li>
+<li>
+<p>start and stop one master server</p>
+</li>
+</ul>
+<pre><code class="language-master">sh ./bin/dolphinscheduler-daemon.sh start master-server
+sh ./bin/dolphinscheduler-daemon.sh stop master-server
+</code></pre>
+<ul>
+<li>start and stop one worker server</li>
+</ul>
+<pre><code class="language-worker">sh ./bin/dolphinscheduler-daemon.sh start worker-server
+sh ./bin/dolphinscheduler-daemon.sh stop worker-server
+</code></pre>
+<ul>
+<li>start and stop api server</li>
+</ul>
+<pre><code class="language-Api">sh ./bin/dolphinscheduler-daemon.sh start api-server
+sh ./bin/dolphinscheduler-daemon.sh stop api-server
+</code></pre>
+<ul>
+<li>start and stop logger server</li>
+</ul>
+<pre><code class="language-Logger">sh ./bin/dolphinscheduler-daemon.sh start logger-server
+sh ./bin/dolphinscheduler-daemon.sh stop logger-server
+</code></pre>
+<ul>
+<li>start and stop alert server</li>
+</ul>
+<pre><code class="language-Alert">sh ./bin/dolphinscheduler-daemon.sh start alert-server
+sh ./bin/dolphinscheduler-daemon.sh stop alert-server
+</code></pre>
+<h2>Database Upgrade</h2>
+<p>Modify the following properties in ./conf/application.properties</p>
+<pre><code>```
+    spring.datasource.url
+    spring.datasource.username
+    spring.datasource.password
+```
+</code></pre>
+<p>The database can be upgraded automatically by executing the following command:</p>
+<pre><code class="language-upgrade">sh ./script/upgrade-dolphinscheduler.sh
+</code></pre>
+</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/ds_gray.svg"/><div class="cols-container"><div class="col col-12"><h3>Disclaimer</h3><p>Apache DolphinScheduler (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by Incubator. 
+Incubation is required of all newly accepted projects until a further review indicates 
+that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. 
+While incubation status is not necessarily a reflection of the completeness or stability of the code, 
+it does indicate that the project has yet to be fully endorsed by the ASF.</p></div><div class="col col-6"><dl><dt>Documentation</dt><dd><a href="/en-us/docs/1.2.0/user_doc/architecture-design.html" target="_self">Overview</a></dd><dd><a href="/en-us/docs/1.2.0/user_doc/quick-start.html" target="_self">Quick start</a></dd><dd><a href="/en-us/docs/1.2.0/user_doc/backend-development.html" target="_self">Developer guide</a></dd></dl></div><div class="col col-6"><dl><dt>ASF</dt><dd><a href=" [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+	<script src="/build/documentation.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user_doc/deployment.json b/en-us/docs/user_doc/deployment.json
new file mode 100644
index 0000000..5d63ba4
--- /dev/null
+++ b/en-us/docs/user_doc/deployment.json
@@ -0,0 +1,6 @@
+{
+  "filename": "deployment.md",
+  "__html": "<h1>Deployment Document</h1>\n<p>There are two deployment modes:</p>\n<ul>\n<li>automatic deployment</li>\n<li>source code compile and then deployment</li>\n</ul>\n<h2>Preparations</h2>\n<p>Download the latest version of the installation package, download address:  <a href=\"https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler/1.2.1/\">download</a>,\ndownload apache-dolphinscheduler-incubating-x.x.x-dolphinscheduler-bin.tar.gz</p>\n<h4>Preparations 1: Installati [...]
+  "link": "/en-us/docs/user_doc/deployment.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/docs/user_doc/upgrade.html b/en-us/docs/user_doc/upgrade.html
new file mode 100644
index 0000000..6b7dc8d
--- /dev/null
+++ b/en-us/docs/user_doc/upgrade.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="upgrade" />
+	<meta name="description" content="upgrade" />
+	<!-- 网页标签标题 -->
+	<title>upgrade</title>
+	<link rel="shortcut icon" href="/img/docsite.ico"/>
+	<link rel="stylesheet" href="/build/documentation.css" />
+</head>
+<body>
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_colorful.svg"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_gray.png"/><div><ul class="ant-menu blackClass ant [...]
+<h2>1. Back up the previous version of the files and database</h2>
+<h2>2. Stop all services of dolphinscheduler</h2>
+<p><code>sh ./script/stop-all.sh</code></p>
+<h2>3. Download the new version of the installation package</h2>
+<ul>
+<li><a href="https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler/1.2.1/">download</a>, download the latest version of the installation packages</li>
+<li>The following upgrade operations need to be performed in the new version of the directory</li>
+</ul>
+<h2>4. Database upgrade</h2>
+<ul>
+<li>Modify the following properties in conf/application.properties</li>
+</ul>
+<pre><code>    spring.datasource.url
+    spring.datasource.username
+    spring.datasource.password
+</code></pre>
+<ul>
+<li>Execute database upgrade script</li>
+</ul>
+<p><code>sh ./script/upgrade-dolphinscheduler.sh</code></p>
+<h2>5. service upgrade</h2>
+<p>you can choose either jetty deployment or nginx deployment.</p>
+<h3>jetty deployment</h3>
+<ul>
+<li>
+<p>Modify the content of the <a href="http://install.sh">install.sh</a> configuration and execute the upgrade script</p>
+<p><code>sh install.sh</code></p>
+</li>
+<li>
+<p>Visit the following url, interface address (modify it yourself)
+<a href="http://192.168.xx.xx:12345/dolphinscheduler">http://192.168.xx.xx:12345/dolphinscheduler</a></p>
+</li>
+</ul>
+<h3>nginx deployment</h3>
+<ul>
+<li>
+<p>Please download the source packages and execute <code>mvn clean package -Pnginx</code></p>
+</li>
+<li>
+<p>Overwrite the previous version of the dist directory</p>
+</li>
+<li>
+<p>Restart the nginx service</p>
+<p><code>systemctl restart nginx</code></p>
+</li>
+</ul>
+</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/ds_gray.svg"/><div class="cols-container"><div class="col col-12"><h3>Disclaimer</h3><p>Apache DolphinScheduler (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by Incubator. 
+Incubation is required of all newly accepted projects until a further review indicates 
+that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. 
+While incubation status is not necessarily a reflection of the completeness or stability of the code, 
+it does indicate that the project has yet to be fully endorsed by the ASF.</p></div><div class="col col-6"><dl><dt>Documentation</dt><dd><a href="/en-us/docs/1.2.0/user_doc/architecture-design.html" target="_self">Overview</a></dd><dd><a href="/en-us/docs/1.2.0/user_doc/quick-start.html" target="_self">Quick start</a></dd><dd><a href="/en-us/docs/1.2.0/user_doc/backend-development.html" target="_self">Developer guide</a></dd></dl></div><div class="col col-6"><dl><dt>ASF</dt><dd><a href=" [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+	<script src="/build/documentation.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user_doc/upgrade.json b/en-us/docs/user_doc/upgrade.json
new file mode 100644
index 0000000..288b706
--- /dev/null
+++ b/en-us/docs/user_doc/upgrade.json
@@ -0,0 +1,6 @@
+{
+  "filename": "upgrade.md",
+  "__html": "<h1>DolphinScheduler upgrade documentation</h1>\n<h2>1. Back up the previous version of the files and database</h2>\n<h2>2. Stop all services of dolphinscheduler</h2>\n<p><code>sh ./script/stop-all.sh</code></p>\n<h2>3. Download the new version of the installation package</h2>\n<ul>\n<li><a href=\"https://dist.apache.org/repos/dist/dev/incubator/dolphinscheduler/1.2.1/\">download</a>, download the latest version of the installation packages</li>\n<li>The following upgrade op [...]
+  "link": "/en-us/docs/user_doc/upgrade.html",
+  "meta": {}
+}
\ No newline at end of file