From 7bd1764103893fd6d49a1c295cc759ae2ab95a70 Mon Sep 17 00:00:00 2001 From: xiaji Date: Sun, 31 Aug 2025 19:55:23 +0800 Subject: [PATCH] =?UTF-8?q?Gunicorn=E6=B5=8B=E8=AF=95=E5=AE=8C=E6=88=90?= =?UTF-8?q?=EF=BC=8C=E9=87=8C=E7=A8=8B=E7=A2=91=E6=98=AF=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=88=90=E5=8A=9F=EF=BC=8C=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E8=87=AA=E5=90=AF=E5=8A=A8=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=E4=B9=9F=E8=83=BD=E6=AD=A3=E5=B8=B8=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/gunicorn_tab.cpython-38.pyc | Bin 0 -> 26598 bytes .../remote_commands_tab.cpython-38.pyc | Bin 16673 -> 19494 bytes .../server_connection_tab.cpython-38.pyc | Bin 6253 -> 6595 bytes app.log | 4177 +++++++++++++---- gunicorn_tab.py | 964 ++++ main.py | 95 +- remote_commands_tab.py | 96 +- server_connection_tab.py | 13 + 8 files changed, 4367 insertions(+), 978 deletions(-) create mode 100644 __pycache__/gunicorn_tab.cpython-38.pyc create mode 100644 gunicorn_tab.py diff --git a/__pycache__/gunicorn_tab.cpython-38.pyc b/__pycache__/gunicorn_tab.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0edf5c2260bc9f551ab08ccecd6a42433eedbb28 GIT binary patch literal 26598 zcmdUYYmijOm1f;~cfGp$$s3A?KrO2QJv~8~S?g)pBex}kjHirUQPeG(YO1Sxv#Jo( z7P4fJK=1Zg!jc76wK|%=5~Vm&fAqhzEbQyMDVb@PWtk2Z}iV{D^!Vzsf%$ zFg>PG^rYp}NE;mYroDK2i@r&J+CLdc2PT8*;AAKrnhdAIlRfF4$w)df8BIqgW9isr zJRP4*q!R|!;Vbq|Cez8uzH}eQ{l)&tf%Jgk`G&^~n8BkSGnkJb@ude551C=a!}%oQ zLx}g75yT@LA4WWC#t@HjdKC>V3evU6ke83z;d@%1v z{VPmkhi7Ey3P$W18;M$>M|Ty>@qE>aKKi|T%LgCM9xB%;@{lv~NUgH(-deR*4p;V}5GFGCJukI?8%<|(q3)N!Y z>P7t9$eXN9VnI~*3Brg7BCvY0rYRSRp#5YerW7(!*Ay)l6n!AKul((@nYY3k(}MbF zdB3yY3f`A3<*;PJ*<3C^Rn41LC|53(^0}%Nlu1@t9Evyc97 zm2K2lw6*Vq8$sPcS_`G@WFBiFlF3Y#&03M(W0}mqt!0ZchsP^MsiC;SD<-m-$vC<} z`%q9{L=piFqC$HV=vc}rIYeB4_746UlIjX3>zVA4ShpR&^Jq!YPMLEWTdtPH8($acH!-(b^iP>j?Q2BeE!VyV>w#b z`j6fTVf3slM*LwGOXv|tWVC< zodk9l1&kn`HpUVyp|9Xqp}pn70ty=S)w-LmVRT-w#}5a&2GFKAJf|eR zqZ$K^fQ~nU;u*k1&0r&Frv=1s(OzuEAawg*cY!(XQ0v_6A?n5ul2Xe4 zMz7u9!y!js!(2Mn*4KC=WcMpPZHPO$w~0pBPW79;`@Pd%5mT6B`pb3oNs7BD=6Y@b zb3M8puF-`#^yc^68yD`7`af;#^|xV9$APQTQUwK;J}a>s#alaGhitqKtI@W};krRol$0ZbUS08d3D=9~c*F z8c{n{&WumIg+756nyr~hIeOA2 zT#?k&=;#6P%|f|UBW|bR=bt@3ckD=Mwr%yKDeg5*L&*xt`GgX*!Q}+50lI}Mo`1Qq7-Ux_t4Sxo6*9n0>+SJrVv+P!gk#UBC#sXY2k8V&YfQ)K`+fuDtic!nvn( zZL+IZo#>HCbH}Hf&%L=V^br&)lw)U^Q2I?@cA1+0SSpI8~BUfJ=w~>)MzfX zDGzxrwXU98mujRKXmkg`rD{`Vwwh0E+?Y}j8`>fCM2sG?=VFswc0Zq4yy^ND-4#a@ zc2bu*-ScY?;rjDygLa=^J6q2$Prsa1I}g%?p0X};+vFK(+ZA#;nxFop`SHiwQX@$# zIVH;D0=iO0;?%VK`N=|65P!G)h0@-#AQ{4n;8W#)4vhX*QEQJAs-}LoAk9Jr5itX&l?z@&R_F zm*o~JXBMF5;X#TZJyC@fb+nXDj%%@45r}kLy=1t#bV5y7230^qNXKz`naRqyL-u45*e7bGt$g-48j2v$iW=1n5>8%eL< z7{pu9tMg(iFNnMd-rXfAHHZ@ZUdZyQ6l8qwMg@1{rDNV0>KXL*8>Ao9m+58mO{cuN z86zN>JT5k49D=sDpb=T2OvWtdAZ{lp=HF8;7sai8`Fah6NLYqRNZW(W<+L>+W%g)ji@e*BxotB5(ty zkXa7|+`4?5iI@=Z&Db&z#Kj1d2w1aby&R8neZ4JV5aVXS@Gyx@G~QU(KE)ksJ)MCA7~`)+WS!Zf92W-8+|&}u6+o# z_p91r)af!;1CH7Ux%T14fUc)82od>iu6;>k&`up-jC#fS2ERElI%F#15rEacntk@r%_VL^r<{DWK?He=2t*k|j z5V6g599u8jG&h{;IlQX0mB)OOf|h%)1ux^>N^HFG65PV3#wr_Ya*eI(I=CD%X=_!`f`NMnsoWvE-IKQK|o&9BfKr`;;kSb-hw+M1*}n;R)z7vZLn0yYDJ zjF&J;np@1RtX>dx+G^K*o1^aAyVkwdF_LxMpF0|B?RM6o1!_HP-q~2EQ(38{Ht#a; zR&9pyhVkt3up*R%A`}osC_?L55$bEKha$8=_4KaB2D{W(8yj@3N)cNB#Cn$^^k-u= zVzN@DaC0Nb&{9GMTe_dw#KK4Cnx7qoBo{}KTT@qNKbe2ygXZ*$NLhgtsRYSX%DD9E z{KcQm{qpGM&713?VkI?N%%-GLzy&2p^O>icAAF+Jistd3L&tDtXtA>%*bD1ys-8@Z zk}WO;=?_MA*dSRRoqP7P=J5~FPdi!KF;OjRcyFEtL|dM&*)k%mvwUG}xk9=NTgzIo z&pz2ac}Dg~)z&r79tO!^av0Zu({0xiYB-Nq#tSrlS7apl;R^{dKY zDy|kv;}xoq)J?lWM}}SL8Uo--J96!c{kbeuon?URfYIYF{BPjy3m>MsMl~*+y9iaS z16tQuBYDE9pmoL7zCSI2+H}8#bEjqc!spXa z@w9NVE%k*jXQsXwAmy!H&s*oz;>KGBfT=^(edQ7fOQ|o6RQ=}7)R}GBsi|TCD1z<) zBf%b8r&~AkziofEb?eqmsg1RJsIw>EyOI7nx0<`l?pj(XW0QT`sGBdn2^)djux+)- zB|#d$#)aJXQdh(xcd6&o=bF!*v30}FEPG1H$UOi4v(3+JBXg6>Vo4M}#vwr$TMLwK zn4qQIfr!NLR3(+I9fXbzO>oNAmt8g!Sw`7gh`gL6n~BpVAx9$zE$s@@0RGg;x%c1F zLzdN0qkU8R3&mn;bg#R;W*2ZKXK0T*)D1u*ZfDH zLZzxTYVjA8O$SBd+X&K8vmlUHs=}&|0|-Q<&Ki@;FO%Ds&+W%qFO%cUUL1T@?3jd% zsyx~?RzyWmQM#AgbtLq+-t8unjxx}D3a%BGu&p@5TX7qn zdYO)4GiP*?mDF!`r-s{8w4SeZt4eJTjWEX8$*5RDKJ8j!DlWT#Ge9K0{u9( zi%F}1F9AD2D@HZ|*b5j+ros;3fa#1$tAVUzIaI-9K-ZCke$DA@f!N@UcyGpUBkJ$> zwd%&{p=vD&I{|DBuC~egkkFQcVZD(ZN+!$(XQOR41Myu9mhA;%2ff+mf*UasJcbf) z;8zJFU?YJy77~>DM=%lCYV(e~I8eytADb$cv!=2YtVf%dKYs4=r!#uob0=SHJ~u1b z_`inT00-jSExmlLm`)&htkZT-K##=)1;p#So%(Hs#L#X#*r12k1qt1a2z2~x8xiQ( zzy9CYe1M6A+DC=~W5x?30FEwad<{57%z9t$$H|{>hKvX}-yyO3F3+Q$?|QyZ1_fg# zXu^^*ffF+*V+O(iVx$BHPe~Ji|8U@Nun{1i2GkpBgv`)>FQ3nl`W`lWBs|n@I?ISb z8EK`UHJpD0XA&??^rAGW7gP#H0A)6iWs-IrCD8LeI)YW=e?P>3Lu`cj-^1enK%)oZ ze?-^Rh^TgxW~_C(q{RQ8Cwg4se|)SS*ixOG+F}`xi?0Ed^S94n` zhbq%iGY;%irD^T$ECw%8=xQ=ZC~GL^m6 zDa%jv-3mM|3e~*eCCJ>8m*Bm$4)3FY%!QH}l66@!SvNzq0=Z%t3%tcFqtYJS10+l_ zpMw_$wP@^ZW0_)%>SV5bOoL5bb`emwVc#uyhK*rZNXbqLDyZq*8ja#^ z8v}$-j8m&El23L*>4vZmZ?rGmM2u4Z2t;gUTQ~26Dm)>n2Kd-^$g85gV zUoBEZPBtW}yDXh8LiIQyj6 z!!$rdZf1)o5gi|_L5Ar+>@@?2ebYvX2n9$GVD{KBEh}XJuta2F69v)pnnVobyRY;Q zTr!H1C+(7CKSVz4n^cnQPr4)>r|Ocga7j1@i2q`jOu9<;+0b4b2DeJ4x#R#`3JlS2 zmmPGK9kSuQ=CJ+lE3L*mh_kuGT*`zj0D`#o$*(DU^N$U3fOto>vAjW8Siz*%r&^1<(uiQ+s(aLcmCjtrwpZXzW%W70)pN_x1q6D%ZQODmAkbPoRj4im_5$hmqt)@OnYp){vktZT9 zvcG2Ri@2H1PnJugB2Qw5r2VeLOG)r^)ndv8xv54pYyNL8&R={}?%pd;zc_#CgDb~g zoICMh^SPOYOP7?^b$vid_34leB5!@All8Qk=ggESqFJ}z#1fEHGBul76hQMAE0`~3 z_Z0K>Roxqtxv3htB^G=7Z{V=Ab3>e!XeEa^aWu@TGMRIQWoO2r(;p@nmA+09)WOgH*qjW{bT9`kRW z26dnN*^98@NDF{Yb7NOR>=fTevATC#iiL|VvpL7?!xjUQg6TE$cc$SFp}d2&GaGJc z%`Fk2#qPgOCEEGC$Ria>Rt+wiIFhDgR@SN9+A*_wD=1HO9W0+YM~i*XN#u`+eUJ`M znpXt6jUOkV5pa6ebK0IU8CR#RIJ+es39>-YSZWM=@#7j|cw4IFgOo;RS5|aQ0pS2T zwWC8opwvHtfG|M)%L^B$tdVDnoLITSo3EddyR9V{_yD5+=pCH%hP@QU9RL=0Q_zL6 zzeYn3B2zgZuI$po?z}vVGPdgRe-WvF$QFL(9zDU1hoH}J93+0u=L6d95Of+`3dgmk zf4@&mK^?(KCAl2J_0Tf`en#G%4#zhSyBFFnhth43TZ2*p6#=}L+#FSFIJb1PChLP2 zJ#z>;!C?17@Rf()Ru$VH5&sOX5@fCtZv??rNV4EQG(xIO6bgy$M5wq*@QI*{tHj2b zY|66)If3?k&i(v+^MwmA=iXB(WVh^q*T(q1Y(cV}JDeo2TA0j}PYp31m{~?CUN4vO zDOW+Md_2gf392P-K+~Vv5T-+RL{dY$BlQ7iYa$OPg6gK7wOar$`>3j8ha?zP?Sgaf zzm1asSsNP^TRCo;lyI2tTBN5<1!>Wr7R6#>)uKdUc@p1+_5UwLgmJsDY0Gmq2%SZYo z`jTP-vZU1yGjb|~yC6hlqOu-XA*gjf3%(m!*>J-L6nui=*uxqn;g?N!JaAYKXATfW zzp}Rkai9thZ4&N5rULeRxDjL@W<#VZ#ZUZ0i*u_^QckJt@R@k0dln2Q*)h)s*g zKJrY}NcT-${`h_ABWhPcwj!p!^Kbli?j;WAq7vkTMnYu2F9;KQ1VSJj`FyKk&L4(( z9>O9_N94dq?t0x^?cB5kWFGfwo}~6USk#R4V}P8e_DSlIw(vw)P-+Ls*RopWGIBM^ zX9qc$Uyp`yBaLpb;6|Dv^#OU~FCCOO{n83XM$kWwL6ix$%{A+~{%5~eqbiO-xp-CrBejk371yn+#0BVa!D2-9B!C?DU~(lx`Ms9kC;XGcs7k zL2doq1|TTT`P3gjS_*JWn}ETmAq}++~;WtInS+Gh107@3dZVa>eCYopZydH-L?m>5-U-s0*=Eg<}ffa z%%6N-7L;ZOc7@S3N?tH;*Hyo7yycXEd#w9$F(Y+HH|LAgLbN$p+py*)4gCEnx)A~D8U|$W_@&a zp3y2C!!2>8z=t1)*rbD5QE5iW(CtoZnEDfXM4wxY-mzRDIIK5Cs9j7aND)0N%jEgX%e?p2O<7 zL_L@Cldri+LS!xj16de}J3D|`y;emI50k=}HNe>Z})31x`ARfIwHTNtG%FpV~ zN^xDv)DXfKK7aknu@|I)JyO5v0bG6AL004KTWS@trC82oi(BAtwngu|)b3QIM)#9b z_McN3NOg9DO4Qfe(3*tacKcV^gY7oQW z@M}BaM{{%)JykhW$}z}tCkRmqkbuj1AeP*xO9cSQW?ef z66h?r%aDP$@rsSIjD+8eM6Qm+duO}sRdeIDF}SX*zS>z6S{N?@(cs#7MRL>5Bb}=#uy=1bAPI2c+rz-Yi{~QUti244wec z!yrLYF~QBE@W14rw{BamZSqFc7Y;DGLD$DAT(oWwP4m5UPZdrc^18R_10-~a5&?C)^NQu2Ez=-7x)DuT9)fI^5&y%|kQOb{>N z&qrih_umVI50Vl*u-Vs_>)lNwB=*+=>=>IZWRpjub8IaGj2a>JOLp5PO|_elrW@-V zo(;DxMWcHfz%6Z9kB(E@Mn|kaqt%U)Yivt(b9!tVEJq5D{-bxYzA=Zo8!vKX{51iC zFGhn;!H5JW9c?OtIO^x`4tQn)ER6avuYSk8Njt zY9YZImX{CPg$`>-rE6h9%0xgSZ4pOJZHQy>M>_@5uBXpYNG}2`j3697!oIrgGoexF zEYQK|Z8Q?ygDelb7A#>vA8i1{aSW_td>CNI=%APmhyAk#r%}m}Vzcy7n4t7Mhc)NK zhn+l@kMlsE>?H*1tJ9nmndhgI%ZR^3XU8DA5p}Vm)v_%}iX((TUUc?+kOwQ>)^w5~ z{zeKpp|+EsU!eStTUd?2K`{aMnff}t90;r3XSD;j0o27y^y_%(hFe;qQxq`T8RJCjTRT8g{g__qERMUEwIH9!=LqLvym%m^lDkrUt?rKl z>tfsRWaP%G)a{p>TutX@Si`14G`|I5?_ zjCg9>BC+BUMBS%-g}RO(y572hN}YB=xmE{t)b8w2M5wbBIJCg3%xi#%auquchi9}G zeY5x~(nJ8RGY1e0VuvCRu+n}&+C9Abjv!5b9f=OxkS29mEqT(?wi=%U+-o$Y zba{ptZp85O=ZEMsLWL!ZpZgStY;E(j^Tw>CU^>z^ipV!eyYQx1D zwEt_ug%m#ejk@hPNDI6RniuEOMH;#x?o`9KkC1rql2gmi;jk+$2%vY?heayk@j)F; z3;`d26KyMwo4F16ve{`UWrnbv!^}OL=#v*N9Ej6yC}JBrca?adOmTqdvjDMOgUG!x zb~e<8P0<4gE6U#%nB?m_Y=gH#k7q>*>YHACA>{^Qg(jg{;M!Rmc@giTp1&rn(+qnc z0@IpHva5T2m6Iwu@GqBt2a&NC-U-yyjmRL)%ST+k%H|eHVe*56J4JpVF;#;T7>|QDuKPss}&J+7Xn?u>0^tbcQ?wHQ9-{$PSwxnd}7l;KynH(_<8Gq1R*V z=i?+uEQdRVFzE@z^r%}kpi1Ix)Z`*Pws^oqNW6o5CPCsfy^+$(p84r08__yQPXf5- z97T7Cx`?wBv~8j1k@hJ~CQ&R!PRKvkK~!+iLL|lhdI4=Mm+9_Hx~U|t9h*uf=uPD! zMeZ!|K5)UCOs4Bi)}@Hf5+9(*m^g<}{Dy)yJpT@9|9O#3Q^J_$~ zdOO%Mt@O&x?!7`QpY#jzv88+v@&G(;@exDbLv-vA#2yMwgt3Qyi5R*10}|{vNR-SB zDMmp1hO`-P!_WJO4!!Y7!x=iFND!l@IJx@U?3<4RcpvqMCMHvKOn>-mNR z+lj>lTkI%0fFrIVkNVn#Tk_AgcLN`7@oot584^xfpnys@;!Y=H#a~#j((YK-04F~3 zB*r9YU~(tK9XnysrGEh6bpFA27cw1dpQKow=~(>TxQP{){?!@jL+t~)E5oS0T})NW z+{IB`C0&z7!ks;7Gl+DXG^BNqJx%QBW>gg#E5rr57X?CC4NTDGg1@4(Sdcp8fz;uH zDj;=1Me1lWiPZVb5Kk_N5j}K!2~T{8gh^e`Ox!WK4pPS=gY=o!!h%#!P%q!{Ta$Y68dl|Hq*3(=^A>O#+61{y! zft!(73F)%0=VZ$b&WVeoxU2Y+pA@o-%Oh(yk~`*vwt&;G)eWvE;olL~X|F9l3B90$ z&Ykhl4bFmn>6Jw2wmSagr-4K|>Db`Lt8{San2dGyWGr4tPf6ptQzE7TlD)xcaGk+) z^9J~m3R&{ffE2Q>lJYIDk=P0it#3E()inbxg^^n0D5wRn#V?+yOEuRM&WNql3Hj8i z>sSQbqJ(SJqlT8*v5E+>;2V<8_AVx!UCZp~lFZmvz>-;jB{NC2rH_15yTsTgM!A}$ z#hWFwYlGVw{td}v}VFeqt6vuDS-PsHz$-|Yf}-ZiY1h`(C|N^gz6*5ICn>#IJrQDOm8?=@C*AOG+UP`>`#($e~ zPiH$UeCQ1BWBuTyZ6 zf?rVZ1_gW!@f^LKp@0nDf()gCtayTKIpPxvKBeGu3jUUY|3Co=B2v#Haw~{12wEC~ z2D11UT8|?4pA4*?JMjW%xNvw^cvU!nf3a{h90~iwgLsdIm*BS?zk%>F^^e}8;iZCV z7+Gm~%N2am_fW+O)4eisGqU;~Ikcl-=I`G8DE`wA`tM#U0+tj{n|Ei+>r#X%myQeg zzx-<8Q)^2eV33jNBqAzPwV7$5pczV7@*X6R?1sB<0pnX1 z4I&~!A?}~LTy_EeLjQ<&JsdmlJ|&T5@%N->rJ{UjMbk34 z!jDUWFevtqu*a=OV*QV6!X`;~%GP1BMv6*NQ`D@Pbl0$;yW#Q-3sH+^p`+lHr`u(l zW*HJ*7l#QER6!@%_p62ALX)6cHrodYtt3KJBtm~Fcv!byEc-O)MEC~9E#+F?rc%8OHpioR@gd!>}2_TD}>@nrE_orEHcb8o>?r@la|XCHhEeAGh+ZC6o8j zxQlw_Qq2qD7Q^4jWn7b}mz~S2De-CE$&Z33m1tgeGjAp-XLkGL`w~*$HaX%3SSGKq zL0DTyzWLh5z_0Z*b--e?-X(9XLzwvAo$xPPb zn_pi!AOQHQ02oz3GZV)%>eUABHIHsX8yocb=htXnepiEDswC$R5a?SA_S#Km-2%U} zcz?sImW}%wD~$2$z*d(Y-^WL(W6cFsjrCxu*Bey-rrEqN;kNpeo`<{w78YoPKXZ;g zH@>@|hmgDCe=Q7m&M`wgmC8&1D-LwOK6{^VXKB{b>O1O(Ru8*i{D4594YEwGZ z5PgdE7au3B@v@RyVqOQqJj5O>{e8>=S~@k}fE!LDqNTHyhN~9)55l}8$cS)7Mb)H< zvN#~pQ?MR0mloX$RvTC)XcP53S%UbAQIjUoU7EPbt~+GNtV4oq(IjAniLX$IK@zp* zHV3Oy9c*aHO1F8Ld!XsPKvU;tJN+C;YEC6vmuy$vnmH%gI-=$s<|l+Fg`oI^AUgmd z&PWlgb$ldtb?nN>=&_fQdxw*+oxX8xc=VaGkrHm2!qQTiu!q%v8VPr-5730ED->35 zVFX8yof&)MCu)vxS7_UhlyEq(QK1i_1D?7R zdG5FHu;sfZcKOZuzWfr{xdTu`TozNx=S4A>7N84NHuiP%Rx!%2vYmvocN zPk*kPWeL6dj{-L=fPT1u8&=?k3AphI_}FydG#;~23EBnOJP;FU5DX3|IV@0gh(S@d za*~_^%)4|qloUvkylj#HN9?(+oFnM($Z&#B+?lygl_VZslEBf1EQ#@Eeh{M%>( z4jGyRccs?r=8?d)n~f~l-!#>FAwq4bC3p>P!?g2Jn>39Dd$QPi2h)%RV5^Ts%a%5A zd~xv5XJGH>vnU2o>_YJzirpxlN3jP4yINKsi&TIH1RcM2e02ZGBg2o8ev{c486nXmxV<+X4L3vf%F{4dR3ik7+oHNq;2} zqJ#y@i`|nr@FhD~-W(f;?KkU^mV!Hi8=$@kwjL8bTmWgCCdm>&eFQXtgIJvnVF6f&PqD`|Ne`X|htJxYL5gq$(Sdr<2@fkhOZ z0V3fF^z|u0xx*;e=yFyyy^OT6A53pFcY%F#e9QDg;$8ykBYtNJ&5X^caqw|?$@Mh* zXhyU74RF!o-_B?yme)X~M_Fs-&UJV`7|6GyHiUvlEqxpqp~DH&V<^6Ny7YB);dS3} z)O1!=RYVT6`>LwVA!vA!t*zQ^;e)-!ZdT1SqyO8?UHy0RGPBjpA_v*Lnx)m5XS{-= z;M5WhetPu=)b3D_Ze=gm)R7@}spcLtKIk3xb=0kwLDOKG#;8haxdroy@kD7LvCaN2lGQ7OP8=)QYrXzAMtSEV6*Vy3h zu~$xy?zuRAl_j4$Y19|v7tbbRS9c{pcz<-?3(2A5<5y07@yf{9(Oshh&n0)i7paH7 zQ}?>9)15M{&F{|2p1`Qs_vFT%@cgOLB1Jm-%|`Fb#1z$4K@A|4o_rkP2={5;CfVG3SjhFfcfIDUf^sRjjK=&?qaAc~#vLkU>Y z5dU3+g*evZu&D##rvJo`r=q}V^m!Y_85IBBS-}1LA`u@neMZqYql_ zta4Eedu+}p7TiR7l9kO}Zoxp)Q*6WBnMG3^2=wRd=-i4qcw$YAmx)sjm*U`5E5@(S zb&%Tca!S}1_XK*^%Yh{=B9rDl>d!1&_|5Hq1ltcj}G^)UN78Ty>y4CK0s>sI2mUNuy1$>;pfJ+p!QEUNm ze=6Qi=4<>2j^68yXB=6Z6LDb2gdIre39>69^f3jH&M2j|QG8YgPhAuw|4lxcV2=N7LT>X4Nl1wOj) zI^2L_Kez?r=N2>(hn$&v{HuFkBmW0te73NvVKOmN8-|bOVdeWp;dTJ_>n{`BC~b*M zaD%l}&Ag26Q*FhEU^p(a&zp+lU$hW1=K*wFih{qI@DzomlJP#D;^Yc!SjmbOH;~iu zC5sn{?P>I4!5V@$^-M;)3eNlmewpzl>xV&E*`AvUjcN~v<>=4aQ1;s;&9z2O8$tU= zD01-h3uwE*7PPL4O{4SCem9Cn6on|(p%_H*DvBd0x=?TyV9jYzmBRq52VQZ|^Qd8_ zq?mqa90gLCvx6dtDT0Aw@F@n8y04(b>7+kjE?o_N^J#jnQg_ka+}NM1ZlTb+bTdh=~}k#fqi5x`|5#v$fkb-+4za@ delta 3455 zcmcImYit}>6`s4hGdtedm+kf1$+lU0*RP4)ICfk=LK4Sy;;2qUsOU>>lI_Mbsn?HP z`|j9j)7iRt)G1XO94>Ve+J@PxL?nU=v_gm?C`bq)ezcK5idYpve!!0k34Roz6!AFc z&aT(83=*n{mCxs%bM8Iop8K6MzHyc0&k_G)KA%T`e|J7COx{j?*MGxFCJNtko^#gu zK#Qgk_@DiWLl9ORXJYJ#`|6VBHiaq2w6sF#=TWk}np>0ej+_%#PRnOH^W>N_=gNsW zNfUE!Q#v3V-;tBST4i}mIZue7RhhEo&kNI1_7e?s(-OU{DLFS0R>-_Cf7^7!=_fVC z6cPd07qmQife0W4R+b3uGzF_#^Ws6^9tL#{x|=Sm7G=#>FQ5(9A>5V@fff^kWY?wU z&sCWsq_!1OgLL`@Sg%VFPM*^IIS)^N0DK@#@bN6I<&HUC=Gk+}-mC>o`3>PM2*i`S zY>HELRyZ%@6jRZH(+=44PeZVXR*mVDJwaA1kEUofc?Tri3?6Q+)>JmwMbI6!mEiV- zkY05OhBWP2anSdOkOSSBMZPs;$fn~wDQ~w|Ij>e{dg0+5*-0&IOY{Q!j(clkx^*pk zZ+TNGCs7NTUbg6ol6to4d5>LGJ_d<;XTxr)&&?z!^rBaPR-Z^rWM*fRX^nY&$3i|D z2i_E`44O=5=Q7kN5}n=jjgg1gC%#@X$y9%&+DrVT#_1w5@sbdM-%R&sT99z`0Pc33 z%w%ThD6Yp4LI{HhPqKUd$H>pv(ZKtji-JoS-||I4eSozGUnBe2kAu6(g~GkyGY)b; zOV)O^Mb86s5{+=5Mk}bfI5kji(gIu#Sjf#r_WfG5D`p1yDux!rsa2mRus06&_>^c# z@VlAsvAyCf5bBQD=eK~ZW$pYLeo6~_D%8}CwQaT9jP@y&?Tf<4xT21v+RL@Q(v=r4Rj0}Blyk?y$adN>hGHLdM`s-w0;mL+(A|8Vh zU1Ddqe8iqmeU2jnJ9~e4H{A(YI4zgPnaO2QgH8puHIytao)LP9nuxL{Kv^YL8y#lL z(Y9JuqSaXaeFzUCoMwT>NR{f~uT39hcVo3|wJ{J56BrtP@DPZHNDc`e*zfSNyNx^9 znLZyGW6`GG$S8yrEvH#Z$da%SJfxEaW4&#vdtJC^FkB8Hg^)p*2T+~thp`CzL#(O3 z34?k;Cy+1%^a8WI6$?F+M!c!3;ee~T{yKhn+hyBEQ$C{E1iNlH(HY#+S~rKb>( ze{>r_(U+W?)6-favtZ0E7<81q-@FAb@SEmtQ3HENA?vGr9U{_s5TWsY+xFs8rIt8s=}QRwuALwi#jHV7bM}=nWx9;;UlXPm z(Siv}2cu@n_hjjuWhP z#~;g=uIYMVV6#i}7sX4{%Lx3bd9-zp!hX?p-vC~%Sf5E_KP1YHa4MBfWhZsbzOK`r zKFY)brFz;xPuj;m_*^}?z&dxn+e0zJs|Xc7^Qd1&ow^3wQF;^LP3G<1ht!oPVPz89 z&Jx|R1L-|LVVvdV&Jiq!-8lyKkYujScSEw^s|nx9vd&qey3FQ#?t>Cv?rC%^G_X&5 zA`WV@zxKrSD-cPQ*F83`cqQS7Fu66-+_djZUq|g#gbmkt3v_wxkRS*GOk3y>;w{|X zB@yKW`j<#~xA&b*Ny*UXs|c?l{LgGG2H?qz)U19clhzYi-LPjmb_IX5@&&F50y{St zmS({4Ey5c6K9-(GpA{DDKLqm^#4GH0f3$8BD$=j8EB%ouZ=$cG=Y|?sp!+!~-04?{ zWEYB0tiKObIX)sx8XQwA%v?u1JZT$3rL|sR&kaVUw?X+UQn)@CB1!@sN;Uk^?$`f6 zHLQgiQXM{vMgj=_uehee8)sg0Lsq$|nzdk4NEGU16)!f1A_WTt1c4yD6axpLN zjSXyCOg!j6*76%*y+;an_dZILljvEx`~IOe@-;R&v`pS$e;#VsvtdW3?uOI!6(NEEY;G`IEtn(@LuRRR7b`N!-obPC)VzdAIeNt zr_JD2bWbL;NyDJ@7On!&$RqZYeK@V@&u$!7_6G%z=QUhcKKAQ}dppOK*<>o6IGsvs znbQw74{s7kf;9*+fE=5 diff --git a/__pycache__/server_connection_tab.cpython-38.pyc b/__pycache__/server_connection_tab.cpython-38.pyc index bfb4c0b39939571d337e9c1b7cacf22267277ae5..dc4ca52272c8557eae2bf44b31f1a347e16fafa2 100644 GIT binary patch delta 617 zcmaEBaM+kHl$V!_0SE-YZ_dzH*~r(&#OSnvD9|uqrB;^dm#g``Q3r8`2o7^Q_ zP+#Ry!>~YfAsE-PmWb7`rf@bhO<*kIt6{8R$P!<`ypSPX{-ynj7Gn&p>SPoTr~_S0x8Jq znZas!fezXORLi?Sb|C{J(CQk7c;0XZm?QYWt^hhBg&~+hQ*d&N$jtg%!bPdM`6a3G z$@#gtiFql-@g<2#noPG?GV+T{isFDFSgH&pUhJRutZ(VFIlWK27CxQ1;^~CGXS26F zo3`P3*S2R3jn5YJTPc)k5~J?vl8rC6ECs3-2dkc}B5KJfH#tspfzBXp:44 - 启动应用程序 -2025-08-31 10:55:11.779 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 10:55:11.781 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 10:55:11.840 | INFO | server_connection_tab:init_ui:75 - 服务器连接标签页UI初始化完成 -2025-08-31 10:55:11.840 | INFO | server_connection_tab:load_config:78 - 加载配置文件 -2025-08-31 10:55:11.840 | INFO | server_connection_tab:load_config:87 - 配置文件不存在,将创建新文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 10:55:11.841 | INFO | remote_commands_tab:__init__:52 - 初始化远程命令标签页 -2025-08-31 10:55:11.842 | INFO | remote_commands_tab:init_ui:106 - 远程命令标签页UI初始化完成 -2025-08-31 10:55:11.843 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 10:55:45.065 | INFO | __main__:on_tab_changed:35 - 切换到标签页: 1 -2025-08-31 10:55:45.065 | INFO | remote_commands_tab:set_ssh_client:109 - 设置SSH客户端 -2025-08-31 10:55:46.858 | INFO | __main__:on_tab_changed:35 - 切换到标签页: 0 -2025-08-31 10:56:00.654 | INFO | server_connection_tab:save_config:114 - 保存配置 -2025-08-31 10:56:31.724 | INFO | __main__::44 - 启动应用程序 -2025-08-31 10:56:31.750 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 10:56:31.751 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 10:56:31.757 | INFO | server_connection_tab:init_ui:87 - 服务器连接标签页UI初始化完成 -2025-08-31 10:56:31.758 | INFO | server_connection_tab:load_config:90 - 加载配置文件 -2025-08-31 10:56:31.758 | INFO | server_connection_tab:load_config:99 - 配置文件不存在,将创建新文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 10:56:31.759 | INFO | remote_commands_tab:__init__:52 - 初始化远程命令标签页 -2025-08-31 10:56:31.760 | INFO | remote_commands_tab:init_ui:106 - 远程命令标签页UI初始化完成 -2025-08-31 10:56:31.760 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 10:56:42.212 | INFO | server_connection_tab:add_new_alias:126 - 添加新别名 -2025-08-31 10:56:42.214 | INFO | server_connection_tab:on_alias_changed:116 - 选择别名: 测试机 -2025-08-31 10:56:42.216 | INFO | server_connection_tab:add_new_alias:144 - 已添加新别名: 测试机 -2025-08-31 10:56:56.885 | INFO | server_connection_tab:save_config:147 - 保存配置 -2025-08-31 10:56:56.886 | INFO | server_connection_tab:save_config:171 - 配置已保存到: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 10:56:59.684 | INFO | server_connection_tab:connect_to_server:178 - 尝试连接服务器 -2025-08-31 10:56:59.855 | INFO | server_connection_tab:connect_to_server:197 - 成功连接到服务器: 192.168.3.157 -2025-08-31 10:57:02.873 | INFO | __main__:on_tab_changed:35 - 切换到标签页: 1 -2025-08-31 10:57:02.873 | INFO | remote_commands_tab:set_ssh_client:109 - 设置SSH客户端 -2025-08-31 10:57:03.659 | INFO | remote_commands_tab:install_git:120 - 安装Git -2025-08-31 10:57:03.664 | INFO | remote_commands_tab:run:18 - 执行远程命令: sudo apt update && sudo apt install -y git -2025-08-31 10:57:03.683 | ERROR | remote_commands_tab:run:40 - 命令执行失败,退出状态: 1 -2025-08-31 10:57:54.120 | INFO | __main__::44 - 启动应用程序 -2025-08-31 10:57:54.147 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 10:57:54.148 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 10:57:54.154 | INFO | server_connection_tab:init_ui:87 - 服务器连接标签页UI初始化完成 -2025-08-31 10:57:54.155 | INFO | server_connection_tab:load_config:90 - 加载配置文件 -2025-08-31 10:57:54.155 | INFO | server_connection_tab:load_config:97 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 10:57:54.156 | INFO | server_connection_tab:on_alias_changed:116 - 选择别名: 测试机 -2025-08-31 10:57:54.157 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 10:57:54.158 | INFO | remote_commands_tab:init_ui:170 - 远程命令标签页UI初始化完成 -2025-08-31 10:57:54.158 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 10:57:58.773 | INFO | __main__::44 - 启动应用程序 -2025-08-31 10:57:58.792 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 10:57:58.792 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 10:57:58.799 | INFO | server_connection_tab:init_ui:87 - 服务器连接标签页UI初始化完成 -2025-08-31 10:57:58.799 | INFO | server_connection_tab:load_config:90 - 加载配置文件 -2025-08-31 10:57:58.800 | INFO | server_connection_tab:load_config:97 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 10:57:58.800 | INFO | server_connection_tab:on_alias_changed:116 - 选择别名: 测试机 -2025-08-31 10:57:58.801 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 10:57:58.802 | INFO | remote_commands_tab:init_ui:170 - 远程命令标签页UI初始化完成 -2025-08-31 10:57:58.802 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 10:58:00.769 | INFO | server_connection_tab:connect_to_server:178 - 尝试连接服务器 -2025-08-31 10:58:00.859 | INFO | server_connection_tab:connect_to_server:197 - 成功连接到服务器: 192.168.3.157 -2025-08-31 10:58:02.607 | INFO | __main__:on_tab_changed:35 - 切换到标签页: 1 -2025-08-31 10:58:02.608 | INFO | remote_commands_tab:set_ssh_client:173 - 设置SSH客户端 -2025-08-31 10:58:03.712 | INFO | remote_commands_tab:install_git:184 - 安装Git -2025-08-31 10:58:03.714 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo apt update && sudo apt install -y git -2025-08-31 10:59:34.622 | INFO | remote_commands_tab:clone_repository:216 - 克隆仓库 -2025-08-31 10:59:34.624 | INFO | remote_commands_tab:run:53 - 执行远程命令: git clone http://192.168.3.241:3000/xiaji/django.remote.git -2025-08-31 10:59:34.684 | INFO | remote_commands_tab:run:101 - 命令执行成功: git clone http://192.168.3.241:3000/xiaji/django.remote.git -2025-08-31 11:00:00.984 | INFO | remote_commands_tab:clone_repository:216 - 克隆仓库 -2025-08-31 11:00:00.986 | INFO | remote_commands_tab:run:53 - 执行远程命令: git clone http://192.168.3.241:3000/xiaji/webstatus.git -2025-08-31 11:00:01.039 | INFO | remote_commands_tab:run:101 - 命令执行成功: git clone http://192.168.3.241:3000/xiaji/webstatus.git -2025-08-31 11:01:37.176 | INFO | __main__::52 - 启动应用程序 -2025-08-31 11:01:37.199 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 11:01:37.200 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:01:37.207 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:01:37.207 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:01:37.208 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:01:37.208 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:01:37.210 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:01:37.210 | INFO | remote_commands_tab:init_ui:184 - 远程命令标签页UI初始化完成 -2025-08-31 11:01:37.211 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 11:01:39.317 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:01:39.402 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:01:54.528 | INFO | server_connection_tab:save_config:155 - 保存配置 -2025-08-31 11:01:54.529 | INFO | server_connection_tab:save_config:181 - 配置已保存到: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:01:57.411 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:01:57.492 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:01:58.932 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 1 -2025-08-31 11:01:58.933 | INFO | remote_commands_tab:set_ssh_client:187 - 设置SSH客户端 -2025-08-31 11:01:58.933 | INFO | remote_commands_tab:set_server_config:198 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:02:03.902 | INFO | remote_commands_tab:clone_repository:235 - 克隆仓库 -2025-08-31 11:02:03.903 | INFO | remote_commands_tab:run:53 - 执行远程命令: mkdir -p /home/xiaji && cd /home/xiaji && git clone http://192.168.3.241:3000/xiaji/webstatus.git -2025-08-31 11:02:03.914 | ERROR | remote_commands_tab:run:104 - 命令执行失败,退出状态: 128 -2025-08-31 11:04:10.367 | INFO | __main__::56 - 启动应用程序 -2025-08-31 11:04:10.389 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 11:04:10.390 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:04:10.396 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:04:10.396 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:04:10.396 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:04:10.397 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:04:10.399 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:04:10.402 | INFO | remote_commands_tab:init_ui:226 - 远程命令标签页UI初始化完成 -2025-08-31 11:04:10.402 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 11:04:11.854 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:04:11.954 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:04:13.472 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 1 -2025-08-31 11:04:13.473 | INFO | remote_commands_tab:set_ssh_client:229 - 设置SSH客户端 -2025-08-31 11:04:13.474 | INFO | remote_commands_tab:set_server_config:240 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:04:13.475 | INFO | remote_commands_tab:refresh_directory:329 - 刷新目录列表 -2025-08-31 11:04:13.477 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:04:13.486 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:04:18.574 | INFO | remote_commands_tab:refresh_directory:329 - 刷新目录列表 -2025-08-31 11:04:18.576 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:04:18.584 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:05:13.449 | INFO | __main__::56 - 启动应用程序 -2025-08-31 11:05:13.473 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 11:05:13.474 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:05:13.482 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:05:13.482 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:05:13.482 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:05:13.484 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:05:13.485 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:05:13.486 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:05:13.486 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 11:05:25.546 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:05:25.636 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:05:28.431 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 1 -2025-08-31 11:05:28.432 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 11:05:28.433 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:05:28.433 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:05:28.433 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:05:28.435 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:05:28.447 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:05:38.554 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:05:38.555 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji/statuspage -2025-08-31 11:05:38.556 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/statuspage && pwd && ls -la -2025-08-31 11:05:38.563 | ERROR | remote_commands_tab:run:104 - 命令执行失败,退出状态: 1 -2025-08-31 11:06:07.009 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:06:07.010 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji/webstatus -2025-08-31 11:06:07.011 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/webstatus && pwd && ls -la -2025-08-31 11:06:07.020 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji/webstatus && pwd && ls -la -2025-08-31 11:37:09.947 | INFO | __main__::56 - 启动应用程序 -2025-08-31 11:37:09.970 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 11:37:09.970 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:37:09.976 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:37:09.977 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:37:09.977 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:37:09.977 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:37:09.979 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:37:09.980 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:37:09.980 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 11:37:11.457 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 1 -2025-08-31 11:37:11.457 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 11:37:11.458 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:37:11.459 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:37:14.189 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 0 -2025-08-31 11:37:15.578 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:37:15.665 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:37:18.338 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 1 -2025-08-31 11:37:18.338 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 11:37:18.339 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:37:18.339 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:37:18.339 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:37:18.340 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:37:18.349 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:37:22.084 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:37:22.084 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:37:22.086 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:37:22.095 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:37:39.611 | INFO | remote_commands_tab:clone_repository:285 - 克隆仓库 -2025-08-31 11:37:39.612 | INFO | remote_commands_tab:run:53 - 执行远程命令: mkdir -p /home/xiaji && cd /home/xiaji && git clone http://192.168.3.241:3000/xiaji/webstatus.git -2025-08-31 11:37:39.625 | ERROR | remote_commands_tab:run:104 - 命令执行失败,退出状态: 128 -2025-08-31 11:40:02.437 | INFO | __main__::56 - 启动应用程序 -2025-08-31 11:40:02.460 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 11:40:02.461 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:40:02.466 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:40:02.467 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:40:02.467 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:40:02.468 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:40:02.469 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:40:02.471 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:40:02.471 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 11:40:04.847 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:40:04.946 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:40:06.615 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 1 -2025-08-31 11:40:06.616 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 11:40:06.617 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:40:06.617 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:40:06.618 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:40:06.619 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:40:06.630 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:40:10.769 | INFO | remote_commands_tab:clone_repository:285 - 克隆仓库 -2025-08-31 11:40:10.771 | INFO | remote_commands_tab:run:53 - 执行远程命令: mkdir -p /home/xiaji && cd /home/xiaji && git clone http://192.168.3.241:3000/xiaji/webstatus.git . -2025-08-31 11:40:10.783 | ERROR | remote_commands_tab:run:104 - 命令执行失败,退出状态: 128 -2025-08-31 11:41:54.942 | INFO | __main__::56 - 启动应用程序 -2025-08-31 11:41:54.965 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 11:41:54.966 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:41:54.973 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:41:54.973 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:41:54.974 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:41:54.974 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:41:54.976 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:41:54.977 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:41:54.977 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 11:41:56.909 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:41:57.001 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:41:58.241 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 1 -2025-08-31 11:41:58.242 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 11:41:58.243 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:41:58.244 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:41:58.245 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:41:58.247 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:41:58.257 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:42:05.809 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:42:05.810 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:42:05.811 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:42:05.825 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:42:55.189 | INFO | __main__::56 - 启动应用程序 -2025-08-31 11:42:55.212 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 11:42:55.213 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:42:55.218 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:42:55.218 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:42:55.219 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:42:55.219 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:42:55.220 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:42:55.221 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:42:55.222 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 11:42:56.403 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:42:56.493 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:42:58.747 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 1 -2025-08-31 11:42:58.747 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 11:42:58.748 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:42:58.748 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:42:58.748 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:42:58.749 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:42:58.761 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:43:02.086 | INFO | remote_commands_tab:clone_repository:285 - 克隆仓库 -2025-08-31 11:43:02.088 | INFO | remote_commands_tab:run:53 - 执行远程命令: mkdir -p /home/xiaji && cd /home/xiaji && git clone --verbose http://192.168.3.241:3000/xiaji/webstatus.git . -2025-08-31 11:43:02.100 | ERROR | remote_commands_tab:run:104 - 命令执行失败,退出状态: 128 -2025-08-31 11:43:54.960 | INFO | __main__::56 - 启动应用程序 -2025-08-31 11:43:54.984 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 11:43:54.984 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:43:54.990 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:43:54.991 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:43:54.991 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:43:54.991 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:43:54.993 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:43:54.995 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:43:54.995 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 11:43:55.855 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:43:55.944 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:43:57.225 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 1 -2025-08-31 11:43:57.225 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 11:43:57.226 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:43:57.227 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:43:57.227 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:43:57.228 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:43:57.239 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:44:08.547 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:44:08.548 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji/webstatus -2025-08-31 11:44:08.550 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/webstatus && pwd && ls -la -2025-08-31 11:44:08.560 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji/webstatus && pwd && ls -la -2025-08-31 11:44:53.654 | INFO | __main__::56 - 启动应用程序 -2025-08-31 11:44:53.679 | INFO | __main__:__init__:13 - 初始化主窗口 -2025-08-31 11:44:53.679 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:44:53.686 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:44:53.686 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:44:53.687 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:44:53.687 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:44:53.689 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:44:53.690 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:44:53.691 | INFO | __main__:__init__:32 - 主窗口初始化完成 -2025-08-31 11:44:55.254 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:44:55.341 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:44:56.627 | INFO | __main__:on_tab_changed:35 - 标签页切换到: 1 -2025-08-31 11:44:56.627 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 11:44:56.628 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:44:56.628 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:44:56.628 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:44:56.629 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:44:56.640 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:44:58.890 | INFO | remote_commands_tab:clone_repository:285 - 克隆仓库 -2025-08-31 11:44:58.891 | INFO | remote_commands_tab:run:53 - 执行远程命令: mkdir -p /home/xiaji && cd /home/xiaji && git clone --verbose http://192.168.3.241:3000/xiaji/webstatus.git -2025-08-31 11:44:58.900 | ERROR | remote_commands_tab:run:104 - 命令执行失败,退出状态: 128 -2025-08-31 11:50:12.893 | INFO | __main__::66 - 启动应用程序 -2025-08-31 11:50:12.919 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 11:50:12.919 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:50:12.925 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:50:12.926 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:50:12.926 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:50:12.927 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:50:12.928 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:50:12.930 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:50:12.930 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 11:50:14.548 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:50:14.646 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:50:18.772 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 1 -2025-08-31 11:50:18.772 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 11:50:18.773 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:50:18.773 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:50:18.773 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:50:18.774 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:50:18.784 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:50:19.919 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 11:50:19.919 | INFO | django_tab:set_ssh_client:134 - Django标签页已设置SSH客户端 -2025-08-31 11:50:22.055 | INFO | django_tab:run:21 - 执行Django命令: sudo pip3 install django -2025-08-31 11:50:22.068 | ERROR | django_tab:run:32 - 命令错误: sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper -2025-08-31 11:50:22.069 | ERROR | django_tab:run:32 - 命令错误: sudo: a password is required -2025-08-31 11:50:22.069 | ERROR | django_tab:run:41 - 命令执行失败,退出状态: 1 -2025-08-31 11:50:22.071 | INFO | django_tab:on_command_finished:142 - Django命令执行完成 -2025-08-31 11:51:08.217 | INFO | __main__::66 - 启动应用程序 -2025-08-31 11:51:08.241 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 11:51:08.241 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:51:08.247 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:51:08.247 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:51:08.248 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:51:08.248 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:51:08.250 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:51:08.251 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:51:08.252 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 11:51:09.584 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:51:09.672 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:51:11.558 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 1 -2025-08-31 11:51:11.558 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 11:51:11.560 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 11:51:11.561 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 11:51:11.561 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 11:51:11.562 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 11:51:11.572 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 11:51:13.197 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 11:51:13.199 | INFO | django_tab:set_ssh_client:201 - Django标签页已设置SSH客户端 -2025-08-31 11:51:14.569 | INFO | django_tab:run:57 - 执行Django命令: sudo pip3 install django -2025-08-31 11:54:32.351 | INFO | __main__::73 - 启动应用程序 -2025-08-31 11:54:32.374 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 11:54:32.375 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:54:32.382 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:54:32.383 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:54:32.383 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:54:32.384 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:54:32.385 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:54:32.386 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:54:32.388 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 11:54:33.719 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:54:33.806 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:54:35.832 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 11:54:35.833 | INFO | django_tab:set_ssh_client:202 - Django标签页已设置SSH客户端 -2025-08-31 11:54:35.833 | INFO | django_tab:set_username:207 - Django标签页已设置用户名: xiaji -2025-08-31 11:54:39.090 | INFO | django_tab:run:57 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 11:54:39.101 | INFO | django_tab:process_manage_py_result:328 - 找到manage.py文件: /home/xiaji/webstatus/manage.py -2025-08-31 11:54:39.101 | INFO | django_tab:run:92 - 命令输出: /home/xiaji/webstatus/manage.py -2025-08-31 11:54:39.101 | INFO | django_tab:run:105 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 11:54:39.103 | INFO | django_tab:run:57 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 11:54:39.152 | INFO | django_tab:run:92 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 11:54:39.152 | INFO | django_tab:process_settings_py_result:355 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 11:54:39.152 | INFO | django_tab:run:105 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 11:54:39.153 | INFO | django_tab:on_command_finished:215 - Django命令执行完成 -2025-08-31 11:54:47.558 | INFO | django_tab:run:57 - 执行Django命令: sudo pip3 install django -2025-08-31 11:54:53.269 | INFO | django_tab:run:57 - 执行Django命令: pip3 list | grep Django -2025-08-31 11:54:53.278 | ERROR | django_tab:run:99 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 11:54:53.278 | ERROR | django_tab:run:108 - 命令执行失败,退出状态: 1 -2025-08-31 11:54:53.280 | INFO | django_tab:on_command_finished:215 - Django命令执行完成 -2025-08-31 11:54:55.069 | INFO | django_tab:run:57 - 执行Django命令: pip3 list | grep Django -2025-08-31 11:54:55.077 | ERROR | django_tab:run:99 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 11:54:55.078 | ERROR | django_tab:run:108 - 命令执行失败,退出状态: 1 -2025-08-31 11:54:55.079 | INFO | django_tab:on_command_finished:215 - Django命令执行完成 -2025-08-31 11:56:47.501 | INFO | __main__::73 - 启动应用程序 -2025-08-31 11:56:47.531 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 11:56:47.532 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:56:47.539 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:56:47.540 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:56:47.541 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:56:47.542 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:56:47.543 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:56:47.545 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:56:47.545 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 11:56:48.820 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:56:48.910 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:56:50.639 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 11:56:50.640 | INFO | django_tab:set_ssh_client:202 - Django标签页已设置SSH客户端 -2025-08-31 11:56:50.640 | INFO | django_tab:set_username:207 - Django标签页已设置用户名: xiaji -2025-08-31 11:56:52.641 | INFO | django_tab:run:57 - 执行Django命令: sudo apt install python3-pip -y -2025-08-31 11:57:15.256 | INFO | django_tab:run:57 - 执行Django命令: pip3 list | grep Django -2025-08-31 11:57:15.265 | ERROR | django_tab:run:99 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 11:57:15.265 | ERROR | django_tab:run:108 - 命令执行失败,退出状态: 1 -2025-08-31 11:57:15.267 | INFO | django_tab:on_command_finished:215 - Django命令执行完成 -2025-08-31 11:57:17.761 | INFO | django_tab:run:57 - 执行Django命令: sudo apt install python3-pip -y -2025-08-31 11:57:44.145 | INFO | __main__::73 - 启动应用程序 -2025-08-31 11:57:44.169 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 11:57:44.169 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:57:44.181 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:57:44.181 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:57:44.182 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:57:44.182 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:57:44.183 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:57:44.184 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:57:44.185 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 11:57:45.561 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:57:45.651 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:57:47.524 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 11:57:47.525 | INFO | django_tab:set_ssh_client:202 - Django标签页已设置SSH客户端 -2025-08-31 11:57:47.525 | INFO | django_tab:set_username:207 - Django标签页已设置用户名: xiaji -2025-08-31 11:58:14.822 | INFO | __main__::73 - 启动应用程序 -2025-08-31 11:58:14.847 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 11:58:14.848 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 11:58:14.853 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 11:58:14.854 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 11:58:14.854 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 11:58:14.854 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 11:58:14.857 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 11:58:14.859 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 11:58:14.859 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 11:58:16.130 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 11:58:16.239 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 11:58:18.723 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 11:58:18.725 | INFO | django_tab:set_ssh_client:232 - Django标签页已设置SSH客户端 -2025-08-31 11:58:18.727 | INFO | django_tab:set_username:237 - Django标签页已设置用户名: xiaji -2025-08-31 11:58:19.975 | INFO | django_tab:run:57 - 执行Django命令: pip3 list | grep Django -2025-08-31 11:58:19.984 | ERROR | django_tab:run:129 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 11:58:19.985 | ERROR | django_tab:run:138 - 命令执行失败,退出状态: 1 -2025-08-31 11:58:19.986 | INFO | django_tab:on_command_finished:245 - Django命令执行完成 -2025-08-31 11:58:23.621 | INFO | django_tab:run:57 - 执行Django命令: sudo apt install python3-pip -y -2025-08-31 11:59:37.350 | INFO | django_tab:run:57 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 11:59:37.362 | INFO | django_tab:run:122 - 命令输出: /home/xiaji/webstatus/manage.py -2025-08-31 11:59:37.362 | INFO | django_tab:process_manage_py_result:372 - 找到manage.py文件: /home/xiaji/webstatus/manage.py -2025-08-31 11:59:37.363 | INFO | django_tab:run:135 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 11:59:37.364 | INFO | django_tab:run:57 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 11:59:37.414 | INFO | django_tab:run:122 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 11:59:37.414 | INFO | django_tab:process_settings_py_result:399 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 11:59:37.414 | INFO | django_tab:run:135 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 11:59:37.415 | INFO | django_tab:on_command_finished:245 - Django命令执行完成 -2025-08-31 11:59:39.026 | INFO | django_tab:run:57 - 执行Django命令: cd /home/xiaji/webstatus && python3 manage.py runserver 0.0.0.0:8000 -2025-08-31 11:59:39.174 | ERROR | django_tab:run:129 - 命令错误: Traceback (most recent call last): -2025-08-31 11:59:39.176 | ERROR | django_tab:run:129 - 命令错误: File "/home/xiaji/webstatus/manage.py", line 11, in main -2025-08-31 11:59:39.176 | ERROR | django_tab:run:129 - 命令错误: from django.core.management import execute_from_command_line -2025-08-31 11:59:39.177 | ERROR | django_tab:run:129 - 命令错误: ModuleNotFoundError: No module named 'django' -2025-08-31 11:59:39.177 | ERROR | django_tab:run:129 - 命令错误: -2025-08-31 11:59:39.177 | ERROR | django_tab:run:129 - 命令错误: The above exception was the direct cause of the following exception: -2025-08-31 11:59:39.178 | ERROR | django_tab:run:129 - 命令错误: -2025-08-31 11:59:39.179 | ERROR | django_tab:run:129 - 命令错误: Traceback (most recent call last): -2025-08-31 11:59:39.179 | ERROR | django_tab:run:129 - 命令错误: File "/home/xiaji/webstatus/manage.py", line 22, in -2025-08-31 11:59:39.180 | ERROR | django_tab:run:129 - 命令错误: main() -2025-08-31 11:59:39.180 | ERROR | django_tab:run:129 - 命令错误: File "/home/xiaji/webstatus/manage.py", line 13, in main -2025-08-31 11:59:39.182 | ERROR | django_tab:run:129 - 命令错误: raise ImportError( -2025-08-31 11:59:39.183 | ERROR | django_tab:run:129 - 命令错误: ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment? -2025-08-31 11:59:39.183 | ERROR | django_tab:run:138 - 命令执行失败,退出状态: 1 -2025-08-31 11:59:39.186 | INFO | django_tab:on_command_finished:245 - Django命令执行完成 -2025-08-31 11:59:49.810 | INFO | django_tab:run:57 - 执行Django命令: pip3 list | grep Django -2025-08-31 11:59:49.820 | ERROR | django_tab:run:129 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 11:59:49.821 | ERROR | django_tab:run:138 - 命令执行失败,退出状态: 1 -2025-08-31 11:59:49.821 | INFO | django_tab:on_command_finished:245 - Django命令执行完成 -2025-08-31 11:59:53.567 | INFO | django_tab:download_settings:422 - settings.py已下载到: settings_backup_20250831_115953.py -2025-08-31 12:01:40.095 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:01:40.121 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:01:40.122 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:01:40.129 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:01:40.129 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:01:40.130 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:01:40.130 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:01:40.132 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 12:01:40.135 | INFO | remote_commands_tab:init_ui:229 - 远程命令标签页UI初始化完成 -2025-08-31 12:01:40.136 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:01:42.110 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:01:42.208 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:01:43.858 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 1 -2025-08-31 12:01:43.859 | INFO | remote_commands_tab:set_ssh_client:232 - 设置SSH客户端 -2025-08-31 12:01:43.859 | INFO | remote_commands_tab:set_server_config:243 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 12:01:43.861 | INFO | remote_commands_tab:refresh_directory:332 - 刷新目录列表 -2025-08-31 12:01:43.861 | INFO | remote_commands_tab:refresh_directory:344 - 使用用户输入目录: /home/xiaji -2025-08-31 12:01:43.862 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 12:01:43.871 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 12:01:45.194 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:01:45.195 | INFO | django_tab:set_ssh_client:249 - Django标签页已设置SSH客户端 -2025-08-31 12:01:45.195 | INFO | django_tab:set_username:254 - Django标签页已设置用户名: xiaji -2025-08-31 12:01:46.523 | INFO | django_tab:run:57 - 执行Django命令: sudo apt install python3-pip -y -2025-08-31 12:01:58.327 | INFO | django_tab:run:57 - 执行Django命令: pip3 list | grep Django -2025-08-31 12:01:58.336 | ERROR | django_tab:run:129 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 12:01:58.337 | ERROR | django_tab:run:138 - 命令执行失败,退出状态: 1 -2025-08-31 12:01:58.339 | INFO | django_tab:on_command_finished:262 - Django命令执行完成 -2025-08-31 12:03:54.709 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:03:54.732 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:03:54.732 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:03:54.739 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:03:54.739 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:03:54.740 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:03:54.740 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:03:54.742 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 12:03:54.743 | INFO | remote_commands_tab:init_ui:252 - 远程命令标签页UI初始化完成 -2025-08-31 12:03:54.744 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:03:56.261 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:03:56.351 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:03:58.091 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 1 -2025-08-31 12:03:58.092 | INFO | remote_commands_tab:set_ssh_client:255 - 设置SSH客户端 -2025-08-31 12:03:58.092 | INFO | remote_commands_tab:set_server_config:266 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 12:03:58.093 | INFO | remote_commands_tab:refresh_directory:355 - 刷新目录列表 -2025-08-31 12:03:58.093 | INFO | remote_commands_tab:refresh_directory:367 - 使用用户输入目录: /home/xiaji -2025-08-31 12:03:58.094 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 12:03:58.104 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 12:03:58.109 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: /home/xiaji -2025-08-31 12:03:58.109 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: total 84 -2025-08-31 12:03:58.109 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 03:17 . -2025-08-31 12:03:58.110 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. -2025-08-31 12:03:58.110 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout -2025-08-31 12:03:58.111 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc -2025-08-31 12:03:58.111 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 02:56 .cache -2025-08-31 12:03:58.111 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 02:59 django.remote -2025-08-31 12:03:58.112 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile -2025-08-31 12:03:58.112 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh -2025-08-31 12:03:58.112 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 02:59 webstatus -2025-08-31 12:03:58.113 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 03:33 xiaji -2025-08-31 12:03:58.113 | INFO | remote_commands_tab:on_dir_refresh_finished:387 - 目录列表刷新成功 -2025-08-31 12:04:01.061 | INFO | remote_commands_tab:set_timezone:395 - 设置时区为北京时区 -2025-08-31 12:04:02.346 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo timedatectl set-timezone Asia/Shanghai -2025-08-31 12:04:09.774 | INFO | remote_commands_tab:reboot_server:446 - 重启服务器 -2025-08-31 12:04:11.373 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo reboot -2025-08-31 12:04:14.248 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 0 -2025-08-31 12:04:15.455 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:04:15.537 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:04:19.266 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:04:19.352 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:04:21.496 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 1 -2025-08-31 12:04:21.496 | INFO | remote_commands_tab:set_ssh_client:255 - 设置SSH客户端 -2025-08-31 12:04:21.497 | INFO | remote_commands_tab:set_server_config:266 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 12:04:21.497 | INFO | remote_commands_tab:refresh_directory:355 - 刷新目录列表 -2025-08-31 12:04:21.497 | INFO | remote_commands_tab:refresh_directory:367 - 使用用户输入目录: /home/xiaji -2025-08-31 12:04:21.499 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 12:04:21.508 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: /home/xiaji -2025-08-31 12:04:21.509 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: total 84 -2025-08-31 12:04:21.509 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 12:04:21.509 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 03:17 . -2025-08-31 12:04:21.510 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. -2025-08-31 12:04:21.511 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout -2025-08-31 12:04:21.511 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc -2025-08-31 12:04:21.512 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 02:56 .cache -2025-08-31 12:04:21.512 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 02:59 django.remote -2025-08-31 12:04:21.512 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile -2025-08-31 12:04:21.513 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh -2025-08-31 12:04:21.513 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 02:59 webstatus -2025-08-31 12:04:21.513 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 03:33 xiaji -2025-08-31 12:04:21.513 | INFO | remote_commands_tab:on_dir_refresh_finished:387 - 目录列表刷新成功 -2025-08-31 12:04:24.593 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:04:24.594 | INFO | django_tab:set_ssh_client:270 - Django标签页已设置SSH客户端 -2025-08-31 12:04:24.594 | INFO | django_tab:set_username:275 - Django标签页已设置用户名: xiaji -2025-08-31 12:04:26.295 | INFO | django_tab:run:57 - 执行Django命令: sudo apt install python3-pip -y -2025-08-31 12:04:46.725 | ERROR | remote_commands_tab:run:104 - 命令执行失败,退出状态: -1 -2025-08-31 12:05:32.307 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:05:32.331 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:05:32.332 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:05:32.338 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:05:32.338 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:05:32.339 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:05:32.339 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:05:32.340 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 12:05:32.342 | INFO | remote_commands_tab:init_ui:252 - 远程命令标签页UI初始化完成 -2025-08-31 12:05:32.343 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:05:34.113 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:05:34.201 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:05:35.614 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:05:35.615 | INFO | django_tab:set_ssh_client:270 - Django标签页已设置SSH客户端 -2025-08-31 12:05:35.615 | INFO | django_tab:set_username:275 - Django标签页已设置用户名: xiaji -2025-08-31 12:05:38.420 | INFO | django_tab:run:57 - 执行Django命令: sudo apt install python3-pip -2025-08-31 12:05:52.071 | INFO | django_tab:run:57 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 12:05:52.080 | INFO | django_tab:run:143 - 命令输出: /home/xiaji/webstatus/manage.py -2025-08-31 12:05:52.081 | INFO | django_tab:process_manage_py_result:410 - 找到manage.py文件: /home/xiaji/webstatus/manage.py -2025-08-31 12:05:52.081 | INFO | django_tab:run:156 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 12:05:52.083 | INFO | django_tab:run:57 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 12:05:52.133 | INFO | django_tab:run:143 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:05:52.133 | INFO | django_tab:process_settings_py_result:437 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:05:52.133 | INFO | django_tab:run:156 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 12:05:52.134 | INFO | django_tab:on_command_finished:283 - Django命令执行完成 -2025-08-31 12:05:59.266 | INFO | django_tab:download_settings:462 - settings.py已加载到编辑器: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:06:06.617 | INFO | django_tab:run:57 - 执行Django命令: pip3 list | grep Django -2025-08-31 12:06:06.626 | ERROR | django_tab:run:150 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 12:06:06.626 | ERROR | django_tab:run:159 - 命令执行失败,退出状态: 1 -2025-08-31 12:06:06.628 | INFO | django_tab:on_command_finished:283 - Django命令执行完成 -2025-08-31 12:06:09.544 | INFO | django_tab:run:57 - 执行Django命令: sudo apt install python3-pip -2025-08-31 12:08:06.341 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:08:06.363 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:08:06.363 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:08:06.371 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:08:06.371 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:08:06.372 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:08:06.372 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:08:06.373 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 12:08:06.375 | INFO | remote_commands_tab:init_ui:252 - 远程命令标签页UI初始化完成 -2025-08-31 12:08:06.376 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:08:07.652 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:08:07.741 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:08:09.766 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 1 -2025-08-31 12:08:09.767 | INFO | remote_commands_tab:set_ssh_client:255 - 设置SSH客户端 -2025-08-31 12:08:09.767 | INFO | remote_commands_tab:set_server_config:266 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 12:08:09.768 | INFO | remote_commands_tab:refresh_directory:355 - 刷新目录列表 -2025-08-31 12:08:09.768 | INFO | remote_commands_tab:refresh_directory:367 - 使用用户输入目录: /home/xiaji -2025-08-31 12:08:09.770 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 12:08:09.779 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: /home/xiaji -2025-08-31 12:08:09.780 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 12:08:09.780 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: total 84 -2025-08-31 12:08:09.781 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 03:17 . -2025-08-31 12:08:09.781 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. -2025-08-31 12:08:09.782 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout -2025-08-31 12:08:09.782 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc -2025-08-31 12:08:09.782 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 02:56 .cache -2025-08-31 12:08:09.782 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 02:59 django.remote -2025-08-31 12:08:09.783 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile -2025-08-31 12:08:09.783 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh -2025-08-31 12:08:09.783 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 02:59 webstatus -2025-08-31 12:08:09.783 | INFO | remote_commands_tab:append_dir_output:381 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 03:33 xiaji -2025-08-31 12:08:09.785 | INFO | remote_commands_tab:on_dir_refresh_finished:387 - 目录列表刷新成功 -2025-08-31 12:08:12.487 | INFO | remote_commands_tab:set_timezone:395 - 设置时区为北京时区 -2025-08-31 12:08:13.691 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo timedatectl set-timezone Asia/Shanghai -2025-08-31 12:08:15.997 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:08:15.998 | INFO | django_tab:set_ssh_client:291 - Django标签页已设置SSH客户端 -2025-08-31 12:08:15.998 | INFO | django_tab:set_username:296 - Django标签页已设置用户名: xiaji -2025-08-31 12:08:18.262 | INFO | django_tab:run:57 - 执行Django命令: sudo apt install python3-pip -2025-08-31 12:12:38.278 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:12:38.304 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:12:38.305 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:12:38.311 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:12:38.312 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:12:38.313 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:12:38.313 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:12:38.314 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 12:12:38.316 | INFO | remote_commands_tab:init_ui:252 - 远程命令标签页UI初始化完成 -2025-08-31 12:12:38.317 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:12:39.573 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:12:39.669 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:12:41.242 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:12:41.243 | INFO | django_tab:set_ssh_client:297 - Django标签页已设置SSH客户端 -2025-08-31 12:12:41.243 | INFO | django_tab:set_username:302 - Django标签页已设置用户名: xiaji -2025-08-31 12:12:41.857 | INFO | django_tab:run:58 - 执行Django命令: sudo apt install -y -v python3-pip -2025-08-31 12:14:16.554 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:14:16.576 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:14:16.577 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:14:16.583 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:14:16.584 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:14:16.584 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:14:16.584 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:14:16.586 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 12:14:16.587 | INFO | remote_commands_tab:init_ui:257 - 远程命令标签页UI初始化完成 -2025-08-31 12:14:16.588 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:14:18.055 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:14:18.143 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:14:19.906 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:14:19.906 | INFO | django_tab:set_ssh_client:297 - Django标签页已设置SSH客户端 -2025-08-31 12:14:19.907 | INFO | django_tab:set_username:302 - Django标签页已设置用户名: xiaji -2025-08-31 12:14:20.718 | INFO | django_tab:run:58 - 执行Django命令: sudo apt install -y -v python3-pip -2025-08-31 12:17:12.265 | INFO | django_tab:run:58 - 执行Django命令: pip3 list | grep Django -2025-08-31 12:17:12.276 | ERROR | django_tab:run:177 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 12:17:12.277 | ERROR | django_tab:run:186 - 命令执行失败,退出状态: 1 -2025-08-31 12:17:12.278 | INFO | django_tab:on_command_finished:310 - Django命令执行完成 -2025-08-31 12:17:14.516 | INFO | django_tab:run:58 - 执行Django命令: sudo apt install -y -v python3-pip -2025-08-31 12:17:15.418 | INFO | django_tab:run:58 - 执行Django命令: sudo apt install -y -v python3-pip -2025-08-31 12:17:15.599 | INFO | django_tab:run:58 - 执行Django命令: sudo apt install -y -v python3-pip -2025-08-31 12:17:15.753 | INFO | django_tab:run:58 - 执行Django命令: sudo apt install -y -v python3-pip -2025-08-31 12:17:15.897 | INFO | django_tab:run:58 - 执行Django命令: sudo apt install -y -v python3-pip -2025-08-31 12:17:16.070 | INFO | django_tab:run:58 - 执行Django命令: sudo apt install -y -v python3-pip -2025-08-31 12:28:14.682 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:28:14.713 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:28:14.713 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:28:14.719 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:28:14.720 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:28:14.720 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:28:14.723 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:28:14.729 | INFO | remote_commands_tab:__init__:116 - 初始化远程命令标签页 -2025-08-31 12:28:14.732 | INFO | remote_commands_tab:init_ui:257 - 远程命令标签页UI初始化完成 -2025-08-31 12:28:14.734 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:28:16.581 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:28:16.677 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:28:18.548 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 1 -2025-08-31 12:28:18.549 | INFO | remote_commands_tab:set_ssh_client:260 - 设置SSH客户端 -2025-08-31 12:28:18.550 | INFO | remote_commands_tab:set_server_config:271 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 12:28:18.551 | INFO | remote_commands_tab:refresh_directory:360 - 刷新目录列表 -2025-08-31 12:28:18.551 | INFO | remote_commands_tab:refresh_directory:372 - 使用用户输入目录: /home/xiaji -2025-08-31 12:28:18.553 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 12:28:18.560 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: /home/xiaji -2025-08-31 12:28:18.561 | INFO | remote_commands_tab:run:101 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 12:28:18.564 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: total 84 -2025-08-31 12:28:18.564 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 03:17 . -2025-08-31 12:28:18.565 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. -2025-08-31 12:28:18.565 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout -2025-08-31 12:28:18.565 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc -2025-08-31 12:28:18.566 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 02:56 .cache -2025-08-31 12:28:18.566 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 02:59 django.remote -2025-08-31 12:28:18.566 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile -2025-08-31 12:28:18.567 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh -2025-08-31 12:28:18.567 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 02:59 webstatus -2025-08-31 12:28:18.567 | INFO | remote_commands_tab:append_dir_output:386 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 03:33 xiaji -2025-08-31 12:28:18.567 | INFO | remote_commands_tab:on_dir_refresh_finished:392 - 目录列表刷新成功 -2025-08-31 12:28:21.355 | INFO | remote_commands_tab:configure_sudo_nopasswd:521 - 配置sudo免密 -2025-08-31 12:28:23.426 | INFO | remote_commands_tab:run:53 - 执行远程命令: whoami && echo ' -' | sudo -S visudo -c && (echo ' -' | 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) -2025-08-31 12:28:25.388 | INFO | remote_commands_tab:request_password:298 - 请求输入sudo密码 -2025-08-31 12:28:28.907 | ERROR | remote_commands_tab:run:108 - 执行命令时发生错误: Socket is closed -2025-08-31 12:28:35.787 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:28:35.788 | INFO | django_tab:set_ssh_client:297 - Django标签页已设置SSH客户端 -2025-08-31 12:28:35.789 | INFO | django_tab:set_username:302 - Django标签页已设置用户名: xiaji -2025-08-31 12:28:36.671 | INFO | django_tab:run:58 - 执行Django命令: sudo apt install -y -v python3-pip -2025-08-31 12:36:47.844 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:36:47.867 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:36:47.867 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:36:47.874 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:36:47.874 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:36:47.875 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:36:47.876 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:36:47.877 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 -2025-08-31 12:36:47.878 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 -2025-08-31 12:36:47.879 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:36:52.798 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:36:52.896 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:36:59.623 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 1 -2025-08-31 12:36:59.624 | INFO | remote_commands_tab:set_ssh_client:279 - 设置SSH客户端 -2025-08-31 12:36:59.624 | INFO | remote_commands_tab:set_server_config:290 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 12:36:59.625 | INFO | remote_commands_tab:refresh_directory:389 - 刷新目录列表 -2025-08-31 12:36:59.625 | INFO | remote_commands_tab:refresh_directory:401 - 使用用户输入目录: /home/xiaji -2025-08-31 12:36:59.626 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 12:36:59.636 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: /home/xiaji -2025-08-31 12:36:59.636 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 12:36:59.636 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: total 84 -2025-08-31 12:36:59.637 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 03:17 . -2025-08-31 12:36:59.638 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. -2025-08-31 12:36:59.638 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout -2025-08-31 12:36:59.638 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc -2025-08-31 12:36:59.639 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 02:56 .cache -2025-08-31 12:36:59.639 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 02:59 django.remote -2025-08-31 12:36:59.639 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile -2025-08-31 12:36:59.639 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh -2025-08-31 12:36:59.640 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 02:59 webstatus -2025-08-31 12:36:59.640 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 03:33 xiaji -2025-08-31 12:36:59.640 | INFO | remote_commands_tab:on_dir_refresh_finished:421 - 目录列表刷新成功 -2025-08-31 12:36:59.947 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:36:59.948 | INFO | django_tab:set_ssh_client:297 - Django标签页已设置SSH客户端 -2025-08-31 12:36:59.948 | INFO | django_tab:set_username:302 - Django标签页已设置用户名: xiaji -2025-08-31 12:37:00.651 | INFO | django_tab:run:58 - 执行Django命令: sudo apt install -y -v python3-pip -2025-08-31 12:37:07.983 | INFO | django_tab:run:58 - 执行Django命令: pip3 list | grep Django -2025-08-31 12:37:07.991 | ERROR | django_tab:run:177 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 12:37:07.992 | ERROR | django_tab:run:186 - 命令执行失败,退出状态: 1 -2025-08-31 12:37:07.993 | INFO | django_tab:on_command_finished:310 - Django命令执行完成 -2025-08-31 12:37:08.763 | INFO | django_tab:run:58 - 执行Django命令: pip3 list | grep Django -2025-08-31 12:37:08.772 | ERROR | django_tab:run:177 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 12:37:08.772 | ERROR | django_tab:run:186 - 命令执行失败,退出状态: 1 -2025-08-31 12:37:08.774 | INFO | django_tab:on_command_finished:310 - Django命令执行完成 -2025-08-31 12:37:08.922 | INFO | django_tab:run:58 - 执行Django命令: pip3 list | grep Django -2025-08-31 12:37:08.931 | ERROR | django_tab:run:177 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 12:37:08.932 | ERROR | django_tab:run:186 - 命令执行失败,退出状态: 1 -2025-08-31 12:37:08.933 | INFO | django_tab:on_command_finished:310 - Django命令执行完成 -2025-08-31 12:37:09.089 | INFO | django_tab:run:58 - 执行Django命令: pip3 list | grep Django -2025-08-31 12:37:09.099 | ERROR | django_tab:run:177 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 12:37:09.099 | ERROR | django_tab:run:186 - 命令执行失败,退出状态: 1 -2025-08-31 12:37:09.100 | INFO | django_tab:on_command_finished:310 - Django命令执行完成 -2025-08-31 12:37:09.243 | INFO | django_tab:run:58 - 执行Django命令: pip3 list | grep Django -2025-08-31 12:37:09.252 | ERROR | django_tab:run:177 - 命令错误: bash: line 1: pip3: command not found -2025-08-31 12:37:09.252 | ERROR | django_tab:run:186 - 命令执行失败,退出状态: 1 -2025-08-31 12:37:09.253 | INFO | django_tab:on_command_finished:310 - Django命令执行完成 -2025-08-31 12:38:41.959 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:38:41.981 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:38:41.982 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:38:41.989 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:38:41.989 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:38:41.990 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:38:41.991 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:38:41.992 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 -2025-08-31 12:38:41.994 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 -2025-08-31 12:38:41.995 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:38:44.126 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:38:44.214 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:39:18.310 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 1 -2025-08-31 12:39:18.310 | INFO | remote_commands_tab:set_ssh_client:279 - 设置SSH客户端 -2025-08-31 12:39:18.311 | INFO | remote_commands_tab:set_server_config:290 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji -2025-08-31 12:39:18.311 | INFO | remote_commands_tab:refresh_directory:389 - 刷新目录列表 -2025-08-31 12:39:18.311 | INFO | remote_commands_tab:refresh_directory:401 - 使用用户输入目录: /home/xiaji -2025-08-31 12:39:18.312 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la -2025-08-31 12:39:18.321 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: /home/xiaji -2025-08-31 12:39:18.322 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji && pwd && ls -la -2025-08-31 12:39:18.322 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: total 84 -2025-08-31 12:39:18.323 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 03:17 . -2025-08-31 12:39:18.324 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. -2025-08-31 12:39:18.324 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout -2025-08-31 12:39:18.325 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc -2025-08-31 12:39:18.325 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 02:56 .cache -2025-08-31 12:39:18.325 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 02:59 django.remote -2025-08-31 12:39:18.326 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile -2025-08-31 12:39:18.326 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh -2025-08-31 12:39:18.326 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 02:59 webstatus -2025-08-31 12:39:18.327 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 03:33 xiaji -2025-08-31 12:39:18.327 | INFO | remote_commands_tab:on_dir_refresh_finished:421 - 目录列表刷新成功 -2025-08-31 12:39:18.637 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:39:18.638 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 -2025-08-31 12:39:18.638 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji -2025-08-31 12:39:24.944 | INFO | django_tab:on_install_progress:180 - Django安装进度: 10% -2025-08-31 12:39:24.965 | INFO | django_tab:on_install_progress:180 - Django安装进度: 30% -2025-08-31 12:39:25.014 | INFO | django_tab:on_install_progress:180 - Django安装进度: 50% -2025-08-31 12:39:40.121 | INFO | django_tab:on_install_progress:180 - Django安装进度: 90% -2025-08-31 12:39:40.319 | INFO | django_threads:run:54 - Django安装成功: 4.2.15 -2025-08-31 12:39:40.320 | INFO | django_tab:on_install_result:186 - Django安装成功: Django安装成功: 4.2.15 -2025-08-31 12:39:46.796 | INFO | django_threads:run:85 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 12:39:46.806 | INFO | django_threads:run:197 - 命令输出: /home/xiaji/webstatus/manage.py -2025-08-31 12:39:46.806 | INFO | django_tab:process_manage_py_result:288 - 找到manage.py文件: /home/xiaji/webstatus/manage.py -2025-08-31 12:39:46.807 | INFO | django_threads:run:210 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 12:39:46.808 | INFO | django_threads:run:85 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 12:39:46.857 | INFO | django_threads:run:197 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:39:46.857 | INFO | django_tab:process_settings_py_result:315 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:39:46.858 | INFO | django_threads:run:210 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 12:39:46.859 | INFO | django_tab:on_command_finished:155 - Django命令执行完成 -2025-08-31 12:39:48.404 | INFO | django_threads:run:85 - 执行Django命令: cd /home/xiaji/webstatus && python3 manage.py runserver 0.0.0.0:8000 -2025-08-31 12:39:48.933 | INFO | django_threads:run:197 - 命令输出: Performing system checks... -2025-08-31 12:39:48.934 | INFO | django_threads:run:197 - 命令输出: -2025-08-31 12:39:48.960 | INFO | django_threads:run:197 - 命令输出: System check identified no issues (0 silenced). -2025-08-31 12:39:48.984 | INFO | django_threads:run:197 - 命令输出: August 31, 2025 - 12:39:47 -2025-08-31 12:39:48.986 | INFO | django_threads:run:197 - 命令输出: Django version 4.2.15, using settings 'statuspage.settings' -2025-08-31 12:39:48.987 | INFO | django_threads:run:197 - 命令输出: Starting development server at http://0.0.0.0:8000/ -2025-08-31 12:39:48.988 | INFO | django_threads:run:197 - 命令输出: Quit the server with CONTROL-C. -2025-08-31 12:39:48.988 | INFO | django_threads:run:197 - 命令输出: -2025-08-31 12:40:06.466 | INFO | django_tab:download_settings:340 - settings.py已加载到编辑器: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:55:01.455 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:55:01.480 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:55:01.480 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:55:01.487 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:55:01.487 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:55:01.488 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:55:01.488 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:55:01.490 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 -2025-08-31 12:55:01.491 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 -2025-08-31 12:55:01.492 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:55:05.316 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:55:05.402 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:55:07.197 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:55:07.197 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 -2025-08-31 12:55:07.197 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji -2025-08-31 12:55:11.461 | INFO | django_threads:run:85 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 12:55:11.472 | INFO | django_threads:run:197 - 命令输出: /home/xiaji/webstatus/manage.py -2025-08-31 12:55:11.472 | INFO | django_tab:process_manage_py_result:288 - 找到manage.py文件: /home/xiaji/webstatus/manage.py -2025-08-31 12:55:11.473 | INFO | django_threads:run:210 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 12:55:11.475 | INFO | django_threads:run:85 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 12:55:11.523 | INFO | django_threads:run:197 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:55:11.523 | INFO | django_tab:process_settings_py_result:315 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:55:11.523 | INFO | django_threads:run:210 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 12:55:11.524 | INFO | django_tab:on_command_finished:155 - Django命令执行完成 -2025-08-31 12:55:12.221 | INFO | django_tab:download_settings:340 - settings.py已加载到编辑器: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:57:27.532 | INFO | __main__::73 - 启动应用程序 -2025-08-31 12:57:27.554 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 12:57:27.555 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 12:57:27.562 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 12:57:27.562 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 12:57:27.563 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 12:57:27.563 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 12:57:27.564 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 -2025-08-31 12:57:27.566 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 -2025-08-31 12:57:27.567 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 12:57:28.922 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 12:57:29.009 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 12:58:29.681 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 12:58:29.682 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 -2025-08-31 12:58:29.682 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji -2025-08-31 12:58:33.077 | INFO | django_threads:run:85 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 12:58:33.089 | INFO | django_threads:run:197 - 命令输出: /home/xiaji/webstatus/manage.py -2025-08-31 12:58:33.089 | INFO | django_tab:process_manage_py_result:288 - 找到manage.py文件: /home/xiaji/webstatus/manage.py -2025-08-31 12:58:33.089 | INFO | django_threads:run:210 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 12:58:33.091 | INFO | django_threads:run:85 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 12:58:33.140 | INFO | django_threads:run:197 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:58:33.140 | INFO | django_tab:process_settings_py_result:315 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:58:33.141 | INFO | django_threads:run:210 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 12:58:33.142 | INFO | django_tab:on_command_finished:155 - Django命令执行完成 -2025-08-31 12:58:34.017 | INFO | django_threads:run:85 - 执行Django命令: cd /home/xiaji/webstatus && python3 manage.py runserver 0.0.0.0:8000 -2025-08-31 12:58:34.552 | INFO | django_threads:run:197 - 命令输出: Performing system checks... -2025-08-31 12:58:34.552 | INFO | django_threads:run:197 - 命令输出: -2025-08-31 12:58:34.575 | INFO | django_threads:run:197 - 命令输出: System check identified no issues (0 silenced). -2025-08-31 12:58:34.655 | ERROR | django_threads:run:204 - 命令错误: Watching for file changes with StatReloader -2025-08-31 12:58:34.656 | ERROR | django_threads:run:204 - 命令错误: Error: That port is already in use. -2025-08-31 12:58:34.657 | ERROR | django_threads:run:213 - 命令执行失败,退出状态: 1 -2025-08-31 12:58:34.658 | INFO | django_tab:on_command_finished:155 - Django命令执行完成 -2025-08-31 12:58:36.203 | INFO | django_tab:download_settings:340 - settings.py已加载到编辑器: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 12:59:03.421 | INFO | django_tab:upload_settings:426 - 开始上传settings.py文件: C:/Users/xiaji/Documents/个人文件夹/夏骥/桌面部署/settings_backup_20250831_115953.py -2025-08-31 12:59:03.500 | ERROR | django_threads:run:261 - settings.py上传失败: 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 12:59:03.500 | ERROR | django_tab:on_upload_result:441 - settings.py上传失败: 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 13:00:29.853 | INFO | __main__::73 - 启动应用程序 -2025-08-31 13:00:29.877 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 13:00:29.878 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 13:00:29.884 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 13:00:29.884 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 13:00:29.884 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 13:00:29.886 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 13:00:29.887 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 -2025-08-31 13:00:29.888 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 -2025-08-31 13:00:29.890 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 13:00:33.127 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 13:00:33.217 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 13:00:34.538 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 13:00:34.539 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 -2025-08-31 13:00:34.539 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji -2025-08-31 13:00:37.157 | INFO | django_threads:run:85 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 13:00:37.167 | INFO | django_threads:run:197 - 命令输出: /home/xiaji/webstatus/manage.py -2025-08-31 13:00:37.167 | INFO | django_tab:process_manage_py_result:288 - 找到manage.py文件: /home/xiaji/webstatus/manage.py -2025-08-31 13:00:37.167 | INFO | django_threads:run:210 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 13:00:37.169 | INFO | django_threads:run:85 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 13:00:37.218 | INFO | django_threads:run:197 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 13:00:37.218 | INFO | django_tab:process_settings_py_result:315 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 13:00:37.218 | INFO | django_threads:run:210 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 13:00:37.219 | INFO | django_tab:on_command_finished:155 - Django命令执行完成 -2025-08-31 13:00:38.230 | INFO | django_threads:run:85 - 执行Django命令: cd /home/xiaji/webstatus && python3 manage.py runserver 0.0.0.0:8000 -2025-08-31 13:00:38.750 | INFO | django_threads:run:197 - 命令输出: Performing system checks... -2025-08-31 13:00:38.751 | INFO | django_threads:run:197 - 命令输出: -2025-08-31 13:00:38.774 | INFO | django_threads:run:197 - 命令输出: System check identified no issues (0 silenced). -2025-08-31 13:00:38.852 | ERROR | django_threads:run:204 - 命令错误: Watching for file changes with StatReloader -2025-08-31 13:00:38.853 | ERROR | django_threads:run:204 - 命令错误: Error: That port is already in use. -2025-08-31 13:00:38.854 | ERROR | django_threads:run:213 - 命令执行失败,退出状态: 1 -2025-08-31 13:00:38.856 | INFO | django_tab:on_command_finished:155 - Django命令执行完成 -2025-08-31 13:01:05.516 | INFO | django_tab:upload_settings:426 - 开始上传settings.py文件: C:/Users/xiaji/Documents/个人文件夹/夏骥/桌面部署/settings.py -2025-08-31 13:01:05.593 | ERROR | django_threads:run:263 - 备份原文件失败: 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 13:01:05.594 | ERROR | django_tab:on_upload_result:441 - settings.py上传失败: 备份原文件失败: 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 13:01:57.247 | INFO | __main__::73 - 启动应用程序 -2025-08-31 13:01:57.271 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 13:01:57.272 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 13:01:57.278 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 13:01:57.279 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 13:01:57.279 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 13:01:57.280 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 13:01:57.281 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 -2025-08-31 13:01:57.282 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 -2025-08-31 13:01:57.283 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 13:02:01.683 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 13:02:01.773 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 13:02:03.835 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 13:02:03.835 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 -2025-08-31 13:02:03.836 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji -2025-08-31 13:02:05.469 | INFO | django_threads:run:85 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 13:02:05.478 | INFO | django_threads:run:197 - 命令输出: /home/xiaji/webstatus/manage.py -2025-08-31 13:02:05.479 | INFO | django_tab:process_manage_py_result:288 - 找到manage.py文件: /home/xiaji/webstatus/manage.py -2025-08-31 13:02:05.479 | INFO | django_threads:run:210 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 13:02:05.481 | INFO | django_threads:run:85 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 13:02:05.529 | INFO | django_threads:run:197 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 13:02:05.530 | INFO | django_tab:process_settings_py_result:315 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 13:02:05.530 | INFO | django_threads:run:210 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 13:02:05.531 | INFO | django_tab:on_command_finished:155 - Django命令执行完成 -2025-08-31 13:02:11.447 | INFO | django_tab:upload_settings:427 - 开始上传settings.py文件: C:/Users/xiaji/Documents/个人文件夹/夏骥/桌面部署/settings.py -2025-08-31 13:05:46.775 | INFO | __main__::73 - 启动应用程序 -2025-08-31 13:05:46.798 | INFO | __main__:__init__:14 - 初始化主窗口 -2025-08-31 13:05:46.799 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 -2025-08-31 13:05:46.804 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 -2025-08-31 13:05:46.805 | INFO | server_connection_tab:load_config:96 - 加载配置文件 -2025-08-31 13:05:46.805 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json -2025-08-31 13:05:46.806 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 -2025-08-31 13:05:46.807 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 -2025-08-31 13:05:46.808 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 -2025-08-31 13:05:46.809 | INFO | __main__:__init__:37 - 主窗口初始化完成 -2025-08-31 13:05:48.150 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 -2025-08-31 13:05:48.236 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 -2025-08-31 13:05:50.256 | INFO | __main__:on_tab_changed:40 - 标签页切换到: 2 -2025-08-31 13:05:50.256 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 -2025-08-31 13:05:50.257 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji -2025-08-31 13:05:51.020 | INFO | django_threads:run:86 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 13:05:51.031 | INFO | django_threads:run:198 - 命令输出: /home/xiaji/webstatus/manage.py -2025-08-31 13:05:51.031 | INFO | django_tab:process_manage_py_result:288 - 找到manage.py文件: /home/xiaji/webstatus/manage.py -2025-08-31 13:05:51.031 | INFO | django_threads:run:211 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 -2025-08-31 13:05:51.033 | INFO | django_threads:run:86 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 13:05:51.081 | INFO | django_threads:run:198 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 13:05:51.081 | INFO | django_tab:process_settings_py_result:315 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 13:05:51.082 | INFO | django_threads:run:211 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 -2025-08-31 13:05:51.083 | INFO | django_tab:on_command_finished:155 - Django命令执行完成 -2025-08-31 13:05:53.120 | INFO | django_tab:download_settings:340 - settings.py已加载到编辑器: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 13:06:01.708 | INFO | django_tab:upload_settings:427 - 开始上传settings.py文件: C:/Users/xiaji/Documents/个人文件夹/夏骥/桌面部署/settings.py -2025-08-31 13:06:12.182 | INFO | django_tab:download_settings:340 - settings.py已加载到编辑器: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 13:06:54.294 | INFO | django_tab:save_settings_to_server:368 - settings.py已保存到服务器: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 13:06:59.281 | INFO | django_tab:download_settings:340 - settings.py已加载到编辑器: /home/xiaji/webstatus/statuspage/settings.py -2025-08-31 13:07:04.074 | INFO | django_threads:run:86 - 执行Django命令: cd /home/xiaji/webstatus && python3 manage.py runserver 0.0.0.0:8000 -2025-08-31 13:07:04.606 | INFO | django_threads:run:198 - 命令输出: Performing system checks... -2025-08-31 13:07:04.609 | INFO | django_threads:run:198 - 命令输出: -2025-08-31 13:07:04.631 | INFO | django_threads:run:198 - 命令输出: System check identified no issues (0 silenced). -2025-08-31 13:07:04.653 | INFO | django_threads:run:198 - 命令输出: August 31, 2025 - 13:07:02 -2025-08-31 13:07:04.654 | INFO | django_threads:run:198 - 命令输出: Django version 4.2.15, using settings 'statuspage.settings' -2025-08-31 13:07:04.655 | INFO | django_threads:run:198 - 命令输出: Starting development server at http://0.0.0.0:8000/ -2025-08-31 13:07:04.655 | INFO | django_threads:run:198 - 命令输出: Quit the server with CONTROL-C. -2025-08-31 13:07:04.656 | INFO | django_threads:run:198 - 命令输出: +2025-08-31 13:21:30.729 | INFO | __main__::96 - 启动应用程序 +2025-08-31 13:21:30.753 | INFO | __main__:__init__:15 - 初始化主窗口 +2025-08-31 13:21:30.754 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 13:21:30.761 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 13:21:30.761 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 13:21:30.762 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 13:21:30.762 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 13:21:30.764 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 13:21:30.765 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 13:21:30.767 | INFO | __main__:__init__:42 - 主窗口初始化完成 +2025-08-31 13:21:31.925 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 13:21:32.022 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 13:21:33.767 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 13:21:33.768 | INFO | gunicorn_tab:set_ssh_client:426 - Gunicorn标签页已设置SSH客户端 +2025-08-31 13:21:33.768 | INFO | gunicorn_tab:set_username:431 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 13:21:33.768 | INFO | gunicorn_tab:set_project_info:437 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/ +2025-08-31 13:21:40.743 | INFO | gunicorn_tab:run:53 - 检查Gunicorn是否已安装 +2025-08-31 13:21:40.747 | INFO | gunicorn_tab:on_install_progress:480 - Gunicorn安装进度: 10% +2025-08-31 13:21:40.750 | INFO | gunicorn_tab:run:59 - Gunicorn版本检查状态: 127 +2025-08-31 13:21:40.751 | INFO | gunicorn_tab:run:60 - Gunicorn版本信息: +2025-08-31 13:21:40.751 | ERROR | gunicorn_tab:run:62 - Gunicorn版本检查错误: bash: line 1: gunicorn: command not found + +2025-08-31 13:21:40.751 | INFO | gunicorn_tab:run:72 - 开始使用pip安装Gunicorn +2025-08-31 13:21:40.751 | INFO | gunicorn_tab:on_install_progress:480 - Gunicorn安装进度: 30% +2025-08-31 13:21:40.802 | INFO | gunicorn_tab:run:78 - Gunicorn pip安装命令执行状态: 127 +2025-08-31 13:21:40.802 | INFO | gunicorn_tab:run:79 - Gunicorn pip安装输出: +2025-08-31 13:21:40.802 | ERROR | gunicorn_tab:run:81 - Gunicorn pip安装错误: bash: line 1: pip3: command not found + +2025-08-31 13:21:40.803 | INFO | gunicorn_tab:run:108 - pip安装失败,尝试使用apt安装Gunicorn +2025-08-31 13:21:40.803 | INFO | gunicorn_tab:on_install_progress:480 - Gunicorn安装进度: 50% +2025-08-31 13:21:40.804 | INFO | gunicorn_tab:run:110 - 使用密码进行sudo apt安装 +2025-08-31 13:21:54.986 | INFO | gunicorn_tab:run:120 - Gunicorn apt安装命令执行状态: 0 +2025-08-31 13:21:54.987 | INFO | gunicorn_tab:run:121 - Gunicorn apt安装输出: Hit:1 http://security.ubuntu.com/ubuntu oracular-security InRelease +Hit:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu oracular InRelease +Hit:3 http://mirrors.tuna.tsinghua.edu.cn/ubuntu oracular-updates InRelease +Hit:4 http://mirrors.tuna.tsinghua.edu.cn/ubuntu oracular-backports InRelease +Reading package lists... +Building dependency tree... +Reading state information... +70 packages can be upgraded. Run 'apt list --upgradable' to see them. +Reading package lists... +Building dependency tree... +Reading state information... +The following packages were automatically installed and are no longer required: + linux-headers-6.11.0-8 linux-modules-extra-6.11.0-8-generic + linux-headers-6.11.0-8-generic linux-tools-6.11.0-8 + linux-modules-6.11.0-8-generic linux-tools-6.11.0-8-generic +Use 'sudo apt autoremove' to remove them. + +Installing: + gunicorn + +Installing dependencies: + python3-gunicorn + +Suggested packages: + python3-pastedeploy python3-setproctitle python3-tornado + +Summary: + Upgrading: 0, Installing: 2, Removing: 0, Not Upgrading: 70 + Download size: 73.4 kB + Space needed: 338 kB / 5,634 MB available + +Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu oracular/universe amd64 python3-gunicorn all 23.0.0-1 [63.8 kB] +Get:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu oracular/universe amd64 gunicorn all 23.0.0-1 [9,516 B] +Fetched 73.4 kB in 5s (14.8 kB/s) +Selecting previously unselected package python3-gunicorn. +(Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 132987 files and directories currently installed.) +Preparing to unpack .../python3-gunicorn_23.0.0-1_all.deb ... +Unpacking python3-gunicorn (23.0.0-1) ... +Selecting previously unselected package gunicorn. +Preparing to unpack .../gunicorn_23.0.0-1_all.deb ... +Unpacking gunicorn (23.0.0-1) ... +Setting up python3-gunicorn (23.0.0-1) ... +Setting up gunicorn (23.0.0-1) ... +Processing triggers for man-db (2.12.1-3) ... + +2025-08-31 13:21:54.987 | ERROR | gunicorn_tab:run:123 - Gunicorn apt安装错误: [sudo] password for xiaji: +WARNING: apt does not have a stable CLI interface. Use with caution in scripts. + + +WARNING: apt does not have a stable CLI interface. Use with caution in scripts. + +debconf: unable to initialize frontend: Dialog +debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.) +debconf: falling back to frontend: Readline +debconf: unable to initialize frontend: Readline +debconf: (This frontend requires a controlling tty.) +debconf: falling back to frontend: Teletype +dpkg-preconfigure: unable to re-open stdin: +debconf: unable to initialize frontend: Dialog +debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.) +debconf: falling back to frontend: Readline +debconf: unable to initialize frontend: Readline +debconf: (This frontend requires a controlling tty.) +debconf: falling back to frontend: Teletype + +Running kernel seems to be up-to-date. + +No services need to be restarted. + +No containers need to be restarted. + +No user sessions are running outdated binaries. + +No VM guests are running outdated hypervisor (qemu) binaries on this host. + +2025-08-31 13:21:54.988 | INFO | gunicorn_tab:run:128 - 验证apt安装的Gunicorn +2025-08-31 13:21:54.988 | INFO | gunicorn_tab:on_install_progress:480 - Gunicorn安装进度: 90% +2025-08-31 13:21:55.143 | INFO | gunicorn_tab:run:134 - Gunicorn版本检查状态: 0 +2025-08-31 13:21:55.144 | INFO | gunicorn_tab:run:135 - Gunicorn版本信息: gunicorn (version 23.0.0) +2025-08-31 13:21:55.144 | INFO | gunicorn_tab:run:141 - Gunicorn安装成功: gunicorn (version 23.0.0) +2025-08-31 13:21:55.145 | INFO | gunicorn_tab:on_install_result:486 - Gunicorn安装成功: Gunicorn安装成功: gunicorn (version 23.0.0) +2025-08-31 13:22:05.411 | ERROR | gunicorn_tab:run:187 - Gunicorn测试运行失败 +2025-08-31 13:22:05.412 | ERROR | gunicorn_tab:on_test_result:524 - Gunicorn测试失败: Gunicorn测试运行失败 +2025-08-31 13:23:05.611 | INFO | __main__::96 - 启动应用程序 +2025-08-31 13:23:05.635 | INFO | __main__:__init__:15 - 初始化主窗口 +2025-08-31 13:23:05.636 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 13:23:05.643 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 13:23:05.643 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 13:23:05.644 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 13:23:05.644 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 13:23:05.646 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 13:23:05.648 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 13:23:05.650 | INFO | __main__:__init__:42 - 主窗口初始化完成 +2025-08-31 13:23:07.288 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 13:23:07.376 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 13:23:09.161 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 13:23:09.161 | INFO | gunicorn_tab:set_ssh_client:443 - Gunicorn标签页已设置SSH客户端 +2025-08-31 13:23:09.161 | INFO | gunicorn_tab:set_username:448 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 13:23:09.161 | INFO | gunicorn_tab:set_project_info:454 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/ +2025-08-31 13:23:13.921 | INFO | gunicorn_tab:run:170 - 执行Gunicorn测试命令: cd /home/xiaji/statuspage && bash -c 'echo "xiaji" | sudo -S gunicorn statuspage.wsgi:application --bind 0.0.0.0:8000' & +2025-08-31 13:23:13.932 | INFO | gunicorn_tab:run:176 - Gunicorn启动输出: +2025-08-31 13:23:13.932 | ERROR | gunicorn_tab:run:178 - Gunicorn启动错误: bash: line 1: cd: /home/xiaji/statuspage: No such file or directory + +2025-08-31 13:23:13.932 | INFO | gunicorn_tab:run:181 - 等待Gunicorn启动... +2025-08-31 13:23:16.933 | INFO | gunicorn_tab:run:185 - 检查Gunicorn进程状态... +2025-08-31 13:23:16.951 | INFO | gunicorn_tab:run:188 - Gunicorn进程检查结果: xiaji 1926 0.0 0.2 7432 3476 ? Ss 13:23 0:00 bash -c ps aux | grep gunicorn +xiaji 1928 0.0 0.1 6620 2340 ? S 13:23 0:00 grep gunicorn + +2025-08-31 13:23:16.952 | ERROR | gunicorn_tab:run:204 - Gunicorn测试运行失败 +2025-08-31 13:23:16.952 | ERROR | gunicorn_tab:on_test_result:541 - Gunicorn测试失败: Gunicorn测试运行失败 +2025-08-31 13:27:36.308 | INFO | __main__::116 - 启动应用程序 +2025-08-31 13:27:36.332 | INFO | __main__:__init__:15 - 初始化主窗口 +2025-08-31 13:27:36.333 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 13:27:36.340 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 13:27:36.340 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 13:27:36.341 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 13:27:36.342 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 13:27:36.343 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 13:27:36.345 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 13:27:36.346 | INFO | __main__:__init__:42 - 主窗口初始化完成 +2025-08-31 13:27:37.665 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 13:27:37.758 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 13:27:39.482 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 13:27:39.482 | INFO | gunicorn_tab:set_ssh_client:444 - Gunicorn标签页已设置SSH客户端 +2025-08-31 13:27:39.483 | INFO | __main__:on_tab_changed:109 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:27:39.483 | INFO | gunicorn_tab:set_username:449 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 13:27:39.483 | INFO | gunicorn_tab:set_project_info:455 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 13:27:43.702 | INFO | gunicorn_tab:run:168 - 开始测试Gunicorn,使用的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:27:43.703 | INFO | gunicorn_tab:run:171 - 执行Gunicorn测试命令: cd /home/xiaji/webstatus/statuspage && bash -c 'echo "xiaji" | sudo -S gunicorn statuspage.wsgi:application --bind 0.0.0.0:8000' & +2025-08-31 13:27:43.883 | INFO | gunicorn_tab:run:177 - Gunicorn启动输出: +2025-08-31 13:27:43.884 | ERROR | gunicorn_tab:run:179 - Gunicorn启动错误: [sudo] password for xiaji: [2025-08-31 13:27:41 +0800] [2025] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 13:27:41 +0800] [2025] [INFO] Listening at: http://0.0.0.0:8000 (2025) +[2025-08-31 13:27:41 +0800] [2025] [INFO] Using worker: sync +[2025-08-31 13:27:41 +0800] [2026] [INFO] Booting worker with pid: 2026 +[2025-08-31 13:27:41 +0800] [2026] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 13:27:41 +0800] [2026] [INFO] Worker exiting (pid: 2026) +[2025-08-31 13:27:41 +0800] [2025] [ERROR] Worker (pid:2026) exited with code 3 +[2025-08-31 13:27:41 +0800] [2025] [ERROR] Shutting down: Master +[2025-08-31 13:27:41 +0800] [2025] [ERROR] Reason: Worker failed to boot. + +2025-08-31 13:27:43.885 | INFO | gunicorn_tab:run:182 - 等待Gunicorn启动... +2025-08-31 13:28:22.243 | INFO | __main__::116 - 启动应用程序 +2025-08-31 13:28:22.271 | INFO | __main__:__init__:15 - 初始化主窗口 +2025-08-31 13:28:22.272 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 13:28:22.278 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 13:28:22.278 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 13:28:22.279 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 13:28:22.279 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 13:28:22.282 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 13:28:22.283 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 13:28:22.285 | INFO | __main__:__init__:42 - 主窗口初始化完成 +2025-08-31 13:28:23.396 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 13:28:23.484 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 13:28:25.154 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 13:28:25.155 | INFO | gunicorn_tab:set_ssh_client:446 - Gunicorn标签页已设置SSH客户端 +2025-08-31 13:28:25.155 | INFO | __main__:on_tab_changed:109 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:28:25.156 | INFO | gunicorn_tab:set_username:451 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 13:28:25.156 | INFO | gunicorn_tab:set_project_info:457 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 13:28:30.664 | INFO | gunicorn_tab:run:168 - 开始测试Gunicorn,使用的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:28:30.665 | INFO | gunicorn_tab:run:172 - 执行Gunicorn测试命令: cd /home/xiaji/webstatus/statuspage && bash -c 'echo "xiaji" | sudo -S gunicorn --pythonpath /home/xiaji/webstatus/statuspage statuspage.wsgi:application --bind 0.0.0.0:8000' & +2025-08-31 13:28:30.840 | INFO | gunicorn_tab:run:178 - Gunicorn启动输出: +2025-08-31 13:28:30.840 | ERROR | gunicorn_tab:run:180 - Gunicorn启动错误: [sudo] password for xiaji: [2025-08-31 13:28:28 +0800] [2104] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 13:28:28 +0800] [2104] [INFO] Listening at: http://0.0.0.0:8000 (2104) +[2025-08-31 13:28:28 +0800] [2104] [INFO] Using worker: sync +[2025-08-31 13:28:28 +0800] [2105] [INFO] Booting worker with pid: 2105 +[2025-08-31 13:28:28 +0800] [2105] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 13:28:28 +0800] [2105] [INFO] Worker exiting (pid: 2105) +[2025-08-31 13:28:28 +0800] [2104] [ERROR] Worker (pid:2105) exited with code 3 +[2025-08-31 13:28:28 +0800] [2104] [ERROR] Shutting down: Master +[2025-08-31 13:28:28 +0800] [2104] [ERROR] Reason: Worker failed to boot. + +2025-08-31 13:28:30.841 | INFO | gunicorn_tab:run:183 - 等待Gunicorn启动... +2025-08-31 13:28:33.842 | INFO | gunicorn_tab:run:187 - 检查Gunicorn进程状态... +2025-08-31 13:28:33.860 | INFO | gunicorn_tab:run:190 - Gunicorn进程检查结果: xiaji 2106 0.0 0.2 7432 3600 ? Ss 13:28 0:00 bash -c ps aux | grep gunicorn +xiaji 2108 0.0 0.1 6620 2364 ? S 13:28 0:00 grep gunicorn + +2025-08-31 13:28:33.860 | ERROR | gunicorn_tab:run:206 - Gunicorn测试运行失败 +2025-08-31 13:28:33.860 | ERROR | gunicorn_tab:on_test_result:544 - Gunicorn测试失败: Gunicorn测试运行失败 +2025-08-31 13:30:06.902 | INFO | __main__::116 - 启动应用程序 +2025-08-31 13:30:06.928 | INFO | __main__:__init__:15 - 初始化主窗口 +2025-08-31 13:30:06.929 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 13:30:06.936 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 13:30:06.936 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 13:30:06.937 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 13:30:06.938 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 13:30:06.939 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 13:30:06.940 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 13:30:06.942 | INFO | __main__:__init__:42 - 主窗口初始化完成 +2025-08-31 13:30:08.081 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 13:30:08.174 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 13:30:09.921 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 13:30:09.921 | INFO | gunicorn_tab:set_ssh_client:532 - Gunicorn标签页已设置SSH客户端 +2025-08-31 13:30:09.921 | INFO | __main__:on_tab_changed:109 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:30:09.922 | INFO | gunicorn_tab:set_username:537 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 13:30:09.922 | INFO | gunicorn_tab:set_project_info:543 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 13:30:13.920 | INFO | gunicorn_tab:run:168 - 开始测试Gunicorn,使用的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:30:13.920 | INFO | gunicorn_tab:run:171 - 检查项目目录结构... +2025-08-31 13:30:13.931 | INFO | gunicorn_tab:run:176 - 项目目录内容: total 28 +drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 . +drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 .. +-rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 asgi.py +-rw-rw-r-- 1 xiaji xiaji 0 Aug 31 10:59 __init__.py +drwxrwxr-x 2 xiaji xiaji 4096 Aug 31 13:07 __pycache__ +-rw-rw-r-- 1 xiaji xiaji 3080 Aug 31 13:06 settings.py +-rw-rw-r-- 1 xiaji xiaji 813 Aug 31 10:59 urls.py +-rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 wsgi.py + +2025-08-31 13:30:13.983 | INFO | gunicorn_tab:run:185 - 找到的manage.py文件: +2025-08-31 13:30:14.034 | INFO | gunicorn_tab:run:209 - 找到的wsgi.py文件: /home/xiaji/webstatus/statuspage/wsgi.py + +2025-08-31 13:30:14.084 | INFO | gunicorn_tab:run:218 - 找到的settings.py文件: /home/xiaji/webstatus/statuspage/settings.py + +2025-08-31 13:30:14.135 | INFO | gunicorn_tab:run:229 - settings.py文件内容: from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-$w+8+hw%p$2xi_fi+7avahc&03-y@x05e^r02-x3nt5johmk6l' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG... +2025-08-31 13:30:14.136 | INFO | gunicorn_tab:run:255 - 未找到manage.py文件,尝试使用原始路径运行Gunicorn +2025-08-31 13:30:14.136 | INFO | gunicorn_tab:run:258 - 执行Gunicorn测试命令: cd /home/xiaji/webstatus/statuspage && bash -c 'echo "xiaji" | sudo -S gunicorn --pythonpath /home/xiaji/webstatus/statuspage statuspage.wsgi:application --bind 0.0.0.0:8000' & +2025-08-31 13:30:14.354 | INFO | gunicorn_tab:run:264 - Gunicorn启动输出: +2025-08-31 13:30:14.355 | ERROR | gunicorn_tab:run:266 - Gunicorn启动错误: [sudo] password for xiaji: [2025-08-31 13:30:12 +0800] [2206] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 13:30:12 +0800] [2206] [INFO] Listening at: http://0.0.0.0:8000 (2206) +[2025-08-31 13:30:12 +0800] [2206] [INFO] Using worker: sync +[2025-08-31 13:30:12 +0800] [2207] [INFO] Booting worker with pid: 2207 +[2025-08-31 13:30:12 +0800] [2207] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 13:30:12 +0800] [2207] [INFO] Worker exiting (pid: 2207) +[2025-08-31 13:30:12 +0800] [2206] [ERROR] Worker (pid:2207) exited with code 3 +[2025-08-31 13:30:12 +0800] [2206] [ERROR] Shutting down: Master +[2025-08-31 13:30:12 +0800] [2206] [ERROR] Reason: Worker failed to boot. + +2025-08-31 13:30:14.356 | INFO | gunicorn_tab:run:269 - 等待Gunicorn启动... +2025-08-31 13:30:17.358 | INFO | gunicorn_tab:run:273 - 检查Gunicorn进程状态... +2025-08-31 13:30:17.376 | INFO | gunicorn_tab:run:276 - Gunicorn进程检查结果: xiaji 2208 0.0 0.2 7432 3600 ? Ss 13:30 0:00 bash -c ps aux | grep gunicorn +xiaji 2210 0.0 0.1 6620 2380 ? S 13:30 0:00 grep gunicorn + +2025-08-31 13:30:17.377 | ERROR | gunicorn_tab:run:292 - Gunicorn测试运行失败 +2025-08-31 13:30:17.378 | ERROR | gunicorn_tab:on_test_result:630 - Gunicorn测试失败: Gunicorn测试运行失败 +2025-08-31 13:37:08.843 | INFO | __main__::116 - 启动应用程序 +2025-08-31 13:37:08.868 | INFO | __main__:__init__:15 - 初始化主窗口 +2025-08-31 13:37:08.868 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 13:37:08.874 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 13:37:08.874 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 13:37:08.875 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 13:37:08.875 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 13:37:08.877 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 13:37:08.878 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 13:37:08.881 | INFO | __main__:__init__:42 - 主窗口初始化完成 +2025-08-31 13:37:10.255 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 13:37:10.355 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 13:37:12.066 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 13:37:12.066 | INFO | gunicorn_tab:set_ssh_client:532 - Gunicorn标签页已设置SSH客户端 +2025-08-31 13:37:12.066 | INFO | __main__:on_tab_changed:109 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:37:12.066 | INFO | gunicorn_tab:set_username:537 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 13:37:12.067 | INFO | gunicorn_tab:set_project_info:543 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 13:37:16.676 | INFO | gunicorn_tab:run:168 - 开始测试Gunicorn,使用的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:37:16.677 | INFO | gunicorn_tab:run:171 - 检查项目目录结构... +2025-08-31 13:37:16.685 | INFO | gunicorn_tab:run:176 - 项目目录内容: total 28 +drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 . +drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 .. +-rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 asgi.py +-rw-rw-r-- 1 xiaji xiaji 0 Aug 31 10:59 __init__.py +drwxrwxr-x 2 xiaji xiaji 4096 Aug 31 13:07 __pycache__ +-rw-rw-r-- 1 xiaji xiaji 3080 Aug 31 13:06 settings.py +-rw-rw-r-- 1 xiaji xiaji 813 Aug 31 10:59 urls.py +-rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 wsgi.py + +2025-08-31 13:37:16.740 | INFO | gunicorn_tab:run:185 - 找到的manage.py文件: /home/xiaji/webstatus/manage.py + +2025-08-31 13:37:16.740 | INFO | gunicorn_tab:run:193 - manage.py所在目录: /home/xiaji/webstatus +2025-08-31 13:37:16.791 | INFO | gunicorn_tab:run:200 - manage.py所在目录内容: total 160 +drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 . +drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 .. +-rw-rw-r-- 1 xiaji xiaji 135168 Aug 31 10:59 db.sqlite3 +drwxrwxr-x 8 xiaji xiaji 4096 Aug 31 10:59 .git +-rw-rw-r-- 1 xiaji xiaji 666 Aug 31 10:59 manage.py +-rw-rw-r-- 1 xiaji xiaji 13 Aug 31 10:59 requirements.txt +drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 status +drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 statuspage + +2025-08-31 13:37:16.842 | INFO | gunicorn_tab:run:209 - 找到的wsgi.py文件: /home/xiaji/webstatus/statuspage/wsgi.py + +2025-08-31 13:37:16.893 | INFO | gunicorn_tab:run:218 - 找到的settings.py文件: /home/xiaji/webstatus/statuspage/settings.py + +2025-08-31 13:37:16.946 | INFO | gunicorn_tab:run:229 - settings.py文件内容: from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-$w+8+hw%p$2xi_fi+7avahc&03-y@x05e^r02-x3nt5johmk6l' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG... +2025-08-31 13:37:16.947 | INFO | gunicorn_tab:run:239 - 尝试使用manage.py所在目录作为工作目录: /home/xiaji/webstatus +2025-08-31 13:37:16.996 | INFO | gunicorn_tab:run:249 - 找到项目子目录,尝试使用该目录运行Gunicorn: /home/xiaji/webstatus/statuspage +2025-08-31 13:37:16.997 | INFO | gunicorn_tab:run:258 - 执行Gunicorn测试命令: cd /home/xiaji/webstatus && bash -c 'echo "xiaji" | sudo -S gunicorn --pythonpath /home/xiaji/webstatus statuspage.wsgi:application --bind 0.0.0.0:8000' & +2025-08-31 13:38:15.642 | INFO | gunicorn_tab:run:325 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 13:38:15.643 | INFO | gunicorn_tab:on_upload_result:663 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 13:38:23.093 | INFO | gunicorn_tab:run:373 - Gunicorn服务启动成功: gunicorn_statuspage +2025-08-31 13:38:23.094 | INFO | gunicorn_tab:on_control_result:743 - Gunicorn服务控制成功: Gunicorn服务启动成功: gunicorn_statuspage +2025-08-31 13:38:33.282 | INFO | gunicorn_tab:run:396 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 13:38:33.369 | INFO | gunicorn_tab:run:407 - 开始重启服务器 +2025-08-31 13:38:33.416 | INFO | gunicorn_tab:run:411 - 时区设置成功,服务器正在重启 +2025-08-31 13:38:33.417 | INFO | gunicorn_tab:on_server_control_result:773 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 13:38:33.587 | INFO | gunicorn_tab:run:264 - Gunicorn启动输出: +2025-08-31 13:38:33.587 | ERROR | gunicorn_tab:run:266 - Gunicorn启动错误: [sudo] password for xiaji: [2025-08-31 13:37:15 +0800] [2312] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 13:37:15 +0800] [2312] [INFO] Listening at: http://0.0.0.0:8000 (2312) +[2025-08-31 13:37:15 +0800] [2312] [INFO] Using worker: sync +[2025-08-31 13:37:15 +0800] [2313] [INFO] Booting worker with pid: 2313 + +2025-08-31 13:38:33.587 | INFO | gunicorn_tab:run:269 - 等待Gunicorn启动... +2025-08-31 13:38:36.588 | INFO | gunicorn_tab:run:273 - 检查Gunicorn进程状态... +2025-08-31 13:38:36.589 | ERROR | gunicorn_tab:run:297 - Gunicorn测试运行异常: SSH session not active +2025-08-31 13:38:36.590 | ERROR | gunicorn_tab:on_test_result:630 - Gunicorn测试失败: SSH session not active +2025-08-31 13:39:05.914 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 0 +2025-08-31 13:39:06.961 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 13:39:07.100 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 13:39:09.054 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 13:39:09.055 | INFO | gunicorn_tab:set_ssh_client:532 - Gunicorn标签页已设置SSH客户端 +2025-08-31 13:39:09.055 | INFO | __main__:on_tab_changed:109 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:39:09.055 | INFO | gunicorn_tab:set_username:537 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 13:39:09.055 | INFO | gunicorn_tab:set_project_info:543 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 13:39:15.903 | INFO | gunicorn_tab:run:373 - Gunicorn服务启动成功: gunicorn_statuspage +2025-08-31 13:39:15.903 | INFO | gunicorn_tab:on_control_result:743 - Gunicorn服务控制成功: Gunicorn服务启动成功: gunicorn_statuspage +2025-08-31 13:39:34.372 | INFO | gunicorn_tab:run:373 - Gunicorn服务设置开机自启动成功: gunicorn_statuspage +2025-08-31 13:39:34.373 | INFO | gunicorn_tab:on_control_result:743 - Gunicorn服务控制成功: Gunicorn服务设置开机自启动成功: gunicorn_statuspage +2025-08-31 13:41:44.217 | INFO | __main__::116 - 启动应用程序 +2025-08-31 13:41:44.242 | INFO | __main__:__init__:15 - 初始化主窗口 +2025-08-31 13:41:44.243 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 13:41:44.249 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 13:41:44.249 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 13:41:44.250 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 13:41:44.250 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 13:41:44.252 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 13:41:44.253 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 13:41:44.255 | INFO | __main__:__init__:42 - 主窗口初始化完成 +2025-08-31 13:41:45.724 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 13:41:45.811 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 13:41:47.457 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 13:41:47.457 | INFO | gunicorn_tab:set_ssh_client:550 - Gunicorn标签页已设置SSH客户端 +2025-08-31 13:41:47.457 | INFO | __main__:on_tab_changed:109 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:41:47.457 | INFO | gunicorn_tab:set_username:555 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 13:41:47.457 | INFO | gunicorn_tab:set_project_info:561 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 13:41:55.318 | ERROR | gunicorn_tab:run:385 - Gunicorn服务状态查询失败: gunicorn_statuspage: [sudo] password for xiaji: +2025-08-31 13:41:55.319 | ERROR | gunicorn_tab:on_control_result:815 - Gunicorn服务控制失败: Gunicorn服务状态查询失败: gunicorn_statuspage: [sudo] password for xiaji: +2025-08-31 13:44:31.053 | INFO | __main__::116 - 启动应用程序 +2025-08-31 13:44:31.076 | INFO | __main__:__init__:15 - 初始化主窗口 +2025-08-31 13:44:31.077 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 13:44:31.083 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 13:44:31.083 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 13:44:31.084 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 13:44:31.085 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 13:44:31.086 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 13:44:31.087 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 13:44:31.089 | INFO | __main__:__init__:42 - 主窗口初始化完成 +2025-08-31 13:44:35.674 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 13:44:35.773 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 13:44:41.860 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 13:44:41.860 | INFO | gunicorn_tab:set_ssh_client:561 - Gunicorn标签页已设置SSH客户端 +2025-08-31 13:44:41.861 | INFO | __main__:on_tab_changed:109 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:44:41.861 | INFO | gunicorn_tab:set_username:566 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 13:44:41.861 | INFO | gunicorn_tab:set_project_info:572 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 13:45:01.152 | INFO | gunicorn_tab:run:387 - 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 13:44:54 CST; 4s ago + Invocation: e9680345968b4b42a62b15f4d66782af + Process: 1723 ExecStart=/usr/local/bin/gunicorn \ (code=exited, status=203/EXEC) + Main PID: 1723 (code=exited, status=203/EXEC) + Mem peak: 1.6M + CPU: 8ms + +2025-08-31 13:45:01.152 | INFO | gunicorn_tab:on_control_result:822 - 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 13:44:54 CST; 4s ago + Invocation: e9680345968b4b42a62b15f4d66782af + Process: 1723 ExecStart=/usr/local/bin/gunicorn \ (code=exited, status=203/EXEC) + Main PID: 1723 (code=exited, status=203/EXEC) + Mem peak: 1.6M + CPU: 8ms + +2025-08-31 13:49:29.144 | INFO | __main__::116 - 启动应用程序 +2025-08-31 13:49:29.166 | INFO | __main__:__init__:15 - 初始化主窗口 +2025-08-31 13:49:29.166 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 13:49:29.172 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 13:49:29.172 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 13:49:29.172 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 13:49:29.173 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 13:49:29.174 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 13:49:29.175 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 13:49:29.177 | INFO | __main__:__init__:42 - 主窗口初始化完成 +2025-08-31 13:49:30.700 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 13:49:30.700 | INFO | gunicorn_tab:set_ssh_client:561 - Gunicorn标签页已设置SSH客户端 +2025-08-31 13:49:30.701 | INFO | __main__:on_tab_changed:109 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 13:49:30.701 | INFO | gunicorn_tab:set_username:566 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 13:49:30.702 | INFO | gunicorn_tab:set_project_info:572 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 15:12:57.615 | INFO | __main__::116 - 启动应用程序 +2025-08-31 15:12:57.639 | INFO | __main__:__init__:15 - 初始化主窗口 +2025-08-31 15:12:57.640 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 15:12:57.647 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 15:12:57.647 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 15:12:57.648 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 15:12:57.648 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 15:12:57.649 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 15:12:57.651 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 15:12:57.652 | INFO | __main__:__init__:42 - 主窗口初始化完成 +2025-08-31 15:12:58.994 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 15:12:59.091 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 15:13:00.910 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 15:13:00.911 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:13:00.911 | INFO | __main__:on_tab_changed:109 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 15:13:00.912 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:13:00.912 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 15:13:09.784 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 myproject.wsgi:application +2025-08-31 15:13:09.982 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:13:07 +0800] [6069] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:13:07 +0800] [6069] [INFO] Listening at: http://0.0.0.0:8000 (6069) +[2025-08-31 15:13:07 +0800] [6069] [INFO] Using worker: sync +[2025-08-31 15:13:07 +0800] [6070] [INFO] Booting worker with pid: 6070 +[2025-08-31 15:13:07 +0800] [6070] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'myproject' +[2025-08-31 15:13:07 +0800] [6070] [INFO] Worker exiting (pid: 6070) +[2025-08-31 15:13:07 +0800] [6069] [ERROR] Worker (pid:6070) exited with code 3 +[2025-08-31 15:13:07 +0800] [6069] [ERROR] Shutting down: Master +[2025-08-31 15:13:07 +0800] [6069] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:13:09.986 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:13:07 +0800] [6069] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:13:07 +0800] [6069] [INFO] Listening at: http://0.0.0.0:8000 (6069) +[2025-08-31 15:13:07 +0800] [6069] [INFO] Using worker: sync +[2025-08-31 15:13:07 +0800] [6070] [INFO] Booting worker with pid: 6070 +[2025-08-31 15:13:07 +0800] [6070] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'myproject' +[2025-08-31 15:13:07 +0800] [6070] [INFO] Worker exiting (pid: 6070) +[2025-08-31 15:13:07 +0800] [6069] [ERROR] Worker (pid:6070) exited with code 3 +[2025-08-31 15:13:07 +0800] [6069] [ERROR] Shutting down: Master +[2025-08-31 15:13:07 +0800] [6069] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:13:44.028 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 15:13:44.207 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:13:42 +0800] [6098] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:13:42 +0800] [6098] [INFO] Listening at: http://0.0.0.0:8000 (6098) +[2025-08-31 15:13:42 +0800] [6098] [INFO] Using worker: sync +[2025-08-31 15:13:42 +0800] [6099] [INFO] Booting worker with pid: 6099 +[2025-08-31 15:13:42 +0800] [6099] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:13:42 +0800] [6099] [INFO] Worker exiting (pid: 6099) +[2025-08-31 15:13:42 +0800] [6098] [ERROR] Worker (pid:6099) exited with code 3 +[2025-08-31 15:13:42 +0800] [6098] [ERROR] Shutting down: Master +[2025-08-31 15:13:42 +0800] [6098] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:13:44.211 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:13:42 +0800] [6098] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:13:42 +0800] [6098] [INFO] Listening at: http://0.0.0.0:8000 (6098) +[2025-08-31 15:13:42 +0800] [6098] [INFO] Using worker: sync +[2025-08-31 15:13:42 +0800] [6099] [INFO] Booting worker with pid: 6099 +[2025-08-31 15:13:42 +0800] [6099] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:13:42 +0800] [6099] [INFO] Worker exiting (pid: 6099) +[2025-08-31 15:13:42 +0800] [6098] [ERROR] Worker (pid:6099) exited with code 3 +[2025-08-31 15:13:42 +0800] [6098] [ERROR] Shutting down: Master +[2025-08-31 15:13:42 +0800] [6098] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:14:11.143 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 1 +2025-08-31 15:14:11.143 | INFO | remote_commands_tab:set_ssh_client:279 - 设置SSH客户端 +2025-08-31 15:14:11.144 | INFO | remote_commands_tab:set_server_config:290 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 15:14:11.144 | INFO | remote_commands_tab:refresh_directory:389 - 刷新目录列表 +2025-08-31 15:14:11.144 | INFO | remote_commands_tab:refresh_directory:401 - 使用用户输入目录: /home/xiaji +2025-08-31 15:14:11.145 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 15:14:11.156 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: /home/xiaji +2025-08-31 15:14:11.158 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: total 84 +2025-08-31 15:14:11.159 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 15:14:11.159 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 15:14:11.160 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. +2025-08-31 15:14:11.160 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 15:14:11.161 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 15:14:11.161 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 15:14:11.162 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 15:14:11.162 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 15:14:11.162 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh +2025-08-31 15:14:11.163 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 15:14:11.163 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 15:14:11.163 | INFO | remote_commands_tab:append_dir_output:415 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 15:14:11.165 | INFO | remote_commands_tab:on_dir_refresh_finished:421 - 目录列表刷新成功 +2025-08-31 15:14:13.190 | INFO | __main__:on_tab_changed:45 - 标签页切换到: 3 +2025-08-31 15:14:13.190 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:14:13.191 | INFO | __main__:on_tab_changed:109 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 15:14:13.191 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:14:13.191 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 15:19:50.758 | INFO | __main__::164 - 启动应用程序 +2025-08-31 15:19:50.785 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 15:19:50.793 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 15:19:50.793 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 15:19:50.794 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 15:19:50.795 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 15:19:50.795 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 15:19:50.796 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 15:19:50.798 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 15:19:50.800 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 15:19:50.802 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 15:20:23.067 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 15:20:23.156 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 15:20:25.316 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 1 +2025-08-31 15:20:25.316 | INFO | remote_commands_tab:set_ssh_client:299 - 设置SSH客户端 +2025-08-31 15:20:25.317 | INFO | remote_commands_tab:set_server_config:334 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 15:20:25.317 | INFO | remote_commands_tab:refresh_directory:462 - 刷新目录列表 +2025-08-31 15:20:25.317 | INFO | remote_commands_tab:refresh_directory:474 - 使用用户输入目录: /home/xiaji +2025-08-31 15:20:25.318 | INFO | remote_commands_tab:set_server_info:280 - 设置服务器信息: {'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 15:20:25.318 | INFO | __main__:on_tab_changed:83 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 15:20:25.318 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 15:20:25.329 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 15:20:25.329 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: /home/xiaji +2025-08-31 15:20:25.330 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: total 84 +2025-08-31 15:20:25.331 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 15:20:25.332 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. +2025-08-31 15:20:25.332 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 15:20:25.333 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 15:20:25.333 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 15:20:25.334 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 15:20:25.334 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 15:20:25.334 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh +2025-08-31 15:20:25.335 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 15:20:25.335 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 15:20:25.336 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 15:20:25.336 | INFO | remote_commands_tab:on_dir_refresh_finished:494 - 目录列表刷新成功 +2025-08-31 15:20:27.195 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 2 +2025-08-31 15:20:27.196 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 +2025-08-31 15:20:27.196 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji +2025-08-31 15:20:27.196 | INFO | __main__:on_tab_changed:118 - 状态栏更新为Django项目: statuspage, 目录: /home/xiaji +2025-08-31 15:20:30.021 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 15:20:30.021 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:20:30.021 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 15:20:30.021 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:20:30.022 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 15:20:30.023 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 15:20:39.793 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 myproject.wsgi:application +2025-08-31 15:20:39.980 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:20:37 +0800] [6514] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:20:37 +0800] [6514] [INFO] Listening at: http://0.0.0.0:8000 (6514) +[2025-08-31 15:20:37 +0800] [6514] [INFO] Using worker: sync +[2025-08-31 15:20:37 +0800] [6518] [INFO] Booting worker with pid: 6518 +[2025-08-31 15:20:37 +0800] [6518] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'myproject' +[2025-08-31 15:20:37 +0800] [6518] [INFO] Worker exiting (pid: 6518) +[2025-08-31 15:20:37 +0800] [6514] [ERROR] Worker (pid:6518) exited with code 3 +[2025-08-31 15:20:37 +0800] [6514] [ERROR] Shutting down: Master +[2025-08-31 15:20:37 +0800] [6514] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:20:39.985 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:20:37 +0800] [6514] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:20:37 +0800] [6514] [INFO] Listening at: http://0.0.0.0:8000 (6514) +[2025-08-31 15:20:37 +0800] [6514] [INFO] Using worker: sync +[2025-08-31 15:20:37 +0800] [6518] [INFO] Booting worker with pid: 6518 +[2025-08-31 15:20:37 +0800] [6518] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'myproject' +[2025-08-31 15:20:37 +0800] [6518] [INFO] Worker exiting (pid: 6518) +[2025-08-31 15:20:37 +0800] [6514] [ERROR] Worker (pid:6518) exited with code 3 +[2025-08-31 15:20:37 +0800] [6514] [ERROR] Shutting down: Master +[2025-08-31 15:20:37 +0800] [6514] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:21:08.586 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 1 +2025-08-31 15:21:08.586 | INFO | remote_commands_tab:set_ssh_client:299 - 设置SSH客户端 +2025-08-31 15:21:08.587 | INFO | remote_commands_tab:set_server_config:334 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 15:21:08.587 | INFO | remote_commands_tab:refresh_directory:462 - 刷新目录列表 +2025-08-31 15:21:08.587 | INFO | remote_commands_tab:refresh_directory:474 - 使用用户输入目录: /home/xiaji +2025-08-31 15:21:08.588 | INFO | remote_commands_tab:set_server_info:280 - 设置服务器信息: {'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 15:21:08.588 | INFO | __main__:on_tab_changed:83 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 15:21:08.588 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 15:21:08.597 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: /home/xiaji +2025-08-31 15:21:08.597 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 15:21:08.598 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: total 84 +2025-08-31 15:21:08.599 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 15:21:08.599 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. +2025-08-31 15:21:08.600 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 15:21:08.600 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 15:21:08.600 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 15:21:08.601 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 15:21:08.601 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 15:21:08.602 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh +2025-08-31 15:21:08.602 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 15:21:08.602 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 15:21:08.603 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 15:21:08.603 | INFO | remote_commands_tab:on_dir_refresh_finished:494 - 目录列表刷新成功 +2025-08-31 15:21:19.272 | INFO | remote_commands_tab:refresh_directory:462 - 刷新目录列表 +2025-08-31 15:21:19.273 | INFO | remote_commands_tab:refresh_directory:474 - 使用用户输入目录: /home/xiaji/webstatus +2025-08-31 15:21:19.275 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/webstatus && pwd && ls -la +2025-08-31 15:21:19.282 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: /home/xiaji/webstatus +2025-08-31 15:21:19.284 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: total 160 +2025-08-31 15:21:19.284 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji/webstatus && pwd && ls -la +2025-08-31 15:21:19.285 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 . +2025-08-31 15:21:19.285 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 .. +2025-08-31 15:21:19.286 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 135168 Aug 31 10:59 db.sqlite3 +2025-08-31 15:21:19.287 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 8 xiaji xiaji 4096 Aug 31 10:59 .git +2025-08-31 15:21:19.287 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 666 Aug 31 10:59 manage.py +2025-08-31 15:21:19.288 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 13 Aug 31 10:59 requirements.txt +2025-08-31 15:21:19.288 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 status +2025-08-31 15:21:19.289 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 statuspage +2025-08-31 15:21:19.289 | INFO | remote_commands_tab:on_dir_refresh_finished:494 - 目录列表刷新成功 +2025-08-31 15:21:30.923 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 15:21:30.923 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:21:30.924 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 15:21:30.924 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:21:30.924 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 15:21:30.925 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 15:21:54.165 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 1 +2025-08-31 15:21:54.165 | INFO | remote_commands_tab:set_ssh_client:299 - 设置SSH客户端 +2025-08-31 15:21:54.166 | INFO | remote_commands_tab:set_server_config:334 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 15:21:54.166 | INFO | remote_commands_tab:refresh_directory:462 - 刷新目录列表 +2025-08-31 15:21:54.166 | INFO | remote_commands_tab:refresh_directory:474 - 使用用户输入目录: /home/xiaji +2025-08-31 15:21:54.166 | INFO | remote_commands_tab:set_server_info:280 - 设置服务器信息: {'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 15:21:54.166 | INFO | __main__:on_tab_changed:83 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 15:21:54.167 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 15:21:54.175 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 15:21:54.177 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: /home/xiaji +2025-08-31 15:21:54.177 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: total 84 +2025-08-31 15:21:54.178 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 15:21:54.178 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. +2025-08-31 15:21:54.178 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 15:21:54.179 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 15:21:54.179 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 15:21:54.179 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 15:21:54.179 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 15:21:54.180 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh +2025-08-31 15:21:54.180 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 15:21:54.180 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 15:21:54.181 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 15:21:54.181 | INFO | remote_commands_tab:on_dir_refresh_finished:494 - 目录列表刷新成功 +2025-08-31 15:22:21.047 | INFO | remote_commands_tab:refresh_directory:462 - 刷新目录列表 +2025-08-31 15:22:21.048 | INFO | remote_commands_tab:refresh_directory:474 - 使用用户输入目录: /home/xiaji/webstatus +2025-08-31 15:22:21.049 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/webstatus && pwd && ls -la +2025-08-31 15:22:21.056 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: /home/xiaji/webstatus +2025-08-31 15:22:21.057 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji/webstatus && pwd && ls -la +2025-08-31 15:22:21.057 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: total 160 +2025-08-31 15:22:21.058 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 . +2025-08-31 15:22:21.058 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 .. +2025-08-31 15:22:21.059 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 135168 Aug 31 10:59 db.sqlite3 +2025-08-31 15:22:21.059 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 8 xiaji xiaji 4096 Aug 31 10:59 .git +2025-08-31 15:22:21.060 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 666 Aug 31 10:59 manage.py +2025-08-31 15:22:21.060 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 13 Aug 31 10:59 requirements.txt +2025-08-31 15:22:21.060 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 status +2025-08-31 15:22:21.061 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 statuspage +2025-08-31 15:22:21.061 | INFO | remote_commands_tab:on_dir_refresh_finished:494 - 目录列表刷新成功 +2025-08-31 15:23:00.977 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 15:23:00.977 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:23:00.977 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 15:23:00.977 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:23:00.978 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 15:23:00.980 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 15:23:05.868 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 15:23:06.161 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:23:03 +0800] [6634] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:23:03 +0800] [6634] [INFO] Listening at: http://0.0.0.0:8000 (6634) +[2025-08-31 15:23:03 +0800] [6634] [INFO] Using worker: sync +[2025-08-31 15:23:03 +0800] [6635] [INFO] Booting worker with pid: 6635 +[2025-08-31 15:23:03 +0800] [6635] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:23:03 +0800] [6635] [INFO] Worker exiting (pid: 6635) +[2025-08-31 15:23:03 +0800] [6636] [INFO] Booting worker with pid: 6636 +[2025-08-31 15:23:03 +0800] [6636] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:23:03 +0800] [6636] [INFO] Worker exiting (pid: 6636) +[2025-08-31 15:23:03 +0800] [6637] [INFO] Booting worker with pid: 6637 +[2025-08-31 15:23:03 +0800] [6637] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:23:03 +0800] [6637] [INFO] Worker exiting (pid: 6637) +[2025-08-31 15:23:04 +0800] [6634] [ERROR] Worker (pid:6636) exited with code 3 +[2025-08-31 15:23:04 +0800] [6634] [ERROR] Worker (pid:6635) was sent SIGTERM! +[2025-08-31 15:23:04 +0800] [6634] [ERROR] Worker (pid:6637) was sent SIGTERM! +[2025-08-31 15:23:04 +0800] [6634] [ERROR] Shutting down: Master +[2025-08-31 15:23:04 +0800] [6634] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:23:06.166 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:23:03 +0800] [6634] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:23:03 +0800] [6634] [INFO] Listening at: http://0.0.0.0:8000 (6634) +[2025-08-31 15:23:03 +0800] [6634] [INFO] Using worker: sync +[2025-08-31 15:23:03 +0800] [6635] [INFO] Booting worker with pid: 6635 +[2025-08-31 15:23:03 +0800] [6635] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:23:03 +0800] [6635] [INFO] Worker exiting (pid: 6635) +[2025-08-31 15:23:03 +0800] [6636] [INFO] Booting worker with pid: 6636 +[2025-08-31 15:23:03 +0800] [6636] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:23:03 +0800] [6636] [INFO] Worker exiting (pid: 6636) +[2025-08-31 15:23:03 +0800] [6637] [INFO] Booting worker with pid: 6637 +[2025-08-31 15:23:03 +0800] [6637] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:23:03 +0800] [6637] [INFO] Worker exiting (pid: 6637) +[2025-08-31 15:23:04 +0800] [6634] [ERROR] Worker (pid:6636) exited with code 3 +[2025-08-31 15:23:04 +0800] [6634] [ERROR] Worker (pid:6635) was sent SIGTERM! +[2025-08-31 15:23:04 +0800] [6634] [ERROR] Worker (pid:6637) was sent SIGTERM! +[2025-08-31 15:23:04 +0800] [6634] [ERROR] Shutting down: Master +[2025-08-31 15:23:04 +0800] [6634] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:24:18.642 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 1 +2025-08-31 15:24:18.643 | INFO | remote_commands_tab:set_ssh_client:299 - 设置SSH客户端 +2025-08-31 15:24:18.645 | INFO | remote_commands_tab:set_server_config:334 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 15:24:18.645 | INFO | remote_commands_tab:refresh_directory:462 - 刷新目录列表 +2025-08-31 15:24:18.645 | INFO | remote_commands_tab:refresh_directory:474 - 使用用户输入目录: /home/xiaji +2025-08-31 15:24:18.645 | INFO | remote_commands_tab:set_server_info:280 - 设置服务器信息: {'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 15:24:18.646 | INFO | __main__:on_tab_changed:83 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 15:24:18.646 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 15:24:18.655 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: /home/xiaji +2025-08-31 15:24:18.657 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: total 84 +2025-08-31 15:24:18.657 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 15:24:18.657 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 15:24:18.658 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. +2025-08-31 15:24:18.659 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 15:24:18.659 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 15:24:18.659 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 15:24:18.660 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 15:24:18.660 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 15:24:18.660 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh +2025-08-31 15:24:18.661 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 15:24:18.661 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 15:24:18.661 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 15:24:18.662 | INFO | remote_commands_tab:on_dir_refresh_finished:494 - 目录列表刷新成功 +2025-08-31 15:24:28.877 | INFO | remote_commands_tab:refresh_directory:462 - 刷新目录列表 +2025-08-31 15:24:28.878 | INFO | remote_commands_tab:refresh_directory:474 - 使用用户输入目录: /home/xiaji/webstatus/statuspage +2025-08-31 15:24:28.879 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/webstatus/statuspage && pwd && ls -la +2025-08-31 15:24:28.887 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: /home/xiaji/webstatus/statuspage +2025-08-31 15:24:28.889 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji/webstatus/statuspage && pwd && ls -la +2025-08-31 15:24:28.889 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: total 28 +2025-08-31 15:24:28.890 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 . +2025-08-31 15:24:28.890 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 .. +2025-08-31 15:24:28.890 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 asgi.py +2025-08-31 15:24:28.891 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 0 Aug 31 10:59 __init__.py +2025-08-31 15:24:28.891 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 2 xiaji xiaji 4096 Aug 31 13:07 __pycache__ +2025-08-31 15:24:28.891 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 3080 Aug 31 13:06 settings.py +2025-08-31 15:24:28.891 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 813 Aug 31 10:59 urls.py +2025-08-31 15:24:28.892 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 wsgi.py +2025-08-31 15:24:28.892 | INFO | remote_commands_tab:on_dir_refresh_finished:494 - 目录列表刷新成功 +2025-08-31 15:25:14.812 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 15:25:14.813 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:25:14.813 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 15:25:14.813 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:25:14.813 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 15:25:14.815 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 15:25:59.298 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: PYTHONPATH=. gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 15:25:59.478 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:25:57 +0800] [6782] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:25:57 +0800] [6782] [INFO] Listening at: http://0.0.0.0:8000 (6782) +[2025-08-31 15:25:57 +0800] [6782] [INFO] Using worker: sync +[2025-08-31 15:25:57 +0800] [6783] [INFO] Booting worker with pid: 6783 +[2025-08-31 15:25:57 +0800] [6783] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:25:57 +0800] [6783] [INFO] Worker exiting (pid: 6783) +[2025-08-31 15:25:57 +0800] [6782] [ERROR] Worker (pid:6783) exited with code 3 +[2025-08-31 15:25:57 +0800] [6782] [ERROR] Shutting down: Master +[2025-08-31 15:25:57 +0800] [6782] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:25:59.481 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:25:57 +0800] [6782] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:25:57 +0800] [6782] [INFO] Listening at: http://0.0.0.0:8000 (6782) +[2025-08-31 15:25:57 +0800] [6782] [INFO] Using worker: sync +[2025-08-31 15:25:57 +0800] [6783] [INFO] Booting worker with pid: 6783 +[2025-08-31 15:25:57 +0800] [6783] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:25:57 +0800] [6783] [INFO] Worker exiting (pid: 6783) +[2025-08-31 15:25:57 +0800] [6782] [ERROR] Worker (pid:6783) exited with code 3 +[2025-08-31 15:25:57 +0800] [6782] [ERROR] Shutting down: Master +[2025-08-31 15:25:57 +0800] [6782] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:28:44.667 | INFO | __main__::164 - 启动应用程序 +2025-08-31 15:28:44.692 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 15:28:44.701 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 15:28:44.701 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 15:28:44.703 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 15:28:44.703 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 15:28:44.704 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 15:28:44.704 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 15:28:44.705 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 15:28:44.706 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 15:28:44.708 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 15:28:47.916 | INFO | __main__::164 - 启动应用程序 +2025-08-31 15:28:47.933 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 15:28:47.940 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 15:28:47.940 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 15:28:47.942 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 15:28:47.942 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 15:28:47.942 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 15:28:47.943 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 15:28:47.944 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 15:28:47.946 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 15:28:47.947 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 15:28:57.277 | INFO | __main__::164 - 启动应用程序 +2025-08-31 15:28:57.302 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 15:28:57.308 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 15:28:57.308 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 15:28:57.309 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 15:28:57.310 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 15:28:57.310 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 15:28:57.312 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 15:28:57.313 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 15:28:57.314 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 15:28:57.316 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 15:28:58.872 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 15:28:58.959 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 15:29:01.348 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 15:29:01.349 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:29:01.349 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 15:29:01.349 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:29:01.349 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 15:29:01.351 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 15:29:11.693 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 status.wsgi:application +2025-08-31 15:29:11.876 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:29:09 +0800] [7016] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:29:09 +0800] [7016] [INFO] Listening at: http://0.0.0.0:8000 (7016) +[2025-08-31 15:29:09 +0800] [7016] [INFO] Using worker: sync +[2025-08-31 15:29:09 +0800] [7017] [INFO] Booting worker with pid: 7017 +[2025-08-31 15:29:09 +0800] [7017] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'status' +[2025-08-31 15:29:09 +0800] [7017] [INFO] Worker exiting (pid: 7017) +[2025-08-31 15:29:09 +0800] [7016] [ERROR] Worker (pid:7017) exited with code 3 +[2025-08-31 15:29:09 +0800] [7016] [ERROR] Shutting down: Master +[2025-08-31 15:29:09 +0800] [7016] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:29:11.878 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:29:09 +0800] [7016] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:29:09 +0800] [7016] [INFO] Listening at: http://0.0.0.0:8000 (7016) +[2025-08-31 15:29:09 +0800] [7016] [INFO] Using worker: sync +[2025-08-31 15:29:09 +0800] [7017] [INFO] Booting worker with pid: 7017 +[2025-08-31 15:29:09 +0800] [7017] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'status' +[2025-08-31 15:29:09 +0800] [7017] [INFO] Worker exiting (pid: 7017) +[2025-08-31 15:29:09 +0800] [7016] [ERROR] Worker (pid:7017) exited with code 3 +[2025-08-31 15:29:09 +0800] [7016] [ERROR] Shutting down: Master +[2025-08-31 15:29:09 +0800] [7016] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:29:44.491 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 status.wsgi:application +2025-08-31 15:29:44.669 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:29:42 +0800] [7049] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:29:42 +0800] [7049] [INFO] Listening at: http://0.0.0.0:8000 (7049) +[2025-08-31 15:29:42 +0800] [7049] [INFO] Using worker: sync +[2025-08-31 15:29:42 +0800] [7050] [INFO] Booting worker with pid: 7050 +[2025-08-31 15:29:42 +0800] [7050] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'status' +[2025-08-31 15:29:42 +0800] [7050] [INFO] Worker exiting (pid: 7050) +[2025-08-31 15:29:42 +0800] [7049] [ERROR] Worker (pid:7050) exited with code 3 +[2025-08-31 15:29:42 +0800] [7049] [ERROR] Shutting down: Master +[2025-08-31 15:29:42 +0800] [7049] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:29:44.671 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:29:42 +0800] [7049] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:29:42 +0800] [7049] [INFO] Listening at: http://0.0.0.0:8000 (7049) +[2025-08-31 15:29:42 +0800] [7049] [INFO] Using worker: sync +[2025-08-31 15:29:42 +0800] [7050] [INFO] Booting worker with pid: 7050 +[2025-08-31 15:29:42 +0800] [7050] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'status' +[2025-08-31 15:29:42 +0800] [7050] [INFO] Worker exiting (pid: 7050) +[2025-08-31 15:29:42 +0800] [7049] [ERROR] Worker (pid:7050) exited with code 3 +[2025-08-31 15:29:42 +0800] [7049] [ERROR] Shutting down: Master +[2025-08-31 15:29:42 +0800] [7049] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:30:48.769 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: ls -la /home/xiaji/webstatus/statuspage/ +2025-08-31 15:30:48.793 | INFO | gunicorn_tab:run:460 - Gunicorn命令执行成功: total 28 +drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 . +drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 .. +-rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 asgi.py +-rw-rw-r-- 1 xiaji xiaji 0 Aug 31 10:59 __init__.py +drwxrwxr-x 2 xiaji xiaji 4096 Aug 31 13:07 __pycache__ +-rw-rw-r-- 1 xiaji xiaji 3080 Aug 31 13:06 settings.py +-rw-rw-r-- 1 xiaji xiaji 813 Aug 31 10:59 urls.py +-rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 wsgi.py + +2025-08-31 15:30:48.794 | INFO | gunicorn_tab:on_command_result:921 - Gunicorn命令执行成功: 命令执行成功 +total 28 +drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 . +drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 .. +-rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 asgi.py +-rw-rw-r-- 1 xiaji xiaji 0 Aug 31 10:59 __init__.py +drwxrwxr-x 2 xiaji xiaji 4096 Aug 31 13:07 __pycache__ +-rw-rw-r-- 1 xiaji xiaji 3080 Aug 31 13:06 settings.py +-rw-rw-r-- 1 xiaji xiaji 813 Aug 31 10:59 urls.py +-rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 wsgi.py + +2025-08-31 15:32:30.905 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 2 +2025-08-31 15:32:30.906 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 +2025-08-31 15:32:30.906 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji +2025-08-31 15:32:30.906 | INFO | __main__:on_tab_changed:118 - 状态栏更新为Django项目: statuspage, 目录: /home/xiaji +2025-08-31 15:32:36.865 | INFO | django_threads:run:86 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 +2025-08-31 15:32:36.880 | INFO | django_threads:run:198 - 命令输出: /home/xiaji/webstatus/manage.py +2025-08-31 15:32:36.881 | INFO | django_tab:process_manage_py_result:288 - 找到manage.py文件: /home/xiaji/webstatus/manage.py +2025-08-31 15:32:36.881 | INFO | django_threads:run:211 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 +2025-08-31 15:32:36.884 | INFO | django_threads:run:86 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 +2025-08-31 15:32:36.932 | INFO | django_threads:run:198 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py +2025-08-31 15:32:36.932 | INFO | django_tab:process_settings_py_result:315 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py +2025-08-31 15:32:36.932 | INFO | django_threads:run:211 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 +2025-08-31 15:32:36.933 | INFO | django_tab:on_command_finished:155 - Django命令执行完成 +2025-08-31 15:32:39.151 | INFO | django_tab:download_settings:340 - settings.py已加载到编辑器: /home/xiaji/webstatus/statuspage/settings.py +2025-08-31 15:32:49.585 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 15:32:49.586 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:32:49.586 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 15:32:49.586 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:32:49.586 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 15:32:49.588 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 15:32:55.240 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: PYTHONPATH=. gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 15:32:55.420 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:32:53 +0800] [7221] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:32:53 +0800] [7221] [INFO] Listening at: http://0.0.0.0:8000 (7221) +[2025-08-31 15:32:53 +0800] [7221] [INFO] Using worker: sync +[2025-08-31 15:32:53 +0800] [7222] [INFO] Booting worker with pid: 7222 +[2025-08-31 15:32:53 +0800] [7222] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:32:53 +0800] [7222] [INFO] Worker exiting (pid: 7222) +[2025-08-31 15:32:53 +0800] [7221] [ERROR] Worker (pid:7222) exited with code 3 +[2025-08-31 15:32:53 +0800] [7221] [ERROR] Shutting down: Master +[2025-08-31 15:32:53 +0800] [7221] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:32:55.422 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:32:53 +0800] [7221] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:32:53 +0800] [7221] [INFO] Listening at: http://0.0.0.0:8000 (7221) +[2025-08-31 15:32:53 +0800] [7221] [INFO] Using worker: sync +[2025-08-31 15:32:53 +0800] [7222] [INFO] Booting worker with pid: 7222 +[2025-08-31 15:32:53 +0800] [7222] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:32:53 +0800] [7222] [INFO] Worker exiting (pid: 7222) +[2025-08-31 15:32:53 +0800] [7221] [ERROR] Worker (pid:7222) exited with code 3 +[2025-08-31 15:32:53 +0800] [7221] [ERROR] Shutting down: Master +[2025-08-31 15:32:53 +0800] [7221] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:33:26.844 | INFO | __main__::164 - 启动应用程序 +2025-08-31 15:33:26.872 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 15:33:26.880 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 15:33:26.881 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 15:33:26.883 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 15:33:26.883 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 15:33:26.884 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 15:33:26.884 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 15:33:26.885 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 15:33:26.890 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 15:33:26.893 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 15:33:31.856 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 15:33:31.943 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 15:33:34.711 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 15:33:34.712 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:33:34.712 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: status +2025-08-31 15:33:34.712 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:33:34.713 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: status, /home/xiaji/webstatus/ +2025-08-31 15:33:34.714 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_status, 目录: /home/xiaji/webstatus/ +2025-08-31 15:33:45.474 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 15:33:45.654 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:33:43 +0800] [7312] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:33:43 +0800] [7312] [INFO] Listening at: http://0.0.0.0:8000 (7312) +[2025-08-31 15:33:43 +0800] [7312] [INFO] Using worker: sync +[2025-08-31 15:33:43 +0800] [7313] [INFO] Booting worker with pid: 7313 +[2025-08-31 15:33:43 +0800] [7313] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:33:43 +0800] [7313] [INFO] Worker exiting (pid: 7313) +[2025-08-31 15:33:43 +0800] [7312] [ERROR] Worker (pid:7313) exited with code 3 +[2025-08-31 15:33:43 +0800] [7312] [ERROR] Shutting down: Master +[2025-08-31 15:33:43 +0800] [7312] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:33:45.659 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:33:43 +0800] [7312] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:33:43 +0800] [7312] [INFO] Listening at: http://0.0.0.0:8000 (7312) +[2025-08-31 15:33:43 +0800] [7312] [INFO] Using worker: sync +[2025-08-31 15:33:43 +0800] [7313] [INFO] Booting worker with pid: 7313 +[2025-08-31 15:33:43 +0800] [7313] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:33:43 +0800] [7313] [INFO] Worker exiting (pid: 7313) +[2025-08-31 15:33:43 +0800] [7312] [ERROR] Worker (pid:7313) exited with code 3 +[2025-08-31 15:33:43 +0800] [7312] [ERROR] Shutting down: Master +[2025-08-31 15:33:43 +0800] [7312] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:34:17.230 | INFO | __main__::164 - 启动应用程序 +2025-08-31 15:34:17.252 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 15:34:17.263 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 15:34:17.263 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 15:34:17.265 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 15:34:17.265 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 15:34:17.265 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 15:34:17.266 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 15:34:17.267 | INFO | remote_commands_tab:__init__:135 - 初始化远程命令标签页 +2025-08-31 15:34:17.269 | INFO | remote_commands_tab:init_ui:276 - 远程命令标签页UI初始化完成 +2025-08-31 15:34:17.271 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 15:34:19.229 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 15:34:19.315 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 15:34:21.877 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 1 +2025-08-31 15:34:21.877 | INFO | remote_commands_tab:set_ssh_client:299 - 设置SSH客户端 +2025-08-31 15:34:21.878 | INFO | remote_commands_tab:set_server_config:334 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 15:34:21.879 | INFO | remote_commands_tab:refresh_directory:462 - 刷新目录列表 +2025-08-31 15:34:21.879 | INFO | remote_commands_tab:refresh_directory:474 - 使用用户输入目录: /home/xiaji +2025-08-31 15:34:21.879 | INFO | remote_commands_tab:set_server_info:280 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'status', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 15:34:21.880 | INFO | __main__:on_tab_changed:83 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 15:34:21.881 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 15:34:21.889 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 15:34:21.893 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: /home/xiaji +2025-08-31 15:34:21.893 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: total 84 +2025-08-31 15:34:21.895 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 15:34:21.895 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. +2025-08-31 15:34:21.896 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 15:34:21.896 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 15:34:21.897 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 15:34:21.897 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 15:34:21.897 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 15:34:21.898 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh +2025-08-31 15:34:21.898 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 15:34:21.898 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 15:34:21.898 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 15:34:21.899 | INFO | remote_commands_tab:on_dir_refresh_finished:494 - 目录列表刷新成功 +2025-08-31 15:34:32.029 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 2 +2025-08-31 15:34:32.030 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 +2025-08-31 15:34:32.030 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji +2025-08-31 15:34:32.030 | INFO | __main__:on_tab_changed:118 - 状态栏更新为Django项目: status, 目录: /home/xiaji +2025-08-31 15:34:32.915 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 1 +2025-08-31 15:34:32.916 | INFO | remote_commands_tab:set_ssh_client:299 - 设置SSH客户端 +2025-08-31 15:34:32.916 | INFO | remote_commands_tab:set_server_config:334 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 15:34:32.917 | INFO | remote_commands_tab:refresh_directory:462 - 刷新目录列表 +2025-08-31 15:34:32.917 | INFO | remote_commands_tab:refresh_directory:474 - 使用用户输入目录: /home/xiaji +2025-08-31 15:34:32.917 | INFO | remote_commands_tab:set_server_info:280 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'status', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 15:34:32.918 | INFO | __main__:on_tab_changed:83 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 15:34:32.918 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 15:34:32.926 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: /home/xiaji +2025-08-31 15:34:32.927 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: total 84 +2025-08-31 15:34:32.928 | INFO | remote_commands_tab:run:113 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 15:34:32.928 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 15:34:32.928 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. +2025-08-31 15:34:32.929 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 15:34:32.929 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 15:34:32.930 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 15:34:32.930 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 15:34:32.930 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 15:34:32.931 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh +2025-08-31 15:34:32.931 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 15:34:32.931 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 15:34:32.932 | INFO | remote_commands_tab:append_dir_output:488 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 15:34:32.932 | INFO | remote_commands_tab:on_dir_refresh_finished:494 - 目录列表刷新成功 +2025-08-31 15:34:35.184 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 2 +2025-08-31 15:34:35.185 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 +2025-08-31 15:34:35.185 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji +2025-08-31 15:34:35.185 | INFO | __main__:on_tab_changed:118 - 状态栏更新为Django项目: status, 目录: /home/xiaji +2025-08-31 15:34:37.509 | INFO | django_threads:run:86 - 执行Django命令: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 +2025-08-31 15:34:37.520 | INFO | django_threads:run:198 - 命令输出: /home/xiaji/webstatus/manage.py +2025-08-31 15:34:37.520 | INFO | django_tab:process_manage_py_result:288 - 找到manage.py文件: /home/xiaji/webstatus/manage.py +2025-08-31 15:34:37.520 | INFO | django_threads:run:211 - 命令执行成功: find /home/xiaji -name "manage.py" 2>/dev/null | head -5 +2025-08-31 15:34:37.523 | INFO | django_threads:run:86 - 执行Django命令: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 +2025-08-31 15:34:37.571 | INFO | django_tab:process_settings_py_result:315 - 找到settings.py文件: /home/xiaji/webstatus/statuspage/settings.py +2025-08-31 15:34:37.571 | INFO | django_threads:run:198 - 命令输出: /home/xiaji/webstatus/statuspage/settings.py +2025-08-31 15:34:37.572 | INFO | django_threads:run:211 - 命令执行成功: find /home/xiaji -name "settings.py" 2>/dev/null | head -5 +2025-08-31 15:34:37.576 | INFO | django_tab:on_command_finished:155 - Django命令执行完成 +2025-08-31 15:34:39.817 | INFO | django_tab:download_settings:340 - settings.py已加载到编辑器: /home/xiaji/webstatus/statuspage/settings.py +2025-08-31 15:34:51.221 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 15:34:51.221 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:34:51.222 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: status +2025-08-31 15:34:51.222 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:34:51.222 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: status, /home/xiaji/webstatus/ +2025-08-31 15:34:51.223 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_status, 目录: /home/xiaji/webstatus/ +2025-08-31 15:35:06.876 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 15:35:07.052 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:35:04 +0800] [7466] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:35:04 +0800] [7466] [INFO] Listening at: http://0.0.0.0:8000 (7466) +[2025-08-31 15:35:04 +0800] [7466] [INFO] Using worker: sync +[2025-08-31 15:35:04 +0800] [7467] [INFO] Booting worker with pid: 7467 +[2025-08-31 15:35:04 +0800] [7467] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:35:04 +0800] [7467] [INFO] Worker exiting (pid: 7467) +[2025-08-31 15:35:04 +0800] [7466] [ERROR] Worker (pid:7467) exited with code 3 +[2025-08-31 15:35:04 +0800] [7466] [ERROR] Shutting down: Master +[2025-08-31 15:35:04 +0800] [7466] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:35:07.056 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:35:04 +0800] [7466] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:35:04 +0800] [7466] [INFO] Listening at: http://0.0.0.0:8000 (7466) +[2025-08-31 15:35:04 +0800] [7466] [INFO] Using worker: sync +[2025-08-31 15:35:04 +0800] [7467] [INFO] Booting worker with pid: 7467 +[2025-08-31 15:35:04 +0800] [7467] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:35:04 +0800] [7467] [INFO] Worker exiting (pid: 7467) +[2025-08-31 15:35:04 +0800] [7466] [ERROR] Worker (pid:7467) exited with code 3 +[2025-08-31 15:35:04 +0800] [7466] [ERROR] Shutting down: Master +[2025-08-31 15:35:04 +0800] [7466] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:36:18.899 | INFO | __main__::164 - 启动应用程序 +2025-08-31 15:36:18.923 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 15:36:18.928 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 15:36:18.928 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 15:36:18.929 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 15:36:18.930 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 15:36:18.930 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 15:36:18.931 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 15:36:18.932 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 15:36:18.933 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 15:36:18.935 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 15:36:24.237 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 15:36:24.332 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 15:36:26.469 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 15:36:26.470 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 15:36:26.470 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: status +2025-08-31 15:36:26.470 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 15:36:26.471 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: status, /home/xiaji/webstatus/ +2025-08-31 15:36:26.472 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_status, 目录: /home/xiaji/webstatus/ +2025-08-31 15:37:07.739 | INFO | gunicorn_tab:run:325 - Gunicorn服务文件上传成功: gunicorn_status.service +2025-08-31 15:37:07.740 | INFO | gunicorn_tab:on_upload_result:726 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_status.service +2025-08-31 15:37:12.615 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 15:37:12.794 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 15:37:10 +0800] [7646] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:37:10 +0800] [7646] [INFO] Listening at: http://0.0.0.0:8000 (7646) +[2025-08-31 15:37:10 +0800] [7646] [INFO] Using worker: sync +[2025-08-31 15:37:10 +0800] [7647] [INFO] Booting worker with pid: 7647 +[2025-08-31 15:37:10 +0800] [7647] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:37:10 +0800] [7647] [INFO] Worker exiting (pid: 7647) +[2025-08-31 15:37:10 +0800] [7646] [ERROR] Worker (pid:7647) exited with code 3 +[2025-08-31 15:37:10 +0800] [7646] [ERROR] Shutting down: Master +[2025-08-31 15:37:10 +0800] [7646] [ERROR] Reason: Worker failed to boot. + +2025-08-31 15:37:12.797 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 15:37:10 +0800] [7646] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 15:37:10 +0800] [7646] [INFO] Listening at: http://0.0.0.0:8000 (7646) +[2025-08-31 15:37:10 +0800] [7646] [INFO] Using worker: sync +[2025-08-31 15:37:10 +0800] [7647] [INFO] Booting worker with pid: 7647 +[2025-08-31 15:37:10 +0800] [7647] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 15:37:10 +0800] [7647] [INFO] Worker exiting (pid: 7647) +[2025-08-31 15:37:10 +0800] [7646] [ERROR] Worker (pid:7647) exited with code 3 +[2025-08-31 15:37:10 +0800] [7646] [ERROR] Shutting down: Master +[2025-08-31 15:37:10 +0800] [7646] [ERROR] Reason: Worker failed to boot. + +2025-08-31 16:14:11.964 | INFO | __main__::166 - 启动应用程序 +2025-08-31 16:14:11.987 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 16:14:11.994 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 16:14:11.994 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 16:14:11.996 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 16:14:11.996 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 16:14:11.997 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 16:14:11.997 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 16:14:11.999 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 16:14:12.000 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 16:14:12.002 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 16:44:32.759 | INFO | __main__::166 - 启动应用程序 +2025-08-31 16:44:32.801 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 16:44:32.811 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 16:44:32.811 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 16:44:32.814 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 16:44:32.814 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 16:44:32.815 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 16:44:32.816 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 16:44:32.818 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 16:44:32.820 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 16:44:32.824 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 17:52:34.782 | INFO | __main__::166 - 启动应用程序 +2025-08-31 17:52:34.805 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 17:52:34.810 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 17:52:34.810 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 17:52:34.812 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 17:52:34.813 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 17:52:34.814 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 17:52:34.814 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 17:52:34.815 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 17:52:34.816 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 17:52:34.818 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 17:52:38.233 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 17:52:38.338 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 17:52:41.460 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 1 +2025-08-31 17:52:41.461 | INFO | remote_commands_tab:set_ssh_client:309 - 设置SSH客户端 +2025-08-31 17:52:41.462 | 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 17:52:41.462 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 17:52:41.462 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji +2025-08-31 17:52:41.463 | INFO | remote_commands_tab:set_server_info:290 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'status', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 17:52:41.464 | INFO | __main__:on_tab_changed:83 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 17:52:41.464 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 17:52:41.473 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 17:52:41.473 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 17:52:41.524 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji +2025-08-31 17:52:41.526 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 17:52:41.528 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 84 +2025-08-31 17:52:41.529 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 17:52:41.530 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. +2025-08-31 17:52:41.530 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 17:52:41.531 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 17:52:41.531 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 17:52:41.531 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 17:52:41.532 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 17:52:41.532 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh +2025-08-31 17:52:41.532 | 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 17:52:41.534 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 17:52:41.534 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 17:52:41.534 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 17:52:41.727 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 2 +2025-08-31 17:52:41.728 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 +2025-08-31 17:52:41.728 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji +2025-08-31 17:52:41.728 | INFO | __main__:on_tab_changed:118 - 状态栏更新为Django项目: status, 目录: /home/xiaji +2025-08-31 17:52:42.317 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 17:52:42.318 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 17:52:42.318 | INFO | __main__:on_tab_changed:155 - 构建的Django路径: /home/xiaji/webstatus/status/, 项目名: status +2025-08-31 17:52:42.318 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 17:52:42.318 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: status, /home/xiaji/webstatus/status/ +2025-08-31 17:52:42.321 | INFO | __main__:on_tab_changed:162 - 状态栏更新为Gunicorn服务: gunicorn_status, 目录: /home/xiaji/webstatus/status/ +2025-08-31 17:52:50.329 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 myproject.wsgi:application +2025-08-31 17:52:50.510 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 17:52:50 +0800] [14191] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 17:52:50 +0800] [14191] [INFO] Listening at: http://0.0.0.0:8000 (14191) +[2025-08-31 17:52:50 +0800] [14191] [INFO] Using worker: sync +[2025-08-31 17:52:50 +0800] [14192] [INFO] Booting worker with pid: 14192 +[2025-08-31 17:52:50 +0800] [14192] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'myproject' +[2025-08-31 17:52:50 +0800] [14192] [INFO] Worker exiting (pid: 14192) +[2025-08-31 17:52:50 +0800] [14191] [ERROR] Worker (pid:14192) exited with code 3 +[2025-08-31 17:52:50 +0800] [14191] [ERROR] Shutting down: Master +[2025-08-31 17:52:50 +0800] [14191] [ERROR] Reason: Worker failed to boot. + +2025-08-31 17:52:50.514 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 17:52:50 +0800] [14191] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 17:52:50 +0800] [14191] [INFO] Listening at: http://0.0.0.0:8000 (14191) +[2025-08-31 17:52:50 +0800] [14191] [INFO] Using worker: sync +[2025-08-31 17:52:50 +0800] [14192] [INFO] Booting worker with pid: 14192 +[2025-08-31 17:52:50 +0800] [14192] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'myproject' +[2025-08-31 17:52:50 +0800] [14192] [INFO] Worker exiting (pid: 14192) +[2025-08-31 17:52:50 +0800] [14191] [ERROR] Worker (pid:14192) exited with code 3 +[2025-08-31 17:52:50 +0800] [14191] [ERROR] Shutting down: Master +[2025-08-31 17:52:50 +0800] [14191] [ERROR] Reason: Worker failed to boot. + +2025-08-31 17:53:08.191 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 1 +2025-08-31 17:53:08.192 | INFO | remote_commands_tab:set_ssh_client:309 - 设置SSH客户端 +2025-08-31 17:53:08.193 | 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 17:53:08.193 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 17:53:08.193 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji +2025-08-31 17:53:08.194 | INFO | remote_commands_tab:set_server_info:290 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'status', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 17:53:08.194 | INFO | __main__:on_tab_changed:83 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 17:53:08.194 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 17:53:08.202 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 17:53:08.202 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 17:53:08.252 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji +2025-08-31 17:53:08.253 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 84 +2025-08-31 17:53:08.254 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 17:53:08.254 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 17:53:08.255 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 2025 .. +2025-08-31 17:53:08.256 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 17:53:08.256 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 17:53:08.256 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 17:53:08.257 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 17:53:08.257 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 17:53:08.257 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 2025 .ssh +2025-08-31 17:53:08.258 | 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 17:53:08.258 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 17:53:08.258 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 17:53:08.259 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 17:53:16.168 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 17:53:16.168 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji/webstatus +2025-08-31 17:53:16.170 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/webstatus && pwd && ls -la +2025-08-31 17:53:16.178 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 17:53:16.179 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 17:53:16.228 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji/webstatus +2025-08-31 17:53:16.229 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji/webstatus && pwd && ls -la +2025-08-31 17:53:16.230 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 160 +2025-08-31 17:53:16.231 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 . +2025-08-31 17:53:16.231 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 .. +2025-08-31 17:53:16.232 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 135168 Aug 31 10:59 db.sqlite3 +2025-08-31 17:53:16.232 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 8 xiaji xiaji 4096 Aug 31 10:59 .git +2025-08-31 17:53:16.232 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 666 Aug 31 10:59 manage.py +2025-08-31 17:53:16.233 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 13 Aug 31 10:59 requirements.txt +2025-08-31 17:53:16.233 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 status +2025-08-31 17:53:16.234 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 statuspage +2025-08-31 17:53:16.234 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 17:53:26.340 | INFO | remote_commands_tab:on_current_dir_entered:454 - 用户输入目录路径并按回车键 +2025-08-31 17:53:26.341 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 17:53:26.341 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji/webstatus/statuspage +2025-08-31 17:53:26.342 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/webstatus/statuspage && pwd && ls -la +2025-08-31 17:53:26.349 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 17:53:26.349 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 17:53:26.398 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji/webstatus/statuspage +2025-08-31 17:53:26.399 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji/webstatus/statuspage && pwd && ls -la +2025-08-31 17:53:26.399 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 28 +2025-08-31 17:53:26.400 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 . +2025-08-31 17:53:26.400 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 .. +2025-08-31 17:53:26.401 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 asgi.py +2025-08-31 17:53:26.401 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 0 Aug 31 10:59 __init__.py +2025-08-31 17:53:26.402 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 2 xiaji xiaji 4096 Aug 31 13:07 __pycache__ +2025-08-31 17:53:26.402 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 3080 Aug 31 13:06 settings.py +2025-08-31 17:53:26.404 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 813 Aug 31 10:59 urls.py +2025-08-31 17:53:26.404 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 wsgi.py +2025-08-31 17:53:26.405 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 17:53:32.720 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 17:53:32.721 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 17:53:32.721 | INFO | __main__:on_tab_changed:155 - 构建的Django路径: /home/xiaji/webstatus/status/, 项目名: status +2025-08-31 17:53:32.721 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 17:53:32.721 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: status, /home/xiaji/webstatus/status/ +2025-08-31 17:53:32.723 | INFO | __main__:on_tab_changed:162 - 状态栏更新为Gunicorn服务: gunicorn_status, 目录: /home/xiaji/webstatus/status/ +2025-08-31 17:58:26.091 | INFO | __main__::166 - 启动应用程序 +2025-08-31 17:58:26.116 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 17:58:26.122 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 17:58:26.123 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 17:58:26.124 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 17:58:26.124 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 17:58:26.125 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 17:58:26.125 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 17:58:26.127 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 17:58:26.128 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 17:58:26.131 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 17:58:27.403 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 17:58:27.490 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 17:58:29.034 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 17:58:29.035 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 17:58:29.035 | INFO | __main__:on_tab_changed:155 - 构建的Django路径: /home/xiaji/webstatus/statuspage/, 项目名: statuspage +2025-08-31 17:58:29.035 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 17:58:29.035 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/statuspage/ +2025-08-31 17:58:29.037 | INFO | __main__:on_tab_changed:162 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/statuspage/ +2025-08-31 17:58:44.814 | INFO | gunicorn_tab:run:449 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 17:58:45.574 | ERROR | gunicorn_tab:run:463 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 17:58:44 +0800] [14555] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 17:58:44 +0800] [14555] [INFO] Listening at: http://0.0.0.0:8000 (14555) +[2025-08-31 17:58:44 +0800] [14555] [INFO] Using worker: sync +[2025-08-31 17:58:44 +0800] [14556] [INFO] Booting worker with pid: 14556 +[2025-08-31 17:58:44 +0800] [14556] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 17:58:44 +0800] [14556] [INFO] Worker exiting (pid: 14556) +[2025-08-31 17:58:44 +0800] [14557] [INFO] Booting worker with pid: 14557 +[2025-08-31 17:58:44 +0800] [14555] [ERROR] Worker (pid:14556) exited with code 3 +[2025-08-31 17:58:44 +0800] [14557] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 17:58:44 +0800] [14557] [INFO] Worker exiting (pid: 14557) +[2025-08-31 17:58:44 +0800] [14555] [ERROR] Worker (pid:14557) exited with code 3 +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 201, in run + self.manage_workers() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 570, in manage_workers + self.spawn_workers() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 642, in spawn_workers + time.sleep(0.1 * random.random()) + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 241, in handle_chld + self.reap_workers() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 529, in reap_workers + raise HaltServer(reason, self.WORKER_BOOT_ERROR) +gunicorn.errors.HaltServer: + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/bin/gunicorn", line 8, in + sys.exit(run()) + ^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 66, in run + WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]", prog=prog).run() + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 235, in run + super().run() + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 71, in run + Arbiter(self).run() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 228, in run + self.halt(reason=inst.reason, exit_status=inst.exit_status) + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 341, in halt + self.stop() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 395, in stop + time.sleep(0.1) + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 241, in handle_chld + self.reap_workers() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 529, in reap_workers + raise HaltServer(reason, self.WORKER_BOOT_ERROR) +gunicorn.errors.HaltServer: + +2025-08-31 17:58:45.584 | ERROR | gunicorn_tab:on_command_result:925 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 17:58:44 +0800] [14555] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 17:58:44 +0800] [14555] [INFO] Listening at: http://0.0.0.0:8000 (14555) +[2025-08-31 17:58:44 +0800] [14555] [INFO] Using worker: sync +[2025-08-31 17:58:44 +0800] [14556] [INFO] Booting worker with pid: 14556 +[2025-08-31 17:58:44 +0800] [14556] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 17:58:44 +0800] [14556] [INFO] Worker exiting (pid: 14556) +[2025-08-31 17:58:44 +0800] [14557] [INFO] Booting worker with pid: 14557 +[2025-08-31 17:58:44 +0800] [14555] [ERROR] Worker (pid:14556) exited with code 3 +[2025-08-31 17:58:44 +0800] [14557] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 17:58:44 +0800] [14557] [INFO] Worker exiting (pid: 14557) +[2025-08-31 17:58:44 +0800] [14555] [ERROR] Worker (pid:14557) exited with code 3 +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 201, in run + self.manage_workers() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 570, in manage_workers + self.spawn_workers() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 642, in spawn_workers + time.sleep(0.1 * random.random()) + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 241, in handle_chld + self.reap_workers() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 529, in reap_workers + raise HaltServer(reason, self.WORKER_BOOT_ERROR) +gunicorn.errors.HaltServer: + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/usr/bin/gunicorn", line 8, in + sys.exit(run()) + ^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 66, in run + WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]", prog=prog).run() + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 235, in run + super().run() + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 71, in run + Arbiter(self).run() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 228, in run + self.halt(reason=inst.reason, exit_status=inst.exit_status) + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 341, in halt + self.stop() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 395, in stop + time.sleep(0.1) + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 241, in handle_chld + self.reap_workers() + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 529, in reap_workers + raise HaltServer(reason, self.WORKER_BOOT_ERROR) +gunicorn.errors.HaltServer: + +2025-08-31 18:00:13.033 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 1 +2025-08-31 18:00:13.033 | INFO | remote_commands_tab:set_ssh_client:309 - 设置SSH客户端 +2025-08-31 18:00:13.034 | 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 18:00:13.034 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 18:00:13.034 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji +2025-08-31 18:00:13.035 | 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 18:00:13.035 | INFO | __main__:on_tab_changed:83 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 18:00:13.036 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 18:00:13.045 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 18:00:13.046 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 18:00:13.098 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji +2025-08-31 18:00:13.099 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 18:00:13.100 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 84 +2025-08-31 18:00:13.100 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 18:00:13.101 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 18:00:13.101 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 18:00:13.101 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 18:00:13.102 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 18:00:13.102 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 18:00:13.102 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 18:00:13.103 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 18:00:13.104 | 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 18:00:13.104 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 18:00:13.105 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 18:00:13.105 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 18:00:25.250 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 18:00:25.250 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji/webstatus/statuspage +2025-08-31 18:00:25.252 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/webstatus/statuspage && pwd && ls -la +2025-08-31 18:00:25.259 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 18:00:25.259 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 18:00:25.309 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji/webstatus/statuspage +2025-08-31 18:00:25.310 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 28 +2025-08-31 18:00:25.310 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 . +2025-08-31 18:00:25.310 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 .. +2025-08-31 18:00:25.310 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji/webstatus/statuspage && pwd && ls -la +2025-08-31 18:00:25.311 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 asgi.py +2025-08-31 18:00:25.311 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 0 Aug 31 10:59 __init__.py +2025-08-31 18:00:25.312 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 2 xiaji xiaji 4096 Aug 31 13:07 __pycache__ +2025-08-31 18:00:25.312 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 3080 Aug 31 13:06 settings.py +2025-08-31 18:00:25.312 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 813 Aug 31 10:59 urls.py +2025-08-31 18:00:25.313 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 wsgi.py +2025-08-31 18:00:25.313 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 18:06:12.334 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 18:06:12.336 | INFO | gunicorn_tab:set_ssh_client:595 - Gunicorn标签页已设置SSH客户端 +2025-08-31 18:06:12.336 | INFO | __main__:on_tab_changed:155 - 构建的Django路径: /home/xiaji/webstatus/statuspage/, 项目名: statuspage +2025-08-31 18:06:12.337 | INFO | gunicorn_tab:set_username:600 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 18:06:12.337 | INFO | gunicorn_tab:set_project_info:606 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/statuspage/ +2025-08-31 18:06:12.339 | INFO | __main__:on_tab_changed:162 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/statuspage/ +2025-08-31 18:16:30.073 | INFO | __main__::164 - 启动应用程序 +2025-08-31 18:16:30.098 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 18:16:30.102 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 18:16:30.103 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 18:16:30.104 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 18:16:30.105 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 18:16:30.105 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 18:16:30.106 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 18:16:30.106 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 18:16:30.109 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 18:16:30.111 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 18:16:31.461 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 18:16:31.555 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 18:16:33.636 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 18:16:33.637 | INFO | gunicorn_tab:set_ssh_client:596 - Gunicorn标签页已设置SSH客户端 +2025-08-31 18:16:33.637 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 18:16:33.637 | INFO | gunicorn_tab:set_username:601 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 18:16:33.637 | INFO | gunicorn_tab:set_project_info:607 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 18:16:33.639 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 18:16:40.120 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 0 +2025-08-31 18:16:42.094 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 18:16:42.095 | INFO | gunicorn_tab:set_ssh_client:596 - Gunicorn标签页已设置SSH客户端 +2025-08-31 18:16:42.095 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 18:16:42.096 | INFO | gunicorn_tab:set_username:601 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 18:16:42.096 | INFO | gunicorn_tab:set_project_info:607 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 18:16:42.097 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 18:16:55.948 | INFO | gunicorn_tab:run:450 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 18:16:56.136 | ERROR | gunicorn_tab:run:464 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 18:16:55 +0800] [15487] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 18:16:55 +0800] [15487] [INFO] Listening at: http://0.0.0.0:8000 (15487) +[2025-08-31 18:16:55 +0800] [15487] [INFO] Using worker: sync +[2025-08-31 18:16:55 +0800] [15488] [INFO] Booting worker with pid: 15488 +[2025-08-31 18:16:55 +0800] [15488] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 18:16:55 +0800] [15488] [INFO] Worker exiting (pid: 15488) +[2025-08-31 18:16:56 +0800] [15487] [ERROR] Worker (pid:15488) exited with code 3 +[2025-08-31 18:16:56 +0800] [15487] [ERROR] Shutting down: Master +[2025-08-31 18:16:56 +0800] [15487] [ERROR] Reason: Worker failed to boot. + +2025-08-31 18:16:56.141 | ERROR | gunicorn_tab:on_command_result:926 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 18:16:55 +0800] [15487] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 18:16:55 +0800] [15487] [INFO] Listening at: http://0.0.0.0:8000 (15487) +[2025-08-31 18:16:55 +0800] [15487] [INFO] Using worker: sync +[2025-08-31 18:16:55 +0800] [15488] [INFO] Booting worker with pid: 15488 +[2025-08-31 18:16:55 +0800] [15488] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 18:16:55 +0800] [15488] [INFO] Worker exiting (pid: 15488) +[2025-08-31 18:16:56 +0800] [15487] [ERROR] Worker (pid:15488) exited with code 3 +[2025-08-31 18:16:56 +0800] [15487] [ERROR] Shutting down: Master +[2025-08-31 18:16:56 +0800] [15487] [ERROR] Reason: Worker failed to boot. + +2025-08-31 18:17:47.759 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 1 +2025-08-31 18:17:47.759 | INFO | remote_commands_tab:set_ssh_client:309 - 设置SSH客户端 +2025-08-31 18:17:47.760 | 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 18:17:47.760 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 18:17:47.760 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji +2025-08-31 18:17:47.761 | 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 18:17:47.761 | INFO | __main__:on_tab_changed:83 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 18:17:47.761 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 18:17:47.771 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 18:17:47.771 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 18:17:47.822 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji +2025-08-31 18:17:47.822 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 18:17:47.823 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 84 +2025-08-31 18:17:47.824 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 18:17:47.824 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 18:17:47.824 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 18:17:47.825 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 18:17:47.825 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 18:17:47.825 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 18:17:47.825 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 18:17:47.826 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 18:17:47.826 | 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 18:17:47.826 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 webstatus +2025-08-31 18:17:47.826 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 18:17:47.827 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 18:17:53.263 | INFO | remote_commands_tab:on_current_dir_entered:454 - 用户输入目录路径并按回车键 +2025-08-31 18:17:53.264 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 18:17:53.264 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji/webstatus +2025-08-31 18:17:53.265 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/webstatus && pwd && ls -la +2025-08-31 18:17:53.276 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 18:17:53.277 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 18:17:53.325 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji/webstatus +2025-08-31 18:17:53.326 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji/webstatus && pwd && ls -la +2025-08-31 18:17:53.327 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 160 +2025-08-31 18:17:53.327 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 . +2025-08-31 18:17:53.328 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 .. +2025-08-31 18:17:53.328 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 135168 Aug 31 10:59 db.sqlite3 +2025-08-31 18:17:53.329 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 8 xiaji xiaji 4096 Aug 31 10:59 .git +2025-08-31 18:17:53.329 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 666 Aug 31 10:59 manage.py +2025-08-31 18:17:53.330 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 13 Aug 31 10:59 requirements.txt +2025-08-31 18:17:53.330 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 status +2025-08-31 18:17:53.330 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 statuspage +2025-08-31 18:17:53.331 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 18:18:18.562 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 18:18:18.563 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji/webstatus/statuspage +2025-08-31 18:18:18.564 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji/webstatus/statuspage && pwd && ls -la +2025-08-31 18:18:18.572 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 18:18:18.573 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 18:18:18.622 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji/webstatus/statuspage +2025-08-31 18:18:18.624 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 28 +2025-08-31 18:18:18.624 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji/webstatus/statuspage && pwd && ls -la +2025-08-31 18:18:18.625 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 . +2025-08-31 18:18:18.625 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 5 xiaji xiaji 4096 Aug 31 10:59 .. +2025-08-31 18:18:18.626 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 asgi.py +2025-08-31 18:18:18.626 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 0 Aug 31 10:59 __init__.py +2025-08-31 18:18:18.627 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 2 xiaji xiaji 4096 Aug 31 13:07 __pycache__ +2025-08-31 18:18:18.627 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 3080 Aug 31 13:06 settings.py +2025-08-31 18:18:18.627 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 813 Aug 31 10:59 urls.py +2025-08-31 18:18:18.628 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 397 Aug 31 10:59 wsgi.py +2025-08-31 18:18:18.628 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 19:40:04.824 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 0 +2025-08-31 19:40:05.855 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 19:40:05.941 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 19:40:08.064 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 19:40:08.065 | INFO | gunicorn_tab:set_ssh_client:596 - Gunicorn标签页已设置SSH客户端 +2025-08-31 19:40:08.065 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 19:40:08.065 | INFO | gunicorn_tab:set_username:601 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 19:40:08.065 | INFO | gunicorn_tab:set_project_info:607 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 19:40:08.066 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 19:40:17.865 | INFO | gunicorn_tab:run:450 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 19:40:18.048 | ERROR | gunicorn_tab:run:464 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 19:40:17 +0800] [19536] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 19:40:17 +0800] [19536] [INFO] Listening at: http://0.0.0.0:8000 (19536) +[2025-08-31 19:40:17 +0800] [19536] [INFO] Using worker: sync +[2025-08-31 19:40:17 +0800] [19537] [INFO] Booting worker with pid: 19537 +[2025-08-31 19:40:17 +0800] [19537] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 19:40:17 +0800] [19537] [INFO] Worker exiting (pid: 19537) +[2025-08-31 19:40:17 +0800] [19536] [ERROR] Worker (pid:19537) exited with code 3 +[2025-08-31 19:40:17 +0800] [19536] [ERROR] Shutting down: Master +[2025-08-31 19:40:17 +0800] [19536] [ERROR] Reason: Worker failed to boot. + +2025-08-31 19:40:18.051 | ERROR | gunicorn_tab:on_command_result:926 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 19:40:17 +0800] [19536] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 19:40:17 +0800] [19536] [INFO] Listening at: http://0.0.0.0:8000 (19536) +[2025-08-31 19:40:17 +0800] [19536] [INFO] Using worker: sync +[2025-08-31 19:40:17 +0800] [19537] [INFO] Booting worker with pid: 19537 +[2025-08-31 19:40:17 +0800] [19537] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 19:40:17 +0800] [19537] [INFO] Worker exiting (pid: 19537) +[2025-08-31 19:40:17 +0800] [19536] [ERROR] Worker (pid:19537) exited with code 3 +[2025-08-31 19:40:17 +0800] [19536] [ERROR] Shutting down: Master +[2025-08-31 19:40:17 +0800] [19536] [ERROR] Reason: Worker failed to boot. + +2025-08-31 19:42:50.616 | INFO | gunicorn_tab:run:450 - 开始执行Gunicorn命令: sudo gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 19:42:50.910 | ERROR | gunicorn_tab:run:464 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 19:42:50 +0800] [19659] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 19:42:50 +0800] [19659] [INFO] Listening at: http://0.0.0.0:8000 (19659) +[2025-08-31 19:42:50 +0800] [19659] [INFO] Using worker: sync +[2025-08-31 19:42:50 +0800] [19663] [INFO] Booting worker with pid: 19663 +[2025-08-31 19:42:50 +0800] [19663] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 19:42:50 +0800] [19663] [INFO] Worker exiting (pid: 19663) +[2025-08-31 19:42:50 +0800] [19664] [INFO] Booting worker with pid: 19664 +[2025-08-31 19:42:50 +0800] [19664] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 19:42:50 +0800] [19664] [INFO] Worker exiting (pid: 19664) +[2025-08-31 19:42:50 +0800] [19659] [ERROR] Worker (pid:19663) exited with code 3 +[2025-08-31 19:42:50 +0800] [19659] [ERROR] Worker (pid:19664) was sent SIGTERM! +[2025-08-31 19:42:50 +0800] [19659] [ERROR] Shutting down: Master +[2025-08-31 19:42:50 +0800] [19659] [ERROR] Reason: Worker failed to boot. + +2025-08-31 19:42:50.913 | ERROR | gunicorn_tab:on_command_result:926 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 19:42:50 +0800] [19659] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 19:42:50 +0800] [19659] [INFO] Listening at: http://0.0.0.0:8000 (19659) +[2025-08-31 19:42:50 +0800] [19659] [INFO] Using worker: sync +[2025-08-31 19:42:50 +0800] [19663] [INFO] Booting worker with pid: 19663 +[2025-08-31 19:42:50 +0800] [19663] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 19:42:50 +0800] [19663] [INFO] Worker exiting (pid: 19663) +[2025-08-31 19:42:50 +0800] [19664] [INFO] Booting worker with pid: 19664 +[2025-08-31 19:42:50 +0800] [19664] [ERROR] Exception in worker process +Traceback (most recent call last): + File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 608, in spawn_worker + worker.init_process() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in init_process + self.load_wsgi() + File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 147, in load_wsgi + self.wsgi = self.app.wsgi() + ^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 66, in wsgi + self.callable = self.load() + ^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 57, in load + return self.load_wsgiapp() + ^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp + return util.import_app(self.app_uri) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 395, in import_app + mod = importlib.import_module(module) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module + return _bootstrap._gcd_import(name[level:], package, level) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1310, in _find_and_load_unlocked + File "", line 488, in _call_with_frames_removed + File "", line 1387, in _gcd_import + File "", line 1360, in _find_and_load + File "", line 1324, in _find_and_load_unlocked +ModuleNotFoundError: No module named 'statuspage' +[2025-08-31 19:42:50 +0800] [19664] [INFO] Worker exiting (pid: 19664) +[2025-08-31 19:42:50 +0800] [19659] [ERROR] Worker (pid:19663) exited with code 3 +[2025-08-31 19:42:50 +0800] [19659] [ERROR] Worker (pid:19664) was sent SIGTERM! +[2025-08-31 19:42:50 +0800] [19659] [ERROR] Shutting down: Master +[2025-08-31 19:42:50 +0800] [19659] [ERROR] Reason: Worker failed to boot. + +2025-08-31 19:43:46.214 | INFO | __main__::164 - 启动应用程序 +2025-08-31 19:43:46.237 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 19:43:46.243 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 19:43:46.243 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 19:43:46.245 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 19:43:46.245 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 19:43:46.246 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 19:43:46.246 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 19:43:46.247 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 19:43:46.249 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 19:43:46.250 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 19:43:47.503 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 19:43:47.592 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 19:43:49.458 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 19:43:49.459 | INFO | gunicorn_tab:set_ssh_client:620 - Gunicorn标签页已设置SSH客户端 +2025-08-31 19:43:49.459 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 19:43:49.459 | INFO | gunicorn_tab:set_username:625 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 19:43:49.460 | INFO | gunicorn_tab:set_project_info:631 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 19:43:49.461 | INFO | gunicorn_tab:update_command_editor:658 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 19:43:49.462 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 19:44:15.759 | INFO | __main__::164 - 启动应用程序 +2025-08-31 19:44:15.782 | INFO | __main__:__init__:16 - 初始化主窗口 +2025-08-31 19:44:15.788 | INFO | __main__:__init__:31 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 19:44:15.788 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 19:44:15.790 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 19:44:15.790 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 19:44:15.791 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 19:44:15.791 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 19:44:15.792 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 19:44:15.795 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 19:44:15.797 | INFO | __main__:__init__:52 - 主窗口初始化完成 +2025-08-31 19:44:17.350 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 19:44:17.439 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 19:44:19.081 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 19:44:19.081 | INFO | gunicorn_tab:set_ssh_client:620 - Gunicorn标签页已设置SSH客户端 +2025-08-31 19:44:19.082 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 19:44:19.082 | INFO | gunicorn_tab:set_username:625 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 19:44:19.082 | INFO | gunicorn_tab:set_project_info:631 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 19:44:19.083 | INFO | gunicorn_tab:update_command_editor:658 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 19:44:19.084 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 19:44:24.450 | INFO | gunicorn_tab:run:452 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 19:44:24.450 | INFO | gunicorn_tab:run:462 - 添加--pythonpath参数后的命令: gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 19:44:24.450 | INFO | gunicorn_tab:run:467 - 在目录 /home/xiaji/webstatus/ 中执行命令: cd /home/xiaji/webstatus/ && bash -c 'echo "xiaji" | sudo -S gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application' +2025-08-31 19:44:42.806 | 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 19:44:40 CST; 1s ago + Invocation: 8e54a758d19b4abea5d4676571dbc649 + Process: 19902 ExecStart=/usr/local/bin/gunicorn \ (code=exited, status=203/EXEC) + Main PID: 19902 (code=exited, status=203/EXEC) + Mem peak: 1.6M + CPU: 8ms + +2025-08-31 19:44:42.807 | INFO | gunicorn_tab:on_control_result:894 - 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 19:44:40 CST; 1s ago + Invocation: 8e54a758d19b4abea5d4676571dbc649 + Process: 19902 ExecStart=/usr/local/bin/gunicorn \ (code=exited, status=203/EXEC) + Main PID: 19902 (code=exited, status=203/EXEC) + Mem peak: 1.6M + CPU: 8ms + +2025-08-31 19:49:14.125 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 19:49:14.126 | INFO | gunicorn_tab:on_upload_result:764 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 19:49:19.340 | INFO | gunicorn_tab:run:416 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 19:49:19.417 | INFO | gunicorn_tab:run:427 - 开始重启服务器 +2025-08-31 19:49:19.465 | INFO | gunicorn_tab:run:431 - 时区设置成功,服务器正在重启 +2025-08-31 19:49:19.468 | INFO | gunicorn_tab:on_server_control_result:924 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 19:49:19.670 | ERROR | gunicorn_tab:run:485 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 19:44:24 +0800] [19886] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 19:44:24 +0800] [19886] [INFO] Listening at: http://0.0.0.0:8000 (19886) +[2025-08-31 19:44:24 +0800] [19886] [INFO] Using worker: sync +[2025-08-31 19:44:24 +0800] [19887] [INFO] Booting worker with pid: 19887 +[2025-08-31 19:44:24 +0800] [19888] [INFO] Booting worker with pid: 19888 +[2025-08-31 19:44:24 +0800] [19889] [INFO] Booting worker with pid: 19889 + +2025-08-31 19:49:19.670 | ERROR | gunicorn_tab:on_command_result:963 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 19:44:24 +0800] [19886] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 19:44:24 +0800] [19886] [INFO] Listening at: http://0.0.0.0:8000 (19886) +[2025-08-31 19:44:24 +0800] [19886] [INFO] Using worker: sync +[2025-08-31 19:44:24 +0800] [19887] [INFO] Booting worker with pid: 19887 +[2025-08-31 19:44:24 +0800] [19888] [INFO] Booting worker with pid: 19888 +[2025-08-31 19:44:24 +0800] [19889] [INFO] Booting worker with pid: 19889 + +2025-08-31 19:49:29.129 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 0 +2025-08-31 19:49:30.775 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 19:49:30.927 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 19:49:33.599 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 19:49:33.600 | INFO | gunicorn_tab:set_ssh_client:620 - Gunicorn标签页已设置SSH客户端 +2025-08-31 19:49:33.600 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 19:49:33.600 | INFO | gunicorn_tab:set_username:625 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 19:49:33.601 | INFO | gunicorn_tab:set_project_info:631 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 19:49:33.602 | INFO | gunicorn_tab:update_command_editor:658 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 19:49:33.603 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 19:49:40.130 | INFO | gunicorn_tab:on_control_result:894 - 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 02:49:37 CST; 1s ago + Invocation: 6925e8305d624442a8fd4cba87520f3d + Process: 1293 ExecStart=/usr/bin/gunicorn \ (code=exited, status=3) + Main PID: 1293 (code=exited, status=3) + Mem peak: 26.7M + CPU: 157ms + +2025-08-31 19:49:40.130 | 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 02:49:37 CST; 1s ago + Invocation: 6925e8305d624442a8fd4cba87520f3d + Process: 1293 ExecStart=/usr/bin/gunicorn \ (code=exited, status=3) + Main PID: 1293 (code=exited, status=3) + Mem peak: 26.7M + CPU: 157ms + +2025-08-31 19:50:26.713 | INFO | gunicorn_tab:run:452 - 开始执行Gunicorn命令: gunicorn --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 19:50:26.714 | INFO | gunicorn_tab:run:462 - 添加--pythonpath参数后的命令: gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application +2025-08-31 19:50:26.714 | INFO | gunicorn_tab:run:467 - 在目录 /home/xiaji/webstatus/ 中执行命令: cd /home/xiaji/webstatus/ && bash -c 'echo "xiaji" | sudo -S gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application' +2025-08-31 19:52:16.285 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 19:52:16.286 | INFO | gunicorn_tab:on_upload_result:764 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 19:52:23.120 | INFO | gunicorn_tab:run:416 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 19:52:23.206 | INFO | gunicorn_tab:run:427 - 开始重启服务器 +2025-08-31 19:52:23.254 | INFO | gunicorn_tab:run:431 - 时区设置成功,服务器正在重启 +2025-08-31 19:52:23.254 | INFO | gunicorn_tab:on_server_control_result:924 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 19:52:23.417 | ERROR | gunicorn_tab:run:485 - Gunicorn命令执行失败: [sudo] password for xiaji: [2025-08-31 19:50:26 +0800] [1380] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 19:50:26 +0800] [1380] [INFO] Listening at: http://0.0.0.0:8000 (1380) +[2025-08-31 19:50:26 +0800] [1380] [INFO] Using worker: sync +[2025-08-31 19:50:26 +0800] [1381] [INFO] Booting worker with pid: 1381 +[2025-08-31 19:50:26 +0800] [1382] [INFO] Booting worker with pid: 1382 +[2025-08-31 19:50:26 +0800] [1383] [INFO] Booting worker with pid: 1383 + +2025-08-31 19:52:23.419 | ERROR | gunicorn_tab:on_command_result:963 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: [2025-08-31 19:50:26 +0800] [1380] [INFO] Starting gunicorn 23.0.0 +[2025-08-31 19:50:26 +0800] [1380] [INFO] Listening at: http://0.0.0.0:8000 (1380) +[2025-08-31 19:50:26 +0800] [1380] [INFO] Using worker: sync +[2025-08-31 19:50:26 +0800] [1381] [INFO] Booting worker with pid: 1381 +[2025-08-31 19:50:26 +0800] [1382] [INFO] Booting worker with pid: 1382 +[2025-08-31 19:50:26 +0800] [1383] [INFO] Booting worker with pid: 1383 + +2025-08-31 19:52:26.794 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 0 +2025-08-31 19:52:28.052 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 19:52:31.976 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 19:52:35.025 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 19:52:35.025 | INFO | gunicorn_tab:set_ssh_client:620 - Gunicorn标签页已设置SSH客户端 +2025-08-31 19:52:35.025 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 19:52:35.026 | INFO | gunicorn_tab:set_username:625 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 19:52:35.026 | INFO | gunicorn_tab:set_project_info:631 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 19:52:35.028 | INFO | gunicorn_tab:update_command_editor:658 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 19:52:35.028 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 19:52:39.512 | 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: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 19:52:36 CST; 3s ago + Invocation: bd9e195f1ac34bae85582c368ddb4f5d + Process: 1221 ExecStart=/path/to/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application (code=exited, status=203/EXEC) + Main PID: 1221 (code=exited, status=203/EXEC) + Mem peak: 1.4M + CPU: 4ms + +2025-08-31 19:52:39.513 | INFO | gunicorn_tab:on_control_result:894 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 19:52:36 CST; 3s ago + Invocation: bd9e195f1ac34bae85582c368ddb4f5d + Process: 1221 ExecStart=/path/to/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application (code=exited, status=203/EXEC) + Main PID: 1221 (code=exited, status=203/EXEC) + Mem peak: 1.4M + CPU: 4ms + +2025-08-31 19:53:32.187 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 19:53:32.188 | INFO | gunicorn_tab:on_upload_result:764 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 19:53:37.480 | 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: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 19:53:33 CST; 3s ago + Invocation: 74bd00154f9a426faba0299b48ab7006 + Process: 1286 ExecStart=/path/to/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application (code=exited, status=203/EXEC) + Main PID: 1286 (code=exited, status=203/EXEC) + Mem peak: 1.5M + CPU: 5ms + +2025-08-31 19:53:37.481 | INFO | gunicorn_tab:on_control_result:894 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 19:53:33 CST; 3s ago + Invocation: 74bd00154f9a426faba0299b48ab7006 + Process: 1286 ExecStart=/path/to/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application (code=exited, status=203/EXEC) + Main PID: 1286 (code=exited, status=203/EXEC) + Mem peak: 1.5M + CPU: 5ms + +2025-08-31 19:53:44.985 | INFO | gunicorn_tab:run:416 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 19:53:45.069 | INFO | gunicorn_tab:run:427 - 开始重启服务器 +2025-08-31 19:53:45.116 | INFO | gunicorn_tab:run:431 - 时区设置成功,服务器正在重启 +2025-08-31 19:53:45.117 | INFO | gunicorn_tab:on_server_control_result:924 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 19:54:12.555 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 0 +2025-08-31 19:54:13.378 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 19:54:13.552 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 19:54:15.028 | INFO | __main__:on_tab_changed:55 - 标签页切换到: 3 +2025-08-31 19:54:15.029 | INFO | gunicorn_tab:set_ssh_client:620 - Gunicorn标签页已设置SSH客户端 +2025-08-31 19:54:15.029 | INFO | __main__:on_tab_changed:153 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 19:54:15.029 | INFO | gunicorn_tab:set_username:625 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 19:54:15.029 | INFO | gunicorn_tab:set_project_info:631 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 19:54:15.031 | INFO | gunicorn_tab:update_command_editor:658 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 19:54:15.031 | INFO | __main__:on_tab_changed:160 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 19:54:19.153 | 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 19:53:52 CST; 7h ago + Invocation: 1dd86392ae0e443fb566af6798a730ca + Main PID: 910 (gunicorn) + Tasks: 4 (limit: 1846) + Memory: 113.4M (peak: 113.9M) + CPU: 804ms + CGroup: /system.slice/gunicorn_statuspage.service + ├─ 910 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application + ├─1065 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application + ├─1073 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application + └─1075 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application + +Aug 31 19:53:52 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. +Sep 01 02:53:52 statuspage gunicorn[910]: [2025-09-01 02:53:52 +0800] [910] [INFO] Starting gunicorn 23.0.0 +Sep 01 02:53:52 statuspage gunicorn[910]: [2025-09-01 02:53:52 +0800] [910] [INFO] Listening at: http://0.0.0.0:8000 (910) +Sep 01 02:53:52 statuspage gunicorn[910]: [2025-09-01 02:53:52 +0800] [910] [INFO] Using worker: sync +Sep 01 02:53:52 statuspage gunicorn[1065]: [2025-09-01 02:53:52 +0800] [1065] [INFO] Booting worker with pid: 1065 +Sep 01 02:53:52 statuspage gunicorn[1073]: [2025-09-01 02:53:52 +0800] [1073] [INFO] Booting worker with pid: 1073 +Sep 01 02:53:52 statuspage gunicorn[1075]: [2025-09-01 02:53:52 +0800] [1075] [INFO] Booting worker with pid: 1075 + +2025-08-31 19:54:19.154 | INFO | gunicorn_tab:on_control_result:894 - 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 19:53:52 CST; 7h ago + Invocation: 1dd86392ae0e443fb566af6798a730ca + Main PID: 910 (gunicorn) + Tasks: 4 (limit: 1846) + Memory: 113.4M (peak: 113.9M) + CPU: 804ms + CGroup: /system.slice/gunicorn_statuspage.service + ├─ 910 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application + ├─1065 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application + ├─1073 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application + └─1075 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus/ --workers 3 --bind 0.0.0.0:8000 statuspage.wsgi:application + +Aug 31 19:53:52 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. +Sep 01 02:53:52 statuspage gunicorn[910]: [2025-09-01 02:53:52 +0800] [910] [INFO] Starting gunicorn 23.0.0 +Sep 01 02:53:52 statuspage gunicorn[910]: [2025-09-01 02:53:52 +0800] [910] [INFO] Listening at: http://0.0.0.0:8000 (910) +Sep 01 02:53:52 statuspage gunicorn[910]: [2025-09-01 02:53:52 +0800] [910] [INFO] Using worker: sync +Sep 01 02:53:52 statuspage gunicorn[1065]: [2025-09-01 02:53:52 +0800] [1065] [INFO] Booting worker with pid: 1065 +Sep 01 02:53:52 statuspage gunicorn[1073]: [2025-09-01 02:53:52 +0800] [1073] [INFO] Booting worker with pid: 1073 +Sep 01 02:53:52 statuspage gunicorn[1075]: [2025-09-01 02:53:52 +0800] [1075] [INFO] Booting worker with pid: 1075 + diff --git a/gunicorn_tab.py b/gunicorn_tab.py new file mode 100644 index 0000000..d9313a2 --- /dev/null +++ b/gunicorn_tab.py @@ -0,0 +1,964 @@ +import os +import sys +import datetime +from PySide6.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QPushButton, + QLabel, QTextEdit, QFileDialog, QMessageBox, + QLineEdit, QDialog, QDialogButtonBox) +from PySide6.QtCore import QThread, Signal +from loguru import logger + +class PasswordDialog(QDialog): + def __init__(self, parent=None): + super().__init__(parent) + self.setWindowTitle("输入密码") + self.setMinimumWidth(300) + + layout = QVBoxLayout() + + # 提示标签 + label = QLabel("请输入sudo密码:") + layout.addWidget(label) + + # 密码输入框 + self.password_input = QLineEdit() + self.password_input.setEchoMode(QLineEdit.Password) + layout.addWidget(self.password_input) + + # 按钮 + button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + button_box.accepted.connect(self.accept) + button_box.rejected.connect(self.reject) + layout.addWidget(button_box) + + self.setLayout(layout) + + def get_password(self): + return self.password_input.text() + +class GunicornInstallThread(QThread): + """安装Gunicorn的线程""" + result_ready = Signal(bool, str) + progress_updated = Signal(int) + + def __init__(self, ssh_client, password=None): + super().__init__() + self.ssh_client = ssh_client + self.password = password + + def run(self): + try: + self.progress_updated.emit(10) + + # 检查Gunicorn是否已安装 + logger.info("检查Gunicorn是否已安装") + stdin, stdout, stderr = self.ssh_client.exec_command("gunicorn --version") + exit_status = stdout.channel.recv_exit_status() + gunicorn_version = stdout.read().decode().strip() + version_error = stderr.read().decode() + + logger.info(f"Gunicorn版本检查状态: {exit_status}") + logger.info(f"Gunicorn版本信息: {gunicorn_version}") + if version_error: + logger.error(f"Gunicorn版本检查错误: {version_error}") + + if gunicorn_version: + self.result_ready.emit(True, f"Gunicorn已安装: {gunicorn_version}") + logger.info(f"Gunicorn已安装: {gunicorn_version}") + return + + self.progress_updated.emit(30) + + # 尝试使用pip安装 + logger.info("开始使用pip安装Gunicorn") + stdin, stdout, stderr = self.ssh_client.exec_command("pip3 install gunicorn") + exit_status = stdout.channel.recv_exit_status() + install_output = stdout.read().decode() + install_error = stderr.read().decode() + + logger.info(f"Gunicorn pip安装命令执行状态: {exit_status}") + logger.info(f"Gunicorn pip安装输出: {install_output}") + if install_error: + logger.error(f"Gunicorn pip安装错误: {install_error}") + + if exit_status == 0: + self.progress_updated.emit(90) + # 验证安装 + logger.info("验证Gunicorn安装") + stdin, stdout, stderr = self.ssh_client.exec_command("gunicorn --version") + version_exit_status = stdout.channel.recv_exit_status() + gunicorn_version = stdout.read().decode().strip() + version_error = stderr.read().decode() + + logger.info(f"Gunicorn版本检查状态: {version_exit_status}") + logger.info(f"Gunicorn版本信息: {gunicorn_version}") + if version_error: + logger.error(f"Gunicorn版本检查错误: {version_error}") + + if gunicorn_version: + self.result_ready.emit(True, f"Gunicorn安装成功: {gunicorn_version}") + logger.info(f"Gunicorn安装成功: {gunicorn_version}") + else: + self.result_ready.emit(False, "Gunicorn安装后无法获取版本信息") + logger.error("Gunicorn安装后无法获取版本信息") + return + + self.progress_updated.emit(50) + + # 如果pip安装失败,尝试使用apt安装 + logger.info("pip安装失败,尝试使用apt安装Gunicorn") + if self.password: + logger.info("使用密码进行sudo apt安装") + # 使用bash -c将命令组合在一起,确保密码对所有sudo命令有效 + stdin, stdout, stderr = self.ssh_client.exec_command(f"bash -c 'echo \"{self.password}\" | sudo -S apt update && echo \"{self.password}\" | sudo -S apt install -y gunicorn'") + else: + logger.info("无密码进行sudo apt安装") + stdin, stdout, stderr = self.ssh_client.exec_command("sudo apt update && sudo apt install -y gunicorn") + exit_status = stdout.channel.recv_exit_status() + apt_output = stdout.read().decode() + apt_error = stderr.read().decode() + + logger.info(f"Gunicorn apt安装命令执行状态: {exit_status}") + logger.info(f"Gunicorn apt安装输出: {apt_output}") + if apt_error: + logger.error(f"Gunicorn apt安装错误: {apt_error}") + + if exit_status == 0: + self.progress_updated.emit(90) + # 验证安装 + logger.info("验证apt安装的Gunicorn") + stdin, stdout, stderr = self.ssh_client.exec_command("gunicorn --version") + version_exit_status = stdout.channel.recv_exit_status() + gunicorn_version = stdout.read().decode().strip() + version_error = stderr.read().decode() + + logger.info(f"Gunicorn版本检查状态: {version_exit_status}") + logger.info(f"Gunicorn版本信息: {gunicorn_version}") + if version_error: + logger.error(f"Gunicorn版本检查错误: {version_error}") + + if gunicorn_version: + self.result_ready.emit(True, f"Gunicorn安装成功: {gunicorn_version}") + logger.info(f"Gunicorn安装成功: {gunicorn_version}") + else: + self.result_ready.emit(False, "Gunicorn安装后无法获取版本信息") + logger.error("Gunicorn安装后无法获取版本信息") + else: + error = stderr.read().decode() + self.result_ready.emit(False, f"Gunicorn安装失败: {error}") + logger.error(f"Gunicorn安装失败: {error}") + + except Exception as e: + error_msg = str(e) + self.result_ready.emit(False, error_msg) + logger.error(f"Gunicorn安装异常: {error_msg}") + +class GunicornTestThread(QThread): + """测试Gunicorn的线程""" + result_ready = Signal(bool, str) + + def __init__(self, ssh_client, project_name, django_path, password): + super().__init__() + self.ssh_client = ssh_client + self.project_name = project_name + self.django_path = django_path + self.password = password + + def run(self): + try: + logger.info(f"开始测试Gunicorn,使用的Django路径: {self.django_path}, 项目名: {self.project_name}") + + # 首先检查项目目录结构 + logger.info("检查项目目录结构...") + list_command = f"ls -la {self.django_path}{self.project_name}" + stdin, stdout, stderr = self.ssh_client.exec_command(list_command) + dir_content = stdout.read().decode() + dir_error = stderr.read().decode() + logger.info(f"项目目录内容: {dir_content}") + if dir_error: + logger.error(f"列出目录内容错误: {dir_error}") + + # 检查是否存在manage.py文件,这通常位于Django项目的根目录 + manage_check = f"find {self.django_path} -name manage.py" + stdin, stdout, stderr = self.ssh_client.exec_command(manage_check) + manage_files = stdout.read().decode() + manage_error = stderr.read().decode() + logger.info(f"找到的manage.py文件: {manage_files}") + if manage_error: + logger.error(f"查找manage.py文件错误: {manage_error}") + + # 如果找到manage.py文件,检查其所在目录 + if manage_files.strip(): + manage_path = manage_files.strip().split('\n')[0] + manage_dir = manage_path.rsplit('/', 1)[0] # 获取manage.py所在的目录 + logger.info(f"manage.py所在目录: {manage_dir}") + + # 检查该目录下的内容 + list_manage_dir = f"ls -la {manage_dir}" + stdin, stdout, stderr = self.ssh_client.exec_command(list_manage_dir) + manage_dir_content = stdout.read().decode() + manage_dir_error = stderr.read().decode() + logger.info(f"manage.py所在目录内容: {manage_dir_content}") + if manage_dir_error: + logger.error(f"列出manage.py所在目录内容错误: {manage_dir_error}") + + # 检查是否存在wsgi.py文件 + wsgi_check = f"find {self.django_path} -name wsgi.py" + stdin, stdout, stderr = self.ssh_client.exec_command(wsgi_check) + wsgi_files = stdout.read().decode() + wsgi_error = stderr.read().decode() + logger.info(f"找到的wsgi.py文件: {wsgi_files}") + if wsgi_error: + logger.error(f"查找wsgi.py文件错误: {wsgi_error}") + + # 检查settings.py文件,特别是INSTALLED_APPS配置 + settings_check = f"find {self.django_path} -name settings.py" + stdin, stdout, stderr = self.ssh_client.exec_command(settings_check) + settings_files = stdout.read().decode() + settings_error = stderr.read().decode() + logger.info(f"找到的settings.py文件: {settings_files}") + if settings_error: + logger.error(f"查找settings.py文件错误: {settings_error}") + + # 如果找到settings.py文件,检查其内容 + if settings_files.strip(): + settings_path = settings_files.strip().split('\n')[0] + cat_settings = f"cat {settings_path}" + stdin, stdout, stderr = self.ssh_client.exec_command(cat_settings) + settings_content = stdout.read().decode() + settings_content_error = stderr.read().decode() + logger.info(f"settings.py文件内容: {settings_content[:500]}...") # 只显示前500个字符,避免日志过长 + if settings_content_error: + logger.error(f"读取settings.py文件错误: {settings_content_error}") + + # 测试运行Gunicorn + # 尝试使用不同的路径来运行Gunicorn + # 首先,尝试使用manage.py所在的目录作为工作目录 + if manage_files.strip(): + manage_path = manage_files.strip().split('\n')[0] + manage_dir = manage_path.rsplit('/', 1)[0] # 获取manage.py所在的目录 + logger.info(f"尝试使用manage.py所在目录作为工作目录: {manage_dir}") + + # 检查manage_dir中是否有与项目同名的子目录 + project_subdir = f"{manage_dir}/{self.project_name}" + check_subdir = f"ls -la {project_subdir}" + stdin, stdout, stderr = self.ssh_client.exec_command(check_subdir) + subdir_content = stdout.read().decode() + subdir_error = stderr.read().decode() + + if not subdir_error and "wsgi.py" in subdir_content: + logger.info(f"找到项目子目录,尝试使用该目录运行Gunicorn: {project_subdir}") + command = f"cd {manage_dir} && bash -c 'echo \"{self.password}\" | sudo -S gunicorn --pythonpath {manage_dir} {self.project_name}.wsgi:application --bind 0.0.0.0:8000' &" + else: + logger.info(f"未找到项目子目录,尝试使用Django路径运行Gunicorn") + # 使用Django路径作为工作目录,但项目模块在子目录中 + command = f"cd {self.django_path} && bash -c 'echo \"{self.password}\" | sudo -S gunicorn --pythonpath {self.django_path} {self.project_name}.wsgi:application --bind 0.0.0.0:8000' &" + else: + logger.info(f"未找到manage.py文件,尝试使用原始路径运行Gunicorn") + # 使用Django路径作为工作目录,但项目模块在子目录中 + command = f"cd {self.django_path} && bash -c 'echo \"{self.password}\" | sudo -S gunicorn --pythonpath {self.django_path} {self.project_name}.wsgi:application --bind 0.0.0.0:8000' &" + logger.info(f"执行Gunicorn测试命令: {command}") + stdin, stdout, stderr = self.ssh_client.exec_command(command) + + # 记录Gunicorn启动命令的输出和错误 + start_output = stdout.read().decode() + start_error = stderr.read().decode() + logger.info(f"Gunicorn启动输出: {start_output}") + if start_error: + logger.error(f"Gunicorn启动错误: {start_error}") + + # 等待一段时间让Gunicorn启动 + logger.info("等待Gunicorn启动...") + self.msleep(3000) + + # 检查Gunicorn进程是否在运行 + logger.info("检查Gunicorn进程状态...") + stdin, stdout, stderr = self.ssh_client.exec_command("ps aux | grep gunicorn") + processes = stdout.read().decode() + logger.info(f"Gunicorn进程检查结果: {processes}") + + if self.project_name in processes: + self.result_ready.emit(True, "Gunicorn测试运行成功") + logger.info("Gunicorn测试运行成功") + + # 停止Gunicorn进程 + logger.info("停止Gunicorn进程...") + stdin, stdout, stderr = self.ssh_client.exec_command("pkill -f gunicorn") + stop_result = stdout.read().decode() + stop_error = stderr.read().decode() + logger.info(f"停止Gunicorn进程结果: {stop_result}") + if stop_error: + logger.error(f"停止Gunicorn进程错误: {stop_error}") + else: + self.result_ready.emit(False, "Gunicorn测试运行失败") + logger.error("Gunicorn测试运行失败") + + except Exception as e: + error_msg = str(e) + self.result_ready.emit(False, error_msg) + logger.error(f"Gunicorn测试运行异常: {error_msg}") + +class GunicornServiceUploadThread(QThread): + """上传Gunicorn服务文件的线程""" + result_ready = Signal(bool, str) + + def __init__(self, ssh_client, service_content, service_name, password): + super().__init__() + self.ssh_client = ssh_client + self.service_content = service_content + self.service_name = service_name + self.password = password + + def run(self): + try: + # 创建临时文件 + temp_file = f"/tmp/{self.service_name}" + sftp = self.ssh_client.open_sftp() + + with sftp.file(temp_file, 'w') as f: + f.write(self.service_content) + + # 移动到目标位置 + stdin, stdout, stderr = self.ssh_client.exec_command(f"bash -c 'echo \"{self.password}\" | sudo -S mv {temp_file} /etc/systemd/system/{self.service_name}'") + exit_status = stdout.channel.recv_exit_status() + + if exit_status == 0: + self.result_ready.emit(True, f"Gunicorn服务文件上传成功: {self.service_name}") + logger.info(f"Gunicorn服务文件上传成功: {self.service_name}") + else: + error = stderr.read().decode() + self.result_ready.emit(False, f"Gunicorn服务文件上传失败: {error}") + logger.error(f"Gunicorn服务文件上传失败: {error}") + + sftp.close() + + except Exception as e: + error_msg = str(e) + self.result_ready.emit(False, error_msg) + logger.error(f"Gunicorn服务文件上传异常: {error_msg}") + +class GunicornServiceControlThread(QThread): + """控制Gunicorn服务的线程""" + result_ready = Signal(bool, str) + + def __init__(self, ssh_client, service_name, password, action): + super().__init__() + self.ssh_client = ssh_client + self.service_name = service_name + self.password = password + self.action = action # "daemon-reload", "start", "enable" + + def run(self): + try: + if self.action == "daemon-reload": + command = f"bash -c 'echo \"{self.password}\" | sudo -S systemctl daemon-reload'" + success_msg = "系统服务配置重新加载成功" + error_msg = "系统服务配置重新加载失败" + elif self.action == "start": + command = f"bash -c 'echo \"{self.password}\" | sudo -S systemctl start {self.service_name}'" + success_msg = f"Gunicorn服务启动成功: {self.service_name}" + error_msg = f"Gunicorn服务启动失败: {self.service_name}" + elif self.action == "enable": + command = f"bash -c 'echo \"{self.password}\" | sudo -S systemctl enable {self.service_name}'" + success_msg = f"Gunicorn服务设置开机自启动成功: {self.service_name}" + error_msg = f"Gunicorn服务设置开机自启动失败: {self.service_name}" + elif self.action == "restart": + command = f"bash -c 'echo \"{self.password}\" | sudo -S systemctl restart {self.service_name}'" + success_msg = f"Gunicorn服务重启成功: {self.service_name}" + error_msg = f"Gunicorn服务重启失败: {self.service_name}" + elif self.action == "status": + command = f"bash -c 'echo \"{self.password}\" | sudo -S systemctl status {self.service_name}'" + success_msg = f"Gunicorn服务状态查询成功: {self.service_name}" + error_msg = f"Gunicorn服务状态查询失败: {self.service_name}" + else: + self.result_ready.emit(False, "未知的操作") + logger.error("未知的Gunicorn服务操作") + return + + stdin, stdout, stderr = self.ssh_client.exec_command(command) + exit_status = stdout.channel.recv_exit_status() + + # 对于status操作,即使exit_status不为0,我们也需要获取输出 + output = stdout.read().decode() + error = stderr.read().decode() + + if self.action == "status": + # 对于status操作,我们将输出作为结果返回,无论exit_status如何 + if output: + self.result_ready.emit(True, f"{success_msg}\n{output}") + logger.info(f"{success_msg}\n{output}") + else: + self.result_ready.emit(False, f"{error_msg}: {error}") + logger.error(f"{error_msg}: {error}") + elif exit_status == 0: + self.result_ready.emit(True, success_msg) + logger.info(success_msg) + else: + self.result_ready.emit(False, f"{error_msg}: {error}") + logger.error(f"{error_msg}: {error}") + + except Exception as e: + error_msg = str(e) + self.result_ready.emit(False, error_msg) + logger.error(f"Gunicorn服务控制异常: {error_msg}") + +class ServerControlThread(QThread): + """控制服务器设置的线程""" + result_ready = Signal(bool, str) + + def __init__(self, ssh_client, password): + super().__init__() + self.ssh_client = ssh_client + self.password = password + + def run(self): + try: + # 设置时区,使用-S选项从标准输入读取密码 + logger.info("开始设置服务器时区为Asia/Shanghai") + stdin, stdout, stderr = self.ssh_client.exec_command(f"bash -c 'echo \"{self.password}\" | sudo -S timedatectl set-timezone Asia/Shanghai'") + 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 + + # 重启服务器,使用-S选项从标准输入读取密码 + logger.info("开始重启服务器") + stdin, stdout, stderr = self.ssh_client.exec_command(f"bash -c 'echo \"{self.password}\" | sudo -S reboot'") + + self.result_ready.emit(True, "时区设置成功,服务器正在重启") + logger.info("时区设置成功,服务器正在重启") + + except Exception as e: + error_msg = str(e) + self.result_ready.emit(False, error_msg) + logger.error(f"服务器控制异常: {error_msg}") + +class GunicornCommandThread(QThread): + """执行Gunicorn命令的线程""" + result_ready = Signal(bool, str) + + def __init__(self, ssh_client, command, password, django_path="", project_name=""): + super().__init__() + self.ssh_client = ssh_client + self.command = command + self.password = password + self.django_path = django_path + self.project_name = project_name + + def run(self): + try: + logger.info(f"开始执行Gunicorn命令: {self.command}") + + # 如果有django_path,则切换到该目录执行命令 + if self.django_path: + # 检查命令中是否已经包含--pythonpath参数 + if "--pythonpath" not in self.command: + # 如果没有--pythonpath参数,则添加 + if "gunicorn" in self.command: + # 在gunicorn命令后添加--pythonpath参数 + modified_command = self.command.replace("gunicorn", f"gunicorn --pythonpath {self.django_path}", 1) + logger.info(f"添加--pythonpath参数后的命令: {modified_command}") + self.command = modified_command + + # 切换到django_path目录执行命令 + full_command = f"cd {self.django_path} && bash -c 'echo \"{self.password}\" | sudo -S {self.command}'" + logger.info(f"在目录 {self.django_path} 中执行命令: {full_command}") + else: + # 如果没有django_path,则直接执行命令 + full_command = f"bash -c 'echo \"{self.password}\" | sudo -S {self.command}'" + logger.info(f"直接执行命令: {full_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: + self.result_ready.emit(True, f"命令执行成功\n{output}") + logger.info(f"Gunicorn命令执行成功: {output}") + else: + self.result_ready.emit(False, f"命令执行失败\n{error}") + logger.error(f"Gunicorn命令执行失败: {error}") + + except Exception as e: + error_msg = str(e) + self.result_ready.emit(False, error_msg) + logger.error(f"Gunicorn命令执行异常: {error_msg}") + +class GunicornTab(QWidget): + def __init__(self): + super().__init__() + self.ssh_client = None + self.username = "" + self.project_name = "" + self.django_path = "" + self.init_ui() + + def init_ui(self): + layout = QVBoxLayout() + + # Gunicorn管理区域 + manage_layout = QHBoxLayout() + + # 安装Gunicorn按钮 + self.install_gunicorn_btn = QPushButton("安装Gunicorn") + self.install_gunicorn_btn.clicked.connect(self.install_gunicorn) + manage_layout.addWidget(self.install_gunicorn_btn) + + # 测试运行按钮 + self.test_gunicorn_btn = QPushButton("测试运行") + self.test_gunicorn_btn.clicked.connect(self.test_gunicorn) + manage_layout.addWidget(self.test_gunicorn_btn) + + layout.addLayout(manage_layout) + + # 服务文件编辑区域 + service_layout = QVBoxLayout() + service_layout.addWidget(QLabel("Gunicorn服务文件编辑器:")) + + # 服务文件编辑文本框 + self.service_editor = QTextEdit() + self.service_editor.setReadOnly(False) + service_layout.addWidget(self.service_editor) + + # 服务文件操作按钮 + service_btn_layout = QHBoxLayout() + + # 上传服务文件按钮 + self.upload_service_btn = QPushButton("上传服务文件") + self.upload_service_btn.clicked.connect(self.upload_service) + service_btn_layout.addWidget(self.upload_service_btn) + + # 查看服务状态按钮 + self.check_status_btn = QPushButton("查看服务状态") + self.check_status_btn.clicked.connect(self.check_service_status) + service_btn_layout.addWidget(self.check_status_btn) + + service_layout.addLayout(service_btn_layout) + layout.addLayout(service_layout) + + # Gunicorn命令编辑区域 + command_layout = QVBoxLayout() + command_layout.addWidget(QLabel("Gunicorn命令编辑器:")) + + # 命令编辑文本框 + self.command_editor = QTextEdit() + self.command_editor.setReadOnly(False) + self.command_editor.setPlainText("gunicorn --workers 3 --bind 0.0.0.0:8000 myproject.wsgi:application") + command_layout.addWidget(self.command_editor) + + + + + # 命令执行按钮 + command_btn_layout = QHBoxLayout() + + # 运行命令按钮 + self.run_command_btn = QPushButton("运行以上命令") + self.run_command_btn.clicked.connect(self.run_gunicorn_command) + command_btn_layout.addWidget(self.run_command_btn) + + command_layout.addLayout(command_btn_layout) + layout.addLayout(command_layout) + + # 服务器控制区域 + server_control_layout = QHBoxLayout() + + # 设置时区并重启按钮 + self.set_timezone_btn = QPushButton("设置时区并重启") + self.set_timezone_btn.clicked.connect(self.set_timezone_and_reboot) + server_control_layout.addWidget(self.set_timezone_btn) + + layout.addLayout(server_control_layout) + + # 输出区域 + self.output_text = QTextEdit() + self.output_text.setReadOnly(True) + layout.addWidget(self.output_text) + + self.setLayout(layout) + + # 初始化服务文件内容 + self.init_service_content() + + def init_service_content(self): + """初始化服务文件内容""" + default_content = "[Unit]\n" + default_content += "Description=Gunicorn daemon for myproject\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 += "[Install]\n" + default_content += "WantedBy=multi-user.target" + + self.service_editor.setPlainText(default_content) + + def set_ssh_client(self, ssh_client): + """设置SSH客户端""" + self.ssh_client = ssh_client + logger.info("Gunicorn标签页已设置SSH客户端") + + def set_username(self, username): + """设置用户名""" + self.username = username + logger.info(f"Gunicorn标签页已设置用户名: {username}") + + def set_project_info(self, project_name, django_path): + """设置项目信息""" + self.project_name = project_name + self.django_path = django_path + logger.info(f"Gunicorn标签页已设置项目信息: {project_name}, {django_path}") + + # 更新服务文件内容 + self.update_service_content() + + # 更新命令编辑器中的项目名称 + self.update_command_editor() + + def update_service_content(self): + """更新服务文件内容""" + content = self.service_editor.toPlainText() + + # 替换占位符 + content = content.replace("【用户名】", self.username) + content = content.replace("【项目名】", self.project_name) + content = content.replace("【Django路径】", self.django_path.rstrip('/')) + + self.service_editor.setPlainText(content) + + def update_command_editor(self): + """更新命令编辑器中的项目名称""" + command_text = self.command_editor.toPlainText() + + # 替换项目名称 + command_text = command_text.replace("myproject.wsgi:application", f"{self.project_name}.wsgi:application") + + self.command_editor.setPlainText(command_text) + logger.info(f"Gunicorn命令编辑器已更新项目名称: {self.project_name}") + + def append_output(self, text): + """添加输出到文本框""" + self.output_text.append(text) + + def install_gunicorn(self): + """安装Gunicorn""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output("正在安装Gunicorn...") + + # 创建并启动Gunicorn安装线程 + self.install_thread = GunicornInstallThread(self.ssh_client, password) + self.install_thread.result_ready.connect(self.on_install_result) + self.install_thread.progress_updated.connect(self.on_install_progress) + self.install_thread.start() + else: + self.append_output("用户取消了密码输入") + + def on_install_progress(self, progress): + """处理安装进度更新""" + self.append_output(f"安装进度: {progress}%") + logger.info(f"Gunicorn安装进度: {progress}%") + + def on_install_result(self, success, message): + """处理安装结果""" + if success: + self.append_output(f"安装成功: {message}") + logger.info(f"Gunicorn安装成功: {message}") + QMessageBox.information(self, "成功", message) + else: + self.append_output(f"安装失败: {message}") + logger.error(f"Gunicorn安装失败: {message}") + QMessageBox.warning(self, "错误", f"Gunicorn安装失败: {message}") + + def test_gunicorn(self): + """测试运行Gunicorn""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + if not self.project_name or not self.django_path: + self.append_output("错误: 未设置项目信息") + return + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output("正在测试运行Gunicorn...") + + # 创建并启动Gunicorn测试线程 + self.test_thread = GunicornTestThread(self.ssh_client, self.project_name, self.django_path, password) + self.test_thread.result_ready.connect(self.on_test_result) + self.test_thread.start() + else: + self.append_output("用户取消了密码输入") + + def on_test_result(self, success, message): + """处理测试结果""" + if success: + self.append_output(f"测试成功: {message}") + logger.info(f"Gunicorn测试成功: {message}") + QMessageBox.information(self, "成功", message) + else: + self.append_output(f"测试失败: {message}") + logger.error(f"Gunicorn测试失败: {message}") + QMessageBox.warning(self, "错误", f"Gunicorn测试失败: {message}") + + def upload_service(self): + """上传服务文件""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + if not self.project_name: + self.append_output("错误: 未设置项目名") + return + + service_content = self.service_editor.toPlainText() + service_name = f"gunicorn_{self.project_name}.service" + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output(f"正在上传服务文件: {service_name}...") + + # 创建并启动服务文件上传线程 + self.upload_thread = GunicornServiceUploadThread(self.ssh_client, service_content, service_name, password) + self.upload_thread.result_ready.connect(self.on_upload_result) + self.upload_thread.start() + else: + self.append_output("用户取消了密码输入") + + def on_upload_result(self, success, message): + """处理上传结果""" + if success: + self.append_output(f"上传成功: {message}") + logger.info(f"Gunicorn服务文件上传成功: {message}") + QMessageBox.information(self, "成功", message) + else: + self.append_output(f"上传失败: {message}") + logger.error(f"Gunicorn服务文件上传失败: {message}") + QMessageBox.warning(self, "错误", f"Gunicorn服务文件上传失败: {message}") + + def reload_daemon(self): + """重新加载系统服务配置""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output("正在重新加载系统服务配置...") + + # 创建并启动服务控制线程 + self.control_thread = GunicornServiceControlThread(self.ssh_client, "", password, "daemon-reload") + self.control_thread.result_ready.connect(self.on_control_result) + self.control_thread.start() + else: + self.append_output("用户取消了密码输入") + + def start_service(self): + """启动Gunicorn服务""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + if not self.project_name: + self.append_output("错误: 未设置项目名") + return + + service_name = f"gunicorn_{self.project_name}" + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output(f"正在启动Gunicorn服务: {service_name}...") + + # 创建并启动服务控制线程 + self.control_thread = GunicornServiceControlThread(self.ssh_client, service_name, password, "start") + self.control_thread.result_ready.connect(self.on_control_result) + self.control_thread.start() + else: + self.append_output("用户取消了密码输入") + + def enable_service(self): + """设置开机自启动""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + if not self.project_name: + self.append_output("错误: 未设置项目名") + return + + service_name = f"gunicorn_{self.project_name}" + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output(f"正在设置Gunicorn服务开机自启动: {service_name}...") + + # 创建并启动服务控制线程 + self.control_thread = GunicornServiceControlThread(self.ssh_client, service_name, password, "enable") + self.control_thread.result_ready.connect(self.on_control_result) + self.control_thread.start() + else: + self.append_output("用户取消了密码输入") + + def restart_service(self): + """重启Gunicorn服务""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + if not self.project_name: + self.append_output("错误: 未设置项目名") + return + + service_name = f"gunicorn_{self.project_name}" + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output(f"正在重启Gunicorn服务: {service_name}...") + + # 创建并启动服务控制线程 + self.control_thread = GunicornServiceControlThread(self.ssh_client, service_name, password, "restart") + self.control_thread.result_ready.connect(self.on_control_result) + self.control_thread.start() + else: + self.append_output("用户取消了密码输入") + + def check_service_status(self): + """查看Gunicorn服务状态""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + if not self.project_name: + self.append_output("错误: 未设置项目名") + return + + service_name = f"gunicorn_{self.project_name}" + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output(f"正在查看Gunicorn服务状态: {service_name}...") + + # 创建并启动服务控制线程 + self.control_thread = GunicornServiceControlThread(self.ssh_client, service_name, password, "status") + self.control_thread.result_ready.connect(self.on_control_result) + self.control_thread.start() + else: + self.append_output("用户取消了密码输入") + + def on_control_result(self, success, message): + """处理控制结果""" + if success: + self.append_output(f"操作成功: {message}") + logger.info(f"Gunicorn服务控制成功: {message}") + QMessageBox.information(self, "成功", message) + else: + self.append_output(f"操作失败: {message}") + logger.error(f"Gunicorn服务控制失败: {message}") + QMessageBox.warning(self, "错误", f"Gunicorn服务控制失败: {message}") + + def set_timezone_and_reboot(self): + """设置时区并重启服务器""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output("正在设置时区并重启服务器...") + + # 创建并启动服务器控制线程 + self.server_control_thread = ServerControlThread(self.ssh_client, password) + self.server_control_thread.result_ready.connect(self.on_server_control_result) + self.server_control_thread.start() + else: + self.append_output("用户取消了密码输入") + + def on_server_control_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}") + + def run_gunicorn_command(self): + """运行Gunicorn命令""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + command = self.command_editor.toPlainText().strip() + if not command: + self.append_output("错误: 命令不能为空") + return + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output(f"正在执行命令: {command}...") + + # 创建并启动命令执行线程,传递django_path和project_name参数 + self.command_thread = GunicornCommandThread(self.ssh_client, command, password, self.django_path, self.project_name) + self.command_thread.result_ready.connect(self.on_command_result) + self.command_thread.start() + else: + self.append_output("用户取消了密码输入") + + def on_command_result(self, success, message): + """处理命令执行结果""" + if success: + self.append_output(f"命令执行成功: {message}") + logger.info(f"Gunicorn命令执行成功: {message}") + QMessageBox.information(self, "成功", message) + else: + self.append_output(f"命令执行失败: {message}") + logger.error(f"Gunicorn命令执行失败: {message}") + QMessageBox.warning(self, "错误", f"Gunicorn命令执行失败: {message}") \ No newline at end of file diff --git a/main.py b/main.py index 0e999ff..9135152 100644 --- a/main.py +++ b/main.py @@ -1,11 +1,13 @@ import sys -from PySide6.QtWidgets import QApplication, QMainWindow, QTabWidget +import os +from PySide6.QtWidgets import QApplication, QMainWindow, QTabWidget, QStatusBar from PySide6.QtCore import QSize from loguru import logger from server_connection_tab import ServerConnectionTab from remote_commands_tab import RemoteCommandsTab from django_tab import DjangoTab +from gunicorn_tab import GunicornTab class MainWindow(QMainWindow): def __init__(self): @@ -19,6 +21,15 @@ class MainWindow(QMainWindow): self.tabs = QTabWidget() self.setCentralWidget(self.tabs) + # 创建状态栏 + self.status_bar = QStatusBar() + self.setStatusBar(self.status_bar) + + # 显示当前工作目录路径 + current_dir = os.getcwd() + self.status_bar.showMessage(f"当前目录: {current_dir}") + logger.info(f"设置状态栏显示当前目录: {current_dir}") + # 添加服务器连接标签页 self.server_connection_tab = ServerConnectionTab() self.tabs.addTab(self.server_connection_tab, "服务器连接") @@ -31,6 +42,10 @@ class MainWindow(QMainWindow): self.django_tab = DjangoTab() self.tabs.addTab(self.django_tab, "Django") + # 添加Gunicorn管理标签页 + self.gunicorn_tab = GunicornTab() + self.tabs.addTab(self.gunicorn_tab, "Gunicorn") + # 连接标签页切换信号 self.tabs.currentChanged.connect(self.on_tab_changed) @@ -39,8 +54,14 @@ class MainWindow(QMainWindow): def on_tab_changed(self, index): logger.info(f"标签页切换到: {index}") + # 更新状态栏显示当前目录信息 + if index == 0: # 服务器连接标签页 + current_dir = os.getcwd() + self.status_bar.showMessage(f"当前目录: {current_dir}") + logger.info(f"状态栏更新为本地目录: {current_dir}") + # 当切换到远程命令标签页时,传递SSH客户端和服务器配置 - if index == 1: # 远程命令标签页 + elif index == 1: # 远程命令标签页 ssh_client = self.server_connection_tab.get_ssh_client() self.remote_commands_tab.set_ssh_client(ssh_client) @@ -51,10 +72,32 @@ class MainWindow(QMainWindow): git_url = server_config.get("git_url", "") remote_dir = server_config.get("remote_dir", "") self.remote_commands_tab.set_server_config(git_url, remote_dir) + # 调用set_server_info方法更新服务器信息 + self.remote_commands_tab.set_server_info(server_config) + + # 尝试获取远程服务器当前目录并更新状态栏 + try: + if hasattr(self.remote_commands_tab, 'current_dir_display') and self.remote_commands_tab.current_dir_display.text(): + current_dir = self.remote_commands_tab.current_dir_display.text() + self.status_bar.showMessage(f"远程服务器 {current_alias}: {current_dir}") + logger.info(f"状态栏更新为远程服务器目录: {current_alias}: {current_dir}") + else: + # 更新状态栏显示远程服务器信息 + self.status_bar.showMessage(f"远程服务器: {current_alias} | 远程目录: {remote_dir}") + logger.info(f"状态栏更新为远程服务器: {current_alias}, 目录: {remote_dir}") + except Exception as e: + logger.error(f"获取远程目录信息失败: {str(e)}") + # 更新状态栏显示远程服务器信息 + self.status_bar.showMessage(f"远程服务器: {current_alias} | 远程目录: {remote_dir}") + logger.info(f"状态栏更新为远程服务器: {current_alias}, 目录: {remote_dir}") else: # 如果没有配置远程目录,初始化为默认目录 self.remote_commands_tab.current_dir_display.setText("~") self.remote_commands_tab.refresh_directory() + + # 更新状态栏显示远程服务器信息 + self.status_bar.showMessage(f"远程服务器: {current_alias} | 远程目录: ~") + logger.info(f"状态栏更新为远程服务器: {current_alias}, 目录: ~") # 当切换到Django标签页时,传递SSH客户端和用户名 elif index == 2: # Django标签页 @@ -67,6 +110,54 @@ class MainWindow(QMainWindow): server_config = self.server_connection_tab.config_data[current_alias] username = server_config.get("username", "") self.django_tab.set_username(username) + + # 更新状态栏显示Django项目信息 + project_name = server_config.get("project", "") + remote_dir = server_config.get("remote_dir", "") + self.status_bar.showMessage(f"远程服务器: {current_alias} | Django项目: {project_name} | 项目目录: {remote_dir}") + logger.info(f"状态栏更新为Django项目: {project_name}, 目录: {remote_dir}") + + # 当切换到Gunicorn标签页时,传递SSH客户端、用户名和项目信息 + elif index == 3: # Gunicorn标签页 + ssh_client = self.server_connection_tab.get_ssh_client() + self.gunicorn_tab.set_ssh_client(ssh_client) + + # 获取当前选中的服务器配置中的用户名和项目信息 + current_alias = self.server_connection_tab.alias_combo.currentText() + if current_alias and current_alias in self.server_connection_tab.config_data: + server_config = self.server_connection_tab.config_data[current_alias] + username = server_config.get("username", "") + project_name = server_config.get("project", "") + # 获取Django路径,根据用户说明,路径应该是/home/[user]/[project_path]/[project_name] + # 其中user是config.json中的username,project_path是git_url中的webstatus,project_name是project的值 + remote_dir = server_config.get("remote_dir", "") + git_url = server_config.get("git_url", "") + project_name = server_config.get("project", "") + + # 从git_url中提取project_path(webstatus) + project_path = "" + if git_url: + # git_url格式为http://192.168.3.241:3000/xiaji/webstatus.git + # 提取最后一个/和.git之间的部分作为project_path + import os + git_name = os.path.basename(git_url) # 获取webstatus.git + if git_name.endswith(".git"): + project_path = git_name[:-4] # 去掉.git后缀,得到webstatus + + # 构建Django路径:/home/[user]/[project_path]/ (statuspage的父目录) + if remote_dir and project_path: + django_path = f"{remote_dir}/{project_path}/" + else: + django_path = f"{remote_dir}/" if remote_dir else "" + + logger.info(f"构建的Django路径: {django_path}, 项目名: {project_name}") + + self.gunicorn_tab.set_username(username) + self.gunicorn_tab.set_project_info(project_name, django_path) + + # 更新状态栏显示Gunicorn服务信息 + self.status_bar.showMessage(f"远程服务器: {current_alias} | Gunicorn服务: gunicorn_{project_name} | 服务目录: {django_path}") + logger.info(f"状态栏更新为Gunicorn服务: gunicorn_{project_name}, 目录: {django_path}") if __name__ == "__main__": logger.add("app.log", rotation="10 MB") diff --git a/remote_commands_tab.py b/remote_commands_tab.py index 7198c08..9517498 100644 --- a/remote_commands_tab.py +++ b/remote_commands_tab.py @@ -64,6 +64,16 @@ class RemoteCommandThread(QThread): self.finished_signal.emit(False, f"SSH连接已断开,请重新连接服务器") return + # 在执行命令前,先输出当前目录 + try: + pwd_stdin, pwd_stdout, pwd_stderr = self.ssh_client.exec_command("pwd") + pwd_output = pwd_stdout.read().decode().strip() + if pwd_output: + self.output_signal.emit(f"当前目录: {pwd_output}") + logger.info(f"当前目录: {pwd_output}") + except Exception as e: + logger.error(f"获取当前目录失败: {str(e)}") + # 如果命令包含sudo,修改为使用-S选项从标准输入读取密码 if "sudo" in self.command: command_with_sudo = self.command.replace("sudo", "sudo -S") @@ -219,7 +229,7 @@ class RemoteCommandsTab(QWidget): # 允许用户输入当前目录路径 # self.current_dir_display.setReadOnly(True) # 添加回车键刷新目录功能 - self.current_dir_display.returnPressed.connect(self.refresh_directory) + self.current_dir_display.returnPressed.connect(self.on_current_dir_entered) current_dir_layout.addWidget(self.current_dir_display) # 刷新目录按钮 @@ -275,6 +285,26 @@ class RemoteCommandsTab(QWidget): self.setLayout(main_layout) logger.info("远程命令标签页UI初始化完成") + def set_server_info(self, server_info): + """设置服务器信息""" + logger.info(f"设置服务器信息: {server_info}") + self.server_info = server_info + + # 更新主窗口状态栏显示当前目录 + try: + main_window = self.parent().parent() + if hasattr(main_window, 'status_bar') and self.ssh_client: + current_dir = self.current_dir_display.text().strip() + server_host = self.server_info.get('host', '未知') + if current_dir: + main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}") + logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}") + else: + main_window.status_bar.showMessage(f"远程服务器: {server_host}") + logger.info(f"主窗口状态栏更新为远程服务器: {server_host}") + except Exception as e: + logger.error(f"更新主窗口状态栏失败: {str(e)}") + def set_ssh_client(self, ssh_client): logger.info("设置SSH客户端") self.ssh_client = ssh_client @@ -282,9 +312,33 @@ class RemoteCommandsTab(QWidget): if self.ssh_client: self.status_label.setText("已连接到服务器") self.status_label.setStyleSheet("color: green;") + + # 更新主窗口状态栏显示当前目录 + try: + main_window = self.parent().parent() + if hasattr(main_window, 'status_bar'): + current_dir = self.current_dir_display.text().strip() + server_host = self.server_info.get('host', '未知') if hasattr(self, 'server_info') else '未知' + if current_dir: + main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}") + logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}") + else: + main_window.status_bar.showMessage(f"远程服务器: {server_host}") + logger.info(f"主窗口状态栏更新为远程服务器: {server_host}") + except Exception as e: + logger.error(f"更新主窗口状态栏失败: {str(e)}") else: self.status_label.setText("未连接到服务器") self.status_label.setStyleSheet("color: red;") + + # 更新主窗口状态栏显示未连接状态 + try: + main_window = self.parent().parent() + if hasattr(main_window, 'status_bar'): + main_window.status_bar.showMessage("未连接到远程服务器") + logger.info("主窗口状态栏更新为未连接状态") + except Exception as e: + logger.error(f"更新主窗口状态栏失败: {str(e)}") def set_server_config(self, git_url, remote_dir): logger.info(f"设置服务器配置: git_url={git_url}, remote_dir={remote_dir}") @@ -295,6 +349,16 @@ class RemoteCommandsTab(QWidget): if remote_dir: self.current_dir_display.setText(remote_dir) self.refresh_directory() + + # 更新主窗口状态栏显示当前目录 + try: + main_window = self.parent().parent() + if hasattr(main_window, 'status_bar'): + server_host = self.server_info['host'] if hasattr(self, 'server_info') and 'host' in self.server_info else '未知' + main_window.status_bar.showMessage(f"远程服务器 {server_host}: {remote_dir}") + logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {remote_dir}") + except Exception as e: + logger.error(f"更新主窗口状态栏失败: {str(e)}") def install_git(self): logger.info("安装Git") @@ -385,6 +449,25 @@ class RemoteCommandsTab(QWidget): else: QMessageBox.warning(self, "错误", message) + def on_current_dir_entered(self): + """处理用户输入目录路径并按回车键的情况""" + logger.info("用户输入目录路径并按回车键") + + # 更新主窗口状态栏显示当前目录 + try: + main_window = self.parent().parent() + if hasattr(main_window, 'status_bar'): + current_dir = self.current_dir_display.text().strip() + server_host = self.server_info['host'] if hasattr(self, 'server_info') and 'host' in self.server_info else '未知' + if current_dir: + main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}") + logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}") + except Exception as e: + logger.error(f"更新主窗口状态栏失败: {str(e)}") + + # 刷新目录列表 + self.refresh_directory() + def refresh_directory(self): logger.info("刷新目录列表") @@ -419,6 +502,17 @@ class RemoteCommandsTab(QWidget): self.status_label.setText("目录列表已刷新") self.status_label.setStyleSheet("color: green;") logger.info("目录列表刷新成功") + + # 更新主窗口状态栏显示当前目录 + try: + main_window = self.parent().parent() + if hasattr(main_window, 'status_bar'): + current_dir = self.current_dir_display.text() + server_host = self.server_info['host'] if hasattr(self, 'server_info') and 'host' in self.server_info else '未知' + main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}") + logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}") + except Exception as e: + logger.error(f"更新主窗口状态栏失败: {str(e)}") else: self.status_label.setText("刷新目录列表失败") self.status_label.setStyleSheet("color: red;") diff --git a/server_connection_tab.py b/server_connection_tab.py index d5f0ff4..07bdec7 100644 --- a/server_connection_tab.py +++ b/server_connection_tab.py @@ -210,6 +210,19 @@ class ServerConnectionTab(QWidget): self.status_label.setStyleSheet("color: green;") QMessageBox.information(self, "成功", f"成功连接到服务器: {ip}") + # 更新状态栏显示服务器信息 + try: + main_window = self.parent().parent() + if hasattr(main_window, 'remote_commands_tab'): + server_config = { + 'host': ip, + 'remote_dir': self.remote_dir_input.text() + } + main_window.remote_commands_tab.set_server_info(server_config) + logger.info(f"连接服务器后更新状态栏: {ip}") + except Exception as e: + logger.error(f"连接服务器后更新状态栏失败: {str(e)}") + except Exception as e: logger.error(f"连接服务器失败: {str(e)}") self.status_label.setText("连接失败")