Gunicorn测试完成,里程碑是服务注册成功,服务器自启动的时候也能正常运行

This commit is contained in:
2025-08-31 19:55:23 +08:00
parent d20ddfed59
commit 7bd1764103
8 changed files with 4367 additions and 978 deletions

View File

@@ -64,6 +64,16 @@ class RemoteCommandThread(QThread):
self.finished_signal.emit(False, f"SSH连接已断开请重新连接服务器")
return
# 在执行命令前,先输出当前目录
try:
pwd_stdin, pwd_stdout, pwd_stderr = self.ssh_client.exec_command("pwd")
pwd_output = pwd_stdout.read().decode().strip()
if pwd_output:
self.output_signal.emit(f"当前目录: {pwd_output}")
logger.info(f"当前目录: {pwd_output}")
except Exception as e:
logger.error(f"获取当前目录失败: {str(e)}")
# 如果命令包含sudo修改为使用-S选项从标准输入读取密码
if "sudo" in self.command:
command_with_sudo = self.command.replace("sudo", "sudo -S")
@@ -219,7 +229,7 @@ class RemoteCommandsTab(QWidget):
# 允许用户输入当前目录路径
# self.current_dir_display.setReadOnly(True)
# 添加回车键刷新目录功能
self.current_dir_display.returnPressed.connect(self.refresh_directory)
self.current_dir_display.returnPressed.connect(self.on_current_dir_entered)
current_dir_layout.addWidget(self.current_dir_display)
# 刷新目录按钮
@@ -275,6 +285,26 @@ class RemoteCommandsTab(QWidget):
self.setLayout(main_layout)
logger.info("远程命令标签页UI初始化完成")
def set_server_info(self, server_info):
"""设置服务器信息"""
logger.info(f"设置服务器信息: {server_info}")
self.server_info = server_info
# 更新主窗口状态栏显示当前目录
try:
main_window = self.parent().parent()
if hasattr(main_window, 'status_bar') and self.ssh_client:
current_dir = self.current_dir_display.text().strip()
server_host = self.server_info.get('host', '未知')
if current_dir:
main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}")
logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}")
else:
main_window.status_bar.showMessage(f"远程服务器: {server_host}")
logger.info(f"主窗口状态栏更新为远程服务器: {server_host}")
except Exception as e:
logger.error(f"更新主窗口状态栏失败: {str(e)}")
def set_ssh_client(self, ssh_client):
logger.info("设置SSH客户端")
self.ssh_client = ssh_client
@@ -282,9 +312,33 @@ class RemoteCommandsTab(QWidget):
if self.ssh_client:
self.status_label.setText("已连接到服务器")
self.status_label.setStyleSheet("color: green;")
# 更新主窗口状态栏显示当前目录
try:
main_window = self.parent().parent()
if hasattr(main_window, 'status_bar'):
current_dir = self.current_dir_display.text().strip()
server_host = self.server_info.get('host', '未知') if hasattr(self, 'server_info') else '未知'
if current_dir:
main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}")
logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}")
else:
main_window.status_bar.showMessage(f"远程服务器: {server_host}")
logger.info(f"主窗口状态栏更新为远程服务器: {server_host}")
except Exception as e:
logger.error(f"更新主窗口状态栏失败: {str(e)}")
else:
self.status_label.setText("未连接到服务器")
self.status_label.setStyleSheet("color: red;")
# 更新主窗口状态栏显示未连接状态
try:
main_window = self.parent().parent()
if hasattr(main_window, 'status_bar'):
main_window.status_bar.showMessage("未连接到远程服务器")
logger.info("主窗口状态栏更新为未连接状态")
except Exception as e:
logger.error(f"更新主窗口状态栏失败: {str(e)}")
def set_server_config(self, git_url, remote_dir):
logger.info(f"设置服务器配置: git_url={git_url}, remote_dir={remote_dir}")
@@ -295,6 +349,16 @@ class RemoteCommandsTab(QWidget):
if remote_dir:
self.current_dir_display.setText(remote_dir)
self.refresh_directory()
# 更新主窗口状态栏显示当前目录
try:
main_window = self.parent().parent()
if hasattr(main_window, 'status_bar'):
server_host = self.server_info['host'] if hasattr(self, 'server_info') and 'host' in self.server_info else '未知'
main_window.status_bar.showMessage(f"远程服务器 {server_host}: {remote_dir}")
logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {remote_dir}")
except Exception as e:
logger.error(f"更新主窗口状态栏失败: {str(e)}")
def install_git(self):
logger.info("安装Git")
@@ -385,6 +449,25 @@ class RemoteCommandsTab(QWidget):
else:
QMessageBox.warning(self, "错误", message)
def on_current_dir_entered(self):
"""处理用户输入目录路径并按回车键的情况"""
logger.info("用户输入目录路径并按回车键")
# 更新主窗口状态栏显示当前目录
try:
main_window = self.parent().parent()
if hasattr(main_window, 'status_bar'):
current_dir = self.current_dir_display.text().strip()
server_host = self.server_info['host'] if hasattr(self, 'server_info') and 'host' in self.server_info else '未知'
if current_dir:
main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}")
logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}")
except Exception as e:
logger.error(f"更新主窗口状态栏失败: {str(e)}")
# 刷新目录列表
self.refresh_directory()
def refresh_directory(self):
logger.info("刷新目录列表")
@@ -419,6 +502,17 @@ class RemoteCommandsTab(QWidget):
self.status_label.setText("目录列表已刷新")
self.status_label.setStyleSheet("color: green;")
logger.info("目录列表刷新成功")
# 更新主窗口状态栏显示当前目录
try:
main_window = self.parent().parent()
if hasattr(main_window, 'status_bar'):
current_dir = self.current_dir_display.text()
server_host = self.server_info['host'] if hasattr(self, 'server_info') and 'host' in self.server_info else '未知'
main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}")
logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}")
except Exception as e:
logger.error(f"更新主窗口状态栏失败: {str(e)}")
else:
self.status_label.setText("刷新目录列表失败")
self.status_label.setStyleSheet("color: red;")