Windows Server - Django项目部署


目录

 

 

1. 系统环境

  1.1 安装 IIS

  (1)打开『服务器管理器』

  (2)选择『添加角色功能』

  (3)『服务器选择』-> 『从服务器池中选择服务器』-> 『下一步』

  (4)『服务器角色』-> 勾选『Web 服务器(IIS)』-> 『下一步』

  (5)『安装』

  1.2 安装 CGI

  (1)打开『服务器管理器』

  (2)选择『添加角色功能』

  (3)『服务器角色』-> 『Web服务器(IIS)』-> 『应用程序开发』-> 『CGI』-> 『下一步』

  (4)『安装』

2. 应用程序环境

  2.1 安装 Python3

  (1)安装 Python3.exe

  (2)安装 wfastcgi

    pip install wfastcgi

    启动 wfastcgi:wfastcgi-enable

    

     保存路径,待用:c:\workprograms\python\python38\python.exe|c:\workprograms\python\python38\lib\site-packages\wfastcgi.py

  (3) 安装项目所需要导入的包

    pip install requirements.txt

  (4)修改 Django 源码:Python安装路径\Lib\site-packages\django\db\backends\mysql\base.py

  (5)添加静态文件目录

    settings.py

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

  2.2 安装 Nginx

    下载 Nginx。

    将 Nginx 目录直接放在 C: 盘下。

    运行 Nginx.exe。

    具体配置,修改配置文件 ./conf/nginx.conf

     Windows Server 中 Nginx 启动、停止以及重启命令。

nginx在windows中进行启动时的命令是start nginx

nginx在windows中进行停止时的命令是nginx -s stop(不保存相关信息)

nginx在windows中进行停止时的命令是nginx -s quit(保存相关信息)

nginx在windows中进行重启时的命令是nginx -s reload(保存相关信息)

  2.3 安装 Git

  2.4 安装 MySQL

    1、MySQL官网下载地址:https://dev.mysql.com/downloads/mysql/  (Windows Server 中,可能无法使用 msi 进行安装)

    

     2、下载好后,解压缩即可。文件名默认为 mysql-8.0.17-winx64。

     3、创建 my.ini

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
 
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\SoftwareInstall\mysql-8.0.16-winx64
# 设置mysql数据库的数据的存放目录
#datadir=D:\SoftwareInstall\mysql-8.0.16-winx64\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

    4、cmd 进入 mysql-8.0.17-winx64/bin 目录。

    依次输入以下命令。

mysqld install
mysqld --initialize
net start mysql

    5、此时,mysql-8.0.17-winx64 目录下会有一个 data 文件夹。将 my.ini 中的 datadir=路径 前的注释去掉。

    6、进入 data 文件夹,找到一个以 .err 后缀结尾的文件,以记事本打开,可以找到进入MySQL的初始密码。

[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: pds4:kB//ZNy

    其中,pds4:kB//ZNy 即为初始密码。

    在 cmd 中输入 mysql -uroot -p,然后输入密码,即可进入MySQL。

    7、第一次进入MySQL之后,需要修改密码。

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码'
FLUSH PRIVILEGES

 

3. 部署项目

  3.1 IIS

    『服务器管理器』-> 『IIS』-> 选择服务器,右键选择『Internet Information Services(IIS)管理器』

    

  3.2 添加网站

    

    网站名称:名称

    物理路径:项目所在路径

  3.3  配置文件

    在项目跟目录添加 web.config 配置文件。

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <handlers>
            <add name="DjangoWebHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="(保存路径)" resourceType="Unspecified" />
                <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="(保存路径)" resourceType="Unspecified" requireAccess="Script" />
            </handlers>
        </system.webServer>
        <appSettings>
            <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
            <add key="PYTHONPATH" value="(Path to Django Project)" />
            <add key="DJANGO_SETTINGS_MODULE" value="(DjangoProkect).settings" />
        </appSettings>
    </configuration>

   3.4 给静态资源添加虚拟目录

      

    别名:static

    物理路径:项目路径\static

    在 static 里添加配置文件: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>

  3.5 Django管理样式丢失

    在 settings.py 里添加:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

    CMD下运行以下命令:

python manage.py collectstatic

  3.6 nginx代理

    启动 nginx 服务。

    编写 nginx.conf 配置文件。

    nginx 可能存在的问题:本地可以访问,外网不能访问。

    解决:控制面板 -> 系统与安全 -> Windows防火墙 -> 允许程序通过Windows防火墙,添加 nginx.exe。

  3.7 完成部署

4. 可能出现的问题

  4.1 HTTP 错误 500.19 Internal Server Error

    出现这样的情况是因为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

  4.2 处理程序映射

    选择『网站』-> 『处理程序映射』

                    -> 『添加模块映射』

     请求路径:*

    模块:FastCgiModule

    可执行文件:(保存路径)

    名称:DjangoWebHandler

              -> 『请求限制』:取消勾选。

  4.3 FastCGI 设置

    

     『FastCGI设置』->

     

    鼠标双击选择 ->

      

     添加『环境变量』:

      1. Name: WSGI_HANDLER

       Value:django.core.wsgi.get_wsgi_application()

      2. Name:PYTHONPATH

          Value:(项目目录)

      3. Name:DJANGO_SETTINGS_MODULE

         Value:(项目名称.settings)

  4.4 自定义服务器端口

    除了 80 端口,自定义其他端口,可能无法访问。(使用 Nginx 反向代理 80 端口,也需要新建规则)

    『控制面板』-> 『系统安全』-> 『Windows Defender 防火墙』-> 『高级设置』-> 『入站规则』 -> 『新建规则』

    规则类型:端口

    协议和端口:

      协议:TCP

      端口:特定本地端口:8080

    操作:允许连接(只允许安全连接)

    配置文件:勾选(域、专用、计算机)

    名称:自定义名称(端口8080)

      描述:(可选)

  4.5 crytography is required for sha256_password or caching_sha2_password Django错误

    pip install cryptography

  4.6 Windows 下 Nginx 作为服务开机启动

    (1)创建批处理文件

      nginx.bat

cd C:\nginx-1.16.1(Nginx所在目录)
start nginx
nginx -s reload

    (2)创建任务计划

      cmd:shell:startup

      把批处理文件 nginx.bat 放入此文件夹即可。

  4.7 站点文件夹权限设置

    项目跟目录 -> 『属性』->『安全』->『编辑』->『添加』->添加『IIS_IUSERS』(可以通过『高级』->『立即查找』找到)->设置权限『完全控制』

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM