• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LOFLY
终其一生,编织快乐
博客园    首页    新随笔    联系   管理    订阅  订阅

02Django的配置与部署

Django的配置与部署(部署到IIS)

步骤:
  1. 编写自己的Django项目,进行基础设置后进行打包
  2. 开启一台服务器,并开启IIS和CGI(Windows)
  3. 下载python环境 和所需用到的数据库环境
  4. 去wwwroot目录下新建一个网站目录,并将网站项目移进来,并进行项目的数据库连接测试
  5. 进入到控制面板中的管理工具中的iis管理器中,创建一个网站,网站的根目录就是wwwroot内建的项目目录
  6. 下载并创建python虚拟环境,进入到项目根目录位置下载依赖包,并下载 wfastcgi
  7. 到项目根目录内添加web.config文件 并进行配置
  8. 到网站内添加虚拟目录配置静态文件,并到静态目录内添加 web.config
  9. 到程序眏射内确认hander ,到程序应用池内将标识改为本地系统
  10. 重启并访问网站


    上面10个步骤是基于服务器端的配置, 在个人电脑上配置相同。下面将详细介绍在Win 10系统上,将Django项目配置到IIS中。 项目目录如下所示:

image
myDjango项目中有一个应用first,first应用中有一个放置静态文件的文件夹static

     myDjango项目在虚拟环境下,使用的虚拟环境工具为pipenv。项目路径为:D:\code\pythonWeb\myDjango。

1. 在Win 10上添加IIS

   进入Windows设置。 使用组合键win + x进入系统命令菜单,点击应用和功能,再添加windows功能。

image
image
勾选GCI
image

2. 修改settings.py文件,关闭调试模式

   修改myDjango\myDjango\settings.py文件。
# 调试模式,开发阶段为True,项目部署上线就要改为False,否则会泄露项目相关信息。 DEBUG = False
# 域名访问权限。设置可访问的域名,当DEBUG = True,ALLOWED_HOSTS = []空列表时,项目只允许localhost在浏览器访问。
# 当DEBUG = False,ALLOWED_HOSTS =必填,否则程序无法启动。如果要所有域名都可以访问可设为 ALLOWED_HOSTS = [‘*’]

3.下载wfastcgi工具

   修改myDjango\myDjango\settings.py文件。
该cgi的官网: https://pypi.org/project/wfastcgi/ 在虚拟环境下安装:

image

将D:\code\pythonWeb.venv\Lib\site-packages\wfastcgi.py 文件复制一份到项目文件目录下。我们在每个项目中都添加一份wfastcgi.py文件,主要是为了后续操作方便一点,而且不会有后续的访问权限等问题。

4. 在项目目录和静态文件目录下面配置文件

  在项目根目录下添加Web.config文件,给文件的内容如下: (不用的项目,需要对该配置文件标签属性进行相应的修改)
<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <handlers>
            <remove name="StaticFile" />  
                <!-- 添加一个名为 djangofastcgi 的东西,其连接的位置是python的环境位置 和 wfastcgi 的位置 -->
                <add name="djangoFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\code\pythonWeb\.venv\Scripts\python.exe|D:\code\pythonWeb\myDjango\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
 
            
            <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
 
            </handlers>
        </system.webServer>
        <appSettings>
            <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
            <!-- 添加项目设置,该标签内存放的是项目的根目录 -->
            <add key="PYTHONPATH" value="D:\code\pythonWeb\myDjango" />
 
            <!-- 该标签内要存放项目的settings文件的位置 注意是项目目录内 . 的文件-->
            <add key="DJANGO_SETTINGS_MODULE" value="myDjango.settings" />
 
        </appSettings>
    </configuration>

scriptProcessor: 这里指定python解释器的位置和wfastcgi.py文件的位置,两个位置之间使用符号“|”隔开。
appSettings: 下面的add标签分别指定WSGI_HANDLER(WSGI的处理函数,这个值是固定的不用改动), PYTHONPATH(下面地址),DJANGO_SETTINGS_MODULE(项目的配置文件 项目名.settings)

  在静态文件目录下面添加的配置文件web.config,该文件内容如下(这里不用改动):
<?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>

5. 在IIS中添加网站

  在开始菜单下,找到windows管理工具,打开IIS管理器。

image

  在IIS管理器中添加网站:

image

6. 在程序映射中确认Hander, 在 程序应用池 内将标识改为本地系统

image

image

7. 为项目中的静态文件目录设置虚拟目录

image

  设置完成之后,重启服务,在浏览器中输入网址: 127.0.0.1:8088 查看效果。

image

注意:当点击处理程序眏射时,出现这样的情况

image

是因为 IIS7之后的版本都采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改。我们把它解锁了就OK。打开 CMD,在里面依次输入下面两个命令:

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

最后注意重启一下网站,到此就完成发布了,可以通过指定公网ip去访问你的网页了。

image

其他问题

  正常情况下,部署的时候管理后台样式是不能正常显示的,我们需要收集这些样式到项目里去,才能正常显示。

步骤:

1、 在 settings.py 里添加 STATIC_ROOT配置 指定收集路径如:

指定样式收集目录,路径一般为项目里的static文件夹

在我们的项目中:

imoport os

STATIC_ROOT = os.path.join(BASE_DIR, 'first/static')
2、 在服务器上配置时,还需要 进行如下设置: 然后CMD下运行如下面命令,进行样式采集: python manage.py collectstatic 2、 在服务器上配置时,还需要 进行如下设置: 然后CMD下运行如下面命令,进行样式采集: python manage.py collectstatic

3、 采集完成之后,刷新页面。后台样式成功显示。至此,部署结束。

参考:

[1] windows通过iis部署Django项目全篇详解: https://blog.csdn.net/adjnd/article/details/127260502

[2] django中的静态文件: https://www.cnblogs.com/suncolor/p/16563224.html

posted @ 2023-03-29 17:42  编织快乐  阅读(255)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3