初识Django(#二):Apache+mod

tech2022-07-07  198

如果你只在开发环境部署Django,你可以跳过这个部分,但是如果你要在生产环境部署Django并且将它真正面向网络开放,你最好先看看这篇文章。你可以只看注意事项,最后部署时再仔细研究,但我希望通过这篇文章你能知道Apache下的Django需要注意哪些内容。同时,Django不止能通过Apache部署,Nginx+nWSGI也是个好方法,但是我只会讲到Apache。

Apache和mod_wsgi介绍

1 它们是什么?

Apache是一个Web服务器软件,而mod_wsgi是一个连接Python和Apache的模块。

2 为什么要使用它们

我们知道,Django自带一个小型的开发服务器runserver,那么为什么不直接使用它呢?

“Now’s a good time to note: don’t use this server in anything resembling a production environment. It’s intended only for use while developing. (We’re in the business of making Web frameworks, not Web servers.)” ——来自Django的官方网站

“DO NOT USE THIS SERVER IN A PRODUCTION SETTING. It has not gone through security audits or performance tests.” ——也是来自Django的官方网站

综上所述,runserver并没有经过性能和安全测试,而且开发者也不是这方面的专家。如果你要真正部署你的Web服务,用这样的未经测试的服务器显然是不够的。而且在关掉setting文件里的DEBUG时,runserver将会停止静态文件服务(如果命令行运行时添加—insecure则不会),而打开DEBUG会将错误信息直接显示给客户端,显然这是极其不安全的。

Apache与mod_wsgi的安装

0 注意事项

-如果pip命令不能安装mod_wsgi,就要通过直接下载文件安装(如果你使用的网络跟我的一样糟糕以后你会习惯的),记得检查whl文件的版本(我记得版本不对会有报错来着,但是以防万一还是看看吧)

-安装whl文件的时候不要贪方便改名,虽然是常识但是我怕有人真干这种事

-Apache的位数要和Python的位数一致

1 Apache下载与安装

https://www.apachehaus.com/cgi-bin/download.plx 官网下载

箭头所指的是位数版本和镜像链接 点开就会开始下载

下载完毕之后,直接解压到你要存放的目录下就行了,然后打开conf文件夹下的httpd.conf,待会要修改这个文件。

2 mod_wsgi 安装

有条件的可以直接pip,没有条件的可以打电话投诉运营商然后下载whl文件手动安装。

http://www.lfd.uci.edu/~gohlke/pythonlibs/ 这个网站可以下载很多Python模块,建议收藏

下载完毕后复制文件到Python目录下的Scripts文件夹内,并在此处运行cmd,输入 pip install “你的whl文件名” 在提示安装成功之后输入 mod_wsgi-express module-config 然后将返回的三行内容复制粘贴到刚才打开的httpd.conf文件下方。

3 修改httpd.conf文件

在conf文件最下方加上以下内容:

django工程下的wsgi.py路径

WSGIScriptAlias / 工程路径\wsgi.py

django工程路径

WSGIPythonPath 工程路径

django工程下的wsgi路径

<Directory 工程路径>

<Files wsgi.py>

Require all granted

</Files>

</Directory>

静态文件路径

Alias /static 工程路径\静态文件夹,默认是static,在setting.py里设置

<Directory 工程路径\静态文件夹>

AllowOverride None

Options None

Require all granted

</Directory>

找到Define SRVROOT,把后面的部分改成Apache的安装目录。

#4 收集工程静态文件

本步骤需要在项目建立完成后执行。

在django项目的settings.py文件中添加 STATIC_ROOT = os.path.join(BASE_DIR, 'static')

在django项目下运行cmd,输入命令python manage.py collectstatic,将静态文件收集到静态文件夹里。

安装并运行Apache服务

cd到apache安装目录下的bin文件夹,或者直接在bin下打开cmd。输入命令httpd.exe -k install -n "你服务器的名字,也是windows服务里显示的名字" 安装服务输入命令: httpd.exe -k start -n "安装的服务的名字" 启动服务、httpd.exe -k stop -n "安装的服务的名字" 停止服务、httpd -t 当你修改配置文件httpd.conf时检查配置

#注意事项

-Apache运行的Django工程的工作目录是Apache的目录,也就是如果你要直接引用文件,最好把Django项目本身的目录静态存储起来。

-记得关掉settings.py里的DEBUG。

-Apache安装的服务作为windows服务运行,只要你把它设置开启,并且你的服务器是开着的,你的Web项目就在运行中。

原文请移步我的个人网站http://www.theodor.top/article/15 转过来的时候有些东西没有注意到请原谅:),笔者现在还用不太惯markdown

最新回复(0)