MCPcopy Create free account
hub / github.com/aaPanel/BaoTa / start_project

Method start_project

class/projectModel/nodejsModel.py:1482–1625  ·  view source on GitHub ↗

@name 启动项目 @author hwliang<2021-08-09> @param get { project_name: string<项目名称> } @return dict

(self,get)

Source from the content-addressed store, hash-verified

1480
1481
1482 def start_project(self,get):
1483 ''&#x27;
1484 @name 启动项目
1485 @author hwliang<2021-08-09>
1486 @param get<dict_obj>{
1487 project_name: string<项目名称>
1488 }
1489 @return dict
1490 ''&#x27;
1491 pid_file = "{}/{}.pid".format(self._node_pid_path,get.project_name)
1492 if os.path.exists(pid_file):
1493 self.stop_project(get)
1494
1495 project_find = self.get_project_find(get.project_name)
1496 if not project_find: return public.return_error('项目不存在')
1497
1498 project_find = self.get_project_find(get.project_name)
1499 if project_find['edate'] != "0000-00-00" and project_find['edate'] < datetime.datetime.today().strftime("%Y-%m-%d"):
1500 return public.return_error('当前项目已过期,请重新设置项目到期时间')
1501
1502 self._update_project(get.project_name, project_find)
1503 if not os.path.exists(project_find['path']):
1504 error_msg = '启动失败,Nodejs项目{},运行目录{}不存在!'.format(get.project_name,project_find['path'])
1505 public.WriteLog(self._log_name,error_msg)
1506 return public.return_error(error_msg)
1507
1508 # 是否安装依赖模块?
1509 package_file = "{}/package.json".format(project_find['path'])
1510 package_info = {}
1511 if os.path.exists(package_file):
1512 node_modules_path = "{}/node_modules".format(project_find['path'])
1513 if not os.path.exists(node_modules_path):
1514 return public.return_error('请先到模块管理中点击【一键安装项目模块】来安装模块依赖!')
1515 try:
1516 package_info = json.loads(public.readFile(package_file))
1517 except:
1518 package_info = {}
1519 if not package_info: package_info['scripts'] = {}
1520 if 'scripts' not in package_info: package_info['scripts'] = {}
1521 try:
1522 scripts_keys = package_info['scripts'].keys()
1523 except:
1524 scripts_keys = []
1525
1526
1527 # 前置准备
1528 nodejs_version = project_find['project_config']['nodejs_version']
1529 node_bin = self.get_node_bin(nodejs_version)
1530 npm_bin = self.get_npm_bin(nodejs_version)
1531 project_script = project_find['project_config']['project_script'].strip().replace(' ',' ')
1532 if project_script[:3] == 'pm2': # PM2启动方式处理
1533 project_script = project_script.replace('pm2 ','pm2 -u {} -n {} '.format(project_find['project_config']['run_user'],get.project_name))
1534 project_find['project_config']['run_user'] = 'root'
1535 log_file = "{}/{}.log".format(project_find['project_config']["log_path"], project_find["name"])
1536 if not project_script: return public.return_error('未配置启动脚本')
1537
1538 last_env = self.get_last_env(nodejs_version,project_find['path'])
1539 public.writeFile(log_file,'')

Callers 4

create_projectMethod · 0.95
restart_projectMethod · 0.95
auto_runMethod · 0.95
change_log_pathMethod · 0.95

Calls 15

stop_projectMethod · 0.95
get_project_findMethod · 0.95
_update_projectMethod · 0.95
get_node_binMethod · 0.95
get_npm_binMethod · 0.95
get_last_envMethod · 0.95
get_project_pidsMethod · 0.95
readFileMethod · 0.80
writeFileMethod · 0.80
ExecShellMethod · 0.80
set_modeMethod · 0.80

Tested by

no test coverage detected