Skip to content
sharpstill edited this page Aug 7, 2012 · 1 revision
  • 调度系统的安装

  • 安装cronhub非常简单。cronhub是java语言写成的系统,因此为了安装此软件,你需要有java语言运行环境作为支持.

  • 此外,cronhub现在只支持linux/centos系统,未来的计划中会支持windows系统。

  • 安装准备:你需要以下东西:

  • 1.jdk 1.6,下载地址请访问jdk下载官方网站:oracle的jdk下载官方网站.

  • 2.apache tomcat 6,下载地址请访问apache tomcat下载官方网站apache tomcat下载官方网站.

  • 准备软件:中央服务器安装mysql,jdk6(官网下载www.oracle.com/technetwork/java/javase/downloads/jdk6-downloads-1637591.html),apache-tomcat 6.x

  • 第一步:安装mysql

  • 转载:centos安装mysql

  • 安装MySQL。

  • [root@sample ~]# yum -y install mysql-server  ← 安装MySQL

  • [root@sample ~]# yum -y install php-mysql  ← 安装php-mysql

  • 配置MySQL

  • [root@sample ~]#vim /etc/my.cnf  ← 编辑MySQL的配置文件

  • [mysqld]

  • datadir=/var/lib/mysql

  • socket=/var/lib/mysql/mysql.sock

  • Default to using old password format for compatibility with mysql 3.x

  • clients (those using the mysqlclient10 compatibility package).

  • old_passwords=1  ← 找到这一行,在这一行的下面添加新的规则,让MySQL的默认编码为UTF-8

  • default-character-set = utf8  ← 添加这一行

  • 然后在配置文件的文尾填加如下语句:

  • [mysql]

  • default-character-set = utf8

  • 启动MySQL服务

  • [root@sample ~]# chkconfig mysqld on  ← 设置MySQL服务随系统启动自启动

  • [root@sample ~]# chkconfig --list mysqld  ← 确认MySQL自启动

  • mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off  ← 如果2--5为on的状态就OK

  • [root@sample ~]#/etc/rc.d/init.d/mysqld start  ← 启动MySQL服务

  • Initializing MySQL database:         [ OK ]

  • Starting MySQL:              [ OK ]

  • MySQL初始环境设定

  • [1]为MySQL的root用户设置密码

  • MySQL在刚刚被安装的时候,它的root用户是没有被设置密码的。首先来设置MySQL的root密码。

  • [root@sample ~]# mysql -u root  ← 用root用户登录MySQL服务器

  • Welcome to the MySQL monitor. Commands end with ; or \g.

  • Your MySQL connection id is 2 to server version: 4.1.20

  • Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

  • mysql> select user,host,password from mysql.user;  ← 查看用户信息

  • +------+------------------------------+---------------+

  • | user | host          | password |

  • +------+------------------------------+---------------+

  • | root | localhost        |       |  ← root密码为空

  • | root | sample.centospub.com  |       |  ← root密码为空

  • |   | sample.centospub.com |       |

  • |   | localhost       |       |

  • |root | % |XXX     |

  • |   |     |       |

  • +------+------------------------------+---------------+

  • 4 rows in set (0.00 sec)

  • mysql> set password for 在这里填入root密码');  ← 设置root密码

  • Query OK, 0 rows affected (0.01 sec)

  • mysql> set password for 在这里填入root密码');  ← 设置root密码

  • Query OK, 0 rows affected (0.01 sec)只有设置了这个才可以,才可以通过数据库来安装网址

  • mysql> set password for );  ← 设置root密码

  • Query OK, 0 rows affected (0.01 sec)

  • mysql> select user,host,password from mysql.user;  ← 查看用户信息

  • +------+--------------------------------+--------------------------+

  • | user | host          | password     |

  • +------+--------------------------------+--------------------------+

  • | root | localhost        | 19b68057189b027f |  ← root密码被设置

  • | root | sample.centospub.com   | 19b68057189b027f |  ← root密码被设置

  • |    | sample.centospub.com   |          |

  • |    | localhost        |          |

  • +------+--------------------------------+--------------------------+

  • 4 rows in set (0.01 sec)

  • mysql> exit  ← 退出MySQL服务器

  • Bye

  • 然后,测试一下root密码有没有生效。

  • [root@sample ~]# mysql -u root  ← 通过空密码用root登录

  • ERROR 1045 (28000): Access denied for user (using password: NO)  ← 出现此错误信息说明密码设置成功

  • [root@localhost ~]# mysql -u root -h sample.centospub.com  ← 通过空密码用root登录

  • ERROR 1045 (28000): Access denied for user (using password: NO)  ← 出现此错误信息说明密码设置成功

  • [root@sample ~]#mysql -u root -p  ← 通过密码用root登录

  • Enter password:  ← 在这里输入密码

  • Welcome to the MySQL monitor. Commands end with ; or \g.  ← 确认用密码能够成功登录

  • Your MySQL connection id is 5 to server version: 4.1.20

  • Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

  • mysql> exit

  • Bye

  • [root@sample ~]# mysql -u root -h sample.centospub.com -p  ← 通过密码用root登录

  • Enter password:  ← 在这里输入密码

  • Welcome to the MySQL monitor. Commands end with ; or \g.  ← 确认用密码能够成功登录

  • Your MySQL connection id is 6 to server version: 4.1.20

  • Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

  • mysql> exit  ← 退出MySQL服务器

  • Bye

  • [2] 删除匿名用户

  • 在MySQL刚刚被安装后,存在用户名、密码为空的用户。这使得数据库服务器有无需密码被登录的可能性。为消除隐患,将匿名用户删除。

  • [root@sample ~]# mysql -u root -p  ← 通过密码用root登录

  • Enter password:  ← 在这里输入密码

  • Welcome to the MySQL monitor. Commands end with ; or \g.

  • Your MySQL connection id is 7 to server version: 4.1.20

  • Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

  • mysql> select user,host from mysql.user;  ← 查看用户信息

  • +------+----------------------------+

  • | user | host         |

  • +------+----------------------------+

  • |   | localhost       |

  • | root | localhost       |

  • |   | sample.centospub.com |

  • | root | sample.centospub.com  |

  • +------+----------------------------+

  • 4 rows in set (0.02 sec)

  • mysql> delete from mysql.user where user='';  ← 删除匿名用户

  • Query OK, 2 rows affected (0.17 sec)

  • mysql> select user,host from mysql.user;  ← 查看用户信息

  • +------+----------------------------+

  • | user | host         |

  • +------+----------------------------+

  • | root | localhost      |

  • | root | sample.centospub.com |

  • +------+----------------------------+

  • 2 rows in set (0.00 sec)

  • mysql> exit  ← 退出MySQL服务器

  • Bye

  • 2.新开通一个用户,使得可以远程链接该mysql,并拥有建表权限

  • 新开通一个服务器远程连接mysql,使mysql授权办法

  • 敲入mysql进入控制台

  • use mysql

  • show tables; //可以查看下有哪几张表

  • Insert INTO user(Host,User,Password) VALUES("124.205.148.226","root",password('123456'));//这样远程用SQLyog就能连接登录了。

  • GRANT ALL PRIVILEGES ON . TO [email protected] identified by '123456';//这样就有建库的权限了

  • FLUSH PRIVILEGES; //令权限立即生效

  • 第二步:mysql建表

  • 3.在SQLyog等远程连接的GUI工具中建表,sql如下:(重要:注意调度结果记录是"按月分表"的)

  • /*

  • SQLyog 企业版 - MySQL GUI v8.14

  • MySQL - 5.0.90-log : Database - dispatch_manage_system


  • */

  • /*!40101 SET NAMES utf8 */;

  • /!40101 SET SQL_MODE=''/;

  • /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

  • /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

  • /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

  • /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

  • CREATE DATABASE /!32312 IF NOT EXISTS/dispatch_manage_system /*!40100 DEFAULT CHARACTER SET utf8 */;

  • USE dispatch_manage_system;

  • /*Table structure for table daemon */

  • DROP TABLE IF EXISTS daemon;

  • CREATE TABLE daemon (

  • id bigint(20) unsigned NOT NULL auto_increment,

  • machine_ip varchar(16) NOT NULL COMMENT '机器ip',

  • machine_port int(4) NOT NULL COMMENT '机器端口号',

  • daemon_version_name varchar(100) NOT NULL COMMENT 'daemon版本名',

  • must_lostconn_email tinyint(1) default NULL COMMENT 'bool.是否失去联络通信的通知email报警',

  • lostconn_emailaddress varchar(1000) NOT NULL COMMENT '失去联络通信的报警email,#隔开',

  • conn_status tinyint(1) default NULL COMMENT '通信状态:0通讯异常,1通信正常',

  • comment text NOT NULL COMMENT '简介',

  • update_time datetime NOT NULL,

  • PRIMARY KEY (id)

  • ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

  • /*Table structure for table task */

  • DROP TABLE IF EXISTS task;

  • CREATE TABLE task (

  • id bigint(20) unsigned NOT NULL auto_increment,

  • daemon_id bigint(20) unsigned NOT NULL COMMENT '执行此任务daemon执行器的id',

  • cron_exp varchar(16) NOT NULL COMMENT 'crontab表达式',

  • shell_cmd varchar(1000) NOT NULL COMMENT '运行的命令,原始命令,未替换参数前',

  • must_replace_cmd tinyint(1) NOT NULL COMMENT 'bool.是否需要替换`撇号中的命令为执行结果',

  • run_mode tinyint(1) NOT NULL COMMENT '0--被动模式,1--主动模式',

  • run_start_reportaddress varchar(500) default NULL COMMENT 'cmd命令开始执行的汇报地址',

  • run_end_reportaddress varchar(500) default NULL COMMENT 'cmd命令结束执行的汇报地址',

  • is_process_node tinyint(1) NOT NULL default '0' COMMENT '0--不是流程中的一个节点,1--是流程中的一个节点',

  • is_process_chain tinyint(1) default '0' COMMENT '0--不是流程链task,1--是流程链task',

  • process_tasks text COMMENT '流程链模式下的子链条task id集合',

  • comment text NOT NULL COMMENT '简介',

  • operate_uid bigint(20) default '-1' COMMENT '操作人的id号',

  • update_time datetime default NULL COMMENT '修改日期',

  • is_redo tinyint(1) NOT NULL default '0' COMMENT '0--不重新执行此任务,1--重新执行此任务',

  • end_redo_times int(11) NOT NULL default '0' COMMENT '截止重新执行次数',

  • PRIMARY KEY (id)

  • ) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;

  • /*Table structure for table task_record_done */

  • DROP TABLE IF EXISTS task_record_done;

  • CREATE TABLE task_record_done (

  • id bigint(20) unsigned NOT NULL auto_increment,

  • task_id bigint(20) NOT NULL COMMENT '该task任务是哪个task id执行的结果',

  • real_cmd varchar(1000) default NULL COMMENT '被替换参数为现场时间后后真实的命令',

  • exit_code int(10) NOT NULL COMMENT '完成的返回值。0--成功,其他都--失败',

  • complete_success tinyint(1) default NULL COMMENT '完成的返回状态。1--成功,0--失败',

  • start_datetime datetime NOT NULL COMMENT '任务开始时间(如果是自动重执行时,每次执行不修改起始时间)',

  • end_datetime datetime NOT NULL COMMENT '任务结束时间',

  • exec_type int(10) NOT NULL COMMENT '执行类型,0--crontab执行,1--手动重执行,2--自动重执行,3--当场执行等',

  • exec_return_str text COMMENT '执行后的外部进程字符串返回结果。',

  • current_redo_times int(11) default NULL COMMENT '当前第几次自动重试执行',

  • on_processing tinyint(1) NOT NULL default '0' COMMENT 'bool是否正在执行中,0--没有正在执行,1--正在手动/自动执行',

  • PRIMARY KEY (id)

  • ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

  • /*Table structure for table task_record_undo */

  • DROP TABLE IF EXISTS task_record_undo;

  • CREATE TABLE task_record_undo (

  • id bigint(20) unsigned NOT NULL auto_increment,

  • task_id bigint(20) NOT NULL COMMENT '该任务执行者的task_id号码',

  • real_cmd varchar(1000) default NULL COMMENT '被替换参数为现场时间后后真实的命令',

  • run_status int(4) NOT NULL COMMENT '运行状态---0 进行中...',

  • start_datetime datetime NOT NULL COMMENT '执行开始时间',

  • exec_type int(10) NOT NULL COMMENT '执行类型,0--crontab执行,1--手动重执行...',

  • PRIMARY KEY (id)

  • ) ENGINE=MyISAM AUTO_INCREMENT=10855 DEFAULT CHARSET=utf8;

  • /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

  • /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

  • /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

  • /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

  • 第三步:修改java web中央服务器配置文件,打包(可以用ant,也可以不用ant自己手工改配置文件打包)

  • 4.修改ant(这一步也可以手工修改properties配置文件,包含application.properties和log4j.properties,然后自己打包,ant打包就是根据一个配置文件然后调用ant脚本自动修改2个properties配置文件,然后打成war包,方便一些)

  • 在eclipse的ant文件夹下放入最新的服务器要连接数据库的properties文件(ant打包要用)

  • 例如:

  • #这一项的ip和端口一定要改为mysql数据库的ip和端口

  • db.jdbcurl=jdbc:mysql://192.168.101.9:3306/dispatch_manage_system?useUnicode=true&characterEncoding=UTF-8

  • db.username=admin

  • db.password=123456

  • #这一项的ip和端口一定要改为中央服务器的tomcat启动该server的ip和端口

  • undoReportHttpUrl=http://192.168.101.9:8085/record_undo/report.action

  • serverRootUrl=http://192.168.101.9:8085

  • alertFromUserMail=[email protected]

  • alertFromPassword=starcraft

  • alertHostMail=mail.baofeng.com

  • alertDestMail={"[email protected]":"\u9A6C\u6668"}

  • ########################log4j.properties######################

  • log4j.rootLogger=info, stdout

  • log4j.appender.stdout=org.apache.log4j.ConsoleAppender

  • log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

  • log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %p\t| %m%n

  • log4j.logger.Validate=info, validate

  • log4j.appender.validate=org.apache.log4j.DailyRollingFileAppender

  • log4j.appender.validate.File=/opt/modules/dispatch_system_tomcat/logs/dispatch_sys/service.log

  • log4j.appender.validate.DatePattern='.'yyyy-MM-dd'.bak'

  • log4j.appender.validate.layout=org.apache.log4j.PatternLayout

  • log4j.appender.validate.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %p\t| %m%n

  • log4j.logger.Error=error, err

  • log4j.appender.err=org.apache.log4j.DailyRollingFileAppender

  • log4j.appender.err.File=/opt/modules/dispatch_system_tomcat/logs/dispatch_sys/error.log

  • log4j.appender.err.DatePattern='.'yyyy-MM-dd'.bak'

  • log4j.appender.err.layout=org.apache.log4j.PatternLayout

  • log4j.appender.err.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %p\t| %m%n

  • log4j.logger.DaemonError=error, daemonError

  • log4j.appender.daemonError=org.apache.log4j.DailyRollingFileAppender

  • log4j.appender.daemonError.File=/opt/modules/dispatch_system_tomcat/logs/dispatch_sys/daemonError.log

  • log4j.appender.daemonError.DatePattern='.'yyyy-MM-dd'.bak'

  • log4j.appender.daemonError.layout=org.apache.log4j.PatternLayout

  • log4j.appender.daemonError.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %p\t| %m%n

  • log4j.logger.RecordUndoLogger=info, recordUndoLogger

  • log4j.appender.recordUndoLogger=org.apache.log4j.DailyRollingFileAppender

  • log4j.appender.recordUndoLogger.File=/opt/modules/dispatch_system_tomcat/logs/dispatch_sys/recordUndoLogger.log

  • log4j.appender.recordUndoLogger.DatePattern='.'yyyy-MM-dd'.bak'

  • log4j.appender.recordUndoLogger.layout=org.apache.log4j.PatternLayout

  • log4j.appender.recordUndoLogger.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %p\t| %m%n

  • log4j.logger.RecordDoneLogger=info, recordDoneLogger

  • log4j.appender.recordDoneLogger=org.apache.log4j.DailyRollingFileAppender

  • log4j.appender.recordDoneLogger.File=/opt/modules/dispatch_system_tomcat/logs/dispatch_sys/recordDoneLogger.log

  • log4j.appender.recordDoneLogger.DatePattern='.'yyyy-MM-dd'.bak'

  • log4j.appender.recordDoneLogger.layout=org.apache.log4j.PatternLayout

  • log4j.appender.recordDoneLogger.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %p\t| %m%n

  • log4j.logger.RecordDoneError=info, recordDoneError

  • log4j.appender.recordDoneError=org.apache.log4j.DailyRollingFileAppender

  • log4j.appender.recordDoneError.File=/opt/modules/dispatch_system_tomcat/logs/dispatch_sys/recordDoneError.log

  • log4j.appender.recordDoneError.DatePattern='.'yyyy-MM-dd'.bak'

  • log4j.appender.recordDoneError.layout=org.apache.log4j.PatternLayout

  • 5.运行ant文件夹下的build.xml

  • 打完包后压缩包就放入了war文件夹下

  • 第四步:部署war包到apache-tomcat,启动

  • 6.下载apache-tomcat

  • 进入官网下载http://tomcat.apache.org/download-60.cgi

  • 打成war包后,一定要把war压缩文件放入webapp/ROOT下(一定要放到ROOT下)

  • 然后敲入jar -xvf xxx.war解压缩

  • 在tomcat的bin下敲入sh start.sh启动

  • 第五步:修改一键安装daemon端的shell脚本,并在各个需要被调度的奴隶机上一键执行shell安装

  • 7.安装daemon

  • (1)下载daemon端安装脚本:

  • 一键脚本和jar包等安装必备都位于webapp/ROOT/WebRoot/download下

  • 其中安装脚本文件名:install_start.sh位于webapp/ROOT/WebRoot/download

  • (2)在各个需要执行crontab的机器上安装daemon:

  • 安装脚本install_start.sh使用指南

  • Usage Example: ./install_start.sh -d /opt/modules/daemon -s 2012 -i 192.168.0.1 -p 8080

  • -d install directory path

  • -s daemon boot start port

  • -i cronhub center server's ip used for download daemon's jar and jdk and jsvc and so on

  • -p cronhub center server's port used for download daemon's jar and jdk and jsvc and so on

  • 执行完脚本就会启动,启动后你会在控制台上ps的时候发现2个jsvc的进程,如下:

  • [root@localhost ~]# ps -ef|grep jsvc

  • root 1965 1 0 Jul02 ? 00:00:00 jsvc.exec -home /opt/modules/daemon/jdk1.6.0_30 -Xmx2000m -pidfile /opt/modules/daemon/2012.pid -cp /opt/modules/daemon/DispatchSystemDaemon.jar com.baofeng.dispatchexecutor.boot.DaemonBoot -p 2012

  • root 1966 1965 0 Jul02 ? 00:00:48 jsvc.exec -home /opt/modules/daemon/jdk1.6.0_30 -Xmx2000m -pidfile /opt/modules/daemon/2012.pid -cp /opt/modules/daemon/DispatchSystemDaemon.jar com.baofeng.dispatchexecutor.boot.DaemonBoot -p 2012

  • 说明:

  • 安装daemon脚本会加入chkconfig到linux系统启动项(加入service)里头

  • 最后,大功告成,当你在浏览器敲入http://xxx.xxx.xxx.xxx:8080/时,你就会看到一个这个系统的界面,直接点击daemon执行器管理下的增加daemon执行器将你刚刚添加的daemonIP和端口填入吧!