简介
截至目前,项目实现了,一个完整功能domain app,主要是实现检索字段解析,为了能在生产上使用,所以在整个项目还没有竣工的情况下进行提前部署。主要原因是想将生产和开发环境分开,开发的同时生产上也能使用,在开发环境开发完一个完整功能后,然后直接复制提换整个文件夹,再重启apache2.4服务,直接在生产上运行,节省时间。
环境搭建
ibs30项目部署环境版本如下
win7 64+Apache2.4+python3.6+django2.0+wsgi
下面分别介绍每个环境的部署和配置
wsgi的安装
wsgi是Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器(apache)和Web应用程序(django)或框架之间的一种简单而通用的接口
wsgi下载地址
但是上面现在地址没有对应apache24的版本,所以这里提前下载的whl已上传到网盘欢迎下载
云盘地址
对应版本解析
下载之后,将其复制到python安装目录下的script文件夹中,一定要是这个文件夹否则会安装失败,然后CMD到命令窗口再cd到script目录下执行以下安装命令
pip install "whl_name"
安装成功之后在执行以下命令:获取其配置信息
# 目的获取配置信息,在后面配置中会使用到。
mod_wsgi-express module-config
Apache2.4下载和配置
- Apache下载
apache的下载路径目前提供三个一个官网环境和ApacheHaus,ApacheLounge第三方集成下载环境对应地址如下:
apache官网
ApacheHaus
ApacheLounge
本文采用ApacheHaus并上传到云盘
云盘链接 - Apache配置
主要是修改httpd.conf配置文件
首先修改
Define SRVROOT "C:/Program Files/Apache24" # 修改Apache实际绝对安装目录(不修改也无所谓)
Listen 80 # 监听端口
ServerName 127.0.0.1:80 # 可访问的主机,域名。需要在Windows的hosts文件中做IP映射(没有域名可用ip)
然后在 httpd.conf 配置文件末尾添加以下内容:
##------------------------django项目部署配置--------------------------##
# 声明项目根目录变量
Define DjangoRoot "D:\ibs30"
# 添加"mod_wsgi.so"模块,这三行是在命令"mod_wsgi-express module-config" 显示出来的
LoadFile "c:/programdata/anaconda3/python36.dll"
LoadModule wsgi_module "c:/programdata/anaconda3/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/programdata/anaconda3"
# 指定项目的"wsgi.py"配置文件路径
WSGIScriptAlias / "${DjangoRoot}/ibs30/wsgi.py"
# 指定django项目根目录,并配置访问权限。WSGIPythonPath取代DocumentRoot配置,或者保留DocumentRoot一致
WSGIPythonPath "${DjangoRoot}"
<Directory "${DjangoRoot}">
Require all granted
</Directory>
# 项目静态文件配置
Alias /static "${DjangoRoot}/static"
<Directory "${DjangoRoot}/static">
AllowOverride None
Options None
Require all granted
</Directory>
# 项目media文件配置,用户上传图片等媒体文件
Alias /media "${DjangoRoot}/media"
<Directory "${DjangoRoot}/media">
AllowOverride None
Options None
Require all granted
</Directory>
然后进入Django项目的settings.py文件下进行配置。
# 上线时必须将DEBUG设为False
DEBUG = False
# 可指定主机,若元素为'*',表示所有同一局域网内的网络均可被访问
ALLOWED_HOSTS = ['*']
- 重启Apache服务
修改完配置后,只需重启Apache服务即可,此时会连着wsgi服务一并重启,因为httpd.conf配置中加载了mod_wsgi模块。cmd重启Apache命令:
httpd -k restart -n apache # apache为Windows托管服务名
或:
net stop apache 然后 net start apache # Windows服务管理命令,没有restart
- 测试效果
访问测试:在浏览器地址栏输入"127.0.0.1:80"或"localhost:8080"回车就可以进入Django项目网站了!其中www.wcwnina.com为httpd.conf中配置的主机域名ServerName。
问题发现admin后台管理没有样式
- 在项目根目录想新建static目录
- setting配置如下
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static'), #原先本来在根目录下创建common_static作为公共static目录,后来发现在执行python manage.py collectstatic时比较麻烦,所以直接都统一成static
]
STATIC_ROOT=os.path.join(BASE_DIR,'/static/')
#STATIC_ROOT=os.path.join(BASE_DIR,'/static/') 错误配置
#会报<staticfiles.E002> the staticfiles_dirs setting should not contain the STATIC_ROOT setting..错误
- 执行以下指令收集所有app下的static文件到项目根目录下的static文件夹中
python manage.py collectstatic #在数据yes,不是y记住
到这里基本配置完成,如有错误请指正。