问题
由于预算有限,用不起lambda去跑定时任务,现在只能在EC2上面自己安装一个单机版的xxl-job了。
步骤
下载压缩包
在这个页面下载压缩包,并本地解压。
https://github.com/xuxueli/xxl-job/releases
mysql准备
找到它默认身数据库初始化文件:
/xxl-job/doc/db/tables_xxl_job.sql
登录到自己的mysql数据库中:
# 创建数据库
CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4 collate utf8mb4_unicode_ci;
# 创建用户
create user 'xxl_job'@'%' identified by 'xxxxx';
# 分配权限
grant all privileges on xxl_job.* to 'xxl_job'@'%';
# 刷新权限
flush privileges;
# 登录数据库
mysql -h xxxx.rds.zxxxx.com -P 3306 -u xxl_job -p
# 登录成功后,使用xxl_job数据库
use xxl_job;
# 导入初始化数据库文件
source tables_xxl_job.sql;
修改xxl-job配置
找到如下文件:
/xxl-job/xxl-job-admin/src/main/resources/application.properties
调整如下内容:
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://xxxx.rds.zxxxx.com:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=xxl_job
spring.datasource.password=xxxxx
maven构建jar
mvn clean && mvn package -Dmaven.test.skip=true
然后,将构建好的文件
/xxl-job/xxl-job-admin/target/xxl-job-admin-2.4.0.jar
上传到服务,先使用如下命令,手动测试一下,看看服务能不能正常启动:
# 登录到服务器目录
cd /opt
# 设置文件只读
sudo chmod 400 xxl-job-admin-2.4.0.jar
# 试运行
sudo java -jar xxl-job-admin-2.4.0.jar
SysV设置
创建用户和用户组
sudo useradd --system --home /home/xxl-job --shell /sbin/nologin --comment "xxl-job user" --user-group xxl-job
配置用户目录权限
# 创建新目录
sudo mkdir /opt/xxl-job
sudo mkdir /data/applogs
# 移动安装包
sudo mv /opt/xxl-job-admin-2.4.0.jar /opt/xxl-job/xxl-job-admin-2.4.0.jar
# 分配权限
sudo chown -R xxl-job:xxl-job /opt/xxl-job
sudo chown -R xxl-job:xxl-job /data/applogs
# 创建配置文件
sudo vim /etc/systemd/system/xxl-job.service
内容如下:
[Unit]
Description=XXL-JOB
After=syslog.target network.target
[Service]
Type=simple
User=xxl-job
Group=xxl-job
WorkingDirectory=/opt/xxl-job/
ExecStart=java -jar /opt/xxl-job/xxl-job-admin-2.4.0.jar
ExecStop=/bin/kill -15 $MAINPID
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
测试SysV
# 重载 SysV配置
sudo systemctl daemon-reload
# 启动xxl-job-admin
sudo systemctl start xxl-job.service
# 开机自启动
sudo systemctl enable xxl-job.service
# 查看运行状态
sudo systemctl status xxl-job.service
效果
总结
到此为止,xxl-job就安装完了,几乎和普通的java应用安装差不多。
参考
- XXL-JOB