Files
djangohelper/__pycache__/threads.cpython-38.pyc

453 lines
35 KiB
Plaintext
Raw Normal View History

U
4<><34>h<EFBFBD><00>@sfddlZddlZddlmZddlmZmZddlZGdd<05>d<05>ZGdd<07>de<05>Z Gdd <09>d e<05>Z
Gd
d <0B>d e<05>Z Gd d <0A>d e<05>Z Gdd<0F>de<05>Z Gdd<11>de<05>ZGdd<13>de<05>ZGdd<15>de<05>ZGdd<17>de<05>ZGdd<19>de<05>ZGdd<1B>de<05>ZGdd<1D>de<05>ZGdd<1F>de<05>ZGd d!<21>d!e<05>ZGd"d#<23>d#e<05>ZGd$d%<25>d%e<05>ZGd&d'<27>d'e<05>ZGd(d)<29>d)e<05>ZdS)*<2A>N)<01>logger)<02>QThread<61>Signalc@s eZdZddd<03>Zddd<06>ZdS) <09>PasswordDialogNcCs||_d|_dS<00>N)<02>parent<6E>password)<02>selfr<00>r
<00>Jc:\Users\xiaji\Documents\个人文件夹\夏骥\web应用部署\threads.py<70>__init__ szPasswordDialog.__init__<5F>请输入sudo密码:cCs>|jr:ddlm}|j|jd||jd<04>\}}|r:||_|SdS)Nr)<01> QInputDialogu
sudo密码)<01>echo)r<00>PySide6.QtWidgetsrZgetText<78>Passwordr)r <00>promptrr<00>okr
r
r <00> get_password s  <04>
zPasswordDialog.get_password)N)r )<05>__name__<5F>
__module__<EFBFBD> __qualname__r rr
r
r
r rs
rcs0eZdZeee<05>Zd<06>fdd<03> Zdd<05>Z<08>Z S)<07>SSHConnectionThread<61>cs&t<00><00><01>||_||_||_||_dSr)<06>superr <00>host<73>usernamer<00>port)r rrrr<00><01> __class__r
r r s

zSSHConnectionThread.__init__c
Cs<>z<>t<00><01>}|<01>t<00><03><00>|j|j|j|j|jdd<02>|<01> d<03>\}}}|<03>
<EFBFBD><00> <0B><00> <0C>}|dkr<>|j <0A>dd|j<05><00><02>t<0F>d|j<05><00><02>n|j <0A>dd <09>t<0F>d
<EFBFBD>|<01><12>WnHtk
r<EFBFBD>}z*t|<06>}|j <0A>d|<07>t<0F>d |<07><00><02>W5d}~XYnXdS) N<>
)rrr<00>timeoutzecho 'Connection test'zConnection testTu成功连接到 uSSH连接成功: Fu连接测试失败uSSH连接测试失败uSSH连接失败: )<15>paramiko<6B> SSHClient<6E>set_missing_host_key_policy<63> AutoAddPolicy<63>connectrrrr<00> exec_command<6E>read<61>decode<64>strip<69>connection_status<75>emitr<00>info<66>error<6F>close<73> Exception<6F>str)r <00>ssh<73>stdin<69>stdout<75>stderr<72>output<75>e<> error_msgr
r
r <00>run#s 
 zSSHConnectionThread.run)r)
rrrr<00>boolr1r+r r9<00> __classcell__r
r
rr rs
rcs.eZdZeee<05>Z<06>fdd<02>Zdd<04>Z<08>Z S)<05>GitInstallThreadcst<00><00><01>||_dSr)rr <00>
ssh_client)r r=rr
r r ?s
zGitInstallThread.__init__c
Cs@z<>|j<00>d<01>\}}}|<02><02><00><03><00><04>}|rR|j<05>dd|<04><00><02>t<07>d|<04><00><02>WdS|j<00>d<04>\}}}|j <09>
<EFBFBD>}|dkr<>|j<00>d<01>\}}}|<02><02><00><03><00><04>}|j<05>dd|<04><00><02>t<07>d|<04><00><02>n0|<03><02><00><03>}|j<05>dd|<06><00><02>t<07> d|<06><00><02>WnJt k
<EFBFBD>r:}z*t |<07>}|j<05>d|<08>t<07> d |<08><00><02>W5d}~XYnXdS)
Nz git --versionTuGit已安装: z*sudo apt update && sudo apt install -y gitruGit安装成功: FuGit安装失败: uGit安装异常: )r=r'r(r)r*<00> result_readyr,rr-<00>channel<65>recv_exit_statusr.r0r1) r r3r4r5Z git_version<6F> exit_statusr.r7r8r
r
r r9Cs*
 zGitInstallThread.run<75>
rrrrr:r1r>r r9r;r
r
rr r<<s
 r<cs.eZdZeee<05>Z<06>fdd<02>Zdd<04>Z<08>Z S)<05>GitCloneThreadcs t<00><00><01>||_||_||_dSr)rr r=<00>git_url<72> project_path)r r=rDrErr
r r es
zGitCloneThread.__init__c
Csx<00>z&|j<00>d|j<02><00><02>\}}}|j<03><04>}|dkr`|j<05>dd|j<02>d<05><03>t<07>d|j<02><00><02>WdSt j
<EFBFBD> |j<02>}|r<>|j<00>d|<05><00><02>\}}}|j<00>d|<05>d |j <0C>d
t j
<EFBFBD> |j<02><01><00><06>\}}}|j<03><04>}|dkr<>|j<05>d d |j<02><00><02>t<07>d |j<02><00><02>n0|<03><0F><00><10>}|j<05>dd |<06><00><02>t<07>d |<06><00><02>WnJtk
<EFBFBD>rr}z*t|<07>}|j<05>d|<08>t<07>d|<08><00><02>W5d}~XYnXdS)N<>ls -la rFu目录 u
已存在u目录已存在: z mkdir -p <20>cd z && git clone <20> TuGit克隆成功: uGit克隆失败: uGit克隆异常: )r=r'rEr?r@r>r,r<00>warning<6E>os<6F>path<74>dirnamerD<00>basenamer-r(r)r.r0r1) r r3r4r5rAZ
parent_dirr.r7r8r
r
r r9ks,
0
 zGitCloneThread.runrBr
r
rr rCbs
 rCcs.eZdZeee<05>Z<06>fdd<02>Zdd<04>Z<08>Z S)<05>ListDirectoryThreadcst<00><00><01>||_||_dSr<00>rr r=rK<00>r r=rKrr
r r <00>s
zListDirectoryThread.__init__c
Cs<>z<>|j<00>d|j<02><00><02>\}}}|j<03><04>}|dkr\|<02><05><00><06>}|j<07>d|<05>t <09>
d|j<02><00><02>n*|<03><05><00><06>}|j<07>d|<06>t <09> d|<06><00><02>WnHt k
r<EFBFBD>}z*t |<07>}|j<07>d|<08>t <09> d|<08><00><02>W5d}~XYnXdS)NrFrTu目录列表成功: Fu目录列表失败: u目录列表异常: )r=r'rKr?r@r(r)r>r,rr-r.r0r1<00> r r3r4r5rAr6r.r7r8r
r
r r9<00>s
  zListDirectoryThread.runrBr
r
rr rN<00>s
 rNcs.eZdZeee<05>Z<06>fdd<02>Zdd<04>Z<08>Z S)<05>DeleteDirectoryThreadcst<00><00><01>||_||_dSrrOrPrr
r r <00>s
zDeleteDirectoryThread.__init__c
Cs<>z<>|j<00>d|j<02><00><02>\}}}|j<03><04>}|dkrX|j<05>dd|j<02><00><02>t<07>d|j<02><00><02>n*|<03> <09><00>
<EFBFBD>}|j<05>d|<05>t<07> d|<05><00><02>WnHt k
r<EFBFBD>}z*t |<06>}|j<05>d|<07>t<07> d|<07><00><02>W5d}~XYnXdS)Nzrm -rf rTu目录删除成功: Fu目录删除失败: u目录删除异常: )r=r'rKr?r@r>r,rr-r(r)r.r0r1<00>r r3r4r5rAr.r7r8r
r
r r9<00>s
 zDeleteDirectoryThread.runrBr
r
rr rR<00>s
 rRcs.eZdZeee<05>Z<06>fdd<02>Zdd<04>Z<08>Z S)<05>SetTimezoneAndRestartThreadcst<00><00><01>||_||_dSr<00>rr r=r<00>r r=rrr
r r <00>s
z$SetTimezoneAndRestartThread.__init__c
Cs<>z<>|j<00>d|j<02>d<02><03>\}}}|j<03><04>}|dkrf|<03><05><00><06>}|j<07>dd|<05><00><02>t <09>
d|<05><00><02>WdS|j<00>d|j<02>d<06><03>\}}}|j<07>dd<08>t <09> d<08>WnHt k
r<EFBFBD>}z*t |<06>}|j<07>d|<07>t <09>
d |<07><00><02>W5d}~XYnXdS)
N<EFBFBD>echo 'z2' | sudo -S timedatectl set-timezone Asia/ShanghairFu设置时区失败: z' | sudo -S rebootTu*时区设置成功服务器正在重启u时区设置异常: )r=r'rr?r@r(r)r>r,rr.r-r0r1rSr
r
r r9<00>s
 zSetTimezoneAndRestartThread.runrBr
r
rr rT<00>s
 rTcs.eZdZeee<05>Z<06>fdd<02>Zdd<04>Z<08>Z S)<05>CheckFirewallThreadcst<00><00><01>||_||_dSrrUrVrr
r r <00>s
zCheckFirewallThread.__init__c
Cs<>z<>|j<00>d|j<02>d<02><03>\}}}|j<03><04>}|dkrV|<02><05><00><06>}|j<07>d|<05>t <09>
d<05>n*|<03><05><00><06>}|j<07>d|<06>t <09> d|<06><00><02>WnHt k
r<EFBFBD>}z*t |<07>}|j<07>d|<08>t <09> d|<08><00><02>W5d}~XYnXdS) NrWz' | sudo -S ufw statusrTu防火墙状态检查成功Fu防火墙状态检查失败: u防火墙状态检查异常: )r=r'rr?r@r(r)r>r,rr-r.r0r1rQr
r
r r9<00>s
   zCheckFirewallThread.runrBr
r
rr rX<00>s
 rXcs.eZdZeee<05>Z<06>fdd<02>Zdd<04>Z<08>Z S)<05>OpenPortThreadcs t<00><00><01>||_||_||_dSr)rr r=rr)r r=rrrr
r r s
zOpenPortThread.__init__c
Cs<>z<>|j<00>d|j<02>d|j<03><00><04>\}}}|j<04><05>}|dkr<>|j<00>d|j<02>d<04><03>\}}}|j<06>dd|j<03>d<07><03>t<08> d|j<03>d<07><03>n*|<03>
<EFBFBD><00> <0B>}|j<06>d|<05>t<08> d |<05><00><02>WnHt k
r<EFBFBD>}z*t|<06>}|j<06>d|<07>t<08> d
|<07><00><02>W5d}~XYnXdS) NrWz' | sudo -S ufw allow rz' | sudo -S ufw reloadTu端口 u 开放成功Fu端口开放失败: u端口开放异常: )r=r'rrr?r@r>r,rr-r(r)r.r0r1rSr
r
r r9
s"
 zOpenPortThread.runrBr
r
rr rYs
 rYcs6eZdZeee<05>Zee<07>Z<08>fdd<02>Z dd<04>Z
<EFBFBD>Z S)<05>DjangoInstallThreadcst<00><00><01>||_||_dSrrUrVrr
r r %s
zDjangoInstallThread.__init__c
Cs<00>z<>|j<00>d<01>|j<02>d<02>\}}}|<02><04><00><05><00><06>}|r`|j<07>dd|<04><00><02>t<08> d|<04><00><02>WdS|j<00>d<05>|j<02>d<06>\}}}|j
<EFBFBD> <0B>}|dkr<>|j<00>d<08>|j<02>d<02>\}}}|<02><04><00><05><00><06>}|j<07>dd |<04><00><02>t<08> d |<04><00><02>WdS|j<00>d
<EFBFBD>|j<02>d |j <0C>d |j <0C>d <0A><05>\}}}|j
<EFBFBD> <0B>}|dk<02>r<>|j<00>d<08>|j<02>d<02>\}}}|<02><04><00><05><00><06>}|j<07>dd |<04><00><02>t<08> d |<04><00><02>n0|<03><04><00><05>}|j<07>dd|<06><00><02>t<08> d|<06><00><02>WnJtk
<EFBFBD>r<>}z*t|<07>}|j<07>d|<08>t<08> d|<08><00><02>W5d}~XYnXdS)Nr <00>python3 -m django --versionTuDjango已安装: <20>z+pip3 install --break-system-packages djangor<00>ZuDjango安装成功: <20>2rWz ' | sudo -S apt update && echo 'z)' | sudo -S apt install -y python3-djangoFuDjango安装失败: uDjango安装异常: )<10>progress_updatedr,r=r'r(r)r*r>rr-r?r@rr.r0r1) r r3r4r5<00>django_versionrAr.r7r8r
r
r r9*sD  
  $

  zDjangoInstallThread.run<75> rrrrr:r1r><00>intr_r r9r;r
r
rr rZ!s
 rZcs6eZdZeee<05>Zee<07>Z<08>fdd<02>Z dd<04>Z
<EFBFBD>Z S)<05>DjangoTestThreadcst<00><00><01>||_||_dSr<00>rr r=<00> django_path<74>r r=rerr
r r `s
zDjangoTestThread.__init__c
Cs<><00>z`|j<00>d<01>|j<02>d|j<04>d<03><03>\}}}|j<05><06>}|dkrl|j<07>dd|j<04><00><02>t<08> d|j<04><00><02>WdS|j<00>d<07>|j<02>d|j<04>d<08><03>\}}}|j<05><06>}|dk<02>r|j<00>d <09>|j<02>d
|j<04>d <0B><03>\}}}|j<05><06>}|dk<03>r|<03>
<EFBFBD><00> <0B>}|j<07>dd |<05><00><02>t<08> d |<05><00><02>WdS|j<00>d <0A>|j<02>d
|j<04>d<0E><03>\}}}t <0C> d<0F>|j<02>d<10>\}}}|<02>
<EFBFBD><00> <0B>}d|k<06>rH|j<00>d<12>t<08>d<13>|j<00>d<14>|j<02>d<15>\}}}|<02>
<EFBFBD><00> <0B>}t<08>d|<07><00><02>|<07>s<>|j<02>d<17>\}}}|<02>
<EFBFBD><00> <0B>}t<08>d|<08><00><02>|} n|} d| k<06>r"d| k<06>r"|j<00>d<1B>t<08>d<1C>|j<02>d<1D>\}}}|<02>
<EFBFBD><00> <0B>}
|j<05><06>} t<08>d| <0B><00><02>t<08>t|
<EFBFBD>dk<04>r<>d |
dd<1F><00>d!<21>nd |
<EFBFBD><00><02>| dk<02>r<>|j<00>d"<22>|j<07>d#d$<24>t<08>d$<24>nZd%|
k<06>r<>d&} n2d'|
k<06>r<>d(} n"d)|
k<06>r<>d*} nd+|
dd"<22><00><00>} |j<07>d| <0C>t<08> | <0C>n$|j<00>d"<22>|j<07>dd,<2C>t<08> d,<2C>n|j<07>dd-<2D>t<08> d-<2D>WnJtk
<EFBFBD>r<>} z*t| <0A>} |j<07>d| <0C>t<08> d.| <0C><00><02>W5d} ~ XYnXdS)/Nr rF<00>
/manage.pyrF<>Django项目不存在: r\<00>/requirements.txtr^rGz< && pip3 install --break-system-packages -r requirements.txtu依赖安装失败: <20>FzD && timeout 10 python3 manage.py runserver 0.0.0.0:8000 --noreload &<26>z#ps aux | grep 'manage.py runserver'zmanage.py runserver<65>PuBDjango测试服务器启动成功开始检查端口访问情况<E68385>Uzss -tulnp | grep 8000u ss命令检查端口8000结果: znetstat -tulnp | grep 8000u%netstat命令检查端口8000结果: <20>LISTEN<45>8000r]u7端口8000处于LISTEN状态开始本地请求测试zcurl -s http://127.0.0.1:8000<30>$curl本地请求测试退出状态: <20><><00>curl本地请求测试输出: <20>...<2E>dTu6Django测试服务器启动成功端口访问正常<E6ADA3>Failed to connectu_Django测试服务器启动成功但本地请求超时Gunicorn进程可能未正常响应<E5938D>Bad Request (400)u[Django测试服务器启动成功但返回400错误可能是ALLOWED_HOSTS配置问题<E997AE>500uTDjango测试服务器启动成功但返回500错误可能是应用内部错误u;Django测试服务器启动成功但本地请求失败: uFDjango测试服务器启动成功但端口8000未处于LISTEN状态u!Django测试服务器启动失败uDjango测试异常: )r_r,r=r'rer?r@r>rr.r(r)<00>time<6D>sleepr-<00>lenr0r1)r r3r4r5rAr.r6<00> ss_output<75>netstat_output<75>port_check_output<75> curl_output<75>curl_exit_statusr8r7r
r
r r9es<> 
 

 

  
 
 
    
 
2
  


   zDjangoTestThread.runrar
r
rr rc\s
 rccs.eZdZeee<05>Z<06>fdd<02>Zdd<04>Z<08>Z S)<05>DownloadSettingsThreadcst<00><00><01>||_||_dSrrdrfrr
r r <00>s
zDownloadSettingsThread.__init__c
Cs*z<>|j<00>d|j<02>d<02><03>\}}}|j<03><04>}|dkrN|j<05>dd<05>t<07>d<05>WdS|<02> <09><00>
<EFBFBD><00> <0B>}|j<00>d|<05><00><02>\}}}|j<03><04>}|dkr<>|<02> <09><00>
<EFBFBD>}|j<05>d|<06>t<07> d<08>n*|<03> <09><00>
<EFBFBD>}|j<05>d|<07>t<07>d |<07><00><02>WnJt k
<EFBFBD>r$}z*t|<08>} |j<05>d| <09>t<07>d
| <09><00><02>W5d}~XYnXdS) N<>find <20> -name settings.pyrF<>未找到settings.py文件zcat Tusettings.py下载成功usettings.py下载失败: usettings.py下载异常: )r=r'rer?r@r>r,rr.r(r)r*r-r0r1)
r r3r4r5rA<00> settings_path<74>settings_contentr.r7r8r
r
r r9<00>s*


   zDownloadSettingsThread.runrBr
r
rr r<><00>s
 r<>cs.eZdZeee<05>Z<06>fdd<02>Zdd<04>Z<08>Z S)<05>UploadSettingsThreadcs t<00><00><01>||_||_||_dSr)rr r=rer<>)r r=rer<>rr
r r <00>s
zUploadSettingsThread.__init__c
Cs`<00>z|j<00>d|j<02>d<02><03>\}}}|j<03><04>}|dkrP|j<05>dd<05>t<07>d<05>WdS|<02> <09><00>
<EFBFBD><00> <0B>}d}|j<00> <0C>}|<07> |d<07><02>}|<08>|j<0F>W5QRX|j<00>d|<06>d |<05><00><04>\}}}|j<03><04>}|dkr<>|j<05>d
d <0B>t<07>d <0B>n*|<03> <09><00>
<EFBFBD>} |j<05>d| <09>t<07>d | <09><00><02>|<07><11>WnJtk
<EFBFBD>rZ}
z*t|
<EFBFBD>} |j<05>d| <0B>t<07>d | <0B><00><02>W5d}
~
XYnXdS)Nr<4E>r<>rFr<46>z/tmp/settings_upload.py<70>w<>sudo mv rHTusettings.py上传成功usettings.py上传失败: usettings.py上传异常: )r=r'rer?r@r>r,rr.r(r)r*<00> open_sftp<74>file<6C>writer<65>r-r/r0r1) r r3r4r5rAr<><00> temp_file<6C>sftp<74>fr.r7r8r
r
r r9<00>s2



   zUploadSettingsThread.runrBr
r
rr r<><00>s
 r<>cs6eZdZeee<05>Zee<07>Z<08>fdd<02>Z dd<04>Z
<EFBFBD>Z S)<05>CollectStaticThreadcst<00><00><01>||_||_dSrrdrfrr
r r *s
zCollectStaticThread.__init__c
CsZ<00>z|j<00>d<01>|j<02>d|j<04>d<03><03>\}}}|j<05><06>}|dkrl|j<07>dd|j<04><00><02>t<08> d|j<04><00><02>WdS|j<00>d<07>|j<02>d|j<04>d <09><03>\}}}|j<05><06>}|dkr<>|j<00>d
<EFBFBD>|<02>
<EFBFBD><00> <0B>}|j<07>d d |<05><00><02>t<08> d <0A>n*|<03>
<EFBFBD><00> <0B>}|j<07>d|<06>t<08> d|<06><00><02>WnJt k
<EFBFBD>rT}z*t|<07>}|j<07>d|<08>t<08> d|<08><00><02>W5d}~XYnXdS)Nr rFrgrFrhr\rGz- && python3 manage.py collectstatic --noinputrtTu静态文件收集成功: u静态文件收集成功u静态文件收集失败: u静态文件收集异常: )r_r,r=r'rer?r@r>rr.r(r)r-r0r1rQr
r
r r9/s. 
 
    zCollectStaticThread.runrar
r
rr r<>&s
 r<>cs.eZdZeee<05>Z<06>fdd<02>Zdd<04>Z<08>Z S)<05>CheckDjangoStatusThreadcst<00><00><01>||_||_dSrrdrfrr
r r Us
z CheckDjangoStatusThread.__init__c
Cs<><00>z<>g}|j<00>d|j<02>d<02><03>\}}}|j<03><04>}|dkrd|j<05>dd|j<02><00><02>t<07>d|j<02><00><02>WdS|<01> d<06>|j<00>d<07>\}}}|<03>
<EFBFBD><00> <0B><00> <0C>}|<01> d|<06><00><02>|j<00>d|j<02>d <09><03>\}}}|j<03><04>}|dkr<>|<01> d
<EFBFBD>n
|<01> d <0B>|j<00>d |j<02>d <0A><03>\}}}|j<03><04>}|dk<02>r |<01> d<0E>n
|<01> d<0F>|j<00>d|j<02>d<10><03>\}}}|j<03><04>}|dk<02>rf|<01> d<11>n
|<01> d<12>d<13> |<01>}|j<05>d|<07>t<07>d<15>WnJtk
<EFBFBD>r<>}z*t|<08>} |j<05>d| <09>t<07>d| <09><00><02>W5d}~XYnXdS)NrFrgrFrhu✓ Django项目存在r[u✓ Django版本: riu✓ requirements.txt存在u✗ requirements.txt不存在r<E59CA8>r<>u✓ settings.py存在u✗ settings.py不存在z/staticu✓ static目录存在u✗ static目录不存在<E5AD98>
TuDjango状态检查完成uDjango状态检查异常: )r=r'rer?r@r>r,rr.<00>appendr(r)r*<00>joinr-r0r1)
r Z status_infor3r4r5rAr`Z status_textr7r8r
r
r r9ZsD


 


 


 

zCheckDjangoStatusThread.runrBr
r
rr r<>Rs
 r<>cs8eZdZeee<05>Zee<07>Zd<06>fdd<03> Z dd<05>Z
<EFBFBD>Z S)<07>GunicornInstallThreadNcst<00><00><01>||_||_dSrrUrVrr
r r <00>s
zGunicornInstallThread.__init__c
Cs,<00>z<>|j<00>d<01>t<02>d<02>|j<04>d<03>\}}}|j<06><07>}|<02><08><00> <09><00>
<EFBFBD>}|<03><08><00> <09>}t<02>d|<04><00><02>t<02>d|<05><00><02>|r<>t<02> d|<06><00><02>|r<>|j <0C>dd|<05><00><02>t<02>d|<05><00><02>WdS|j<00>d <09>t<02>d
<EFBFBD>|j<04>d <0B>\}}}|j<06><07>}|<02><08><00> <09>}|<03><08><00> <09>}t<02>d |<04><00><02>t<02>d |<07><00><02>|<08>r4t<02> d|<08><00><02>|dk<02>r |j<00>d<10>t<02>d<11>|j<04>d<03>\}}}|j<06><07>} |<02><08><00> <09><00>
<EFBFBD>}|<03><08><00> <09>}t<02>d| <09><00><02>t<02>d|<05><00><02>|<06>r<>t<02> d|<06><00><02>|<05>r<>|j <0C>dd|<05><00><02>t<02>d|<05><00><02>n|j <0C>dd<14>t<02> d<14>WdS|j<00>d<15>t<02>d<16>|j <0A>rbt<02>d<17>|j<04>d<18>\}}}|<01>|j <0A>d<19><02>|<01><0F>nt<02>d<1A>|j<04>d<1B>\}}}|j<06><07>}|<02><08><00> <09>}
|<03><08><00> <09>} t<02>d|<04><00><02>t<02>d|
<EFBFBD><00><02>| <0B>r<>t<02> d| <0B><00><02>|dk<02>r<>|j<00>d<10>t<02>d<1F>|j<04>d<03>\}}}|j<06><07>} |<02><08><00> <09><00>
<EFBFBD>}|<03><08><00> <09>}t<02>d| <09><00><02>t<02>d|<05><00><02>|<06>rdt<02> d|<06><00><02>|<05>r<>|j <0C>dd|<05><00><02>t<02>d|<05><00><02>n|j <0C>dd<14>t<02> d<14>n0|<03><08><00> <09>} |j <0C>dd | <0C><00><02>t<02> d | <0C><00><02>WnJtk
<EFBFBD>r&} z*t| <0A>}|j <0C>d|<0E>t<02> d!|<0E><00><02>W5d} ~ XYnXdS)"Nr u检查Gunicorn是否已安装zgunicorn --versionuGunicorn版本检查状态: uGunicorn版本信息: uGunicorn版本检查错误: TuGunicorn已安装: r\u开始使用pip安装Gunicornzpip3 install gunicornu&Gunicorn pip安装命令执行状态: uGunicorn pip安装输出: uGunicorn pip安装错误: rr]u验证Gunicorn安装uGunicorn安装成功: Fu)Gunicorn安装后无法获取版本信息r^u/pip安装失败尝试使用apt安装Gunicornu 使用密码进行sudo apt安装z5sudo -S apt update && sudo -S apt install -y gunicornr<6E>u无密码进行sudo apt安装z/sudo apt update && sudo apt install -y gunicornu&Gunicorn apt安装命令执行状态: uGunicorn apt安装输出: uGunicorn apt安装错误: u验证apt安装的GunicornuGunicorn安装失败: uGunicorn安装异常: )r_r,rr-r=r'r?r@r(r)r*r.r>rr<><00>flushr0r1)r r3r4r5rAZgunicorn_versionZ version_errorZinstall_outputZ install_errorZversion_exit_statusZ
apt_outputZ apt_errorr.r7r8r
r
r r9<00>s<> 

  

  
 

 
 




  
 

   zGunicornInstallThread.run)Nrar
r
rr r<><00>s
r<>cs8eZdZeee<05>Zee<07>Zd<07>fdd<04> Z dd<06>Z
<EFBFBD>Z S)<08>GunicornTestThreadro<00> 127.0.0.1csBt<00><00><01>||_||_||_||_t<06>d|<02>d|<03>d|<04><00><06>dS)Nu,GunicornTestThread初始化 - Django路径: <20>
, 端口: u
, 主机: )rr r=rerrrr-)r r=rerrrr
r r s 
zGunicornTestThread.__init__c$
Cs<> <00> zr|j<00>d<01>|j<02>d|j<04>d<03><03>\}}}|j<05><06>}|dkrl|j<07>dd|j<04><00><02>t<08> d|j<04><00><02>WdS|j<00>d<07>|j<02>d|j<04>d <09><03>\}}}|<02>
<EFBFBD><00> <0B><00> <0C><00> d
<EFBFBD>}|r<>|d gkr<>|j<07>dd <0C>t<08> d <0C>WdS|d<00> <0C>}t<08>d |<06><00><02>tj<10>|<06>}tj<10>|<07>}||j<04>d<0E>k<03>r*tj<10>|<07>}ntj<10>|j<04>d<0E><01>}t<08>d|<08>d|j<04><00><04>|j<00>d<11>t<08>d|j<14>d<13><03>|j<02>d|j<14><00><02>\}}}|<02>
<EFBFBD><00> <0B>} |j<05><06>}
|
dk<02>r
| <09>r
t<08>d|j<14>d| <09><00><04>|j<02>d|j<14>d<18><03>\}}}t<16>d<19>t<08>d|j<14>d<1B><03>nt<08>d|j<14>d<1C><03>d|j<04>d|j<14>d|<08>d <20>} t<08>d!| <0B><00><02>|j<02>| <0B>\}}}t<16>d"<22>|<02>
<EFBFBD><00> <0B>} |<03>
<EFBFBD><00> <0B>} | <0C>r<>t<08>t| <0C>d#k<04>r<>d$| dd#<23><00>d%<25>nd$| <0C><00><02>| <0A>r<>t<08> t| <0A>d#k<04>r<>d&| dd#<23><00>d%<25>nd&| <0A><00><02>d'd(d)d*d+d,d-d.d/g }g}|D]*}|| k<06>r |<0F>|<10>t<08> d0|<10><00><02><00>q |<0F>rld1d2<64>|<0F><01><00>}t<08> |<11>|j<07>d|<11>WdS|j<02>d3<64>\}}}|<02>
<EFBFBD><00> <0B>}t<08>d4|<12><00><02>|<12>d5<64>d}t<08>d6|<13><00><02>|<12> <0C><00> d
<EFBFBD>}d}g}|D]<5D>}d7|k<07>r<>d5|k<06>r<>|<17> <0A>}t|<18>d8k<05>r<>|d}d<1F>|dd<00><00>}d9|k<06>s.d:|k<06>r8||f}nd;|k<06>r<>|<16>||f<02><00>q<>|<15>rzt<08>d<|d<00>d=|d<00><00><04>n
t<08>d><3E>|<16>r<>t<08>d?t|<16><01>d@<40><03>|D] \}}t<08>dA|<19>d=|<1A><00><04><00>q<>n
t<08>dB<64>|<15>r<>t|<16>dCk<02>r<>t<08>dD<64>n6|<15>rt|<16>dk<04>rt<08>dEt|<16><01>dF<64><03>n
t<08> dG<64>|dk<00>rt<08> dH<64>t<08>dI<64>|j<02>d|j<04>d|j<14>d|<08>d <20><07>\}}}t<16>dJ<64>|<03>
<EFBFBD><00> <0B>}t<08> dK|<1B><00><02>d'd(d)d*d+d,d-d.d/g }g}|D]*}||k<06>r<>|<0F>|<10>t<08> dL|<10><00><02><00>q<>|<0F>rdMd2<64>|<0F><01><00>}t<08> |<11>|j<07>d|<11>WdS|j<02>dN|j<14>dO<64><03>\}}}d5|k<06>r<>dP|j<14><00>|k<06>r<>|j<00>dQ<64>t<08>dR|j<14>dS<64><03>|j<00>dT<64>|j<02>dU|j<14><00><02>\}}}|<02>
<EFBFBD><00> <0B>}t<08>dV|j<14>dW|<1C><00><04>|<1C>s|j<02>dX|j<14><00><02>\}}}|<02>
<EFBFBD><00> <0B>}t<08>dY|j<14>dW|<1D><00><04>|}n|}dZ|k<06>rpdP|j<14><00>|k<06>rp|j<00>d[<5B>t<08>d|j<14>d\<5C><03>|j<02>d]|j<1C>dP|j<14><00><04>\}}}|<02>
<EFBFBD><00> <0B>}|j<05><06>} t<08>d^| <20><00><02>t<08>t|<1F>d_k<04>r<>d`|dd_<64><00>d%<25>nd`|<1F><00><02>| dk<02>r
|j<00>da<64>|j<07>dbdc|<08>dd|j<14>de<64><05>t<08>dc|<08>dd|j<14>de<64><05>nddf|k<06>r$dg|j<14>dh<64>}n2di|k<06>r4dj}n"dk|k<06>rDdl}ndm|dda<64><00><00>}|j<07>d|<11>t<08> |<11>n8|j<00>da<64>|j<07>ddn|j<14>do<64><03>t<08> dn|j<14>do<64><03>n<>|j<00>dQ<64>d|j<04>dp|<08>dq<64>}!t<08>dr|!<21><00><02>|j<02>|!<21>\}}}|j<05><06>}|dk<02> rB|<02>
<EFBFBD><00> <0B>}"t<08>ds|"<22><00><02>|j<07>dbdt|<08><00><02>t<08>dt|<08><00><02>n0|<03>
<EFBFBD><00> <0B>}t<08> du|<1B><00><02>|j<07>ddu|<1B><00><02>WnJtk
<EFBFBD> r<>}#z*t|#<23>}|j<07>d|<11>t<08> dv|<11><00><02>W5d}#~#XYnXdS)wNr rFrgrFrhr\r<>z -name wsgi.py -type fr<66><00>u未找到wsgi.py文件u找到wsgi.py文件: <20>/u使用项目名: u, 工作目录: r^<00> 检查端口u是否被其他进程占用<E58DA0>sudo lsof -i :<3A>端口u已被其他进程占用: zsudo lsof -t -i :z | xargs sudo kill -9<>u已尝试杀死占用端口u 的进程<E8BF9B> 未被占用rGz( && gunicorn --workers 4 --bind 0.0.0.0:rHzT.wsgi:application --timeout 5 --log-level debug --access-logfile - --error-logfile -u执行Gunicorn测试命令: rki<>uGunicorn标准输出: rsuGunicorn错误输出: <20> ImportError<6F>ModuleNotFoundErrorZ DatabaseError<6F>ConnectionErrorZOperationalErrorZProgrammingErrorr0<00>ErrorZFailedu+在Gunicorn错误日志中发现关键词: u.Gunicorn启动失败发现错误关键词: z, <20>ps aux | grep gunicornuGunicorn进程检查结果: <20>gunicorn<72>&检测到Gunicorn Worker进程数量: <20>grep<65> <00>master<65>gunicorn: master<65>worker<65>"检测到Gunicorn主进程 - PID: <20>
, 命令: <20>未检测到Gunicorn主进程<E8BF9B> 检测到<E6B58B>个Gunicorn Worker进程:<3A> - Worker PID: <20>!未检测到Gunicorn Worker进程<E8BF9B><00><Gunicorn进程结构正常: 1个主进程 + 4个worker进程<E8BF9B>2Gunicorn进程结构部分正常: 1个主进程 + <20>个worker进程预期4个<E4B8AA>=Gunicorn进程结构异常: 未检测到完整的进程结构<E7BB93>TGunicorn主进程存在但Worker进程未启动可能是Django代码/配置错误u5尝试手动启动Gunicorn以获取详细错误日志<E697A5>u"手动启动Gunicorn错误日志: u7在手动启动Gunicorn错误日志中发现关键词: u8Gunicorn Worker进程未启动发现错误关键词: zpkill -f 'gunicorn.*<2A>'<27>:rlu/Gunicorn进程运行正常开始检查端口u 访问情况rmzss -tulnp | grep <20>ss命令检查端口u结果: znetstat -tulnp | grep <20>netstat命令检查端口rnr]<00>-处于LISTEN状态开始本地请求测试zcurl -s http://rprqrrrtTuGunicorn测试成功 - 项目: r<>u, 访问正常ruu;Gunicorn进程运行正常但本地请求超时端口<E7ABAF> 未响应rvuTGunicorn进程运行正常但返回400错误可能是ALLOWED_HOSTS配置问题rwuMGunicorn进程运行正常但返回500错误可能是应用内部错误u4Gunicorn进程运行正常但本地请求失败: u&Gunicorn进程运行正常但端口<E7ABAF>未处于LISTEN状态z && python3 -c "import u!.wsgi; print('WSGI导入成功')"u执行WSGI导入测试: uWSGI导入测试成功: u!WSGI配置验证成功 - 项目: uGunicorn测试失败: uGunicorn测试异常: )r_r,r=r'rer?r@r>rr.r(r)r*<00>splitr-rJrKrLrM<00>rstriprrIrxryrzr<>r<><00>countrr0r1)$r r3r4r5rAZ
wsgi_filesZ wsgi_fileZ project_dir<69> project_name<6D> lsof_output<75>lsof_exit_statusZ test_commandZgunicorn_stdoutZgunicorn_stderrZerror_keywordsZ found_errors<72>keywordr8r6<00> worker_count<6E>lines<65>master_process<73>worker_processes<65>line<6E>parts<74>pid<69>commandZ error_outputr{r|r}r~rZ test_command2Z wsgi_outputr7r
r
r r9s> 
 
     


  22


 

 
 
 


2025-08-28 22:30:17 +08:00

*
 


     " 
2
 


   

  zGunicornTestThread.run)ror<>rar
r
rr r<> s
r<>cs0eZdZeee<05>Zd<06>fdd<03> Zdd<05>Z<08>Z S)<07>UploadGunicornServiceThreadNcs&t<00><00><01>||_||_||_||_dSr)rr r=<00> service_name<6D>service_contentr)r r=r<>r<>rrr
r r s

2025-08-28 22:30:17 +08:00
z$UploadGunicornServiceThread.__init__c
Cs<><00>z<>d|j<00>d<02>}d|j<00>d<02>}t<01>d|<01><00><02>|j<03><04>}|<03>|d<05><02>}|<04>|j<07>W5QRXt<01>d|<02><00><02>|jr<>|j<03> d|<02>d|<01><00><04>\}}}|<05>|j<08>d <09><02>|<05>
<EFBFBD>n|j<03> d
|<02>d|<01><00><04>\}}}|j <0B> <0C>}|d k<03>r|<07> <0A><00><0E>} t<01>d | <09><00><02>|j<10>d d | <09><00><02>|<03><12>WdSt<01>d|<01><00><02>|j<08>rj|j<03> d|<01><00><02>\}}}|<05>|j<08>d <09><02>|<05>
<EFBFBD>n|j<03> d|<01><00><02>\}}}|j <0B> <0C>}|d k<03>r<>|<07> <0A><00><0E>} t<01>d| <09><00><02>|j<10>d d| <09><00><02>|<03><12>WdSt<01>d|<01><00><02>|j<03> d|<01><00><02>\}}}|j <0B> <0C>}|d k<02>r2|<06> <0A><00><0E><00><13>}
t<01>d|
<EFBFBD><00><02>n>|<07> <0A><00><0E>} t<01>d| <09><00><02>|j<10>d d| <09><00><02>|<03><12>WdS|j<08>r<>|j<03> d<16>\}}}|<05>|j<08>d <09><02>|<05>
<EFBFBD>n|j<03> d<17>\}}}|j <0B> <0C>}|d k<03>r
|<07> <0A><00><0E>} t<01>d| <09><00><02>|j<10>d d| <09><00><02>|<03><12>WdSt<01>d<19>|j<03> d|j<00><00><02>\}}}|j <0B> <0C>}|d k<02>rd|<06> <0A><00><0E><00><13>} t<01>d| <0B><00><02>n|<07> <0A><00><0E>} t<01>d| <09><00><02>|<03><12>|j<10>dd|<01><00><02>t<01>d|<01><00><02>WnJtk
<EFBFBD>r<>} z*t| <0C>} t<01>d| <0A><00><02>|j<10>d | <0A>W5d} ~ XYnXdS) N<>/etc/systemd/system/<2F>.servicez/tmp/u准备上传服务文件: r<>u 临时服务文件创建成功: z sudo -S mv rHr<>r<>ru服务文件移动失败: Fu服务文件移动成功: zsudo -S chmod 644 zsudo chmod 644 u权限设置失败: u 服务文件权限设置成功: rFu服务文件验证成功: u服务文件验证失败: zsudo -S systemctl daemon-reloadzsudo systemctl daemon-reloadusystemd重新加载失败: usystemd重新加载成功z!systemctl list-unit-files | grep u服务被systemd识别: u服务未被systemd识别: Tu服务文件上传成功: u服务文件上传异常: )r<>rr-r=r<>r<>r<>r<>rr'r<>r?r@r(r)r.r>r,r/r*rIr0r1)r <00> service_filer<65>r<>r<>r3r4r5rAr.<00> file_infoZ service_infor7r8r
2025-08-28 22:30:17 +08:00
r
r r9s<>
2025-08-28 22:30:17 +08:00


2025-08-28 22:30:17 +08:00

 


2025-08-28 22:30:17 +08:00
 

 


 


 zUploadGunicornServiceThread.run)NrBr
r
rr r<>s
r<>cs0eZdZeee<05>Zd<07>fdd<04> Zdd<06>Z<08>Z S)<08>ManageGunicornServiceThreadNrocsHt<00><00><01>||_||_||_||_||_t<07>d|<02>d|<03>d|<05><00><06>dS)Nu2ManageGunicornServiceThread初始化 - 服务名: u
, 操作: r<>) rr r=r<><00>actionrrrr-)r r=r<>r<>rrrr
r r zs
z$ManageGunicornServiceThread.__init__c%
Cs <00>z<>|j}|<01>d<01>r |dd<02>}d|j<02>d|<01><00>}t<03>d|<02><00><02>d|j<00>d<01>}|j<05>d|<03><00><02>\}}}|j<07><08>}|dkr<>|<06> <09><00>
2025-08-28 22:30:17 +08:00
<EFBFBD>}t<03> d |<03>d
|<08><00><04>|j <0C> d d |j<00>d<01><03>WdS|<05> <09><00>
2025-08-29 21:33:35 +08:00
<EFBFBD><00><0E>} t<03>d | <09><00><02>|jd k<02>r|j<0F>r<>|j<05>d|<02><00><02>\}}}|<04>|j<0F>d<0F><02>|<04><11>|j<07><08>}t<03>d|<07><00><02>|<05> <09><00>
2025-08-28 22:30:17 +08:00
<EFBFBD>}
2025-08-29 21:33:35 +08:00
|<06> <09><00>
<EFBFBD>}d|<08><12>k<06>r<>|dk<03>r<>t<03> d|<08><00><02>|j <0C> d |<08>WdSn:|j<05>d|<02><00><02>\}}}|j<07><08>}|<05> <09><00>
<EFBFBD>}
|<06> <09><00>
<EFBFBD>}|dk<02>r<>t<03>d|<01><00><02>|j <0C> d|
<EFBFBD>nt<03> d|<08><00><02>|j <0C> d |<08><00>n<>|j<0F>r<>|j<05>d|<02><00><02>\}}}|<04>|j<0F>d<0F><02>|<04><11>|j<07><08>}t<03>d|j<02>d|<07><00><04>|<06> <09><00>
<EFBFBD>}d|<08><12>k<06>r<>|dk<03>r<>t<03> d|<08><00><02>|j <0C> d |<08>WdSn"|j<05>d|<02><00><02>\}}}|j<07><08>}|dk<02>r<>t<03>d|j<02>d|<01><00><04>|jdk<02>rnt<13>d<1B>|j<05>d|<01><00><02>\}}}|j<07><08>} |<05> <09><00>
<EFBFBD>} |<06> <09><00>
<EFBFBD>} | dk<02>r^t<03>d| <0C><00><02>d}t|d<1F><02>r<>|j<16>r<>|j}t<03>d |<0E>d!<21><03>|j<05>d"|<0E><00><02>\}}}|<05> <09><00>
<EFBFBD>}|j<07><08>}|dk<02>r<>|<0F>r<>t<03>d#|<0E>d$|<0F><00><04>nt<03>d#|<0E>d%<25><03>|j<05>d&<26>\}}}|<05> <09><00>
<EFBFBD>}t<03>d'|<11><00><02>|<11><0E><00>d<0F>}d}g}|D]<5D>}d(|k<07>rJd)|k<06>rJ|<15><18>}t|<16>d*k<05>rJ|d+}d<04>|d,d<00><00>}d-|k<06>s<>d.|k<06>r<>||f}nd/|k<06>rJ|<14>||f<02><00>qJ|<13>r<>t<03>d0|d<00>d1|d+<00><00><04>n
t<03>d2<64>|<14>r@t<03>d3t|<14><01>d4<64><03>|D] \}}t<03>d5|<17>d1|<18><00><04><00>qn
t<03>d6<64>|<13>rjt|<14>d7k<02>rjt<03>d8<64>n6|<13>r<>t|<14>dk<04>r<>t<03>d9t|<14><01>d:<3A><03>n
t<03> d;<3B>|<11>d)<29>d+}t<03>d<|<19><00><02>|d+k<00>r<>t<03> d=<3D>|j<05>d>|<0E><00><02>\}}}|<05> <09><00>
<EFBFBD>}t<03>d?|<0E>d@|<1A><00><04>|<1A>sR|j<05>dA|<0E><00><02>\}}}|<05> <09><00>
<EFBFBD>}t<03>dB|<0E>d@|<1B><00><04>|}n|}dC|k<06>rtdD|<0E><00>|k<06>rtt<03>d#|<0E>dE<64><03>|j<05>dF|<0E><00><02>\}}}|<05> <09><00>
<EFBFBD>}|j<07><08>}t<03>dG|<1E><00><02>t<03>t|<1D>dHk<04>r<>dI|ddH<64><00>dJ<64>ndI|<1D><00><02>|dk<02>rt<03>dK|<0E>dL<64><03>nbdM|k<06>r.t<03>dN|<0E>dO<64><03>nDdP|k<06>rDt<03>dQ<64>n.dR|k<06>rZt<03>dS<64>nt<03>dT|ddU<64><00><00><02>n<>t<03>dV|<0E>dW<64><03>t<03>dX<64>|j<05>dY<64>\}}}|<05> <09><00>
<EFBFBD><00><0E>}t<03>dZ|<1F><00><02>|d[k<02>r<>t<03>d\<5C>t<03>d]<5D>|j<05>d^<5E>\}}}|<05> <09><00>
<EFBFBD><00><0E>} t<03>d_| <20><00><02>t<03>d`<60>da}!|j<05>d>|!<21><00><02>\}}}|<05> <09><00>
<EFBFBD>}"|"<22>snt<03>d#|!<21>db<64><03>nt<03>dc| <0A><00><02>|j <0C> dd|j<02>d|<01><00><04>n2|<06> <09><00>
<EFBFBD>}t<03> d|j<02>dd|<08><00><04>|j <0C> d |<08>WnJtk
<EFBFBD> r
}#z*t|#<23>}$t<03> de|$<24><00><02>|j <0C> d |$<24>W5d}#~#XYnXdS)fNr<4E>i<><69><EFBFBD><EFBFBD>z
systemctl rHu执行服务管理命令: r<>rFru服务文件不存在: u
, 错误: Fu服务文件存在: <20>statuszsudo -S r<>u5服务状态查询命令执行完成,退出状态: z password foru/密码传递失败,仍然提示输入密码: zsudo u服务状态查询成功: Tu服务状态查询失败: u服务u#命令执行完成,退出状态: u成功: <20>startr<74>zsudo systemctl status u#服务启动后状态检查成功: rorr<>u 占用情况r<E586B5>r<>u 被占用: r<>r<>uGunicorn进程状态: r<>r<>r<>r<>r r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>zsudo ss -tulnp | grep :r<>u监听状态: zsudo netstat -tlnp | grep :r<>rnr<>r<>zcurl -s http://127.0.0.1:rprqrrrsu服务启动成功端口u 访问正常ruu3服务启动成功但本地请求超时端口r<E58FA3>rvuL服务启动成功但返回400错误可能是ALLOWED_HOSTS配置问题rwuE服务启动成功但返回500错误可能是应用内部错误u,服务启动成功,但本地请求失败: rtu服务启动成功但端口r<E58FA3>u检查SELinux状态Z
getenforceuSELinux状态: Z Enforcingu:SELinux处于Enforcing状态可能限制了端口绑定u检查项目目录权限zls -ld /home/xiaji/u/home/xiaji/目录权限: u尝试更换端口测试Z8001u/未被占用尝试用该端口启动Gunicornu#服务启动后状态检查失败: u失败: u服务管理异常: )r<><00>endswithr<68>rr-r=r'r?r@r(r)r.r>r,r*rr<>r/<00>lowerrxry<00>hasattrrrIr<>rzr<>r<>r<>r0r1)%r Zservice_name_for_systemd<6D>cmdr<64>r3r4r5rAr.r<>r6Zstatus_exit_statusZ status_outputZ status_errorrr<>r<>Z ps_outputr<74>r<>r<>r<>r<>r<>r<>r<>r{r|r}r~rZselinux_outputZhome_dir_outputZ test_portZtest_port_outputr7r8r
r
r r9<00>s6
2025-08-28 22:30:17 +08:00
 
2025-08-29 21:33:35 +08:00
  
  
  

 

 

  
 
 

 
 
 


   
2


 
 




  zManageGunicornServiceThread.run)NrorBr
r
rr r<>ws
 r<>)rJrx<00>logurur<00>PySide6.QtCorerrr"rrr<rCrNrRrTrXrYrZrcr<>r<>r<>r<>r<>r<>r<>r<>r
r
r
r <00><module>s0 #&+  ;q(1,Av|s