Loading docs/zh_CN/前端开发文档.md +12 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ Lodash 高性能的 JavaScript 实用工具库 - #### Node安装 Node包下载 (注意版本 8.9.4) `https://nodejs.org/download/release/v8.9.4/` - #### 前端项目构建 用命令行模式 `cd` 进入 `escheduler-ui`项目目录并执行 `npm install` 拉取项目依赖包 Loading @@ -31,6 +32,16 @@ Node包下载 (注意版本 8.9.4) `https://nodejs.org/download/release/v8.9.4/` > 运行 `cnpm install` - 新建一个`.env`文件,用于跟后端交互的接口 在`escheduler-ui`目录下新建一个`.env`文件,在文件里添加后端服务的ip地址和端口,用于跟后端交互,`.env`文件内容如下: ``` # 代理的接口地址(自行修改) API_BASE = http://192.168.xx.xx:12345 # 如果您需要用ip访问项目可以把 "#" 号去掉(例) #DEV_HOST = 192.168.xx.xx ``` > ##### !!!这里特别注意 项目如果在拉取依赖包的过程中报 " node-sass error " 错误,请在执行完后再次执行以下命令 ``` Loading @@ -49,6 +60,7 @@ npm install node-sass --unsafe-perm //单独安装node-sass依赖 再拷贝到服务器对应的目录下(前端服务静态页面存放目录) 访问地址 `http://localhost:8888/#/` Loading docs/zh_CN/前端部署文档.md +1 −10 Original line number Diff line number Diff line Loading @@ -3,23 +3,14 @@ 前端有3种部署方式,分别为自动化部署,手动部署和编译源码部署 ## 1、准备工作 #### 准备一:下载安装包 #### 下载安装包 目前最新安装包版本是1.0.1,下载地址: [码云下载](https://gitee.com/easyscheduler/EasyScheduler/attach_files/) 下载escheduler-ui-1.0.1.tar.gz后,解压后会产生dist目录,进入dist目录 > cd dist #### 准备二:新建一个`.env`文件 在dist目录下新建一个`.env`文件,在文件里添加后端服务的ip地址和端口,用于跟后端交互,`.env`文件内容如下: ``` # 代理的接口地址(自行修改) API_BASE = http://192.168.xx.xx:12345 # 如果您需要用ip访问项目可以把 "#" 号去掉(例) #DEV_HOST = 192.168.xx.xx ``` ## 2、部署 以下两种方式任选其一部署即可,推荐自动化部署 Loading docs/zh_CN/后端部署文档.md +7 −2 Original line number Diff line number Diff line Loading @@ -148,11 +148,11 @@ install.sh : 一键部署脚本 * 一键停止集群所有服务 ` sh ./script/stop_all.sh` ` sh ./bin/stop_all.sh` * 一键开启集群所有服务 ` sh ./script/start_all.sh` ` sh ./bin/start_all.sh` * 启停Master Loading Loading @@ -186,3 +186,7 @@ sh ./bin/escheduler-daemon.sh stop logger-server sh ./bin/escheduler-daemon.sh start alert-server sh ./bin/escheduler-daemon.sh stop alert-server ``` ## 3、数据库升级 数据库升级是在1.0.2版本增加的功能,执行以下命令即可自动升级数据库。 sh ./script/upgrade_escheduler.sh No newline at end of file escheduler-dao/src/main/java/cn/escheduler/dao/upgrade/EschedulerManager.java +22 −8 Original line number Diff line number Diff line Loading @@ -30,12 +30,17 @@ public class EschedulerManager { UpgradeDao upgradeDao = UpgradeDao.getInstance(); public void initEscheduler() { // Determines whether the escheduler table structure has been init if(upgradeDao.isExistsTable("t_escheduler_version") || upgradeDao.isExistsTable("t_escheduler_queue")) { logger.info("The database has been initialized. Skip the initialization step"); return; } this.initEschedulerSchema(); } public void initEschedulerSchema() { logger.info("Start initializing the ark manager mysql table structure"); logger.info("Start initializing the escheduler manager mysql table structure"); upgradeDao.initEschedulerSchema(); } Loading @@ -52,15 +57,20 @@ public class EschedulerManager { }else { String version = ""; // The target version of the upgrade String schemaVersion = ""; for(String schemaDir : schemaList) { // Gets the version of the current system if (upgradeDao.isExistsTable("t_escheduler_version")) { version = upgradeDao.getCurrentVersion(); }else { }else if(upgradeDao.isExistsColumn("t_escheduler_queue","create_time")){ version = "1.0.1"; }else if(upgradeDao.isExistsTable("t_escheduler_queue")){ version = "1.0.0"; }else{ logger.error("Unable to determine current software version, so cannot upgrade"); } // The target version of the upgrade String schemaVersion = ""; for(String schemaDir : schemaList) { schemaVersion = schemaDir.split("_")[0]; if(SchemaUtils.isAGreatVersion(schemaVersion , version)) { Loading @@ -70,7 +80,11 @@ public class EschedulerManager { logger.info("Begin upgrading escheduler's mysql table structure"); upgradeDao.upgradeEscheduler(schemaDir); if(SchemaUtils.isAGreatVersion(version,"1.0.1")){ version = upgradeDao.getCurrentVersion(); }else { version = schemaVersion; } } } Loading escheduler-dao/src/main/java/cn/escheduler/dao/upgrade/UpgradeDao.java +52 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import cn.escheduler.common.utils.MysqlUtil; import cn.escheduler.common.utils.ScriptRunner; import cn.escheduler.dao.AbstractBaseDao; import cn.escheduler.dao.datasource.ConnectionFactory; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; Loading @@ -33,6 +34,7 @@ public class UpgradeDao extends AbstractBaseDao { public static final Logger logger = LoggerFactory.getLogger(UpgradeDao.class); private static final String T_VERSION_NAME = "t_escheduler_version"; private static final String rootDir = System.getProperty("user.dir"); @Override protected void init() { Loading Loading @@ -64,6 +66,10 @@ public class UpgradeDao extends AbstractBaseDao { private void runInitEschedulerDML() { Connection conn = null; if (StringUtils.isEmpty(rootDir)) { throw new RuntimeException("Environment variable user.dir not found"); } String mysqlSQLFilePath = rootDir + "/sql/create/release-1.0.0_schema/mysql/escheduler_dml.sql"; try { conn = ConnectionFactory.getDataSource().getConnection(); conn.setAutoCommit(false); Loading @@ -71,7 +77,7 @@ public class UpgradeDao extends AbstractBaseDao { // Execute the ark_manager_dml.sql script to import the data related to escheduler ScriptRunner initScriptRunner = new ScriptRunner(conn, false, true); Reader initSqlReader = new FileReader(new File("sql/create/release-1.0.0_schema/mysql/escheduler_dml.sql")); Reader initSqlReader = new FileReader(new File(mysqlSQLFilePath)); initScriptRunner.runScript(initSqlReader); conn.commit(); Loading Loading @@ -100,11 +106,15 @@ public class UpgradeDao extends AbstractBaseDao { private void runInitEschedulerDDL() { Connection conn = null; if (StringUtils.isEmpty(rootDir)) { throw new RuntimeException("Environment variable user.dir not found"); } String mysqlSQLFilePath = rootDir + "/sql/create/release-1.0.0_schema/mysql/escheduler_ddl.sql"; try { conn = ConnectionFactory.getDataSource().getConnection(); // Execute the escheduler_ddl.sql script to create the table structure of escheduler ScriptRunner initScriptRunner = new ScriptRunner(conn, true, true); Reader initSqlReader = new FileReader(new File("sql/create/release-1.0.0_schema/mysql/escheduler_ddl.sql")); Reader initSqlReader = new FileReader(new File(mysqlSQLFilePath)); initScriptRunner.runScript(initSqlReader); } catch (IOException e) { Loading @@ -122,7 +132,11 @@ public class UpgradeDao extends AbstractBaseDao { } /** * Determines whether a table exists * @param tableName * @return */ public boolean isExistsTable(String tableName) { Connection conn = null; try { Loading @@ -144,6 +158,33 @@ public class UpgradeDao extends AbstractBaseDao { } /** * Determines whether a field exists in the specified table * @param tableName * @param columnName * @return */ public boolean isExistsColumn(String tableName,String columnName) { Connection conn = null; try { conn = ConnectionFactory.getDataSource().getConnection(); ResultSet rs = conn.getMetaData().getColumns(null,null,tableName,columnName); if (rs.next()) { return true; } else { return false; } } catch (SQLException e) { logger.error(e.getMessage(),e); throw new RuntimeException(e.getMessage(),e); } finally { MysqlUtil.realeaseResource(null, null, conn); } } public String getCurrentVersion() { String sql = String.format("select version from %s",T_VERSION_NAME); Loading Loading @@ -182,7 +223,10 @@ public class UpgradeDao extends AbstractBaseDao { private void upgradeEschedulerDML(String schemaDir) { String schemaVersion = schemaDir.split("_")[0]; String mysqlSQLFilePath = "sql/upgrade/" + schemaDir + "/mysql/escheduler_dml.sql"; if (StringUtils.isEmpty(rootDir)) { throw new RuntimeException("Environment variable user.dir not found"); } String mysqlSQLFilePath = rootDir + "/sql/upgrade/" + schemaDir + "/mysql/escheduler_dml.sql"; Connection conn = null; PreparedStatement pstmt = null; try { Loading Loading @@ -239,7 +283,10 @@ public class UpgradeDao extends AbstractBaseDao { } private void upgradeEschedulerDDL(String schemaDir) { String mysqlSQLFilePath = "sql/upgrade/" + schemaDir + "/mysql/escheduler_ddl.sql"; if (StringUtils.isEmpty(rootDir)) { throw new RuntimeException("Environment variable user.dir not found"); } String mysqlSQLFilePath = rootDir + "/sql/upgrade/" + schemaDir + "/mysql/escheduler_ddl.sql"; Connection conn = null; PreparedStatement pstmt = null; try { Loading Loading
docs/zh_CN/前端开发文档.md +12 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ Lodash 高性能的 JavaScript 实用工具库 - #### Node安装 Node包下载 (注意版本 8.9.4) `https://nodejs.org/download/release/v8.9.4/` - #### 前端项目构建 用命令行模式 `cd` 进入 `escheduler-ui`项目目录并执行 `npm install` 拉取项目依赖包 Loading @@ -31,6 +32,16 @@ Node包下载 (注意版本 8.9.4) `https://nodejs.org/download/release/v8.9.4/` > 运行 `cnpm install` - 新建一个`.env`文件,用于跟后端交互的接口 在`escheduler-ui`目录下新建一个`.env`文件,在文件里添加后端服务的ip地址和端口,用于跟后端交互,`.env`文件内容如下: ``` # 代理的接口地址(自行修改) API_BASE = http://192.168.xx.xx:12345 # 如果您需要用ip访问项目可以把 "#" 号去掉(例) #DEV_HOST = 192.168.xx.xx ``` > ##### !!!这里特别注意 项目如果在拉取依赖包的过程中报 " node-sass error " 错误,请在执行完后再次执行以下命令 ``` Loading @@ -49,6 +60,7 @@ npm install node-sass --unsafe-perm //单独安装node-sass依赖 再拷贝到服务器对应的目录下(前端服务静态页面存放目录) 访问地址 `http://localhost:8888/#/` Loading
docs/zh_CN/前端部署文档.md +1 −10 Original line number Diff line number Diff line Loading @@ -3,23 +3,14 @@ 前端有3种部署方式,分别为自动化部署,手动部署和编译源码部署 ## 1、准备工作 #### 准备一:下载安装包 #### 下载安装包 目前最新安装包版本是1.0.1,下载地址: [码云下载](https://gitee.com/easyscheduler/EasyScheduler/attach_files/) 下载escheduler-ui-1.0.1.tar.gz后,解压后会产生dist目录,进入dist目录 > cd dist #### 准备二:新建一个`.env`文件 在dist目录下新建一个`.env`文件,在文件里添加后端服务的ip地址和端口,用于跟后端交互,`.env`文件内容如下: ``` # 代理的接口地址(自行修改) API_BASE = http://192.168.xx.xx:12345 # 如果您需要用ip访问项目可以把 "#" 号去掉(例) #DEV_HOST = 192.168.xx.xx ``` ## 2、部署 以下两种方式任选其一部署即可,推荐自动化部署 Loading
docs/zh_CN/后端部署文档.md +7 −2 Original line number Diff line number Diff line Loading @@ -148,11 +148,11 @@ install.sh : 一键部署脚本 * 一键停止集群所有服务 ` sh ./script/stop_all.sh` ` sh ./bin/stop_all.sh` * 一键开启集群所有服务 ` sh ./script/start_all.sh` ` sh ./bin/start_all.sh` * 启停Master Loading Loading @@ -186,3 +186,7 @@ sh ./bin/escheduler-daemon.sh stop logger-server sh ./bin/escheduler-daemon.sh start alert-server sh ./bin/escheduler-daemon.sh stop alert-server ``` ## 3、数据库升级 数据库升级是在1.0.2版本增加的功能,执行以下命令即可自动升级数据库。 sh ./script/upgrade_escheduler.sh No newline at end of file
escheduler-dao/src/main/java/cn/escheduler/dao/upgrade/EschedulerManager.java +22 −8 Original line number Diff line number Diff line Loading @@ -30,12 +30,17 @@ public class EschedulerManager { UpgradeDao upgradeDao = UpgradeDao.getInstance(); public void initEscheduler() { // Determines whether the escheduler table structure has been init if(upgradeDao.isExistsTable("t_escheduler_version") || upgradeDao.isExistsTable("t_escheduler_queue")) { logger.info("The database has been initialized. Skip the initialization step"); return; } this.initEschedulerSchema(); } public void initEschedulerSchema() { logger.info("Start initializing the ark manager mysql table structure"); logger.info("Start initializing the escheduler manager mysql table structure"); upgradeDao.initEschedulerSchema(); } Loading @@ -52,15 +57,20 @@ public class EschedulerManager { }else { String version = ""; // The target version of the upgrade String schemaVersion = ""; for(String schemaDir : schemaList) { // Gets the version of the current system if (upgradeDao.isExistsTable("t_escheduler_version")) { version = upgradeDao.getCurrentVersion(); }else { }else if(upgradeDao.isExistsColumn("t_escheduler_queue","create_time")){ version = "1.0.1"; }else if(upgradeDao.isExistsTable("t_escheduler_queue")){ version = "1.0.0"; }else{ logger.error("Unable to determine current software version, so cannot upgrade"); } // The target version of the upgrade String schemaVersion = ""; for(String schemaDir : schemaList) { schemaVersion = schemaDir.split("_")[0]; if(SchemaUtils.isAGreatVersion(schemaVersion , version)) { Loading @@ -70,7 +80,11 @@ public class EschedulerManager { logger.info("Begin upgrading escheduler's mysql table structure"); upgradeDao.upgradeEscheduler(schemaDir); if(SchemaUtils.isAGreatVersion(version,"1.0.1")){ version = upgradeDao.getCurrentVersion(); }else { version = schemaVersion; } } } Loading
escheduler-dao/src/main/java/cn/escheduler/dao/upgrade/UpgradeDao.java +52 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import cn.escheduler.common.utils.MysqlUtil; import cn.escheduler.common.utils.ScriptRunner; import cn.escheduler.dao.AbstractBaseDao; import cn.escheduler.dao.datasource.ConnectionFactory; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; Loading @@ -33,6 +34,7 @@ public class UpgradeDao extends AbstractBaseDao { public static final Logger logger = LoggerFactory.getLogger(UpgradeDao.class); private static final String T_VERSION_NAME = "t_escheduler_version"; private static final String rootDir = System.getProperty("user.dir"); @Override protected void init() { Loading Loading @@ -64,6 +66,10 @@ public class UpgradeDao extends AbstractBaseDao { private void runInitEschedulerDML() { Connection conn = null; if (StringUtils.isEmpty(rootDir)) { throw new RuntimeException("Environment variable user.dir not found"); } String mysqlSQLFilePath = rootDir + "/sql/create/release-1.0.0_schema/mysql/escheduler_dml.sql"; try { conn = ConnectionFactory.getDataSource().getConnection(); conn.setAutoCommit(false); Loading @@ -71,7 +77,7 @@ public class UpgradeDao extends AbstractBaseDao { // Execute the ark_manager_dml.sql script to import the data related to escheduler ScriptRunner initScriptRunner = new ScriptRunner(conn, false, true); Reader initSqlReader = new FileReader(new File("sql/create/release-1.0.0_schema/mysql/escheduler_dml.sql")); Reader initSqlReader = new FileReader(new File(mysqlSQLFilePath)); initScriptRunner.runScript(initSqlReader); conn.commit(); Loading Loading @@ -100,11 +106,15 @@ public class UpgradeDao extends AbstractBaseDao { private void runInitEschedulerDDL() { Connection conn = null; if (StringUtils.isEmpty(rootDir)) { throw new RuntimeException("Environment variable user.dir not found"); } String mysqlSQLFilePath = rootDir + "/sql/create/release-1.0.0_schema/mysql/escheduler_ddl.sql"; try { conn = ConnectionFactory.getDataSource().getConnection(); // Execute the escheduler_ddl.sql script to create the table structure of escheduler ScriptRunner initScriptRunner = new ScriptRunner(conn, true, true); Reader initSqlReader = new FileReader(new File("sql/create/release-1.0.0_schema/mysql/escheduler_ddl.sql")); Reader initSqlReader = new FileReader(new File(mysqlSQLFilePath)); initScriptRunner.runScript(initSqlReader); } catch (IOException e) { Loading @@ -122,7 +132,11 @@ public class UpgradeDao extends AbstractBaseDao { } /** * Determines whether a table exists * @param tableName * @return */ public boolean isExistsTable(String tableName) { Connection conn = null; try { Loading @@ -144,6 +158,33 @@ public class UpgradeDao extends AbstractBaseDao { } /** * Determines whether a field exists in the specified table * @param tableName * @param columnName * @return */ public boolean isExistsColumn(String tableName,String columnName) { Connection conn = null; try { conn = ConnectionFactory.getDataSource().getConnection(); ResultSet rs = conn.getMetaData().getColumns(null,null,tableName,columnName); if (rs.next()) { return true; } else { return false; } } catch (SQLException e) { logger.error(e.getMessage(),e); throw new RuntimeException(e.getMessage(),e); } finally { MysqlUtil.realeaseResource(null, null, conn); } } public String getCurrentVersion() { String sql = String.format("select version from %s",T_VERSION_NAME); Loading Loading @@ -182,7 +223,10 @@ public class UpgradeDao extends AbstractBaseDao { private void upgradeEschedulerDML(String schemaDir) { String schemaVersion = schemaDir.split("_")[0]; String mysqlSQLFilePath = "sql/upgrade/" + schemaDir + "/mysql/escheduler_dml.sql"; if (StringUtils.isEmpty(rootDir)) { throw new RuntimeException("Environment variable user.dir not found"); } String mysqlSQLFilePath = rootDir + "/sql/upgrade/" + schemaDir + "/mysql/escheduler_dml.sql"; Connection conn = null; PreparedStatement pstmt = null; try { Loading Loading @@ -239,7 +283,10 @@ public class UpgradeDao extends AbstractBaseDao { } private void upgradeEschedulerDDL(String schemaDir) { String mysqlSQLFilePath = "sql/upgrade/" + schemaDir + "/mysql/escheduler_ddl.sql"; if (StringUtils.isEmpty(rootDir)) { throw new RuntimeException("Environment variable user.dir not found"); } String mysqlSQLFilePath = rootDir + "/sql/upgrade/" + schemaDir + "/mysql/escheduler_ddl.sql"; Connection conn = null; PreparedStatement pstmt = null; try { Loading