Compare commits

...

4 Commits

Author SHA1 Message Date
99fbfdc732 增加了sock的站点配置文件修改按钮
增加了下拉站点配置文件按钮
增加了静态文件的配置内容,写入到站点配置文件的按钮
2025-09-07 12:46:29 +08:00
d3b27dfda2 Merge branch 'main' of http://192.168.3.241:3000/xiaji/django.remote 2025-09-07 12:44:01 +08:00
cc90d6f947 增加修改sock,与Gunicorn配置相对应的按钮 2025-09-07 12:43:09 +08:00
fffed99165 修改了下载站点配置的按钮,修改了增加静态文件配置的按钮 2025-09-07 12:42:12 +08:00
3 changed files with 353 additions and 1 deletions

Binary file not shown.

172
app.log
View File

@@ -4861,3 +4861,175 @@ 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 - 主窗口初始化完成
2025-09-07 12:18:47.348 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4
2025-09-07 12:18:47.348 | INFO | nginx_tab:set_ssh_client:530 - Nginx标签页已设置SSH客户端
2025-09-07 12:18:47.348 | INFO | nginx_tab:set_username:535 - Nginx标签页已设置用户名: xiaji
2025-09-07 12:18:47.349 | INFO | nginx_tab:set_project_info:541 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157
2025-09-07 12:18:47.351 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage
2025-09-07 12:19:34.328 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0
2025-09-07 12:19:35.401 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器
2025-09-07 12:19:35.485 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157
2025-09-07 12:19:36.758 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4
2025-09-07 12:19:36.758 | INFO | nginx_tab:set_ssh_client:530 - Nginx标签页已设置SSH客户端
2025-09-07 12:19:36.759 | INFO | nginx_tab:set_username:535 - Nginx标签页已设置用户名: xiaji
2025-09-07 12:19:36.759 | INFO | nginx_tab:set_project_info:541 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157
2025-09-07 12:19:36.763 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage
2025-09-07 12:19:41.713 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: configtest
2025-09-07 12:19:41.741 | INFO | nginx_tab:run:196 - Nginx configtest 操作成功
2025-09-07 12:19:47.103 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: restart
2025-09-07 12:19:51.347 | INFO | nginx_tab:run:196 - Nginx restart 操作成功
2025-09-07 12:19:51.348 | INFO | nginx_tab:on_control_result:849 - Nginx服务控制成功: Nginx restart 操作成功
2025-09-07 12:20:03.247 | INFO | nginx_tab:run:100 - 开始处理Nginx配置文件: /etc/nginx/nginx.conf, 操作: upload
2025-09-07 12:20:03.392 | INFO | nginx_tab:run:133 - 配置文件上传成功: /etc/nginx/nginx.conf
2025-09-07 12:20:03.392 | INFO | nginx_tab:on_upload_main_config_result:634 - Nginx主配置文件上传成功: 配置文件上传成功: /etc/nginx/nginx.conf
2025-09-07 12:20:07.097 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: configtest
2025-09-07 12:20:07.127 | INFO | nginx_tab:run:196 - Nginx configtest 操作成功
2025-09-07 12:20:07.128 | INFO | nginx_tab:on_upload_configtest_result:660 - Nginx主配置文件上传后语法检查通过
2025-09-07 12:20:13.227 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: configtest
2025-09-07 12:20:13.256 | INFO | nginx_tab:run:196 - Nginx configtest 操作成功
2025-09-07 12:20:17.323 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: restart
2025-09-07 12:20:20.519 | INFO | nginx_tab:run:196 - Nginx restart 操作成功
2025-09-07 12:20:20.521 | INFO | nginx_tab:on_control_result:849 - Nginx服务控制成功: Nginx restart 操作成功
2025-09-07 12:35:32.873 | INFO | __main__:<module>:189 - 启动应用程序
2025-09-07 12:35:32.896 | INFO | __main__:__init__:17 - 初始化主窗口
2025-09-07 12:35:32.901 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署
2025-09-07 12:35:32.902 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页
2025-09-07 12:35:32.903 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成
2025-09-07 12:35:32.903 | INFO | server_connection_tab:load_config:96 - 加载配置文件
2025-09-07 12:35:32.904 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json
2025-09-07 12:35:32.904 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机
2025-09-07 12:35:32.905 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页
2025-09-07 12:35:32.906 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成
2025-09-07 12:35:32.910 | INFO | __main__:__init__:57 - 主窗口初始化完成
2025-09-07 12:35:34.706 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器
2025-09-07 12:35:34.798 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157
2025-09-07 12:35:36.292 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4
2025-09-07 12:35:36.292 | INFO | nginx_tab:set_ssh_client:551 - Nginx标签页已设置SSH客户端
2025-09-07 12:35:36.292 | INFO | nginx_tab:set_username:556 - Nginx标签页已设置用户名: xiaji
2025-09-07 12:35:36.293 | INFO | nginx_tab:set_project_info:562 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157
2025-09-07 12:35:36.295 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage
2025-09-07 12:35:42.638 | INFO | nginx_tab:run:265 - 开始处理Nginx站点配置: statuspage, 操作: download
2025-09-07 12:35:42.666 | INFO | nginx_tab:run:339 - 站点配置文件下载成功: /etc/nginx/sites-enabled/statuspage
2025-09-07 12:35:42.667 | INFO | nginx_tab:on_download_site_config_result:836 - Nginx站点配置文件下载成功
2025-09-07 12:35:42.668 | INFO | nginx_tab:add_static_mappings:893 - 配置文件已包含静态文件映射
2025-09-07 12:35:57.819 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: status
2025-09-07 12:35:57.851 | INFO | nginx_tab:run:196 - Nginx status 操作成功
2025-09-07 12:35:57.853 | INFO | nginx_tab:on_control_result:963 - Nginx服务控制成功: Nginx status 操作成功
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-09-07 12:20:19 CST; 15min ago
Invocation: c4f06a4c2b114a538d3ac675f9778381
Docs: man:nginx(8)
Process: 2868 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 2870 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 2871 (nginx)
Tasks: 3 (limit: 1844)
Memory: 2.8M (peak: 3.2M)
CPU: 25ms
CGroup: /system.slice/nginx.service
├─2871 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
├─2872 "nginx: worker process"
└─2873 "nginx: worker process"
Sep 07 12:20:19 statuspage systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Sep 07 12:20:19 statuspage systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.
2025-09-07 12:37:39.604 | INFO | nginx_tab:run:100 - 开始处理Nginx配置文件: /etc/nginx/nginx.conf, 操作: download
2025-09-07 12:37:39.628 | INFO | nginx_tab:run:148 - 配置文件下载成功: /etc/nginx/nginx.conf
2025-09-07 12:37:39.631 | INFO | nginx_tab:on_download_main_config_result:625 - Nginx主配置文件下载成功
2025-09-07 12:38:03.128 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1
2025-09-07 12:38:03.129 | INFO | remote_commands_tab:set_ssh_client:313 - 设置SSH客户端
2025-09-07 12:38:03.129 | INFO | remote_commands_tab:set_server_config:348 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji
2025-09-07 12:38:03.130 | INFO | remote_commands_tab:refresh_directory:476 - 刷新目录列表
2025-09-07 12:38:03.130 | INFO | remote_commands_tab:refresh_directory:488 - 使用用户输入目录: /home/xiaji
2025-09-07 12:38:03.130 | INFO | remote_commands_tab:set_server_info:294 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'statuspage', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'}
2025-09-07 12:38:03.130 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji
2025-09-07 12:38:03.131 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la
2025-09-07 12:38:03.139 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji
2025-09-07 12:38:03.140 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: 当前目录: /home/xiaji
2025-09-07 12:38:03.189 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: /home/xiaji
2025-09-07 12:38:03.190 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: total 84
2025-09-07 12:38:03.190 | INFO | remote_commands_tab:run:129 - 命令执行成功: cd /home/xiaji && pwd && ls -la
2025-09-07 12:38:03.191 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-x--x 6 xiaji xiaji 4096 Aug 31 12:39 .
2025-09-07 12:38:03.192 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 ..
2025-09-07 12:38:03.192 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout
2025-09-07 12:38:03.193 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc
2025-09-07 12:38:03.193 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache
2025-09-07 12:38:03.194 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote
2025-09-07 12:38:03.194 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile
2025-09-07 12:38:03.194 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh
2025-09-07 12:38:03.195 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful
2025-09-07 12:38:03.195 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 10 xiaji www-data 4096 Sep 7 10:10 webstatus
2025-09-07 12:38:03.195 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji
2025-09-07 12:38:03.196 | INFO | remote_commands_tab:on_dir_refresh_finished:508 - 目录列表刷新成功
2025-09-07 12:38:29.561 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4
2025-09-07 12:38:29.561 | INFO | nginx_tab:set_ssh_client:551 - Nginx标签页已设置SSH客户端
2025-09-07 12:38:29.562 | INFO | nginx_tab:set_username:556 - Nginx标签页已设置用户名: xiaji
2025-09-07 12:38:29.562 | INFO | nginx_tab:set_project_info:562 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157
2025-09-07 12:38:29.565 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage
2025-09-07 12:38:33.241 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: status
2025-09-07 12:38:33.272 | INFO | nginx_tab:run:196 - Nginx status 操作成功
2025-09-07 12:38:33.274 | INFO | nginx_tab:on_control_result:963 - Nginx服务控制成功: Nginx status 操作成功
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-09-07 12:20:19 CST; 18min ago
Invocation: c4f06a4c2b114a538d3ac675f9778381
Docs: man:nginx(8)
Process: 2868 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 2870 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 2871 (nginx)
Tasks: 3 (limit: 1844)
Memory: 2.8M (peak: 3.2M)
CPU: 26ms
CGroup: /system.slice/nginx.service
├─2871 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
├─2872 "nginx: worker process"
└─2873 "nginx: worker process"
Sep 07 12:20:19 statuspage systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Sep 07 12:20:19 statuspage systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.

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,16 @@ 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)
# 修改为Unix socket连接按钮
self.modify_to_unix_socket_btn = QPushButton("修改为Unix Socket连接")
self.modify_to_unix_socket_btn.clicked.connect(self.modify_to_unix_socket)
site_config_btn_layout.addWidget(self.modify_to_unix_socket_btn)
site_config_layout.addLayout(site_config_btn_layout)
layout.addLayout(site_config_layout)
@@ -783,6 +809,160 @@ 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', '')
# 根据要求构建静态文件路径
# BASE_DIR = Path(__file__).resolve().parent.parent
# STATIC_ROOT = BASE_DIR / "static"
# MEDIA_ROOT = BASE_DIR / "media"
# 在实际路径中这对应于项目目录下的static和media文件夹
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 # 静态文件映射 (STATIC_ROOT = BASE_DIR / \"static\")\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 # 媒体文件映射 (MEDIA_ROOT = BASE_DIR / \"media\")\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 modify_to_unix_socket(self):
"""修改站点配置文件中的proxy_pass为Unix socket连接"""
# 读取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', '')
git_url = server_config.get('git_url', '')
# 从git_url中提取项目名.git前的值
if git_url:
# 提取git_url中最后一个/和.git之间的部分
if '/' in git_url:
project_name = git_url.split('/')[-1]
if project_name.endswith('.git'):
project_name = project_name[:-4] # 移除.git后缀
else:
project_name = 'webstatus' # 默认值
else:
project_name = 'webstatus' # 默认值
# 构建Unix socket路径
unix_socket_path = f"unix:/home/{username}/{project_name}/sock/gunicorn.sock"
# 获取当前配置内容
current_config = self.site_config_editor.toPlainText()
# 查找并替换proxy_pass的值
import re
# 使用正则表达式匹配proxy_pass行
pattern = r'(\s+proxy_pass\s+)http://[^;]+;'
replacement = f'\1{unix_socket_path};'
new_config = re.sub(pattern, replacement, current_config)
if new_config != current_config:
# 更新配置内容
self.site_config_editor.setPlainText(new_config)
self.append_output(f"已将proxy_pass修改为: {unix_socket_path}")
logger.info(f"已将proxy_pass修改为: {unix_socket_path}")
else:
# 检查是否已经是Unix socket连接
if unix_socket_path in current_config:
self.append_output("配置文件已经是Unix socket连接")
logger.info("配置文件已经是Unix socket连接")
else:
self.append_output("未找到可修改的proxy_pass配置")
logger.warning("未找到可修改的proxy_pass配置")
except Exception as e:
error_msg = str(e)
self.append_output(f"修改为Unix socket连接失败: {error_msg}")
logger.error(f"修改为Unix socket连接失败: {error_msg}")
def restart_nginx(self):
"""重启Nginx"""
if not self.ssh_client: