将django程序迁移到新的iis上,折腾了一周,毫无头绪。悬赏求解!
一、我的设置:
1)在新机器上安装anaconda,用canda命令建立虚拟环境。在虚拟环境中安装与旧机器同样的包。(包括python与django的版本一致)如下图:
4)在新建的网站中添加了模块映射。如下图
5)在wfastcgi中添加了环境参数。如下图:
DEBUG =True
ALLOWED_HOSTS = ['*']
STATIC_URL = '/assets/'
STATIC_ROOT = os.path.join(BASE_DIR, 'templates/assets')
7)我的urls设置:
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index,{'stock':'g_view'},name='g_view'),
path('ajax_rio/', views.ajax_rio,name='ajax_rio'),
path('ajax_stock_mv/', views.ajax_stock_mv,name='ajax_stock_mv'),
path('ajax_stock_R_D_bend/', views.ajax_stock_R_D_bend,name='ajax_stock_R_D_bend'),
path('ajax_stock_risk/', views.ajax_stock_risk,name='ajax_stock_risk'),
path('/' , views.index,name='index'),
url(r'^assets/(?P.*)$' , static.serve, {'document_root': settings.STATIC_ROOT}, name='assets'),
]
8)将iis网站的身份验证改为adimistrator(加密码),所有相关目录的访问权限设置为everyone完全控制。
二、故障描述
1)404错误
三、请教
我的新网站文件与旧网站一摸一样,模块一样,iis设置一摸一样,旧网站django与iis的web都正常,新网站django的web正常,iis报错。
隐约中感觉是wfastcgi没有正常工作,但又没有依据。不知怎样排查,请给思路并指正!
问题在无意中解决。本来是做最后一次尝试,不行就用apache了。过程如下:
1)配置了一个静态网页文件,发现也是一样的404报错,突然感觉应当是iis设置的问题了,但又找不到原因,卸载iis后重新安装。
2)静态网页可以正常访问了,配置wfastcgi,出现报错:
PermissionError at /
[Errno 13] Permission denied: 'C:\\Windows\\system32\\config\\systemprofile\\tk.csv'
Request Method: GET
Request URL: http://192.168.192.8:8080/
Django Version: 3.2.4
Exception Type: PermissionError
Exception Value:
[Errno 13] Permission denied: 'C:\\Windows\\system32\\config\\systemprofile\\tk.csv'
Exception Location: C:\Anaconda3\envs\MyDSS\lib\site-packages\pandas\io\common.py, line 428, in get_handle
Python Executable: C:\Anaconda3\envs\MyDSS\python.exe
Python Version: 3.8.15
Python Path:
['.',
'D:\\mypython\\djangoweb\\MyDSS',
'C:\\Anaconda3\\envs\\MyDSS\\python38.zip',
'C:\\Anaconda3\\envs\\MyDSS\\DLLs',
'C:\\Anaconda3\\envs\\MyDSS\\lib',
'C:\\Anaconda3\\envs\\MyDSS',
'C:\\Anaconda3\\envs\\MyDSS\\lib\\site-packages']
Server time: Mon, 06 Feb 2023 12:43:19 +0000
[Errno 13] Permission denied: 'C:\Windows\system32\config\systemprofile\tk.csv'这句很奇葩,tk.csv是什么鬼?
将ervryone完全控制权限赋予C:\Windows\system32\config\systemprofile,一切正常了。
没有一丝欣喜,反而是无穷无尽的失落。
耗费我这么长时间,这个报错百度了没有任何结果。tk.csv是什么?难道一个网站要把所有的权限赋予所有重要目录才能用?
毫无头绪,毫无意义,毫无逻辑。iis(windows)的坑真大啊!
请指教!这个问题弄清楚就结帖!谢谢!
HTTP 404 错误是表示服务器找不到请求的资源的常见错误。在 IIS 中,这通常是因为找不到请求的 URL。
解决此问题的一些常见步骤如下:
检查 URL:请确保请求的 URL 正确无误,并尝试从浏览器中直接访问该 URL。
检查虚拟目录:如果请求的是网站的虚拟目录,请确保它已配置并正确映射到磁盘上的目录。
检查文件:请确保请求的文件存在,并检查是否已给予了正确的读取权限。
检查 URL 重写:如果使用了 URL 重写,请确保重写规则正确。
检查扩展名映射:请确保 IIS 已正确映射所请求文件的扩展名。
如果仍然无法解决问题,请检查 IIS 日志以获取更多详细信息。
常见的原因包括:
1、IIS未配置正确:如果IIS未正确配置,可能会导致400错误,例如未正确配置FastCGI或WSGI组件。
2、URL路径错误:如果Django的URL规则未正确配置,可能会导致404错误。
3、Django未安装或配置正确:如果Django未正确安装或配置,可能会导致400或404错误。
4、防火墙规则限制:如果防火墙规则限制了IIS或Django的访问,可能会导致400或404错误。
建议检查IIS和Django的配置,以确定具体的原因。
将项目文件的iis用户权限提升
URL重写问题:Django需要通过重写规则处理URL,请检查IIS的URL重写规则是否正确。
FastCGI配置问题:Django需要通过FastCGI协议运行,请检查FastCGI配置是否正确。
环境变量问题:Django需要访问一些环境变量来运行,请检查是否设置了必要的环境变量。
权限问题:IIS需要拥有读取Django项目文件的权限,请检查IIS是否具有该权限。
如果以上解决方案都无效,可以尝试重新配置IIS或Django以解决问题
要自定义处理url请求错误需要进行三步操作:
主要错误有:
404错误:page not found视图
500错误:server error视图
400错误:bad request视图
以404错误为例,500、404同理
我这里创建了一个应用,名为booktest
Step1:修改settings.py
DEBUG = True —-改为—-> DEBUG = False
ALLOWED_HOSTS = [] —-改为—-> ALLOWED_HOSTS = [‘*’, ]
注:未更改将显示调试视图,而不是错误视图
Step2:创建模板文件
在templates目录下的booktest下创建404.html:
Step3:修改views.py文件
添加函数 page_not_found()
Step4:修改项目下的urls.py(框架自带的)
注:不是应用下的urls.py,即这里不是:booktest/urls.py