From 14e69c2bfdf144f881e0495830b4260d50fb2fd6 Mon Sep 17 00:00:00 2001 From: xiaji Date: Sun, 31 Aug 2025 22:16:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84nginx=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E3=80=82=E4=BD=BF=E7=94=A8unix=E5=A5=97=E6=8E=A5=E5=AD=97?= =?UTF-8?q?=E3=80=82=E5=A2=9E=E5=8A=A0=E8=BF=9C=E7=A8=8B=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E7=9A=84=E8=BF=90=E8=A1=8C=E5=92=8C=E6=98=BE=E7=A4=BA=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/gunicorn_tab.cpython-38.pyc | Bin 28686 -> 32866 bytes __pycache__/nginx_tab.cpython-38.pyc | Bin 22784 -> 26118 bytes .../remote_commands_tab.cpython-38.pyc | Bin 19494 -> 16797 bytes app.log | 1171 +++++++++++++++++ gunicorn_tab.py | 194 ++- nginx_tab.py | 141 +- remote_commands_tab.py | 216 ++- 7 files changed, 1561 insertions(+), 161 deletions(-) diff --git a/__pycache__/gunicorn_tab.cpython-38.pyc b/__pycache__/gunicorn_tab.cpython-38.pyc index 9be301e18e627a0b70f4c167cd84530d1b65b670..10e6cd39f61aac6ae5a97f9b8840e1c489a4a5db 100644 GIT binary patch delta 6642 zcmb_ge{fS(zQ5<@=10>uP1BZ^(w0k6FhX1Tsap%8RuNE8K?_x^AvbN)rb#_X1T(2Y z3v7WFDo0=us)>SvvlMsZB1n~8-|l<5?>%Ss&70k4-oAC+Y0~!1+sEw8?#z2L&br_4 zxi=wg5dYb9`pr4te9!muJ?DP!_s2Q(d-8|fqUDLgLbCv$qwC)9l)rezQY99UR~G+e zjPm$tzuJKwFS{=n7C_*VB3MMVBMli)0@=WT+xnSgf|Bcy3x{8k`L`R7FZb3^#K>{QE^o z5QcT3_rgM#5G4wU5k;IWL`6lXNHMXG1awhJ(TB-NVML4(A}9us)Sna-f;`1IqVE&K zB8*HUVxNwW@?a$Kb!MDv>+)fp0ptoIT&NHh>Vaj9n!@@Rd0N+J=ri`2!p5$=s5vI| z<%RPUOSg{xTi6uMj|tHN;F&?bFlteX6l>Vb6^ldwpzCumutiXW&4QAKE6$)H2hk$= z-wroS=zTW?w9Noa&vOAw!aCR`Zm&QCESQcL$=)9T{`iJ~r85B2^IX8P3}B%KSU4SU z8lFfawKoKuH3Kj`&jlY02XP0MK=M|QE@t; zhF78CMbb`_X5<3S1{n15O6_}&=0tgYR?PtGO$~VYh6Yrr21H_M12hJ{R+`sVbD$dj zMCanJM+|+%0Eu2Nhl{n9k}^+S<6SQa0c*E;SVzAmLZ6KYq1yw+VOu}xE74XJg-bGc zwc!%b7~$`6i?9M-ls?;wwynZ8!7Fa%uZ?~FM!F5c!qhkL2}$)3Y7#=Q1~}ta4ry^G zb$B>=_}Ij2d!}NSF+2?qHOe7FL#MCD)ezD*czhlHP-#Pl7WUd4PN&Q7uLpLhgmWVp z4clCl`Y3XP7>?9Ps0KbYB@E4+blN zssS{6ee(2=Cf`2;md(mm;Oy-2MHKnY6)WVR4C^LGKc4t#G<#iYq<`wfaAvhFdv(AU zbatu>Rlv#7t5e6d(kCMq8+BQ)3?(r*F7#LNF#j)v;^m8RAnQj_U}%e+CRB_Zw7J^$Yq}yq$h3n zJddRYhLZ>0Xf&rEWUvV2&6(XsAh|WlDl^;UMtMsRbJ=%l=624=o!JH_$6iiey3{D! zZFC>#qisMEM(XPIIGiq8REWGaNHAZr=-sO#rD_s=66UQ&@X0oCv(_TjbK7v<>j-qV zTDZ?%pBFkYpQCJ>vqzyDQ02o&9zn7Z$yy+-dFXWt%CwfMOR_X0ccWF6(AdZ-Q3bCf zBC|*pQ<=yB&F~DlW;1p9gPuTJkH3SxbZbrI6L>lNg8(lONvt4NT`4gWvxwg|_%@LO zQcA4Epv}#HxA`qx|I&;?aTc)r}N5aV<1 z3hVUr00_bJeM8(VvU{6a3?LxT0rq-Rbvd5Q+UbfcCOQbX)uKe$pPK%+Qu&_JxJPK6 ztK6+L!MFTi#n@G*&+!$z)I zwW1oNtHBDWDZpC7C9C;Zh}ML;yb)-zIc~YHfZUq)b9~3z-5!^}ZAZYH06)hUE6t40zJES34};2m_{7@TgU!oXpjjb< z?2G2z#k_D;Em4ZW0vmhxf!phrHM{&y>h2A=ecn}Rr<0ojx_wXyx?Q2rBs7hT1FHirt$fwRf|LsM_=NuJ&_F}&~E*lWqX1IdBt z)QQun!%{)mxhw( ze~>(NmT%mepTrJPS z)8J}gm)}!&Idl{bKcfUJO&yOW4-ch|ol1>FVJq6^qGQRi!)hi$(;agl^kr79Y6$u% zH=nI(oE6E%1z5SRZYMke7xl}_U<`XzWGG*DHQrGA2784?YV589pG80ZmQ(UXpg77L zQ&wpN3V2liuJzNF^A%V^W%+XbPJf5H(b3!MaXTI8`(|^<{M0%xIFQG)-OR=xk`2e< zbm{BNyl#>CO&Ct#OI6G6S$7NbulqImnyp`dn(Sr8>&t+CC6%(-8wy0Ci!a=8HxUgw zrab)D22_#A5BMJSINaVXu3Z5hYt;r6vnXvr0R#01;1vX{S00&fcpF$YUHrpG7Lu|N zlsSh4V>IPUUI)lhX5Lg|cn5gZI#$04;vxI-rWN8s9h=(p8F_`pAMGONSplZ)&tzVE)_SREN7V&(z3+1^{ zg;_@BSna!yj~vo2(4M^S1`6oOOJKpON@QR`Q=*oI1XqE*{#kVw(7K zo^tYMF8cpFzL_an%f7iIk2NUz1^leP^JG}7au@j}_ob6ye4!Nop|XT5+f08BZK?s<)EX{R5XcW3`pL~Lz2;AR@eTEke z>DDv=S1ABw3>%|`F(F{-D(V*D=0t|M74C&hTp6!Wp!Kmj-DM{UlgsP$DNqNfeG9&xyuC|n z%vv~p={)F9?f*DA@SfI}^X4fnI(gv=H0fCj((ysPcs&0WyUY9o^VSGqPUdRgx$sKUfgyDIIC+PAgbRDh$T?g`XJ(6@dh@^uo zGI>1M1EW?eR)A_P7~r?2*Mmc%#OLJ&qWZJi{P195&r^fNuTWPINW!2V1H=o66fS7i z`1z}6ya}Z)>VRT+edZJlmcoswAB%ZGG(gWJsZ=LI17jtnq7^zN=sVyKW~4%gToW-v z9|gaNp*d-1+2YtyKfR9ivtM~CBhP~3Frl}B=Lz^?LA_7lx>c?G;j%RhjtDayc;|AI zQTU~*dWi~>dPTxJB5kgV!gVaXuxTEwQVih6#$W}&sHLIiwfwGm;!1=;trxVzuW3WG zy;^gLBZJz73h(48Pc?WsaNT3nMnCJKI^$n>IdBuz)oI=71v$B@=|4cjR(uE+7zogg z@xz9Lw~|oiMjMa!1}*?cJj8z6z5(*`Z5?;z-kU)-*Yj|uTrj)=!h=%$fX7S> zL%8rVd#$Is_z(_f)(HA9fqNP(SsAIN^(fJR#fsUy;0q1alp|<#VL?E>iRbwGfEn2oHA9-*CrUim4?aWFqN^dyms3HQ$GBaz<&irDSHj8@SU~d{Qaz8GrAa7(##$gp`TJh~5R%}wx!hbqZc$Xhci{*FZ6UlUX$ zUrnO2*JZKFu;Kn{*tfP#j1rh$+nD?`3r7*4z?`e^XTlXC2tG9v)I>=%qE=1&!Mr$M z{6c_Z>ps`)7nDMCAxq^O5Pqb!5KWCqG=mLvKEizruBrn*nYt|GXy9BG=j!2sjYW{Z(eP*zpD*BRB&-Q0aWAomdCV%0MNEyaVw5~C3*m)9 zo?B1|=bsXYU=!F@)8L(r&k+NRJ)R4Fo4QFs?_?R6ZbK;{uJ{tHaIE65?#Mj zg>!Y;TAM}g@VKRR50yH)z3@q0X(*fJv6WT5`m^4_sqcilp^ zb(6$coosV5^+|UvaeJx9YUGTfo0P8^CacTh^GUvLx0O?JXH)!+4%rj%ODlMQ02Xcb zGWNL?VmV(w_3G5|v$3+Hm%xSurp0QNeLj=RV{do3} znNkmpdkg&^?l}KzZ#@OG_rOA!T=E{-B{|&f9v-damS_pvGk5yzjw*}S>vC8veuu}s zQqz<9nC#={?QxshEe=|TJ)?gHt0ijmTW`-ym51V`fy0|vR8;`h|KEDm?Q+~ubOF@C5ihYZ8fref78rue=Xd8_Fj zl6?#p&meGG14_g2)#J-lFEa7RBHY{DM^3=`=H=o=5k7CeL=M4)ZB8-*#VyBFgN!pF z!rLvsWs2cev+5P5_(+WWs&xTjnyKv#sh|iojW^O#tUGy$se7Lo*02&@6Ix?LT*FzClC_7J?PRAZ=}vuoUrFm$MWJ?Tr^E+ zila<7!1K7#@$XyH4s|So^oryX9u~bA=d2v;@Kol$cZV>~Gu?}d$e5>stmds?RK*&9 z=8DsGXqJp{0pU&^e2Fc*u7E|~x)&a6SO81+`XH}!BkO*9XXRYokLUIQcGwd5OXs_+ z!^XNQV)yWW^%Z8qTVWrhb=TbS9v)|$-zZ>r_g~2`;M+a=^vMH*(Ss-1dEteizhpXT zuH-&s%qVaF$R|DX2+Qu%C)QN)n$Mrrtv8>owdnf4_H93G4{nNG&?Nc-qy9}1xfIk8 z)qXS^hbw#YjR#Pi<5pf~95oa^xgsP{GxEz2$`Sa_LHv0{@lmHI5yA+k5%8_0_>{&D zc@QOhB@83% H(yjOp$S_4P diff --git a/__pycache__/nginx_tab.cpython-38.pyc b/__pycache__/nginx_tab.cpython-38.pyc index c305e35513f5ac0af4d891bf58bddaff86d3f0f8..9df4b129e7038419c0c95d2c2292681f841b3633 100644 GIT binary patch delta 5252 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 BwPFAO delta 2665 zcmb_ddr(wm6u;;0?q%J*`v4Z%6l4&VS_47FQhb3Tgbz{)&DC&_yPC2r_U+=UB}>Ze zp`nK!N)*_WlCrKn%o)d~`lr#cre>ThOKX~Jru?I+e`;JihO{ zzw_O5cbtH`Uk7)+%jHn$uWiQR+fP2Y$DNh^J~2ZvAfkklzYqfAYD8_Zg!ar2ZUc5( zBJLJX$kXBtc_p_-Qd`nOX`oaqhRx9KRSYexcUVH{#8V7AaeLT9+(&$b;UMmiJcGE? z(247kk0kCg+{E3IXA<`qUgF-ch3fr=4eFF&s;R>i3pjADbsvnyudLf)gt^-00|=U% zvj9SIxiJ~$clxb1XvFfg$DrOkofZH%VE&$7V1*Yk-@g%_!ft;7 z?s8V*57{TQ7E(b(@sOSiA5-P_AsX6o?D^nGv6SiK!lAHiknM-poWf40Ln5YI?t-aJ!HWDFz=fOhr#c8qg?O zY924@(|y~>cSete!P=WH^)T>wv|=d9-u%g9xMB77{f#O?(}rLFm0rI4E9d{M*R@*+vz=-GS$NgQwV~p$YuKunS5}DOFad6 zbjFba!Ctw}rChO_3oOZkWL#Da%uH231w20UPS}alXH8bm0>);&32iv8d@UgEEx%i9 zr_%Fa`YXl)d8W-?qU|Hk&t%U&p>5>7x-dMaX!Zs&f6XWk$D4|yYu80LCvkjJYjllh z;Iu~xg0AGvKz4W;9%FDaJdU5vsn+(h*^RlC>DoPH{t0GTWdr1}f=QWV>E$Pz#eqJ~ zw>?j08lIZ_wYG_!UHDd2QRTC2E@6=Sdxq>U*L;{m!%xD#B8J5b&*62|g_(S?pfxFB z9lM`oD3v>JCo{|JsNM-f4&oB(x_XXk;@RdcS=K6UXf#%Tp`4e)6?Iu@}Tk>*AskE2KoUh`=Wx3eA z;H0NeN4}TVuQ%t^?gVcSZ}lR> zI=Lx+e)F`s|5-CGmAz_WYZ600u2^)v_eveb%d%4@#iOLyZ`wh!+9qOSy$}CfJQ}}T zoT3e|t8~znpUOuOuMpIVSJ{-eOgl{G&ZKnFC7JSm6hGPg38a zx^wiYj`_(@R4Wb1MHyJP;tlOiUa_^O6&eOYEpNOxzaC7US7p%uvFR#=zev!QUM@@x>!-bu#Q> zkduMux!@5lc)kiAnu6z-;9(+oFbIA}1-~hRFT3E|C*EM-77Er`7c7wABa0(=%*ak} zCDYAc#))LuLATp)#fwIvS8yPB%^9^dcE%Fh62nR1hcxzy>*Ocsi?G}8lO=X2wRk~S Oy;FMtIcBW^hciR;=B2U0x}?KEK-m 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 jJUTWW:189 - 启动应用程序 +2025-08-31 20:36:31.724 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 20:36:31.731 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 20:36:31.731 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 20:36:31.733 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 20:36:31.733 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 20:36:31.733 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 20:36:31.734 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 20:36:31.735 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 20:36:31.737 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 20:36:31.740 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 20:38:53.499 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 20:38:53.591 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 20:38:55.634 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 20:38:55.635 | INFO | gunicorn_tab:set_ssh_client:775 - Gunicorn标签页已设置SSH客户端 +2025-08-31 20:38:55.635 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 20:38:55.636 | INFO | gunicorn_tab:set_username:780 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 20:38:55.636 | INFO | gunicorn_tab:set_project_info:786 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 20:38:55.639 | INFO | gunicorn_tab:update_command_editor:813 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 20:38:55.640 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 20:39:02.955 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 20:38:59 CST; 3s ago + Invocation: 7b6b833405e24d548567e5cfa3438de4 + Process: 1991 ExecStart=/usr/bin/gunicorn \ (code=exited, status=3) + Main PID: 1991 (code=exited, status=3) + Mem peak: 26.7M + CPU: 159ms + +2025-08-31 20:39:02.956 | INFO | gunicorn_tab:on_control_result:1135 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 20:38:59 CST; 3s ago + Invocation: 7b6b833405e24d548567e5cfa3438de4 + Process: 1991 ExecStart=/usr/bin/gunicorn \ (code=exited, status=3) + Main PID: 1991 (code=exited, status=3) + Mem peak: 26.7M + CPU: 159ms + +2025-08-31 20:39:14.810 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 20:39:14.836 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 20:39:14.839 | INFO | gunicorn_tab:on_log_result:1076 - Gunicorn服务日志查看成功 +2025-08-31 20:40:14.692 | INFO | __main__::189 - 启动应用程序 +2025-08-31 20:40:14.716 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 20:40:14.721 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 20:40:14.721 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 20:40:14.722 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 20:40:14.723 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 20:40:14.723 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 20:40:14.723 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 20:40:14.725 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 20:40:14.726 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 20:40:14.729 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 20:40:20.255 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 20:40:20.341 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 20:40:25.493 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 20:40:25.494 | INFO | gunicorn_tab:set_ssh_client:775 - Gunicorn标签页已设置SSH客户端 +2025-08-31 20:40:25.494 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 20:40:25.494 | INFO | gunicorn_tab:set_username:780 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 20:40:25.494 | INFO | gunicorn_tab:set_project_info:786 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 20:40:25.495 | INFO | gunicorn_tab:update_command_editor:813 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 20:40:25.496 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 20:40:35.452 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 20:40:35.477 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 20:40:35.483 | INFO | gunicorn_tab:on_log_result:1076 - Gunicorn服务日志查看成功 +2025-08-31 20:40:55.359 | INFO | gunicorn_tab:run:454 - 从git_url提取的项目名: webstatus +2025-08-31 20:40:55.359 | INFO | gunicorn_tab:run:461 - 检查日志目录: /home/xiaji/webstatus/logs +2025-08-31 20:40:55.769 | INFO | gunicorn_tab:run:542 - 日志目录和文件创建成功 +2025-08-31 20:40:55.771 | INFO | gunicorn_tab:on_log_check_result:1124 - Gunicorn日志文件检查和创建成功 +2025-08-31 20:41:21.012 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 20:41:21.097 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 20:41:21.143 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 20:41:21.144 | INFO | gunicorn_tab:on_server_control_result:1165 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 20:41:38.219 | INFO | __main__::189 - 启动应用程序 +2025-08-31 20:41:38.240 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 20:41:38.246 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 20:41:38.246 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 20:41:38.248 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 20:41:38.248 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 20:41:38.249 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 20:41:38.249 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 20:41:38.251 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 20:41:38.252 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 20:41:38.255 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 20:41:46.274 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 20:41:46.428 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 20:43:48.283 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 20:43:48.283 | INFO | gunicorn_tab:set_ssh_client:775 - Gunicorn标签页已设置SSH客户端 +2025-08-31 20:43:48.284 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 20:43:48.284 | INFO | gunicorn_tab:set_username:780 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 20:43:48.284 | INFO | gunicorn_tab:set_project_info:786 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 20:43:48.286 | INFO | gunicorn_tab:update_command_editor:813 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 20:43:48.286 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 20:43:57.031 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 20:43:57.091 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 20:43:57.098 | INFO | gunicorn_tab:on_log_result:1076 - Gunicorn服务日志查看成功 +2025-08-31 20:45:55.659 | INFO | gunicorn_tab:run:454 - 从git_url提取的项目名: webstatus +2025-08-31 20:45:55.659 | INFO | gunicorn_tab:run:461 - 检查日志目录: /home/xiaji/webstatus/logs +2025-08-31 20:45:56.070 | INFO | gunicorn_tab:run:542 - 日志目录和文件创建成功 +2025-08-31 20:45:56.072 | INFO | gunicorn_tab:on_log_check_result:1124 - Gunicorn日志文件检查和创建成功 +2025-08-31 20:52:42.183 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 20:52:42.184 | INFO | gunicorn_tab:on_upload_result:919 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 20:53:42.814 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 20:53:42.814 | INFO | gunicorn_tab:on_upload_result:919 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 20:53:47.665 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 20:53:44 CST; 2s ago + Invocation: 0f3bd800cf4d4e8e97443770c89e1de7 + Process: 2015 ExecStart=/usr/bin/gunicorn \ (code=exited, status=3) + Main PID: 2015 (code=exited, status=3) + Mem peak: 26.7M + CPU: 164ms + +2025-08-31 20:53:47.667 | INFO | gunicorn_tab:on_control_result:1135 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 20:53:44 CST; 2s ago + Invocation: 0f3bd800cf4d4e8e97443770c89e1de7 + Process: 2015 ExecStart=/usr/bin/gunicorn \ (code=exited, status=3) + Main PID: 2015 (code=exited, status=3) + Mem peak: 26.7M + CPU: 164ms + +2025-08-31 20:53:57.539 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 20:53:57.566 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 20:53:57.569 | INFO | gunicorn_tab:on_log_result:1076 - Gunicorn服务日志查看成功 +2025-08-31 21:01:01.926 | INFO | gunicorn_tab:run:597 - 开始执行Gunicorn命令: /usr/bin/gunicorn \ + --pythonpath /home/xiaji/webstatus \ + --workers 3 \ + --bind unix:/var/run/statuspage/gunicorn.sock \ + --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log \ + --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log \ + statuspage.wsgi:application +2025-08-31 21:01:01.927 | INFO | gunicorn_tab:run:612 - 在目录 /home/xiaji/webstatus/ 中执行命令: cd /home/xiaji/webstatus/ && bash -c 'echo "xiaji" | sudo -S /usr/bin/gunicorn \ + --pythonpath /home/xiaji/webstatus \ + --workers 3 \ + --bind unix:/var/run/statuspage/gunicorn.sock \ + --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log \ + --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log \ + statuspage.wsgi:application' +2025-08-31 21:01:07.072 | ERROR | gunicorn_tab:run:630 - Gunicorn命令执行失败: [sudo] password for xiaji: +2025-08-31 21:01:07.073 | ERROR | gunicorn_tab:on_command_result:1204 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: +2025-08-31 21:01:14.811 | INFO | gunicorn_tab:run:597 - 开始执行Gunicorn命令: /usr/bin/gunicorn \ + --pythonpath /home/xiaji/webstatus \ + --workers 3 \ + --bind unix:/var/run/statuspage/gunicorn.sock \ + --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log \ + --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log \ + statuspage.wsgi:application +2025-08-31 21:01:14.812 | INFO | gunicorn_tab:run:612 - 在目录 /home/xiaji/webstatus/ 中执行命令: cd /home/xiaji/webstatus/ && bash -c 'echo "xiaji" | sudo -S /usr/bin/gunicorn \ + --pythonpath /home/xiaji/webstatus \ + --workers 3 \ + --bind unix:/var/run/statuspage/gunicorn.sock \ + --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log \ + --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log \ + statuspage.wsgi:application' +2025-08-31 21:01:19.957 | ERROR | gunicorn_tab:run:630 - Gunicorn命令执行失败: [sudo] password for xiaji: +2025-08-31 21:01:19.958 | ERROR | gunicorn_tab:on_command_result:1204 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: +2025-08-31 21:01:27.691 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:01:27.691 | INFO | gunicorn_tab:on_upload_result:919 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:01:33.334 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 21:01:33.410 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 21:01:33.459 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 21:01:33.459 | INFO | gunicorn_tab:on_server_control_result:1165 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 21:01:35.807 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 +2025-08-31 21:01:38.638 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:01:42.315 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:01:44.194 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:01:44.194 | INFO | gunicorn_tab:set_ssh_client:775 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:01:44.195 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:01:44.195 | INFO | gunicorn_tab:set_username:780 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:01:44.195 | INFO | gunicorn_tab:set_project_info:786 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:01:44.197 | INFO | gunicorn_tab:update_command_editor:813 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:01:44.197 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:01:50.073 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Mon 2025-09-01 04:01:44 CST; 3s ago + Invocation: 223bef4ec76e411482240c9e9e9b05f8 + Process: 1236 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:01:50.074 | INFO | gunicorn_tab:on_control_result:1135 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Mon 2025-09-01 04:01:44 CST; 3s ago + Invocation: 223bef4ec76e411482240c9e9e9b05f8 + Process: 1236 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:02:03.348 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:02:03.371 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:02:03.378 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:02:03.379 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:02:03.380 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:02:03.380 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:02:03.381 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:02:03.381 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:02:03.382 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:02:03.384 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 21:02:03.387 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:02:04.793 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:02:04.880 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:02:06.826 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:02:06.827 | INFO | gunicorn_tab:set_ssh_client:775 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:02:06.828 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:02:06.828 | INFO | gunicorn_tab:set_username:780 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:02:06.828 | INFO | gunicorn_tab:set_project_info:786 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:02:06.829 | INFO | gunicorn_tab:update_command_editor:813 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:02:06.830 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:02:11.173 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:02:11.232 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:02:11.239 | INFO | gunicorn_tab:on_log_result:1076 - Gunicorn服务日志查看成功 +2025-08-31 21:05:41.483 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:05:41.510 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:05:41.516 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:05:41.516 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:05:41.517 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:05:41.517 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:05:41.518 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:05:41.518 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:05:41.520 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:05:41.521 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 21:05:41.525 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:05:42.786 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:05:42.873 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:05:44.917 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:05:44.917 | INFO | remote_commands_tab:set_ssh_client:309 - 设置SSH客户端 +2025-08-31 21:05:44.918 | INFO | remote_commands_tab:set_server_config:344 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:05:44.919 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 21:05:44.919 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji +2025-08-31 21:05:44.919 | INFO | remote_commands_tab:set_server_info:290 - 设置服务器信息: {'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-08-31 21:05:44.920 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:05:44.920 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:05:44.929 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:05:44.931 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:05:44.979 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji +2025-08-31 21:05:44.980 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 84 +2025-08-31 21:05:44.980 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:05:44.981 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:05:44.982 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:05:44.982 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:05:44.982 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:05:44.982 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:05:44.983 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:05:44.983 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:05:44.983 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:05:44.984 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:05:44.984 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 8 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:05:44.984 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:05:44.985 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 21:05:46.580 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 2 +2025-08-31 21:05:46.580 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 +2025-08-31 21:05:46.580 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji +2025-08-31 21:05:46.581 | INFO | __main__:on_tab_changed:123 - 状态栏更新为Django项目: statuspage, 目录: /home/xiaji +2025-08-31 21:05:47.371 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:05:47.372 | INFO | gunicorn_tab:set_ssh_client:774 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:05:47.372 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:05:47.372 | INFO | gunicorn_tab:set_username:779 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:05:47.372 | INFO | gunicorn_tab:set_project_info:785 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:05:47.374 | INFO | gunicorn_tab:update_command_editor:812 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:05:47.374 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:05:59.245 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:05:59.245 | INFO | gunicorn_tab:on_upload_result:918 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:06:04.497 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:06:03 CST; 739ms ago + Invocation: 97a026c461e74c5096ecacd03d16e5b3 + Process: 1626 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:06:04.498 | INFO | gunicorn_tab:on_control_result:1134 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:06:03 CST; 739ms ago + Invocation: 97a026c461e74c5096ecacd03d16e5b3 + Process: 1626 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:06:20.054 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:06:20.082 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:06:20.085 | INFO | gunicorn_tab:on_log_result:1075 - Gunicorn服务日志查看成功 +2025-08-31 21:06:53.135 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:06:53.135 | INFO | gunicorn_tab:on_upload_result:918 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:06:58.859 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:06:55 CST; 2s ago + Invocation: 4ab27ae05a994e1bbbb03b0af2f3ea58 + Process: 1683 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:06:58.860 | INFO | gunicorn_tab:on_control_result:1134 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:06:55 CST; 2s ago + Invocation: 4ab27ae05a994e1bbbb03b0af2f3ea58 + Process: 1683 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:07:07.285 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:07:07.313 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:07:07.316 | INFO | gunicorn_tab:on_log_result:1075 - Gunicorn服务日志查看成功 +2025-08-31 21:07:12.472 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 21:07:12.550 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 21:07:12.598 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 21:07:12.599 | INFO | gunicorn_tab:on_server_control_result:1164 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 21:07:20.101 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:07:20.124 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:07:20.129 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:07:20.129 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:07:20.131 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:07:20.131 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:07:20.131 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:07:20.132 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:07:20.133 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:07:20.135 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 21:07:20.138 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:07:21.810 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:07:21.991 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:07:24.077 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:07:24.078 | INFO | gunicorn_tab:set_ssh_client:774 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:07:24.078 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:07:24.078 | INFO | gunicorn_tab:set_username:779 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:07:24.078 | INFO | gunicorn_tab:set_project_info:785 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:07:24.080 | INFO | gunicorn_tab:update_command_editor:812 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:07:24.080 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:07:33.631 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:07:33.631 | INFO | gunicorn_tab:on_upload_result:918 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:07:38.607 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:07:35 CST; 2s ago + Invocation: b49e6a28c85043248b4e0e870d592378 + Process: 1253 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 8ms + +2025-08-31 21:07:38.608 | INFO | gunicorn_tab:on_control_result:1134 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:07:35 CST; 2s ago + Invocation: b49e6a28c85043248b4e0e870d592378 + Process: 1253 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 8ms + +2025-08-31 21:07:46.796 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:07:46.867 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:07:46.869 | INFO | gunicorn_tab:on_log_result:1075 - Gunicorn服务日志查看成功 +2025-08-31 21:10:07.690 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:10:07.724 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:10:07.731 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:10:07.732 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:10:07.734 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:10:07.734 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:10:07.734 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:10:07.735 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:10:07.736 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:10:07.738 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 21:10:07.740 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:10:08.975 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:10:09.066 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:10:10.508 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:10:10.508 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:10:10.508 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:10:10.509 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:10:10.509 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:10:10.510 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:10:10.511 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:10:15.816 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:10:15.816 | INFO | gunicorn_tab:on_upload_result:911 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:10:20.971 | INFO | gunicorn_tab:on_control_result:1127 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:10:18 CST; 2s ago + Invocation: e08926caf69349e7bd569f64c2038181 + Process: 1489 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:10:20.971 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:10:18 CST; 2s ago + Invocation: e08926caf69349e7bd569f64c2038181 + Process: 1489 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:10:27.609 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:10:27.637 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:10:27.639 | INFO | gunicorn_tab:on_log_result:1068 - Gunicorn服务日志查看成功 +2025-08-31 21:11:00.782 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 21:11:00.872 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 21:11:00.921 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 21:11:00.921 | INFO | gunicorn_tab:on_server_control_result:1157 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 21:11:05.488 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:11:05.514 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:11:05.520 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:11:05.521 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:11:05.522 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:11:05.522 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:11:05.523 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:11:05.523 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:11:05.525 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:11:05.526 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 21:11:05.529 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:11:07.951 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:11:10.040 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:11:11.582 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:11:11.582 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:11:11.583 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:11:11.583 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:11:11.583 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:11:11.585 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:11:11.585 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:11:18.955 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:11:18.956 | INFO | gunicorn_tab:on_upload_result:911 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:11:23.227 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +× gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: failed (Result: exit-code) since Sun 2025-08-31 21:11:08 CST; 14s ago + Invocation: 4729e6b87ffb4189a21ac1334a92d89f + Process: 908 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 935 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Process: 966 ExecStart=/usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application (code=exited, status=1/FAILURE) + Main PID: 966 (code=exited, status=1/FAILURE) + Mem peak: 23.8M + CPU: 162ms + +Aug 31 21:11:08 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Sep 01 04:11:06 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. +Aug 31 21:11:08 statuspage gunicorn[966]: Error: Error: '/home/xiaji/webstatus/logs/gunicorn_error.log' isn't writable [PermissionError(13, 'Permission denied')] +Aug 31 21:11:08 statuspage systemd[1]: gunicorn_statuspage.service: Main process exited, code=exited, status=1/FAILURE +Aug 31 21:11:08 statuspage systemd[1]: gunicorn_statuspage.service: Failed with result 'exit-code'. + +2025-08-31 21:11:23.229 | INFO | gunicorn_tab:on_control_result:1127 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +× gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: failed (Result: exit-code) since Sun 2025-08-31 21:11:08 CST; 14s ago + Invocation: 4729e6b87ffb4189a21ac1334a92d89f + Process: 908 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 935 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Process: 966 ExecStart=/usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application (code=exited, status=1/FAILURE) + Main PID: 966 (code=exited, status=1/FAILURE) + Mem peak: 23.8M + CPU: 162ms + +Aug 31 21:11:08 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Sep 01 04:11:06 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. +Aug 31 21:11:08 statuspage gunicorn[966]: Error: Error: '/home/xiaji/webstatus/logs/gunicorn_error.log' isn't writable [PermissionError(13, 'Permission denied')] +Aug 31 21:11:08 statuspage systemd[1]: gunicorn_statuspage.service: Main process exited, code=exited, status=1/FAILURE +Aug 31 21:11:08 statuspage systemd[1]: gunicorn_statuspage.service: Failed with result 'exit-code'. + +2025-08-31 21:11:30.599 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:11:30.667 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:11:30.670 | INFO | gunicorn_tab:on_log_result:1068 - Gunicorn服务日志查看成功 +2025-08-31 21:12:09.596 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:12:09.596 | INFO | remote_commands_tab:set_ssh_client:309 - 设置SSH客户端 +2025-08-31 21:12:09.596 | INFO | remote_commands_tab:set_server_config:344 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:12:09.597 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 21:12:09.597 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji +2025-08-31 21:12:09.597 | INFO | remote_commands_tab:set_server_info:290 - 设置服务器信息: {'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-08-31 21:12:09.598 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:12:09.599 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:12:09.606 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:12:09.607 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:12:09.656 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji +2025-08-31 21:12:09.658 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 84 +2025-08-31 21:12:09.658 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:12:09.659 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:12:09.660 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:12:09.661 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:12:09.661 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:12:09.661 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:12:09.661 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:12:09.662 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:12:09.662 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:12:09.662 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:12:09.663 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 9 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:12:09.663 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:12:09.663 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 21:17:14.760 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:17:14.783 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:17:14.789 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:17:14.789 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:17:14.790 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:17:14.791 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:17:14.791 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:17:14.792 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:17:14.793 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:17:14.794 | INFO | remote_commands_tab:init_ui:284 - 远程命令标签页UI初始化完成 +2025-08-31 21:17:14.799 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:17:15.819 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:17:15.907 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:17:17.811 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:17:17.811 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:17:17.811 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:17:17.812 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:17:17.812 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:17:17.814 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:17:17.814 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:17:20.628 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:17:20.629 | INFO | remote_commands_tab:set_ssh_client:307 - 设置SSH客户端 +2025-08-31 21:17:20.629 | INFO | remote_commands_tab:set_server_config:342 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:17:20.630 | INFO | remote_commands_tab:refresh_directory:470 - 刷新目录列表 +2025-08-31 21:17:20.630 | INFO | remote_commands_tab:refresh_directory:482 - 使用用户输入目录: /home/xiaji +2025-08-31 21:17:20.630 | INFO | remote_commands_tab:set_server_info:288 - 设置服务器信息: {'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-08-31 21:17:20.630 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:17:20.631 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:17:20.640 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:17:20.641 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:17:20.689 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: /home/xiaji +2025-08-31 21:17:20.692 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: total 84 +2025-08-31 21:17:20.692 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:17:20.693 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:17:20.694 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:17:20.694 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:17:20.695 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:17:20.695 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:17:20.695 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:17:20.696 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:17:20.696 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:17:20.696 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:17:20.696 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxrwxr-x 9 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:17:20.697 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:17:20.697 | INFO | remote_commands_tab:on_dir_refresh_finished:502 - 目录列表刷新成功 +2025-08-31 21:17:29.209 | INFO | remote_commands_tab:execute_custom_command:521 - 执行自定义命令 +2025-08-31 21:17:29.212 | INFO | remote_commands_tab:run:53 - 执行远程命令: touch /home/xiaji/webstatus/logs/gunicorn_access.log +2025-08-31 21:17:29.220 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:17:29.272 | ERROR | remote_commands_tab:run:126 - 命令执行失败,退出状态: 1 +2025-08-31 21:17:55.942 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:17:55.964 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:17:55.972 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:17:55.972 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:17:55.973 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:17:55.974 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:17:55.974 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:17:55.975 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:17:55.976 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:17:55.977 | INFO | remote_commands_tab:init_ui:284 - 远程命令标签页UI初始化完成 +2025-08-31 21:17:55.981 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:17:57.367 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:17:57.367 | INFO | remote_commands_tab:set_ssh_client:307 - 设置SSH客户端 +2025-08-31 21:17:57.368 | INFO | remote_commands_tab:set_server_config:342 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:17:57.369 | INFO | remote_commands_tab:refresh_directory:470 - 刷新目录列表 +2025-08-31 21:17:58.523 | INFO | remote_commands_tab:set_server_info:288 - 设置服务器信息: {'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-08-31 21:17:58.524 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:17:59.066 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 +2025-08-31 21:17:59.849 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:17:59.940 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:18:01.386 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:18:01.386 | INFO | remote_commands_tab:set_ssh_client:307 - 设置SSH客户端 +2025-08-31 21:18:01.386 | INFO | remote_commands_tab:set_server_config:342 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:18:01.387 | INFO | remote_commands_tab:refresh_directory:470 - 刷新目录列表 +2025-08-31 21:18:01.387 | INFO | remote_commands_tab:refresh_directory:482 - 使用用户输入目录: /home/xiaji +2025-08-31 21:18:01.387 | INFO | remote_commands_tab:set_server_info:288 - 设置服务器信息: {'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-08-31 21:18:01.387 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:18:01.388 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:18:01.396 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:18:01.397 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:18:01.447 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: /home/xiaji +2025-08-31 21:18:01.448 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: total 84 +2025-08-31 21:18:01.448 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:18:01.449 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:18:01.450 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:18:01.450 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:18:01.451 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:18:01.451 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:18:01.451 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:18:01.452 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:18:01.452 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:18:01.452 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:18:01.453 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxrwxr-x 9 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:18:01.453 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:18:01.453 | INFO | remote_commands_tab:on_dir_refresh_finished:502 - 目录列表刷新成功 +2025-08-31 21:18:08.461 | INFO | remote_commands_tab:execute_custom_command:521 - 执行自定义命令 +2025-08-31 21:18:08.463 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo touch /home/xiaji/webstatus/logs/gunicorn_access.log +2025-08-31 21:18:08.470 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:19:18.030 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:19:18.053 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:19:18.060 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:19:18.061 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:19:18.062 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:19:18.062 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:19:18.063 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:19:18.063 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:19:18.065 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页 +2025-08-31 21:19:18.067 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成 +2025-08-31 21:19:18.071 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:19:19.960 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:19:20.049 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:19:21.553 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:19:21.554 | INFO | remote_commands_tab:set_ssh_client:313 - 设置SSH客户端 +2025-08-31 21:19:21.554 | INFO | remote_commands_tab:set_server_config:348 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:19:21.555 | INFO | remote_commands_tab:refresh_directory:476 - 刷新目录列表 +2025-08-31 21:19:21.555 | INFO | remote_commands_tab:refresh_directory:488 - 使用用户输入目录: /home/xiaji +2025-08-31 21:19:21.555 | 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-08-31 21:19:21.555 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:19:21.555 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:19:21.563 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:19:21.565 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:19:21.614 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: /home/xiaji +2025-08-31 21:19:21.616 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: total 84 +2025-08-31 21:19:21.616 | INFO | remote_commands_tab:run:129 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:19:21.617 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:19:21.617 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:19:21.618 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:19:21.618 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:19:21.618 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:19:21.619 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:19:21.619 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:19:21.619 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:19:21.619 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:19:21.620 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 9 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:19:21.621 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:19:21.621 | INFO | remote_commands_tab:on_dir_refresh_finished:508 - 目录列表刷新成功 +2025-08-31 21:19:30.505 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:19:30.506 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:19:35.654 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo touch /home/xiaji/webstatus/logs/gunicorn_access.log +2025-08-31 21:19:35.662 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:19:35.708 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:19:35.723 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo touch /home/xiaji/webstatus/logs/gunicorn_access.log +2025-08-31 21:19:44.270 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:19:44.270 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:19:49.034 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo touch /home/xiaji/webstatus/logs/gunicorn_error.log +2025-08-31 21:19:49.045 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:19:49.092 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:19:49.108 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo touch /home/xiaji/webstatus/logs/gunicorn_error.log +2025-08-31 21:20:06.849 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:20:06.850 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:20:10.984 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chown xiaji:xiaji /home/xiaji/webstatus/logs/*.log +2025-08-31 21:20:10.991 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:20:11.037 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:20:11.053 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo chown xiaji:xiaji /home/xiaji/webstatus/logs/*.log +2025-08-31 21:20:21.931 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:20:21.932 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:20:25.030 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chmod 660 /home/xiaji/webstatus/logs/*.log +2025-08-31 21:20:25.048 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:20:25.096 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:20:25.111 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo chmod 660 /home/xiaji/webstatus/logs/*.log +2025-08-31 21:20:37.533 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:20:37.534 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:20:40.235 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo systemctl restart gunicorn_statuspage +2025-08-31 21:20:40.243 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:20:40.290 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:20:40.346 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo systemctl restart gunicorn_statuspage +2025-08-31 21:24:07.529 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:24:07.552 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:24:07.560 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:24:07.560 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:24:07.562 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:24:07.562 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:24:07.562 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:24:07.563 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:24:07.564 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页 +2025-08-31 21:24:07.566 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成 +2025-08-31 21:24:07.569 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:24:08.762 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:24:08.763 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:24:08.764 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:24:08.764 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:24:08.764 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:24:08.767 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:24:08.767 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:24:12.370 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 +2025-08-31 21:24:13.096 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:24:13.188 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:24:14.869 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:24:14.870 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:24:14.870 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:24:14.870 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:24:14.871 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:24:14.873 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:24:14.874 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:24:18.553 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: active (running) since Sun 2025-08-31 21:20:40 CST; 3min 38s ago + Invocation: 01738874ff4740d9be3477544edbbc22 + Process: 1537 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 1539 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Main PID: 1541 (gunicorn) + Tasks: 4 (limit: 1846) + Memory: 102.7M (peak: 103.2M) + CPU: 816ms + CGroup: /system.slice/gunicorn_statuspage.service + ├─1541 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1542 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1543 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + └─1544 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + +Aug 31 21:20:40 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Aug 31 21:20:40 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. + +2025-08-31 21:24:18.556 | INFO | gunicorn_tab:on_control_result:1127 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: active (running) since Sun 2025-08-31 21:20:40 CST; 3min 38s ago + Invocation: 01738874ff4740d9be3477544edbbc22 + Process: 1537 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 1539 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Main PID: 1541 (gunicorn) + Tasks: 4 (limit: 1846) + Memory: 102.7M (peak: 103.2M) + CPU: 816ms + CGroup: /system.slice/gunicorn_statuspage.service + ├─1541 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1542 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1543 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + └─1544 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + +Aug 31 21:20:40 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Aug 31 21:20:40 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. + +2025-08-31 21:24:26.779 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 21:24:26.865 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 21:24:26.916 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 21:24:26.917 | INFO | gunicorn_tab:on_server_control_result:1157 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 21:24:29.291 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 +2025-08-31 21:24:30.782 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:24:37.996 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:24:39.449 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:24:39.450 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:24:39.450 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:24:39.450 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:24:39.450 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:24:39.451 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:24:39.452 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:24:42.852 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: active (running) since Mon 2025-09-01 04:24:32 CST; 7s ago + Invocation: 70dfe2c51f4f4268bea968648c5c4688 + Process: 876 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 906 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Main PID: 927 (gunicorn) + Tasks: 4 (limit: 1846) + Memory: 113.5M (peak: 113.7M) + CPU: 805ms + CGroup: /system.slice/gunicorn_statuspage.service + ├─ 927 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1033 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1034 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + └─1035 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + +Aug 31 21:24:34 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Sep 01 04:24:32 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. + +2025-08-31 21:24:42.853 | INFO | gunicorn_tab:on_control_result:1127 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: active (running) since Mon 2025-09-01 04:24:32 CST; 7s ago + Invocation: 70dfe2c51f4f4268bea968648c5c4688 + Process: 876 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 906 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Main PID: 927 (gunicorn) + Tasks: 4 (limit: 1846) + Memory: 113.5M (peak: 113.7M) + CPU: 805ms + CGroup: /system.slice/gunicorn_statuspage.service + ├─ 927 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1033 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1034 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + └─1035 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + +Aug 31 21:24:34 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Sep 01 04:24:32 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. + +2025-08-31 21:24:49.244 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:24:49.325 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:24:49.329 | INFO | gunicorn_tab:on_log_result:1068 - Gunicorn服务日志查看成功 +2025-08-31 21:25:33.715 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:25:33.715 | INFO | nginx_tab:set_ssh_client:461 - Nginx标签页已设置SSH客户端 +2025-08-31 21:25:33.715 | INFO | nginx_tab:set_username:466 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:25:33.716 | INFO | nginx_tab:set_project_info:472 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:25:33.718 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:26:08.579 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: create +2025-08-31 21:26:08.653 | INFO | nginx_tab:run:245 - 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:26:08.655 | INFO | nginx_tab:on_create_site_config_result:626 - Nginx站点配置创建成功: 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:26:13.856 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:26:13.883 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:26:13.883 | INFO | nginx_tab:on_create_configtest_result:652 - Nginx站点配置文件创建后语法检查通过 +2025-08-31 21:26:19.910 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: enable +2025-08-31 21:26:19.932 | ERROR | nginx_tab:run:263 - 站点配置启用失败: [sudo] password for xiaji: ln: failed to create symbolic link '/etc/nginx/sites-enabled/statuspage': File exists + +2025-08-31 21:26:19.932 | ERROR | nginx_tab:on_enable_site_config_result:704 - Nginx站点配置启用失败: 站点配置启用失败: [sudo] password for xiaji: ln: failed to create symbolic link '/etc/nginx/sites-enabled/statuspage': File exists + +2025-08-31 21:27:16.842 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:27:16.866 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:27:16.873 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:27:16.873 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:27:16.874 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:27:16.875 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:27:16.875 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:27:16.875 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:27:16.877 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页 +2025-08-31 21:27:16.879 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成 +2025-08-31 21:27:16.882 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:27:18.377 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:27:18.464 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:27:19.754 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:27:19.754 | INFO | nginx_tab:set_ssh_client:479 - Nginx标签页已设置SSH客户端 +2025-08-31 21:27:19.754 | INFO | nginx_tab:set_username:484 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:27:19.755 | INFO | nginx_tab:set_project_info:490 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:27:19.757 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:27:40.461 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: create +2025-08-31 21:27:40.533 | INFO | nginx_tab:run:245 - 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:27:40.534 | INFO | nginx_tab:on_create_site_config_result:644 - Nginx站点配置创建成功: 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:27:46.507 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:27:46.537 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:27:46.537 | INFO | nginx_tab:on_create_configtest_result:670 - Nginx站点配置文件创建后语法检查通过 +2025-08-31 21:27:52.829 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: enable +2025-08-31 21:27:52.981 | INFO | nginx_tab:run:277 - 站点配置启用成功: statuspage +2025-08-31 21:27:52.982 | INFO | nginx_tab:on_enable_site_config_result:703 - Nginx站点配置启用成功: 站点配置启用成功: statuspage +2025-08-31 21:27:56.802 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:27:56.830 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:27:56.831 | INFO | nginx_tab:on_enable_configtest_result:729 - Nginx站点配置启用后语法检查通过 +2025-08-31 21:28:00.808 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:28:00.837 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:28:04.377 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: restart +2025-08-31 21:28:04.484 | INFO | nginx_tab:run:195 - Nginx restart 操作成功 +2025-08-31 21:28:04.487 | INFO | nginx_tab:on_control_result:798 - Nginx服务控制成功: Nginx restart 操作成功 + +2025-08-31 21:29:15.918 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: create +2025-08-31 21:29:15.992 | INFO | nginx_tab:run:245 - 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:29:15.992 | INFO | nginx_tab:on_create_site_config_result:644 - Nginx站点配置创建成功: 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:29:36.928 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: create +2025-08-31 21:29:37.004 | INFO | nginx_tab:run:245 - 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:29:37.005 | INFO | nginx_tab:on_create_site_config_result:644 - Nginx站点配置创建成功: 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:29:39.188 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:29:39.217 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:29:39.217 | INFO | nginx_tab:on_create_configtest_result:670 - Nginx站点配置文件创建后语法检查通过 +2025-08-31 21:29:41.479 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: enable +2025-08-31 21:29:41.627 | INFO | nginx_tab:run:277 - 站点配置启用成功: statuspage +2025-08-31 21:29:41.628 | INFO | nginx_tab:on_enable_site_config_result:703 - Nginx站点配置启用成功: 站点配置启用成功: statuspage +2025-08-31 21:29:43.614 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:29:43.642 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:29:43.643 | INFO | nginx_tab:on_enable_configtest_result:729 - Nginx站点配置启用后语法检查通过 +2025-08-31 21:29:46.466 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:29:46.496 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:29:47.889 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: restart +2025-08-31 21:29:47.990 | INFO | nginx_tab:run:195 - Nginx restart 操作成功 +2025-08-31 21:29:47.991 | INFO | nginx_tab:on_control_result:798 - Nginx服务控制成功: Nginx restart 操作成功 + +2025-08-31 21:29:51.344 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: status +2025-08-31 21:29:51.376 | INFO | nginx_tab:run:195 - Nginx status 操作成功 +2025-08-31 21:29:51.377 | INFO | nginx_tab:on_control_result:798 - 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-08-31 21:29:47 CST; 3s ago + Invocation: 713ffff67faf4a6fa11cd0c2595d94b6 + Docs: man:nginx(8) + Process: 1471 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) + Process: 1473 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) + Main PID: 1474 (nginx) + Tasks: 3 (limit: 1846) + Memory: 2.7M (peak: 3.1M) + CPU: 23ms + CGroup: /system.slice/nginx.service + ├─1474 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" + ├─1475 "nginx: worker process" + └─1476 "nginx: worker process" + +Aug 31 21:29:47 statuspage systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server... +Aug 31 21:29:47 statuspage systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server. + +2025-08-31 21:30:54.713 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:30:54.713 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:30:54.714 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:30:54.714 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:30:54.714 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:30:54.715 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:30:54.716 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:31:12.561 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:31:12.562 | INFO | nginx_tab:set_ssh_client:479 - Nginx标签页已设置SSH客户端 +2025-08-31 21:31:12.562 | INFO | nginx_tab:set_username:484 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:31:12.563 | INFO | nginx_tab:set_project_info:490 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:31:12.567 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:31:31.455 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:31:31.455 | INFO | remote_commands_tab:set_ssh_client:313 - 设置SSH客户端 +2025-08-31 21:31:31.456 | INFO | remote_commands_tab:set_server_config:348 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:31:31.456 | INFO | remote_commands_tab:refresh_directory:476 - 刷新目录列表 +2025-08-31 21:31:31.456 | INFO | remote_commands_tab:refresh_directory:488 - 使用用户输入目录: /home/xiaji +2025-08-31 21:31:31.457 | 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-08-31 21:31:31.457 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:31:31.457 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:31:31.467 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:31:31.468 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:31:31.516 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: /home/xiaji +2025-08-31 21:31:31.517 | INFO | remote_commands_tab:run:129 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:31:31.517 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: total 84 +2025-08-31 21:31:31.518 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:31:31.518 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:31:31.519 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:31:31.519 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:31:31.520 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:31:31.520 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:31:31.520 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:31:31.521 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:31:31.521 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:31:31.521 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 9 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:31:31.522 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:31:31.522 | INFO | remote_commands_tab:on_dir_refresh_finished:508 - 目录列表刷新成功 +2025-08-31 21:31:35.438 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:31:35.439 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:31:39.644 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo tail -n 20 /var/log/nginx/error.log +2025-08-31 21:31:39.652 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:31:39.700 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:31:39.717 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo tail -n 20 /var/log/nginx/error.log +2025-08-31 21:34:21.907 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:34:21.907 | INFO | nginx_tab:set_ssh_client:479 - Nginx标签页已设置SSH客户端 +2025-08-31 21:34:21.908 | INFO | nginx_tab:set_username:484 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:34:21.908 | INFO | nginx_tab:set_project_info:490 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:34:21.912 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:39:23.365 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:39:23.388 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:39:23.397 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:39:23.397 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:39:23.399 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:39:23.399 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:39:23.400 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:39:23.400 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:39:23.401 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页 +2025-08-31 21:39:23.403 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成 +2025-08-31 21:39:23.405 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:39:24.703 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:39:24.792 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:39:26.152 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:39:26.152 | INFO | nginx_tab:set_ssh_client:529 - Nginx标签页已设置SSH客户端 +2025-08-31 21:39:26.152 | INFO | nginx_tab:set_username:534 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:39:26.153 | INFO | nginx_tab:set_project_info:540 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:39:26.156 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:39:28.836 | INFO | nginx_tab:set_permissions:883 - 从配置文件获取用户名: xiaji, 项目名: webstatus +2025-08-31 21:39:32.351 | INFO | nginx_tab:run:218 - 开始执行Nginx权限设置操作 +2025-08-31 21:39:32.352 | INFO | nginx_tab:run:222 - 执行命令 1/5: sudo chmod g+x /home/xiaji/ +2025-08-31 21:39:32.368 | ERROR | nginx_tab:run:235 - 命令执行失败: sudo chmod g+x /home/xiaji/ +错误信息: sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper +sudo: a password is required + +2025-08-31 21:39:32.369 | ERROR | nginx_tab:on_permissions_result:922 - 权限设置失败: 命令执行失败: sudo chmod g+x /home/xiaji/ +错误信息: sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper +sudo: a password is required + +2025-08-31 21:40:08.738 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:40:08.765 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:40:08.770 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:40:08.770 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:40:08.772 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:40:08.772 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:40:08.773 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:40:08.773 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:40:08.774 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页 +2025-08-31 21:40:08.776 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成 +2025-08-31 21:40:08.779 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:40:10.294 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:40:10.383 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:40:11.762 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:40:11.763 | INFO | nginx_tab:set_ssh_client:530 - Nginx标签页已设置SSH客户端 +2025-08-31 21:40:11.763 | INFO | nginx_tab:set_username:535 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:40:11.763 | INFO | nginx_tab:set_project_info:541 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:40:11.767 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:40:12.833 | INFO | nginx_tab:set_permissions:884 - 从配置文件获取用户名: xiaji, 项目名: webstatus +2025-08-31 21:40:15.304 | INFO | nginx_tab:run:218 - 开始执行Nginx权限设置操作 +2025-08-31 21:40:15.304 | INFO | nginx_tab:run:222 - 执行命令 1/5: sudo chmod g+x /home/xiaji/ +2025-08-31 21:40:15.332 | INFO | nginx_tab:run:239 - 命令执行成功: sudo chmod g+x /home/xiaji/ +2025-08-31 21:40:15.332 | INFO | nginx_tab:run:222 - 执行命令 2/5: sudo chown -R xiaji:www-data /home/xiaji/webstatus +2025-08-31 21:40:15.408 | INFO | nginx_tab:run:239 - 命令执行成功: sudo chown -R xiaji:www-data /home/xiaji/webstatus +2025-08-31 21:40:15.408 | INFO | nginx_tab:run:222 - 执行命令 3/5: sudo chmod g+x /home/xiaji/webstatus +2025-08-31 21:40:15.480 | INFO | nginx_tab:run:239 - 命令执行成功: sudo chmod g+x /home/xiaji/webstatus +2025-08-31 21:40:15.481 | INFO | nginx_tab:run:222 - 执行命令 4/5: sudo chown -R xiaji:www-data /home/xiaji/webstatus/sock +2025-08-31 21:40:15.551 | INFO | nginx_tab:run:239 - 命令执行成功: sudo chown -R xiaji:www-data /home/xiaji/webstatus/sock +2025-08-31 21:40:15.551 | INFO | nginx_tab:run:222 - 执行命令 5/5: sudo chmod -R 770 /home/xiaji/webstatus/sock +2025-08-31 21:40:15.627 | INFO | nginx_tab:run:239 - 命令执行成功: sudo chmod -R 770 /home/xiaji/webstatus/sock +2025-08-31 21:40:15.628 | INFO | nginx_tab:run:244 - 所有权限设置命令执行成功 +2025-08-31 21:40:15.628 | INFO | nginx_tab:on_permissions_result:919 - 权限设置成功: 所有权限设置命令执行成功 +2025-08-31 21:40:20.259 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: configtest +2025-08-31 21:40:20.287 | INFO | nginx_tab:run:196 - Nginx configtest 操作成功 +2025-08-31 21:40:23.040 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: restart +2025-08-31 21:40:23.134 | INFO | nginx_tab:run:196 - Nginx restart 操作成功 +2025-08-31 21:40:23.135 | INFO | nginx_tab:on_control_result:849 - Nginx服务控制成功: Nginx restart 操作成功 + +2025-08-31 21:40:27.115 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: status +2025-08-31 21:40:27.145 | INFO | nginx_tab:run:196 - Nginx status 操作成功 +2025-08-31 21:40:27.146 | INFO | nginx_tab:on_control_result:849 - 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-08-31 21:40:22 CST; 4s ago + Invocation: 9b940790b0a84c5fa74a1e0432bbaf22 + Docs: man:nginx(8) + Process: 1690 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) + Process: 1693 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) + Main PID: 1694 (nginx) + Tasks: 3 (limit: 1846) + Memory: 2.7M (peak: 3.1M) + CPU: 24ms + CGroup: /system.slice/nginx.service + ├─1694 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" + ├─1695 "nginx: worker process" + └─1696 "nginx: worker process" + +Aug 31 21:40:22 statuspage systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server... +Aug 31 21:40:22 statuspage systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server. + +2025-08-31 21:41:11.466 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:41:11.466 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:41:11.467 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:41:11.467 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:41:11.467 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:41:11.468 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:41:11.469 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:41:16.266 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 21:41:16.355 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 21:41:16.403 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 21:41:16.403 | INFO | gunicorn_tab:on_server_control_result:1157 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 21:41:20.092 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 +2025-08-31 21:41:26.565 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:41:30.013 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:41:32.673 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:41:32.674 | INFO | remote_commands_tab:set_ssh_client:313 - 设置SSH客户端 +2025-08-31 21:41:32.674 | INFO | remote_commands_tab:set_server_config:348 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:41:32.675 | INFO | remote_commands_tab:refresh_directory:476 - 刷新目录列表 +2025-08-31 21:41:32.675 | INFO | remote_commands_tab:refresh_directory:488 - 使用用户输入目录: /home/xiaji +2025-08-31 21:41:32.676 | 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-08-31 21:41:32.676 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:41:32.677 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:41:32.686 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:41:32.686 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:41:32.735 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: /home/xiaji +2025-08-31 21:41:32.736 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: total 84 +2025-08-31 21:41:32.736 | INFO | remote_commands_tab:run:129 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:41:32.737 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:41:32.737 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:41:32.738 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:41:32.738 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:41:32.738 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:41:32.739 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:41:32.739 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:41:32.739 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:41:32.739 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:41:32.740 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 9 xiaji www-data 4096 Sep 1 04:11 webstatus +2025-08-31 21:41:32.740 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:41:32.740 | INFO | remote_commands_tab:on_dir_refresh_finished:508 - 目录列表刷新成功 +2025-08-31 21:41:37.831 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:41:37.833 | INFO | remote_commands_tab:run:53 - 执行远程命令: ls -l /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:41:37.840 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:41:37.893 | INFO | remote_commands_tab:run:129 - 命令执行成功: ls -l /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:42:01.772 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:42:01.772 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:42:04.501 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo tail -n 20 /var/log/nginx/error.log +2025-08-31 21:42:04.510 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:42:04.556 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:42:04.577 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo tail -n 20 /var/log/nginx/error.log +2025-08-31 21:43:05.140 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:43:05.141 | INFO | remote_commands_tab:run:53 - 执行远程命令: # 1. 查看/home/xiaji目录权限 +ls -ld /home/xiaji/ + +# 2. 查看/home/xiaji/webstatus目录权限 +ls -ld /home/xiaji/webstatus/ + +# 3. 查看/home/xiaji/webstatus/sock目录权限 +ls -ld /home/xiaji/webstatus/sock/ + +# 4. 查看socket文件权限 +ls -l /home/xiaji/webstatus/sock/gunicorn.sock + +# 5. 查看www-data用户的组信息 +id www-data +2025-08-31 21:43:05.151 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:43:05.208 | INFO | remote_commands_tab:run:129 - 命令执行成功: # 1. 查看/home/xiaji目录权限 +ls -ld /home/xiaji/ + +# 2. 查看/home/xiaji/webstatus目录权限 +ls -ld /home/xiaji/webstatus/ + +# 3. 查看/home/xiaji/webstatus/sock目录权限 +ls -ld /home/xiaji/webstatus/sock/ + +# 4. 查看socket文件权限 +ls -l /home/xiaji/webstatus/sock/gunicorn.sock + +# 5. 查看www-data用户的组信息 +id www-data +2025-08-31 21:44:04.171 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:44:04.172 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:44:06.766 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chmod o+x /home/xiaji/ +2025-08-31 21:44:06.774 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:44:06.823 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:44:06.838 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo chmod o+x /home/xiaji/ +2025-08-31 21:44:21.920 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:44:21.921 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:44:24.662 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo ls -al /home/xiaji/ +2025-08-31 21:44:24.670 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:44:24.716 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:44:24.731 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo ls -al /home/xiaji/ +2025-08-31 21:44:40.822 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:44:40.823 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:44:45.244 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chown xiaji:www-data /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:44:45.251 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:44:45.297 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:44:45.314 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo chown xiaji:www-data /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:45:02.027 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:45:02.028 | INFO | remote_commands_tab:run:53 - 执行远程命令: ls -al /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:45:02.036 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:45:02.086 | INFO | remote_commands_tab:run:129 - 命令执行成功: ls -al /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:45:18.844 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:45:18.845 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:45:21.053 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chmod 660 /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:45:21.060 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:45:21.107 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:45:21.123 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo chmod 660 /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:45:26.161 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:45:26.161 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:45:29.715 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chmod 660 /home/xiaji/webstatus/sock/gunicorn.sock +sudo systemctl restart nginx +2025-08-31 21:45:29.724 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:45:29.771 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 22:01:24.029 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 22:01:24.030 | INFO | remote_commands_tab:set_ssh_client:313 - 设置SSH客户端 +2025-08-31 22:01:24.030 | INFO | remote_commands_tab:set_server_config:348 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 22:01:24.030 | INFO | remote_commands_tab:refresh_directory:476 - 刷新目录列表 +2025-08-31 22:01:24.030 | INFO | remote_commands_tab:refresh_directory:488 - 使用用户输入目录: /home/xiaji +2025-08-31 22:01:24.032 | 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-08-31 22:01:24.032 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 22:01:24.032 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 22:01:24.042 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 22:01:24.043 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 22:01:24.092 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: /home/xiaji +2025-08-31 22:01:24.094 | INFO | remote_commands_tab:run:129 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 22:01:24.094 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: total 84 +2025-08-31 22:01:24.095 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-x--x 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 22:01:24.095 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 22:01:24.096 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 22:01:24.096 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 22:01:24.097 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 22:01:24.097 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 22:01:24.098 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 22:01:24.098 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 22:01:24.099 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 22:01:24.099 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 9 xiaji www-data 4096 Sep 1 2025 webstatus +2025-08-31 22:01:24.099 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 22:01:24.099 | INFO | remote_commands_tab:on_dir_refresh_finished:508 - 目录列表刷新成功 +2025-08-31 22:01:25.136 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 2 +2025-08-31 22:01:25.137 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 +2025-08-31 22:01:25.137 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji +2025-08-31 22:01:25.137 | INFO | __main__:on_tab_changed:123 - 状态栏更新为Django项目: statuspage, 目录: /home/xiaji +2025-08-31 22:01:25.869 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 22:01:25.870 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 22:01:25.870 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 22:01:25.871 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 22:01:25.871 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 22:01:25.873 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 22:01:25.873 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 22:01:27.014 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 22:01:27.015 | INFO | nginx_tab:set_ssh_client:530 - Nginx标签页已设置SSH客户端 +2025-08-31 22:01:27.015 | INFO | nginx_tab:set_username:535 - Nginx标签页已设置用户名: xiaji +2025-08-31 22:01:27.015 | INFO | nginx_tab:set_project_info:541 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 22:01:27.018 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 22:01:37.276 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 diff --git a/gunicorn_tab.py b/gunicorn_tab.py index ac610a9..4a2e919 100644 --- a/gunicorn_tab.py +++ b/gunicorn_tab.py @@ -436,6 +436,116 @@ class GunicornLogThread(QThread): self.result_ready.emit(False, error_msg) logger.error(f"Gunicorn服务日志查看异常: {error_msg}") +class GunicornLogCheckThread(QThread): + """检查并创建Gunicorn日志文件目录和文件的线程""" + result_ready = Signal(bool, str) + + def __init__(self, ssh_client, username, git_url, password): + super().__init__() + self.ssh_client = ssh_client + self.username = username + self.git_url = git_url + self.password = password + + def run(self): + try: + # 从git_url中提取项目名(去掉.git后缀) + project_name = self.git_url.split('/')[-1].replace('.git', '') + logger.info(f"从git_url提取的项目名: {project_name}") + + # 构建日志目录路径 + log_dir = f"/home/{self.username}/{project_name}/logs" + access_log_path = f"{log_dir}/gunicorn_access.log" + error_log_path = f"{log_dir}/gunicorn_error.log" + + logger.info(f"检查日志目录: {log_dir}") + + # 检查并创建日志目录 + check_dir_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S mkdir -p {log_dir}'" + stdin, stdout, stderr = self.ssh_client.exec_command(check_dir_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"创建日志目录失败: {error}") + logger.error(f"创建日志目录失败: {error}") + return + + # 设置日志目录权限 + chmod_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S chmod 755 {log_dir}'" + stdin, stdout, stderr = self.ssh_client.exec_command(chmod_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"设置日志目录权限失败: {error}") + logger.error(f"设置日志目录权限失败: {error}") + return + + # 检查并创建访问日志文件 + check_access_log_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S touch {access_log_path}'" + stdin, stdout, stderr = self.ssh_client.exec_command(check_access_log_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"创建访问日志文件失败: {error}") + logger.error(f"创建访问日志文件失败: {error}") + return + + # 设置访问日志文件权限 + chmod_access_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S chmod 644 {access_log_path}'" + stdin, stdout, stderr = self.ssh_client.exec_command(chmod_access_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"设置访问日志文件权限失败: {error}") + logger.error(f"设置访问日志文件权限失败: {error}") + return + + # 检查并创建错误日志文件 + check_error_log_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S touch {error_log_path}'" + stdin, stdout, stderr = self.ssh_client.exec_command(check_error_log_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"创建错误日志文件失败: {error}") + logger.error(f"创建错误日志文件失败: {error}") + return + + # 设置错误日志文件权限 + chmod_error_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S chmod 644 {error_log_path}'" + stdin, stdout, stderr = self.ssh_client.exec_command(chmod_error_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"设置错误日志文件权限失败: {error}") + logger.error(f"设置错误日志文件权限失败: {error}") + return + + # 设置日志文件所有者为用户 + chown_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S chown -R {self.username}:{self.username} {log_dir}'" + stdin, stdout, stderr = self.ssh_client.exec_command(chown_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"设置日志文件所有者失败: {error}") + logger.error(f"设置日志文件所有者失败: {error}") + return + + result_msg = f"日志目录和文件创建成功:\n目录: {log_dir}\n访问日志: {access_log_path}\n错误日志: {error_log_path}" + self.result_ready.emit(True, result_msg) + logger.info("日志目录和文件创建成功") + + except Exception as e: + error_msg = str(e) + self.result_ready.emit(False, error_msg) + logger.error(f"检查并创建日志文件异常: {error_msg}") + class ServerControlThread(QThread): """控制服务器设置的线程""" result_ready = Signal(bool, str) @@ -578,6 +688,11 @@ class GunicornTab(QWidget): self.view_logs_btn.clicked.connect(self.view_service_logs) service_btn_layout.addWidget(self.view_logs_btn) + # 检查日志文件按钮 + self.check_log_files_btn = QPushButton("检查日志文件") + self.check_log_files_btn.clicked.connect(self.check_log_files) + service_btn_layout.addWidget(self.check_log_files_btn) + service_layout.addLayout(service_btn_layout) layout.addLayout(service_layout) @@ -628,27 +743,19 @@ class GunicornTab(QWidget): def init_service_content(self): """初始化服务文件内容""" default_content = "[Unit]\n" - default_content += "Description=Gunicorn daemon for myproject\n" + default_content += "Description=Gunicorn Daemon for statuspage Project\n" default_content += "After=network.target\n\n" default_content += "[Service]\n" - default_content += "User=【用户名】\n" - default_content += "Group=【用户名】\n" - default_content += "WorkingDirectory=【Django路径】\n" - default_content += "# 所有Gunicorn参数直接在这里配置\n" - default_content += "ExecStart=/usr/bin/gunicorn \\ \n" - default_content += " --pythonpath 【Django路径】 \\ \n" - default_content += " --bind 127.0.0.1:8000 \\ \n" - default_content += " --workers $(nproc) \\ \n" - default_content += " --worker-class sync \\ \n" - default_content += " --timeout 60 \\ \n" - default_content += " --name 【项目名】 \\ \n" - default_content += " --access-logfile 【Django路径】/logs/gunicorn_access.log \\ \n" - default_content += " --error-logfile 【Django路径】/logs/gunicorn_error.log \\ \n" - default_content += " --log-level info \\ \n" - default_content += " 【项目名】.wsgi:application\n" - default_content += "Restart=on-failure\n" - default_content += "RestartSec=5s\n" - default_content += "PrivateTmp=true\n\n" + default_content += "# 以xiaji用户运行(确保对/home/xiaji有完全权限)\n" + default_content += "User=xiaji\n" + default_content += "Group=xiaji\n" + default_content += "# 项目工作目录\n" + default_content += "WorkingDirectory=/home/xiaji/webstatus\n\n" + default_content += "# 启动前预处理:先删除旧socket(避免残留),再创建目录(如果不存在)\n" + default_content += "ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock\n" + default_content += "ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock\n\n" + default_content += "# 单行ExecStart(无反斜杠,避免格式错误)\n" + default_content += "ExecStart=/usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application\n\n" default_content += "[Install]\n" default_content += "WantedBy=multi-user.target" @@ -964,6 +1071,55 @@ class GunicornTab(QWidget): logger.error(f"Gunicorn服务日志查看失败: {message}") QMessageBox.warning(self, "错误", f"Gunicorn服务日志查看失败: {message}") + def check_log_files(self): + """检查并创建Gunicorn日志文件目录和文件""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + if not self.username: + self.append_output("错误: 未设置用户名") + return + + # 读取config.json获取git_url + try: + import json + with open('config.json', 'r', encoding='utf-8') as f: + config = json.load(f) + # 获取第一个服务器的配置 + server_config = next(iter(config.values())) + git_url = server_config.get('git_url', '') + if not git_url: + self.append_output("错误: config.json中未找到git_url") + return + except Exception as e: + self.append_output(f"错误: 读取config.json失败: {str(e)}") + return + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output("正在检查并创建Gunicorn日志文件目录和文件...") + + # 创建并启动日志检查线程 + self.log_check_thread = GunicornLogCheckThread(self.ssh_client, self.username, git_url, password) + self.log_check_thread.result_ready.connect(self.on_log_check_result) + self.log_check_thread.start() + else: + self.append_output("用户取消了密码输入") + + def on_log_check_result(self, success, message): + """处理日志检查结果""" + if success: + self.append_output(message) + logger.info("Gunicorn日志文件检查和创建成功") + QMessageBox.information(self, "成功", "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: diff --git a/nginx_tab.py b/nginx_tab.py index 512a942..6892207 100644 --- a/nginx_tab.py +++ b/nginx_tab.py @@ -1,5 +1,6 @@ import os import sys +import json from PySide6.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QTextEdit, QFileDialog, QMessageBox, QLineEdit, QDialog, QDialogButtonBox) @@ -202,6 +203,51 @@ class NginxControlThread(QThread): self.result_ready.emit(False, error_msg) logger.error(f"Nginx服务控制异常: {error_msg}") +class NginxPermissionsThread(QThread): + """设置Nginx权限的线程""" + result_ready = Signal(bool, str) + + def __init__(self, ssh_client, commands, password): + super().__init__() + self.ssh_client = ssh_client + self.commands = commands # 命令列表 + self.password = password + + def run(self): + try: + logger.info("开始执行Nginx权限设置操作") + + # 执行所有命令 + for i, command in enumerate(self.commands): + logger.info(f"执行命令 {i+1}/{len(self.commands)}: {command}") + + # 使用bash -c将命令组合在一起,确保密码对所有sudo命令有效 + # 使用-S选项让sudo从标准输入读取密码 + full_command = f"bash -c 'echo \"{self.password}\" | sudo -S {command}'" + stdin, stdout, stderr = self.ssh_client.exec_command(full_command) + exit_status = stdout.channel.recv_exit_status() + + output = stdout.read().decode() + error = stderr.read().decode() + + if exit_status != 0: + error_msg = f"命令执行失败: {command}\n错误信息: {error}" + self.result_ready.emit(False, error_msg) + logger.error(error_msg) + return + + logger.info(f"命令执行成功: {command}") + + # 所有命令执行成功 + success_msg = "所有权限设置命令执行成功" + self.result_ready.emit(True, success_msg) + logger.info(success_msg) + + except Exception as e: + error_msg = str(e) + self.result_ready.emit(False, error_msg) + logger.error(f"Nginx权限设置异常: {error_msg}") + class NginxSiteThread(QThread): """处理Nginx站点配置的线程""" result_ready = Signal(bool, str) @@ -250,6 +296,24 @@ class NginxSiteThread(QThread): elif self.operation == "enable": # 启用站点配置 + # 首先检查目标链接是否存在,如果存在则先删除 + check_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S test -f /etc/nginx/sites-enabled/{self.site_name}'" + stdin, stdout, stderr = self.ssh_client.exec_command(check_cmd) + check_status = stdout.channel.recv_exit_status() + + if check_status == 0: + # 目标链接存在,先删除 + remove_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S rm -f /etc/nginx/sites-enabled/{self.site_name}'" + stdin, stdout, stderr = self.ssh_client.exec_command(remove_cmd) + remove_status = stdout.channel.recv_exit_status() + + if remove_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"删除现有符号链接失败: {error}") + logger.error(f"删除现有符号链接失败: {error}") + return + + # 创建符号链接 enable_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S ln -s /etc/nginx/sites-available/{self.site_name} /etc/nginx/sites-enabled/'" stdin, stdout, stderr = self.ssh_client.exec_command(enable_cmd) exit_status = stdout.channel.recv_exit_status() @@ -352,6 +416,11 @@ class NginxTab(QWidget): self.check_nginx_status_btn.clicked.connect(self.check_nginx_status) control_layout.addWidget(self.check_nginx_status_btn) + # 一键赋予权限按钮 + self.set_permissions_btn = QPushButton("一键赋予权限") + self.set_permissions_btn.clicked.connect(self.set_permissions) + control_layout.addWidget(self.set_permissions_btn) + layout.addLayout(control_layout) # 输出区域 @@ -782,4 +851,74 @@ http { else: self.append_output(f"操作失败: {message}") logger.error(f"Nginx服务控制失败: {message}") - QMessageBox.warning(self, "错误", f"Nginx服务控制失败: {message}") \ No newline at end of file + QMessageBox.warning(self, "错误", f"Nginx服务控制失败: {message}") + + def set_permissions(self): + """一键赋予权限""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + # 读取config.json文件获取username和git_url + 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' # 默认值 + + logger.info(f"从配置文件获取用户名: {username}, 项目名: {project_name}") + + except Exception as e: + error_msg = str(e) + self.append_output(f"读取配置文件失败: {error_msg}") + logger.error(f"读取配置文件失败: {error_msg}") + QMessageBox.warning(self, "错误", f"读取配置文件失败: {error_msg}") + return + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output("正在设置权限...") + + # 构建命令序列 + commands = [ + f"sudo chmod g+x /home/{username}/", + f"sudo chown -R {username}:www-data /home/{username}/{project_name}", + f"sudo chmod g+x /home/{username}/{project_name}", + f"sudo chown -R {username}:www-data /home/{username}/{project_name}/sock", + f"sudo chmod -R 770 /home/{username}/{project_name}/sock" + ] + + # 创建并启动权限设置线程 + self.permissions_thread = NginxPermissionsThread(self.ssh_client, commands, password) + self.permissions_thread.result_ready.connect(self.on_permissions_result) + self.permissions_thread.start() + else: + self.append_output("用户取消了密码输入") + + def on_permissions_result(self, success, message): + """处理权限设置结果""" + if success: + self.append_output(f"权限设置成功: {message}") + logger.info(f"权限设置成功: {message}") + QMessageBox.information(self, "成功", message) + else: + self.append_output(f"权限设置失败: {message}") + logger.error(f"权限设置失败: {message}") + QMessageBox.warning(self, "错误", f"权限设置失败: {message}") \ No newline at end of file diff --git a/remote_commands_tab.py b/remote_commands_tab.py index 9517498..89f9104 100644 --- a/remote_commands_tab.py +++ b/remote_commands_tab.py @@ -79,27 +79,33 @@ class RemoteCommandThread(QThread): command_with_sudo = self.command.replace("sudo", "sudo -S") stdin, stdout, stderr = self.ssh_client.exec_command(command_with_sudo) - # 检查是否需要密码 - password_prompt = False - for line in stderr: - self.output_signal.emit(line) - if "password for" in line.lower() or "密码" in line: - password_prompt = True - break - - # 如果需要密码,请求用户输入 - if password_prompt: - self.waiting_for_password = True - self.password_request_signal.emit() + # 如果预先设置了密码,直接发送 + if self.password: + logger.info("使用预先设置的密码") + stdin.write(self.password + "\n") + stdin.flush() + else: + # 检查是否需要密码 + password_prompt = False + for line in stderr: + self.output_signal.emit(line) + if "password for" in line.lower() or "密码" in line: + password_prompt = True + break - # 等待密码输入 - while self.waiting_for_password: - self.msleep(100) - - # 发送密码 - if self.password: - stdin.write(self.password + "\n") - stdin.flush() + # 如果需要密码,请求用户输入 + if password_prompt: + self.waiting_for_password = True + self.password_request_signal.emit() + + # 等待密码输入 + while self.waiting_for_password: + self.msleep(100) + + # 发送密码 + if self.password: + stdin.write(self.password + "\n") + stdin.flush() else: stdin, stdout, stderr = self.ssh_client.exec_command(self.command) @@ -194,26 +200,24 @@ class RemoteCommandsTab(QWidget): system_group = QGroupBox("系统管理") system_layout = QVBoxLayout() - # 时区设置 - timezone_layout = QHBoxLayout() - self.set_timezone_button = QPushButton("设置时区为北京时区") - self.set_timezone_button.clicked.connect(self.set_timezone) - timezone_layout.addWidget(self.set_timezone_button) - timezone_layout.addStretch() - system_layout.addLayout(timezone_layout) + # 自定义命令执行区域 + custom_command_layout = QVBoxLayout() + custom_command_layout.addWidget(QLabel("自定义命令:")) - # 服务器重启 - reboot_layout = QHBoxLayout() - self.reboot_button = QPushButton("重启服务器") - self.reboot_button.clicked.connect(self.reboot_server) - reboot_layout.addWidget(self.reboot_button) - reboot_layout.addStretch() - system_layout.addLayout(reboot_layout) + # 命令输入框 + self.custom_command_input = QTextEdit() + self.custom_command_input.setMaximumHeight(100) + custom_command_layout.addWidget(self.custom_command_input) - # 配置sudo免密按钮 - self.sudo_nopasswd_button = QPushButton("配置sudo免密") - self.sudo_nopasswd_button.clicked.connect(self.configure_sudo_nopasswd) - system_layout.addWidget(self.sudo_nopasswd_button) + # 执行按钮 + execute_button_layout = QHBoxLayout() + self.execute_command_button = QPushButton("执行命令") + self.execute_command_button.clicked.connect(self.execute_custom_command) + execute_button_layout.addWidget(self.execute_command_button) + execute_button_layout.addStretch() + custom_command_layout.addLayout(execute_button_layout) + + system_layout.addLayout(custom_command_layout) system_group.setLayout(system_layout) main_layout.addWidget(system_group) @@ -519,92 +523,57 @@ class RemoteCommandsTab(QWidget): logger.error(f"刷新目录列表失败: {message}") QMessageBox.warning(self, "错误", f"刷新目录列表失败: {message}") - def set_timezone(self): - logger.info("设置时区为北京时区") + def execute_custom_command(self): + logger.info("执行自定义命令") if not self.ssh_client: QMessageBox.warning(self, "警告", "请先连接到服务器") return - # 确认操作 - reply = QMessageBox.question(self, "确认设置时区", - "确定要将服务器时区设置为北京时区吗?", - QMessageBox.Yes | QMessageBox.No, QMessageBox.No) - - if reply == QMessageBox.No: + command = self.custom_command_input.toPlainText().strip() + if not command: + QMessageBox.warning(self, "警告", "请输入要执行的命令") return self.output_text.clear() - self.status_label.setText("正在设置时区...") + self.status_label.setText("正在执行命令...") + + # 如果命令以sudo开头,预先请求密码 + if command.startswith("sudo "): + logger.info("检测到sudo命令,预先请求密码") + # 创建密码输入对话框 + dialog = PasswordDialog(self) + if dialog.exec() == QDialog.Accepted: + password = dialog.get_password() + if not password: + QMessageBox.warning(self, "警告", "未输入密码,取消执行命令") + return + else: + QMessageBox.warning(self, "警告", "已取消输入密码") + return # 创建并启动线程执行命令 - command = "sudo timedatectl set-timezone Asia/Shanghai" self.command_thread = RemoteCommandThread(self.ssh_client, command) self.command_thread.output_signal.connect(self.append_output) - self.command_thread.finished_signal.connect(self.on_timezone_set) + self.command_thread.finished_signal.connect(self.on_custom_command_finished) self.command_thread.password_request_signal.connect(self.request_password) + + # 如果是sudo命令且已获取密码,预先设置密码 + if command.startswith("sudo ") and password: + self.command_thread.set_password(password) + self.output_text.append("密码已设置\n") + self.command_thread.start() - def on_timezone_set(self, success, message): + def on_custom_command_finished(self, success, message): if success: - self.status_label.setText("时区设置成功") + self.status_label.setText("命令执行成功") self.status_label.setStyleSheet("color: green;") - QMessageBox.information(self, "成功", "服务器时区已设置为北京时区") - - # 显示当前时区 - self.show_current_timezone() + self.output_text.append(f"\n=== 命令执行成功 ===\n{message}") else: - self.status_label.setText("时区设置失败") + self.status_label.setText("命令执行失败") self.status_label.setStyleSheet("color: red;") - QMessageBox.warning(self, "错误", f"设置时区失败: {message}") - - def show_current_timezone(self): - logger.info("显示当前时区") - - if not self.ssh_client: - return - - command = "timedatectl status" - self.command_thread = RemoteCommandThread(self.ssh_client, command) - self.command_thread.output_signal.connect(self.append_output) - self.command_thread.finished_signal.connect(lambda success, message: None) - self.command_thread.start() - - def reboot_server(self): - logger.info("重启服务器") - - if not self.ssh_client: - QMessageBox.warning(self, "警告", "请先连接到服务器") - return - - # 确认操作 - reply = QMessageBox.question(self, "确认重启", - "确定要重启服务器吗?\n此操作将导致服务器临时不可用!", - QMessageBox.Yes | QMessageBox.No, QMessageBox.No) - - if reply == QMessageBox.No: - return - - self.output_text.clear() - self.status_label.setText("正在重启服务器...") - - # 创建并启动线程执行命令 - command = "sudo reboot" - self.command_thread = RemoteCommandThread(self.ssh_client, command) - self.command_thread.output_signal.connect(self.append_output) - self.command_thread.finished_signal.connect(self.on_reboot_initiated) - self.command_thread.password_request_signal.connect(self.request_password) - self.command_thread.start() - - def on_reboot_initiated(self, success, message): - if success: - self.status_label.setText("服务器重启命令已发送") - self.status_label.setStyleSheet("color: green;") - QMessageBox.information(self, "重启已启动", "服务器重启命令已发送,服务器将在几秒后重启。\n请等待服务器重启完成后重新连接。") - else: - self.status_label.setText("服务器重启失败") - self.status_label.setStyleSheet("color: red;") - QMessageBox.warning(self, "错误", f"服务器重启失败: {message}") + self.output_text.append(f"\n=== 命令执行失败 ===\n{message}") def delete_directory(self): logger.info("删除目录") @@ -640,42 +609,7 @@ class RemoteCommandsTab(QWidget): self.command_thread.finished_signal.connect(self.on_command_finished) self.command_thread.start() - def configure_sudo_nopasswd(self): - logger.info("配置sudo免密") - - if not self.ssh_client: - QMessageBox.warning(self, "警告", "请先连接到服务器") - return - - # 确认操作 - reply = QMessageBox.question(self, "确认配置sudo免密", - "确定要配置sudo免密吗?\n此操作将允许当前用户无需密码执行sudo命令,请谨慎操作!", - QMessageBox.Yes | QMessageBox.No, QMessageBox.No) - - if reply == QMessageBox.No: - return - - self.output_text.clear() - self.status_label.setText("正在配置sudo免密...") - - # 创建并启动线程执行命令 - # 首先获取当前用户名,然后配置sudo免密 - command = "whoami && echo '\n' | sudo -S visudo -c && (echo '\n' | sudo -S visudo -f /etc/sudoers.d/nopasswd && echo '$(whoami) ALL=(ALL) NOPASSWD: ALL' | sudo -S tee /etc/sudoers.d/nopasswd && sudo -S chmod 440 /etc/sudoers.d/nopasswd)" - self.command_thread = RemoteCommandThread(self.ssh_client, command) - self.command_thread.output_signal.connect(self.append_output) - self.command_thread.finished_signal.connect(self.on_sudo_nopasswd_configured) - self.command_thread.password_request_signal.connect(self.request_password) - self.command_thread.start() - - def on_sudo_nopasswd_configured(self, success, message): - if success: - self.status_label.setText("sudo免密配置成功") - self.status_label.setStyleSheet("color: green;") - QMessageBox.information(self, "成功", "sudo免密配置成功!\n当前用户现在可以无需密码执行sudo命令。") - else: - self.status_label.setText("sudo免密配置失败") - self.status_label.setStyleSheet("color: red;") - QMessageBox.warning(self, "错误", f"sudo免密配置失败: {message}") + def check_ssh_connection(self): """检查SSH连接是否有效"""