@name 启动项目 @author hwliang<2021-08-09> @param get { project_name: string<项目名称> } @return dict
(self,get)
| 1480 | |
| 1481 | |
| 1482 | def start_project(self,get): |
| 1483 | ''' |
| 1484 | @name 启动项目 |
| 1485 | @author hwliang<2021-08-09> |
| 1486 | @param get<dict_obj>{ |
| 1487 | project_name: string<项目名称> |
| 1488 | } |
| 1489 | @return dict |
| 1490 | ''' |
| 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,'') |
no test coverage detected