增加nginx的标签

This commit is contained in:
2025-08-31 20:35:59 +08:00
parent 7bd1764103
commit 47f3669dc4
6 changed files with 1342 additions and 0 deletions

View File

@@ -401,6 +401,41 @@ class GunicornServiceControlThread(QThread):
self.result_ready.emit(False, error_msg)
logger.error(f"Gunicorn服务控制异常: {error_msg}")
class GunicornLogThread(QThread):
"""查看Gunicorn服务日志的线程"""
result_ready = Signal(bool, str)
def __init__(self, ssh_client, service_name, password, lines=100):
super().__init__()
self.ssh_client = ssh_client
self.service_name = service_name
self.password = password
self.lines = lines # 要查看的日志行数
def run(self):
try:
# 使用journalctl查看Gunicorn服务的日志
command = f"bash -c 'echo \"{self.password}\" | sudo -S journalctl -u {self.service_name} -n {self.lines}'"
logger.info(f"查看Gunicorn服务日志: {command}")
stdin, stdout, stderr = self.ssh_client.exec_command(command)
exit_status = stdout.channel.recv_exit_status()
output = stdout.read().decode()
error = stderr.read().decode()
if exit_status == 0:
self.result_ready.emit(True, output)
logger.info(f"Gunicorn服务日志查看成功")
else:
self.result_ready.emit(False, f"查看日志失败: {error}")
logger.error(f"Gunicorn服务日志查看失败: {error}")
except Exception as e:
error_msg = str(e)
self.result_ready.emit(False, error_msg)
logger.error(f"Gunicorn服务日志查看异常: {error_msg}")
class ServerControlThread(QThread):
"""控制服务器设置的线程"""
result_ready = Signal(bool, str)
@@ -538,6 +573,11 @@ class GunicornTab(QWidget):
self.check_status_btn.clicked.connect(self.check_service_status)
service_btn_layout.addWidget(self.check_status_btn)
# 查看服务日志按钮
self.view_logs_btn = QPushButton("查看服务日志")
self.view_logs_btn.clicked.connect(self.view_service_logs)
service_btn_layout.addWidget(self.view_logs_btn)
service_layout.addLayout(service_btn_layout)
layout.addLayout(service_layout)
@@ -887,6 +927,43 @@ class GunicornTab(QWidget):
else:
self.append_output("用户取消了密码输入")
def view_service_logs(self):
"""查看Gunicorn服务日志"""
if not self.ssh_client:
self.append_output("错误: 未连接到服务器")
return
if not self.project_name:
self.append_output("错误: 未设置项目名")
return
service_name = f"gunicorn_{self.project_name}"
# 请求用户输入sudo密码
dialog = PasswordDialog(self)
if dialog.exec_() == QDialog.Accepted:
password = dialog.get_password()
self.append_output(f"正在查看Gunicorn服务日志: {service_name}...")
# 创建并启动日志查看线程
self.log_thread = GunicornLogThread(self.ssh_client, service_name, password)
self.log_thread.result_ready.connect(self.on_log_result)
self.log_thread.start()
else:
self.append_output("用户取消了密码输入")
def on_log_result(self, success, message):
"""处理日志查看结果"""
if success:
self.append_output("--- Gunicorn服务日志 ---")
self.append_output(message)
self.append_output("--- 日志结束 ---")
logger.info("Gunicorn服务日志查看成功")
else:
self.append_output(f"查看日志失败: {message}")
logger.error(f"Gunicorn服务日志查看失败: {message}")
QMessageBox.warning(self, "错误", f"Gunicorn服务日志查看失败: {message}")
def on_control_result(self, success, message):
"""处理控制结果"""
if success: