You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Windows Server实例上部署Django应用?

在AWS Windows实例部署Django应用的步骤

1. 基础环境搭建

  • 从Python官网下载适配Windows Server的3.8+版本安装包,安装时务必勾选Add Python to PATH选项。
  • 打开管理员权限的PowerShell/CMD,验证安装:python --version
  • 升级pip:python -m pip install --upgrade pip
  • 安装核心依赖:pip install django waitress(Waitress是Windows原生WSGI服务器,比Gunicorn更适配Windows环境)

2. 项目准备与配置

  • 通过RDP文件传输、Git克隆等方式,将本地Django项目上传至Windows实例的指定目录(比如C:\DjangoApps\myproject)。
  • 进入项目根目录,修改settings.py:
    • 关闭调试模式:DEBUG = False
    • 添加允许访问的主机:ALLOWED_HOSTS = ['实例公网IP', '你的域名']
    • 配置静态文件收集路径:
      STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
      STATIC_URL = '/static/'
      
  • 执行静态文件收集:python manage.py collectstatic,确认staticfiles目录生成并包含所有静态资源。

3. 用Waitress启动应用(测试阶段)

  • 在项目根目录创建启动脚本run_app.py:
    from waitress import serve
    import os
    import sys
    
    sys.path.append(os.path.dirname(os.path.abspath(__file__)))
    from myproject.wsgi import application
    
    if __name__ == '__main__':
        # 绑定0.0.0.0允许外部访问,端口可自定义
        serve(application, host='0.0.0.0', port=8000)
    
  • 运行脚本:python run_app.py,本地浏览器访问http://实例公网IP:8000验证应用可用性。

4. 配置Windows服务(后台运行)

  • 安装服务依赖:pip install pywin32
  • 创建服务脚本django_service.py:
    import win32serviceutil
    import win32service
    import win32event
    import servicemanager
    import sys
    import os
    from waitress import serve
    from myproject.wsgi import application
    
    class DjangoAppService(win32serviceutil.ServiceFramework):
        _svc_name_ = "DjangoAppService"
        _svc_display_name_ = "Django应用服务"
        _svc_description_ = "Windows Server上运行的Django应用后台服务"
    
        def __init__(self, args):
            win32serviceutil.ServiceFramework.__init__(self, args)
            self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
            self.is_running = True
    
        def SvcStop(self):
            self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
            win32event.SetEvent(self.hWaitStop)
            self.is_running = False
    
        def SvcDoRun(self):
            servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
                                  servicemanager.PYS_SERVICE_STARTED,
                                  (self._svc_name_, ''))
            self.main()
    
        def main(self):
            os.chdir('C:\\DjangoApps\\myproject')
            serve(application, host='0.0.0.0', port=8000)
    
    if __name__ == '__main__':
        if len(sys.argv) == 1:
            servicemanager.Initialize()
            servicemanager.PrepareToHostSingle(DjangoAppService)
            servicemanager.StartServiceCtrlDispatcher()
        else:
            win32serviceutil.HandleCommandLine(DjangoAppService)
    
  • 注册并启动服务:
    1. 管理员权限PowerShell执行:python django_service.py install
    2. 启动服务:python django_service.py start
    3. 可通过Windows服务管理器(services.msc)查看、启停服务。

5. IIS反向代理配置(生产环境可选)

若需用IIS处理静态资源、SSL证书,可按以下步骤操作:

  • 打开服务器管理器,添加Web服务器(IIS)角色,勾选CGI、URL重写模块。
  • 安装wfastcgi:pip install wfastcgi
  • 在IIS中创建网站,物理路径指向项目根目录,绑定公网IP与80/443端口。
  • 在项目根目录创建web.config:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
        <handlers>
          <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" 
               scriptProcessor="C:\Python39\python.exe|C:\Python39\Lib\site-packages\wfastcgi.py" 
               resourceType="Unspecified" requireAccess="Script" />
        </handlers>
        <rewrite>
          <rules>
            <rule name="Static Files" stopProcessing="true">
              <match url="^static/(.*)$" />
              <action type="Rewrite" url="staticfiles/{R:1}" />
            </rule>
            <rule name="Django App" stopProcessing="true">
              <match url="^(.*)$" />
              <conditions logicalGrouping="MatchAll">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
              </conditions>
              <action type="Rewrite" url="myproject/wsgi.py/{R:1}" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
      <appSettings>
        <add key="WSGI_HANDLER" value="myproject.wsgi.application" />
        <add key="PYTHONPATH" value="C:\DjangoApps\myproject" />
        <add key="DJANGO_SETTINGS_MODULE" value="myproject.settings" />
      </appSettings>
    </configuration>
    
  • 重启IIS,访问http://实例公网IP验证应用与静态资源可用性。

6. 数据库适配(Windows环境常用)

若使用SQL Server,需做以下配置:

  • 安装ODBC Driver 17 for SQL Server。
  • 安装依赖:pip install pyodbc django-mssql-backend
  • 修改settings.py数据库配置:
    DATABASES = {
        'default': {
            'ENGINE': 'sql_server.pyodbc',
            'NAME': 'mydb',
            'USER': 'dbuser',
            'PASSWORD': 'dbpass',
            'HOST': 'localhost',
            'OPTIONS': {
                'driver': 'ODBC Driver 17 for SQL Server',
            },
        }
    }
    

关键注意事项

  • 确保AWS安全组开放对应端口(80/443/8000)。
  • 生产环境必须保持DEBUG=False,避免泄露敏感信息。
  • 定期备份项目文件与数据库。
  • HTTPS配置可通过IIS导入AWS Certificate Manager颁发的证书实现。

内容的提问来源于stack exchange,提问作者Arun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:35:22