Django自带的wsgi运行开发服务器,承压较差,在生产环境中难以得到很好的使用,因此将Django部署至Apache中就变得尤为必要。本文讲述如何在Windows环境中将Django部署至Apache中,并通过HTTPS访问。
要将Django部署至Apache,我们需要一个套件mod_wsgi
,在https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
根据服务器的Apache和Python版本,选择合适的版本。之后将这个whl
后缀文件移动到服务器,注意不要改名字。打开控制台,进入该文件所在目录,输入命令下载安装pip install xxx.whl
(xxx用文件名代替),之后输入mod_wsgi-express module-config
会得到三排信息,之后在Apache配置中需要用到,记录下来。
打开Apache的配置文件
httpd.conf
,在最后加上三句话。(上一步得到的信息填充进去)
LoadFile "c:/users/administrator/appdata/local/programs/python/python38/python38.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python38"
1.实现Apache单解析Django
Apache没有开启VirtualHost,默认端口运行Django。
在httpd.conf
的最后加上 (加上File就能运行,其他不是必要)
#指定项目的wsgi.py配置文件路径,这个py文件是在你的Django项目中
WSGIScriptAlias / c:/users/administrator/desktop/hotelsin/hotelsin/wsgi.py
#指定项目目录,即你的Django项目路径
WSGIPythonPath c:/users/administrator/desktop/hotelsin
<Directory c:/users/administrator/desktop/hotelsin/hotelsin>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
#项目静态文件地址, Django项目中静态文件的路径
Alias /static c:/users/administrator/desktop/hotelsin/visit/static
<Directory c:/users/administrator/desktop/hotelsin/visit/static>
AllowOverride None
Options None
Require all granted
</Directory>
#项目media地址, 上传图片等文件夹的路径
Alias /media c:/users/administrator/desktop/hotelsin/visit/static
<Directory c:/users/administrator/desktop/hotelsin/visit/static>
AllowOverride None
Options None
Require all granted
</Directory>
在Django的setting.py
中将ALLOWED_HOSTS
设为['*']
重启Apache,在默认80端口就可运行Django
2.使用VirtualHost,另外的端口上运行Django
在 httpd.conf
中,加端口监听。
Define MYPORT8000 8000
Listen 0.0.0.0:${MYPORT8000}
Listen [::0]:${MYPORT8000}
之后启用Include vhosts
打开httpd-vhosts.conf
在最后加上
<VirtualHost *:${MYPORT8000}>
ServerName hotel
DocumentRoot "c:/users/administrator/desktop/hotelsin"
WSGIScriptAlias / c:/users/administrator/desktop/hotelsin/hotelsin/wsgi.py
<Directory "c:/users/administrator/desktop/hotelsin">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
重启Apache,在8000端口就可运行Django
注意:
在WAMP环境中,最好不要直接改配置文件,加端口监听,右击WAMP,在工具中找到增加端口,输入8000,左击WAMP,增加VirtualHost。WAMP会自动添加至配置文件中,但在httpd-vhost.conf
中仍需修改成上述内容。
配置SSL使用HTTPS
首先在腾讯云申请SSL后下载
image.png
这里我们将apache中的三个文件移动到服务器。
在httpd.conf
中取消这三句话的注释
Include conf/extra/httpd-ssl.conf
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
之后修改httpd-ssl.conf
修改VirtualHost中的内容
<VirtualHost _default_:443>
DocumentRoot "c:/wamp64/www"
ServerName nhstone.cn:443
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
SSLEngine on
# 替换为自己的三个证书文件
SSLCertificateFile "c:/users/administrator/desktop/SSL/2_nhstone.cn.crt"
SSLCertificateKeyFile "c:/users/administrator/desktop/SSL/3_nhstone.cn.key"
SSLCertificateChainFile "c:/users/administrator/desktop/SSL/1_root_bundle.crt"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "${SRVROOT}/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
# 一下部分增加 运行Django
WSGIScriptAlias / c:/users/administrator/desktop/hotelsin/hotelsin/wsgi.py
<Directory "c:/users/administrator/desktop/hotelsin">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "${SRVROOT}/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
重启Django!大功告成
网友评论