check_jeecgenv.py 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. import os
  2. import subprocess
  3. import re
  4. import sys
  5. from typing import Tuple, Optional
  6. def run_command(cmd: str) -> Tuple[int, str]:
  7. """执行命令并返回退出码和输出"""
  8. try:
  9. result = subprocess.run(cmd, shell=True, check=False,
  10. stdout=subprocess.PIPE, stderr=subprocess.PIPE,
  11. text=True)
  12. return result.returncode, result.stdout.strip()
  13. except Exception as e:
  14. return -1, str(e)
  15. def check_java() -> bool:
  16. """检查JDK 17+是否安装"""
  17. print("\n检查JDK 17+...")
  18. rc, output = run_command("java -version 2>&1")
  19. if rc != 0:
  20. print("❌ 未检测到Java,请安装JDK 17+")
  21. return False
  22. version_pattern = r'"(\d+)(?:\.\d+)*(?:_\d+)?'
  23. match = re.search(version_pattern, output)
  24. if not match:
  25. print("❌ 无法解析Java版本")
  26. return False
  27. version = int(match.group(1))
  28. if version >= 17:
  29. print(f"✅ JDK版本 {version} (满足17+要求)")
  30. return True
  31. else:
  32. print(f"❌ JDK版本 {version} (需要17+)")
  33. return False
  34. def check_maven() -> bool:
  35. """检查Maven是否安装"""
  36. print("\n检查Maven...")
  37. rc, output = run_command("mvn -v")
  38. if rc == 0:
  39. print("✅ Maven已安装")
  40. return True
  41. else:
  42. print("❌ Maven未安装")
  43. return False
  44. def check_node() -> bool:
  45. """检查Node.js 20+是否安装"""
  46. print("\n检查Node.js 20+...")
  47. rc, output = run_command("node -v")
  48. if rc != 0:
  49. print("❌ Node.js未安装")
  50. return False
  51. version_pattern = r'v(\d+)\.\d+\.\d+'
  52. match = re.search(version_pattern, output)
  53. if not match:
  54. print("❌ 无法解析Node.js版本")
  55. return False
  56. version = int(match.group(1))
  57. if version >= 20:
  58. print(f"✅ Node.js版本 {version} (满足20+要求)")
  59. return True
  60. else:
  61. print(f"❌ Node.js版本 {version} (需要20+)")
  62. return False
  63. def check_pnpm() -> bool:
  64. """检查PNPM 9+是否安装"""
  65. print("\n检查PNPM 9+...")
  66. rc, output = run_command("pnpm -v")
  67. if rc != 0:
  68. print("❌ PNPM未安装")
  69. return False
  70. try:
  71. # 处理可能的版本号格式:v9.0.0 或 9.0.0 或 9
  72. version_str = output.strip().lstrip('v').split('.')[0]
  73. version = int(version_str)
  74. if version >= 9:
  75. print(f"✅ PNPM版本 {output.strip()} (满足9+要求)")
  76. return True
  77. else:
  78. print(f"❌ PNPM版本 {output.strip()} (需要9+)")
  79. return False
  80. except (ValueError, IndexError):
  81. print(f"❌ 无法解析PNPM版本: {output.strip()}")
  82. return False
  83. def check_redis_connection() -> bool:
  84. """检查Redis连接"""
  85. print("\n检查Redis连接...")
  86. print("⚠️ 请确保已配置Redis连接信息并在jeecg-boot项目中正确配置")
  87. print("⚠️ 此检查需要根据实际项目配置进行验证")
  88. print("⚠️ 配置文件位置: jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml")
  89. return True
  90. def check_mysql_connection() -> bool:
  91. """检查MySQL连接"""
  92. print("\n检查MySQL连接...")
  93. print("⚠️ 请确保已配置MySQL连接信息并在jeecg-boot项目中正确配置")
  94. print("⚠️ 此检查需要根据实际项目配置进行验证")
  95. print("⚠️ 配置文件位置: jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml")
  96. return True
  97. def print_mysql_config():
  98. """打印MySQL配置并提示需要修改的位置"""
  99. print("\nMySQL配置参考 (请检查以下配置是否正确):")
  100. print("""
  101. spring.datasource.dynamic.datasource:
  102. master:
  103. url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
  104. username: root # ← 可能需要修改
  105. password: root # ← 可能需要修改
  106. driver-class-name: com.mysql.cj.jdbc.Driver
  107. """)
  108. def check_ai_vector_db() -> bool:
  109. """检查AI向量库(pgvector)配置"""
  110. print("\n检查AI知识库向量库配置...")
  111. print("⚠️ 如果需要使用AI知识库功能,请配置pgvector向量库")
  112. print("⚠️ 配置文件位置: jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml")
  113. print("\n配置参考:")
  114. print("""
  115. jeecg.ai-rag:
  116. embed-store:
  117. host: 127.0.0.1 # ← 可能需要修改
  118. port: 5432 # ← 可能需要修改
  119. database: postgres # ← 可能需要修改
  120. user: postgres # ← 可能需要修改
  121. password: postgres # ← 可能需要修改
  122. table: embeddings # ← 可能需要修改
  123. """)
  124. print("⚠️ 注意: 请确保已安装PostgreSQL并添加pgvector扩展!docker安装参考:https://help.jeecg.com/aigc/config")
  125. return True
  126. def check_ai_config() -> bool:
  127. """检查AI账号配置"""
  128. print("\n检查AI功能配置...")
  129. print("⚠️ 如果需要使用AI聊天功能,请配置AI账号信息")
  130. print("⚠️ 配置文件位置: jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml")
  131. print("\n配置参考:")
  132. print("""
  133. jeecg:
  134. # AI集成
  135. ai-chat:
  136. enabled: true # ← 启用AI功能
  137. model: deepseek-chat # ← 模型名称
  138. apiKey: ?? # ← 必须修改为您的API Key
  139. apiHost: https://api.deepseek.com/v1 # ← API地址
  140. timeout: 60 # ← 超时时间(秒)
  141. """)
  142. print("⚠️ 注意: 请确保已获取有效的API Key并正确配置!AI账号注册获取参考: https://help.jeecg.com/java/deepSeekSupport")
  143. return True
  144. def print_redis_config():
  145. """打印Redis配置并提示需要修改的位置"""
  146. print("\nRedis配置参考 (请检查以下配置是否正确):")
  147. print("""
  148. spring.redis:
  149. database: 0
  150. host: 127.0.0.1 # ← 可能需要修改
  151. port: 6379 # ← 可能需要修改
  152. password: '' # ← 如果需要密码请修改
  153. """)
  154. def main():
  155. print("="*50)
  156. print("JeecgBoot 运行环境检查脚本")
  157. print("="*50)
  158. all_checks_passed = True
  159. # 检查各项依赖
  160. if not check_java():
  161. all_checks_passed = False
  162. if not check_maven():
  163. all_checks_passed = False
  164. if not check_node():
  165. all_checks_passed = False
  166. if not check_pnpm():
  167. all_checks_passed = False
  168. # 数据库提示
  169. print("="*50)
  170. check_redis_connection()
  171. print_redis_config()
  172. print("="*50)
  173. check_mysql_connection()
  174. print_mysql_config()
  175. print("="*50)
  176. check_ai_config()
  177. print("="*50)
  178. check_ai_vector_db()
  179. print("\n" + "="*50)
  180. if all_checks_passed:
  181. print("✅ 所有基础环境检查通过")
  182. print("⚠️ 注意: 请确保Redis和MySQL、AI账号、向量库pgvector 已正确配置并连接成功")
  183. else:
  184. print("❌ 部分环境检查未通过,请根据上述提示解决问题")
  185. print("="*50)
  186. if __name__ == "__main__":
  187. main()
  188. input("\n按回车键退出...") # 等待用户输入