medioambiente:
Python3.10
Django4.0.3
IIS10
WindowsServer2019
1. Instalar IIS
Como se muestra en la figura a continuación, verifique e instale CGI y elija otras opciones.Este tutorial requiere cierta base de IIS.
Figura 1
2. Asigne el código original del proyecto, Django no necesita compilar
Copie el proyecto al servidor C:\inetpub\wwwroot\, mi nombre de proyecto es djangodome, entonces el directorio del proyecto es C:\inetpub\wwwroot\djangodome, es decir mang.py está en C:\inetpub\wwwroot\ djangodome abajo, como se muestra a continuación
Nota: Después de copiar al servidor, debe poder iniciar django normalmente a través del comando manage.py runserver, es decir, todas las dependencias requeridas por el proyecto que necesita instalar django
Puede generar el archivo requirements.txt en la máquina de desarrollo y ejecutarlo en el servidor. El comando es el siguiente
#安装支持
pip install pipreqs
#生成
pipreqs . --encoding=utf8 --force
#安装依赖
pip install -r requirements.txt
Figura II
Luego instale pip intsall wfastcgi en el servidor (la instalación de cmd servirá)
Copie el archivo wfastcgi.py instalado en el directorio raíz de django que necesita implementar, como se muestra en la Figura 2.
La ubicación de wfastcgi.py está en los paquetes lib\site de su python, encuéntrela usted mismo.
3. IIS agregar sitio web
La ruta física se selecciona al directorio raíz de django, el puerto se configura solo, uso 80
Después de que la adición sea exitosa, el archivo de configuración web.config se creará en el directorio raíz, como se muestra a continuación.
Nota: Los archivos de configuración no son necesariamente los mismos, los he borrado y modificado de acuerdo a la situación actual.
PYTHONPATH: El directorio raíz del proyecto
DJANGO_SETTINGS_MODULE: nombre del proyecto (representa el archivo setting.py del proyecto)
WSGI_LOG: directorio de salida de registro, recuerde crear wsgi.log en el directorio raíz
<add name="cgihandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\Administrator\AppData\Local\Programs\Python\Python310\python.exe|C:\inetpub\wwwroot\djangodome\wfastcgi.py" resourceType="Unspecified" />
El scriptProcessor en la etiqueta <add anterior: requiere 2 direcciones, una es la dirección de python.exe, la otra es la dirección de wfastcgi , separada por "|", y wfastcgi.py acaba de copiarse en el directorio raíz.
<configuration>
<appSettings>
<!-- Required settings -->
<add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
<add key="PYTHONPATH" value="C:\inetpub\wwwroot\djangodome" />
<add key="DJANGO_SETTINGS_MODULE" value="djangoProject.settings" />
<!-- Optional settings -->
<add key="WSGI_LOG" value="C:\inetpub\wwwroot\djangodome\wsgi.log" />
<add key="WSGI_RESTART_FILE_REGEX" value=".*((\.py)|(\.config))$" />
</appSettings>
<system.webServer>
<httpErrors errorMode="Detailed" />
<directoryBrowse enabled="true" />
<handlers>
<add name="cgihandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\Administrator\AppData\Local\Programs\Python\Python310\python.exe|C:\inetpub\wwwroot\djangodome\wfastcgi.py" resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
4. Inicie FastCgi
Abra este sitio en IIS
Luego seleccione cgihandler, este es el controlador recién configurado en web.config, asegúrese de hacer clic en Aceptar para iniciar FastCgi.
luego haga clic en Aceptar
5. Reinicie este sitio en IIS, visítelo y pruébelo, puede ver la interfaz, pero no hay estilo
Si no hay estática en el directorio raíz, cree estática en el directorio raíz. El proyecto Django predeterminado tiene este directorio y luego ejecute el siguiente comando en el proyecto
#收集静态文件到static
python manage.py collectstatic
Y agregue los siguientes archivos de configuración en estático. Si hay carpetas dinámicas, agréguelas también. Por ejemplo, también tengo una carpeta de medios para cargar archivos, vea la Figura 2
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<!-- this configuration overrides the FastCGI handler to let IIS serve the static files -->
<handlers>
<clear/>
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
</handlers>
</system.webServer>
</configuration>
Finalmente, resuelva el error, si tiene las siguientes situaciones, inténtelo usted mismo.
1. Sin estilo usando complementos de terceros: debe configurar el directorio raíz
# 静态资源文件配置
STATIC_URL = 'static/' # 静态资源的路由
#STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) # 静态资源的路径配置
STATIC_ROOT = os.path.join(BASE_DIR, 'static') # 指定样式收集目录
luego ejecutar
python manage.py collectstatic
2. Todo lo anterior ha cambiado: todavía no hay estilo, recuerde configurar (el valor predeterminado es Verdadero) DEBUG = Verdadero de configuración.py
3. Al acceder a 403, recuerde establecer ALLOWED_HOSTS en setting.py en [] de forma predeterminada
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'jike.xiaoxingbobo.top']
4. Usando la implementación del entorno virtual, el uso de la implementación del entorno virtual solo cambia el entorno de ejecución, pero el directorio del proyecto todavía está allí
En la actualidad, todavía hay algunos problemas en el entorno virtual, inténtelo usted mismo.
#安装
pip install virtualenv
pip install virtualenvwrapper-win
#创建虚拟环境
mkvirtualenv djangodome#djangodome虚拟环境名
#cmd查看虚拟环境
workon
#进入虚拟环境
workon djangodome
El directorio del entorno virtual es: C:\Users\Administrator\Envs\djangodome
Después de entrar en el entorno virtual
1. Instalar wfastcgi
2. Instala las dependencias del proyecto django, los pasos son los mismos que en el punto 2 anterior
Puede ejecutar el siguiente comando en el entorno virtual para ingresar al directorio del proyecto django para realizar la instalación.Las operaciones en el entorno virtual están todas instaladas en el entorno virtual.
Como se muestra en la figura a continuación, ya instalé el mío (djangoProject en la captura de pantalla sigue siendo el djangodome anterior, solo cambié un nombre, modifíquelo de acuerdo con su situación real)
3. Cambiar el archivo de configuración del proyecto web.config (el proyecto sigue siendo C:\inetpub\wwwroot\), es decir, cambiar el entorno python al entorno python en el entorno virtual
<system.webServer>
<httpErrors errorMode="Detailed" />
<directoryBrowse enabled="true" />
<handlers>
<add name="cgihandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\Administrator\Envs\djangodome\Scripts\python.exe|C:\inetpub\wwwroot\diangodome\wfastcgi.py" resourceType="Unspecified" />
</handlers>
</system.webServer>