修改了下载站点配置的按钮,修改了增加静态文件配置的按钮

This commit is contained in:
2025-09-07 12:42:12 +08:00
parent f98c33d76b
commit fffed99165
3 changed files with 157 additions and 1 deletions

Binary file not shown.

42
app.log
View File

@@ -4861,3 +4861,45 @@ sudo systemctl restart nginx
2025-09-07 10:08:06.510 | INFO | __main__:<module>:189 - 启动应用程序
2025-09-07 10:08:06.575 | INFO | __main__:__init__:17 - 初始化主窗口
2025-09-07 10:08:06.630 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署
2025-09-07 10:08:06.631 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页
2025-09-07 10:08:06.648 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成
2025-09-07 10:08:06.648 | INFO | server_connection_tab:load_config:96 - 加载配置文件
2025-09-07 10:08:06.648 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json
2025-09-07 10:08:06.653 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机
2025-09-07 10:08:06.658 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页
2025-09-07 10:08:06.664 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成
2025-09-07 10:08:06.667 | INFO | __main__:__init__:57 - 主窗口初始化完成
2025-09-07 10:08:09.700 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器
2025-09-07 10:08:30.743 | ERROR | server_connection_tab:connect_to_server:227 - 连接服务器失败: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
2025-09-07 10:10:05.096 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器
2025-09-07 10:10:05.735 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157
2025-09-07 10:10:07.953 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 2
2025-09-07 10:10:07.954 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端
2025-09-07 10:10:07.954 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji
2025-09-07 10:10:07.954 | INFO | __main__:on_tab_changed:123 - 状态栏更新为Django项目: statuspage, 目录: /home/xiaji
2025-09-07 10:10:13.399 | INFO | django_threads:run:86 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5
2025-09-07 10:10:13.414 | INFO | django_threads:run:198 - 命令输出: /home/xiaji/webstatus/manage.py
2025-09-07 10:10:13.414 | INFO | django_tab:process_manage_py_result:288 - 找到manage.py文件: /home/xiaji/webstatus/manage.py
2025-09-07 10:10:13.414 | INFO | django_threads:run:211 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5
2025-09-07 10:10:13.418 | INFO | django_threads:run:86 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5
2025-09-07 10:10:13.467 | INFO | django_threads:run:198 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py
2025-09-07 10:10:13.467 | INFO | django_tab:process_settings_py_result:315 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py
2025-09-07 10:10:13.467 | INFO | django_threads:run:211 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5
2025-09-07 10:10:13.468 | INFO | django_tab:on_command_finished:155 - Django命令执行完成
2025-09-07 10:10:14.808 | INFO | django_tab:download_settings:340 - settings.py已加载到编辑器: /home/xiaji/webstatus/statuspage/settings.py
2025-09-07 10:10:27.380 | INFO | django_threads:run:86 - 执行Django命令: cd /home/xiaji/webstatus && python3 manage.py collectstatic --noinput
2025-09-07 10:10:27.678 | INFO | django_threads:run:198 - 命令输出:
2025-09-07 10:10:27.679 | INFO | django_threads:run:198 - 命令输出: 119 static files copied to '/home/xiaji/webstatus/static'.
2025-09-07 10:10:27.730 | INFO | django_threads:run:211 - 命令执行成功: cd /home/xiaji/webstatus && python3 manage.py collectstatic --noinput
2025-09-07 10:10:27.732 | INFO | django_tab:on_command_finished:155 - Django命令执行完成
2025-09-07 12:18:46.163 | INFO | __main__:<module>:189 - 启动应用程序
2025-09-07 12:18:46.183 | INFO | __main__:__init__:17 - 初始化主窗口
2025-09-07 12:18:46.187 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署
2025-09-07 12:18:46.188 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页
2025-09-07 12:18:46.189 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成
2025-09-07 12:18:46.189 | INFO | server_connection_tab:load_config:96 - 加载配置文件
2025-09-07 12:18:46.190 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json
2025-09-07 12:18:46.190 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机
2025-09-07 12:18:46.191 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页
2025-09-07 12:18:46.192 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成
2025-09-07 12:18:46.196 | INFO | __main__:__init__:57 - 主窗口初始化完成

View File

@@ -258,7 +258,7 @@ class NginxSiteThread(QThread):
self.site_config = site_config
self.site_name = site_name
self.password = password
self.operation = operation # "create" 或 "enable"
self.operation = operation # "create" 或 "enable" 或 "download"
def run(self):
try:
@@ -326,6 +326,22 @@ class NginxSiteThread(QThread):
self.result_ready.emit(False, f"站点配置启用失败: {error}")
logger.error(f"站点配置启用失败: {error}")
elif self.operation == "download":
# 下载站点配置文件
site_path = f"/etc/nginx/sites-enabled/{self.site_name}"
download_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S cat {site_path}'"
stdin, stdout, stderr = self.ssh_client.exec_command(download_cmd)
exit_status = stdout.channel.recv_exit_status()
if exit_status == 0:
config_content = stdout.read().decode()
self.result_ready.emit(True, config_content)
logger.info(f"站点配置文件下载成功: {site_path}")
else:
error = stderr.read().decode()
self.result_ready.emit(False, f"站点配置文件下载失败: {error}")
logger.error(f"站点配置文件下载失败: {error}")
except Exception as e:
error_msg = str(e)
self.result_ready.emit(False, error_msg)
@@ -400,6 +416,11 @@ class NginxTab(QWidget):
self.enable_site_config_btn.clicked.connect(self.enable_site_config)
site_config_btn_layout.addWidget(self.enable_site_config_btn)
# 下载站点配置按钮
self.download_site_config_btn = QPushButton("下载站点配置")
self.download_site_config_btn.clicked.connect(self.download_site_config)
site_config_btn_layout.addWidget(self.download_site_config_btn)
site_config_layout.addLayout(site_config_btn_layout)
layout.addLayout(site_config_layout)
@@ -783,6 +804,99 @@ http {
logger.error(f"Nginx站点配置启用后语法检查失败: {message}")
QMessageBox.warning(self, "错误", f"Nginx配置文件语法检查失败: {message}")
def download_site_config(self):
"""下载站点配置文件"""
if not self.ssh_client:
self.append_output("错误: 未连接到服务器")
return
if not self.project_name:
self.append_output("错误: 未设置项目名")
return
# 请求用户输入sudo密码
dialog = PasswordDialog(self)
if dialog.exec_() == QDialog.Accepted:
password = dialog.get_password()
self.append_output(f"正在下载站点配置文件: {self.project_name}...")
# 创建并启动站点配置下载线程
self.site_thread = NginxSiteThread(self.ssh_client, "", self.project_name, password, "download")
self.site_thread.result_ready.connect(self.on_download_site_config_result)
self.site_thread.start()
else:
self.append_output("用户取消了密码输入")
def on_download_site_config_result(self, success, message):
"""处理下载站点配置结果"""
if success:
# 将下载的配置内容显示在站点配置编辑器中
self.site_config_editor.setPlainText(message)
self.append_output("站点配置文件下载成功")
logger.info("Nginx站点配置文件下载成功")
# 尝试添加静态文件映射配置
self.add_static_mappings()
else:
self.append_output(f"下载失败: {message}")
logger.error(f"Nginx站点配置文件下载失败: {message}")
QMessageBox.warning(self, "错误", f"Nginx站点配置文件下载失败: {message}")
def add_static_mappings(self):
"""添加静态文件映射配置"""
# 读取config.json文件获取项目信息
try:
with open('config.json', 'r', encoding='utf-8') as f:
config = json.load(f)
# 获取第一个服务器配置(假设只有一个服务器配置)
server_config = next(iter(config.values()))
username = server_config.get('username', '')
project_name = server_config.get('project', '')
remote_dir = server_config.get('remote_dir', '')
# 构建静态文件路径
static_path = f"{remote_dir}/{project_name}/static"
media_path = f"{remote_dir}/{project_name}/media"
# 获取当前配置内容
current_config = self.site_config_editor.toPlainText()
# 检查是否已经包含静态文件映射
if "location /static/" not in current_config:
# 添加静态文件映射配置
static_mapping = f"\n # 静态文件映射\n"
static_mapping += f" location /static/ {{\n"
static_mapping += f" alias {static_path}/;\n"
static_mapping += f" expires 30d;\n"
static_mapping += f" }}\n"
# 添加媒体文件映射配置
static_mapping += f"\n # 媒体文件映射\n"
static_mapping += f" location /media/ {{\n"
static_mapping += f" alias {media_path}/;\n"
static_mapping += f" expires 30d;\n"
static_mapping += f" }}\n"
# 在server块的末尾添加静态文件映射在最后一个}之前)
last_brace_pos = current_config.rfind('}')
if last_brace_pos != -1:
new_config = current_config[:last_brace_pos] + static_mapping + current_config[last_brace_pos:]
self.site_config_editor.setPlainText(new_config)
self.append_output("已添加静态文件映射配置")
logger.info("已添加静态文件映射配置")
else:
self.append_output("无法添加静态文件映射配置未找到server块的结束位置")
logger.warning("无法添加静态文件映射配置未找到server块的结束位置")
else:
self.append_output("配置文件已包含静态文件映射")
logger.info("配置文件已包含静态文件映射")
except Exception as e:
error_msg = str(e)
self.append_output(f"添加静态文件映射失败: {error_msg}")
logger.error(f"添加静态文件映射失败: {error_msg}")
def restart_nginx(self):
"""重启Nginx"""
if not self.ssh_client: