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