前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于腾讯云Windows Server 2016部署Django项目

基于腾讯云Windows Server 2016部署Django项目

原创
作者头像
IT蜗壳-Tango
发布2023-12-26 17:47:14
2850
发布2023-12-26 17:47:14
举报
文章被收录于专栏:Pandas基础实践Pandas基础实践

背景

通常我们的web应用都是部署再Liunx环境里面的,但是由于一些历史原因,例如旧系统使用的是.Net,在不增加新服务器的情况下,我们只能选择使用windows server环境来部署了。

今天和我一起实际操作一下。

环境介绍

服务器使用的是腾讯云的基础款,并安装了windows server 2016,示例项目后端使用的是Django + GraphQL ,前端使用的是NodeJS + bootstrap。

由于我们这次演示的是如何部署,因此就不从头开始写Django项目了,如果有需要后期可以单独出文章。

基础环境搭建

我们需要用到的软件如下:

miniconda安装

双击下载好的软件

同意
同意
默认
默认

选择默认安装盘,由于我这里没有分区,因此直接安装在C盘了

选择安装位置
选择安装位置
全部选中
全部选中
等待安装
等待安装

设置环境变量

这里的路径大家根据自己的实际情况设置,路径之间要用英文分号隔开。

将我们新建的conda环境变量添加到path中

打开cmd验证一下

代码语言:bash
复制
conda --version

git

git 安装没有什么特别的,一路下一步即可

打卡cmd验证

代码语言:bash
复制
git --version

Nginx

安装非常简单,将下载好的文件夹之间解压即可,我们直接解压到C盘根目录

启动并验证

在没有配置环境变量的情况下,可以直接进入到nginx的解压目录下,运行start nginx

然后打开浏览器输入localhost

这个是在服务里面验证,如果是服务器外部,则需要输入公网IP进行验证。

创建Python虚拟环境

为了和之后的项目环境隔离,我们需要创建一个虚拟环境

代码语言:bash
复制
conda create --name mail_env python==3.11 -y

激活虚拟环境

代码语言:bash
复制
conda activate mail_env

克隆项目到服务器

我们在克隆之前,先在C盘的根目录下创建一个www文件夹,用来保存我们的项目

代码语言:bash
复制
mkdir www
cd www

这里用的是私人仓库,就不展示git clone 地址了

进入到我们的项目目录,安装环境依赖文件

设置pip的源为国内镜像,我们这里使用的是腾讯的镜像源

代码语言:bash
复制
pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple
pip config set global.trusted-host mirrors.cloud.tencent.com

开始安装环境依赖

代码语言:bash
复制
pip install -r requirements.txt

启动试试环境是否正常

代码语言:bash
复制
python manage.py runserver

我们在服务器内部输入http://127.0.0.1:8000/看看效果

我们框架使用GraphQL, 因此我额外安装edge浏览器。以防ie上的效果展示有问题。

可以看到正常显示了,但是我们这里只是使用了debug的方式运行的。

接下来我们开始今天的重要部分,通过nginx + waitress来运行项目。

配置Nginx的静态文件路径以及项目路径

我们进入到nginx的配置目录下,备份一下默认配置文件

修改nginx.conf文件

代码语言:bash
复制
worker_processes  2;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid  logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include           mime.types;
    default_type      application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log        logs/access.log  main;
    sendfile          on;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost 124.xxx.xxx.xxx;

        location / {
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8000;
        }

        location /static {
            alias C:\Users\Administrator\www\mail_system\backend\static;
        }

        location /media {
            alias C:\Users\Administrator\www\mail_system\backend\media;
        }
    }
}

server_name localhost 124.xxx.xxx.xxx;这里换成你的真实服务器IP地址

配置waitress启动文件

在我们项目的根目录下创建一个run.py, 这个文件名你随意。

代码语言:python
复制
from waitress import serve
from config.wsgi import application

serve(
    app=application,
    host='127.0.0.1',
    port=8000
)

from config.wsgi import application这里的config是我当时创建django项目时使用的名字,大家根据自己的修改。 我们在试试通过这个文件来启动项目

我们新建一个cmd窗口,并激活虚拟环境,然后进入到项目根目录

代码语言:bash
复制
conda activate mail_env
cd C:\Users\Administrator\www\mail_system\backend
python run.py

我们可以看到它运行了。

我们重新加载一下nginx的配置

代码语言:bash
复制
nginx -s reload

在浏览器中如输入http://localhost/graphql/

可以看到我们的项目可以正常启动了,

在服务器外部通过IP访问试试看

同样可以正常访问,至此我们的配置以及完成的大部分,还有一些收尾工作。

收尾设置

我么们希望nginx和run.py能随服务器启动一起启动,这样每次服务器重启,就不需要我们手动做这些了,另外我们希望run.py能在后台运行,而不是在cmd窗口中显示,因为这样很容易被误关。

在 Windows 上设置Nginx开机自启动可以通过以下步骤进行操作:

  • 打开 Nginx 的安装目录
  • 复制 nginx.exe 文件路径。
  • 打开开始菜单,搜索并打开 "运行",或者使用快捷键 Win + R。
  • 输入shell:startup并按下回车键,这将打开 Windows 的启动文件夹。
  • 在启动文件夹中点击鼠标右键,并选择 "新建" -> "快捷方式"。
  • 在弹出的窗口中,粘贴刚才复制的 nginx.exe 文件路径,并点击 "下一步"。
  • 输入快捷方式的名称,例如 "Nginx",然后点击 "完成"。 现在,每次开机启动时,Nginx 将自动运行。

我们在项目根目录下在创建一个run.bat文件,文件内容如下

代码语言:bash
复制
@echo off
setlocal

rem 设置 Conda 环境的路径
set CONDA_PATH=C:\ProgramData\miniconda3

rem 设置要激活的 Conda 虚拟环境
set ENV_NAME=mail_env

rem 设置要运行的 Python 脚本路径
set SCRIPT_PATH=C:\Users\Administrator\www\mail_system\backend\run.py

rem 检查 Conda 环境是否存在
if not exist "%CONDA_PATH%\Scripts\conda.exe" (
    echo Conda not found at %CONDA_PATH%
    exit /b 1
)

rem 激活 Conda 虚拟环境
call "%CONDA_PATH%\Scripts\activate.bat" "%ENV_NAME%"

rem 后台运行 Python 脚本
start /B python "%SCRIPT_PATH%"


endlocal

具体路径大家根据自己的路径进行设置即可

在创建一个vbs文件,主要是为了让bat静默运行,

代码语言:vbs
复制
Set ws = CreateObject("Wscript.Shell") 
ws.run "cmd /c C:\Users\Administrator\www\mail_system\backend\run.bat",0	  

bat的路径大家根据自己的设置一下。

我们关闭所有的cmd窗口验证一下

这时在访问我们的网站

可以看到502报错,然我们双击上面的vbs文件(正常情况下,我们重启服务器时它会自动执行,我们这里只是模拟一下。)

再次访问浏览器,我们可以看到内容正常显示了。

结束语

我们今天和大家一起在windows server环境中部署了django项目,并实现了windows重启后自动运行的功能,其实组后vbs和bat的方案我们有更好的解决方案基于supervisor-win,这一部分我们后续再介绍。

好了,今天的内容就是这些,如果对你有所帮助欢迎转发给你个朋友。

我是Tango, 一个热爱分享技术的的程序猿,我们下期见。

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 环境介绍
  • 基础环境搭建
    • miniconda安装
      • git
        • Nginx
        • 创建Python虚拟环境
        • 克隆项目到服务器
        • 配置Nginx的静态文件路径以及项目路径
        • 配置waitress启动文件
        • 收尾设置
        • 结束语
        相关产品与服务
        弹性公网 IP
        弹性公网 IP(Elastic IP,EIP)是可以独立购买和持有,且在某个地域下固定不变的公网 IP 地址,可以与 CVM、NAT 网关、弹性网卡和高可用虚拟 IP 等云资源绑定,提供访问公网和被公网访问能力;还可与云资源的生命周期解耦合,单独进行操作;同时提供多种计费模式,您可以根据业务特点灵活选择,以降低公网成本。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档