写点什么

Python 进阶 (三十七)Windows7 使用 nginx+apache 部署 django 项目

  • 2022-11-15
    江苏
  • 本文字数:1618 字

    阅读完需:约 5 分钟

Python进阶(三十七)Windows7使用nginx+apache部署django项目

一、前言

Django的部署可以有很多方式,采用 nginx+uwsgi 的方式是其中比较常见的一种方式。


目前国内各大门户网站已经部署了 nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了 nginx,如六房间、酷 6 等。新近发现 nginx 技术在国内日趋火热,越来越多的网站开始部署 nginx。


相比 apache、iis,nginx 以轻量级、高性能、稳定、配置简单、资源占用少等优势广受欢迎。


在这种方式中,我们的通常做法是,将 nginx 作为服务器最前端,它将接收 WEB 的所有请求,统一管理请求。nginx 把所有静态请求自己来处理(这是 nginx 的强项)。然后,nginx 将所有非静态请求通过 uwsgi 传递给 Django,由 Django 来进行处理,从而完成一次 WEB 请求。


可见,uwsgi 的作用就类似一个桥接器。起到桥梁的作用。


Linux 的强项是用来做服务器,但是自己的项目是在 windows7 系统下完成的,索性就在 windows 系统下完成项目部署。


但是,uwsgi 并没有适合 Windows 的安装版本。因为os.uname()这个 function 在 Windows 版本中是没有的,所以 Windows 中 uwsgi 目前应该是无法安装的。


在使用pip install uwsgi命令安装 uwsgi 时,出现了以下错误提示。


pip install uwsgi 安装不成功 提示 'module' object has no attribute 'uname'



遂决定使用下载安装包的方式进行安装。下载地址选择下载的 uwsgi 版本为 2.0.15。


下载完成后,进行解压。在 Dos 窗口切换至解压目录,然后执行 python setup.py install 命令。但是仍然出现了上面的错误信息,错误提示信息如下。



Python(python3.4.3)的文档中明确说明 os.uname()只适用于 Unix,并不适用于 Windows,想安装 uwsgi 还是使用 Linux 吧。这下心塞了~

二、nginx 安装

首先,到nginx官网上下载相应的安装包,下载完成后进行解压。自己下载的版本为 1.12.0。


然后,进入 window 的 cmd 窗口,输入如下图所示的命令,进入到 nginx 目录,使用“start nginx.exe ”进行 nginx 的启动。若启动成功的话,会在任务管理器中看到“nginx.exe”进程,如下图所示:



在浏览器地址栏输入:127.0.0.1(或 localhost):8088,会看到如下图所示的 nginx 欢迎界面。



  注意,此时,我在浏览器中输入的是 localhost:8066,因为我修改了其 config 目录下 nginx.conf 配置文件内容,修改后的内容如下:



相信大家看到配置文件之后,就会明白其具体配置含义了。这里不再进行详细介绍。


其他相应的命令:


nginx.exe -s stop                   //停止nginxnginx.exe -s reload                //重新加载nginxnginx.exe -s quit                  //退出nginx
复制代码


注:以上的命令中,.exe 可以去掉。


至此,nginx 安装完成。


继续折腾,发现 nginx+fastcgi 是可行的,遂决定实践。

三、初识 fastcgi

CGI 全称是“公共网关接口”(Common Gateway Interface)。它可以用任意语言编写,只要这种语言具有标准输入、输出和环境变量。如 php,perl,tcl 等,但它为人诟病的会在每次运行事前都要花费时间去 fork-and-execute 一次,所以便诞生了 FastCGI 组件,该组件由微软开发。FastCGI 像是一个常驻(long-live)型的 CGI,它可以一直执行着,只要运行后不会每次都要花费时间去 fork-and-execute,还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。下载地址 。很明显,使用 fastcgi 的话,就得使用 iis 的服务部署方式。似乎越来越有意思了。对于 IIS 的服务发布方式自己是不感兴趣的,遂决定使用 Apache 方式部署。


首先下载 apache,下载地址。下载完成后,进行解压,然后打开相应解压目录下的 config 配置目录中的 httpd.conf 配置文件,这是 apache 服务器的配置文件。主要是将其中的文件目录修改为解压后存放的目录。


修改完成后,在 Dos 窗口切换至 bin 目录下,然后执行 start httpd.exe 命令,这时会打开 apache 的命令行窗口。



然后在浏览器访问 localhost 就可以看到 It works!,证明 apache 正常工作。



Apche 服务器配置好之后,就需要部署项目了。但是后面的过程过于复杂。


经过以上折腾之后,感觉还是在 Linux 上部署 Django 比较靠谱,遇到的坑也会比较少。

发布于: 刚刚阅读数: 4
用户头像

No Silver Bullet 2021-07-09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
Python进阶(三十七)Windows7使用nginx+apache部署django项目_Python_No Silver Bullet_InfoQ写作社区