安装Mysql
具体如何安装请参考:MySQL安装配置
安装Python
官网下载:https://www.python.org/getit/
默认安装即可,本教程安装版本为:python-3.7.3-amd64.exe
安装Django
在线安装
1
| pip install Django==2.1.15
|
离线安装
- 官网下载:https://www.djangoproject.com/download/
下载时注意与Python版本的兼容性,本教程下载安装版本为:Django 2.1.15
- 安装
解压下载的Django-2.1.15.tar到指定目录,本教程放到了Python的根目录下:C:\Program Files\Python37\Django-2.1.15
,接着以管理员方式打开cmd,进入Django解压目录下,执行安装命令:
Django将被安装到Python的Lib
下site-packages
里。
- 检查
在cmd下进入到Django-*下,进入Python工作环境,导入Django,查看是否安装成功:1 2 3 4 5 6 7
| C:\Program Files\Python37\Django-2.1.15>python Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> django.get_version() '2.1.15' >>>
|
如上,出现版本号,表示安装成功!
配置Django项目(基于admin管理工具)
配置MySQL数据库
- 创建数据库
其它的数据库操作命令请参照 MySQL安装配置 里的使用章节。
- 修改项目下settings.py中DATABASES配置
1 2 3 4 5 6 7
| 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'xxgl', 'USER': 'root', 'PASSWORD': 'root', 'HOST': '127.0.0.1', }
|
配置Oracle数据库
- 修改项目下settings.py中DATABASES配置
1 2 3 4 5 6 7 8
| 'default': { 'ENGINE': 'django.db.backends.oracle', 'NAME': 'orcl', 'USER': 'yonghu', 'PASSWORD': 'mima', 'HOST': "xx.xx.xx.xx", 'PORT': '1521', }
|
- 安装驱动模块
cx_Oracle
安装完成后出现如下所示,表示安装成功:
Collecting cx_Oracle
Downloading cx_Oracle-8.0.1-cp37-cp37m-win_amd64.whl (201 kB)
|████████████████████████████████| 201 kB 33 kB/s
Installing collected packages: cx-Oracle
Successfully installed cx-Oracle-8.0.1
- 最后将Oracle客户端安装路径下的
oci.dll
oraocci11.dll
oraociei11.dll
这三个文件拷贝到python安装路径的 lib/site-packages 下面,就OK了。
安装Django依赖包
在线安装
执行下面命令安装依赖包:
1
| pip install -r requirements.txt
|
- 如果没有
requirements.txt
文件,则执行下面命令生成:
1
| pip freeze > requirements.txt
|
- 上面命令生成的是开发环境所有的依赖包,不相关的依赖包也会包含进来,如果只想生成与本项目有关的依赖包,则需先安装
pip install pipreqs
,再到项目根目录下执行命令:
1
| pipreqs ./ --encoding=utf-8 --force
|
- 如果执行安装命令有报错或安装失败,可尝试下面命令:
1
| pip --default-timeout=100 install -r requirements.txt
|
1
| pip --default-timeout=100 install requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
|
- 如果启动项目时提示缺少
pytz
,可执行下面命令安装:
- 如果使用了数据库驱动:SQL Server Native Client 11.0,则要安装(仅限Django2):
1
| pip install django-pyodbc-azure pyodbc
|
- 如果使用了数据库驱动:SQL Server Native Client 10.0,首先安装驱动程序 SQL Server Native Client 10.0 ,可直接安装navicat11会自带,或在navicat的安装目录中找到 sqlncli_x64.msi 安装,最后再安装(适用于Django3以上,且该安装包必须最后一步安装才能生效):
1
| pip install django-mssql-backend
|
离线安装
- 有网络下,先下载离线包
- 在项目根目录下新建文件夹
package
,为的是将下载好的离线包放到这个文件夹里面
- 查看项目已经安装的依赖包:
- 生成requirements.txt
1
| pip freeze >requirements.txt
|
- 下载离线包
下载单个离线包:pip download -d your_offline_packages <package_name>
批量下载离线包:pip download -d your_offline_packages -r requirements.txt
如本项目批量下载命令: 1
| pip download -d C:\YPN\ypn_xxgl\package -r requirements.txt
|
- 无网络下,再安装离线包
- 拷贝项目到目标机器上,确保有package和requirements.txt
- 安装
安装单个离线包:pip install --no-index --find-links=/your_offline_packages/ package_name
批量安装离线包:pip install --no-index --find-links=/your_offline_packages/ -r requirements.txt
如本项目批量安装命令: 1
| pip install --no-index --find-links=C:\YPN\ypn_xxgl\package -r requirements.txt
|
创建表
重新编译,记录改动到迁移文件
1
| python manage.py makemigrations
|
此时可能会报一些错误,尝试将项目app的 migrations
下面,除了 __init__.py
文件,其它全部删了再执行一遍命令试试。
通过迁移文件同步表
1
| python manage.py migrate
|
创建超级用户(基于admin管理平台)
1
| python manage.py createsuperuser
|
更改admin密码:
from user.models import UserProfile
user=UserProfile.objects.filter(username=’admin’)[0]
user.set_password(‘admin123’)
user.save()
启动项目(在开发环境下)
1
| python manage.py runserver 0.0.0.0:8000
|
如果提示错误:不存在表 django_admin_log 和 django_session ,可依次执行下面命令生成:
1 2
| migrate admin migrate sessions
|
部署Django项目到Windows(Apache+mod_wsgi)
准备Apache
- 下载Apache
官网下载:http://httpd.apache.org/
本教程下载版本为:httpd-2.4.46-o111h-x64-vc15.zip
- 安装Apache
下载后是一个压缩文件,直接解压缩,获取文件夹里的Apache24文件夹,这个文件夹就是apache服务器文件了,不需要安装,直接将Apache24文件夹移动到你想放的位置。如:C:\Apache24
- 配置Apache
进入C:\Apache24\conf
目录,找到httpd.conf文件,这个就是apache服务器的配置文件。用Notepad打开,找到如下代码行进行修改:1 2 3 4 5 6 7
| ... Define SRVROOT "C:\Apache24" #Apache24文件的路径,其余不用改。 ... Listen 127.0.0.1:80 #此处为你要发布的网站ip地址 ... ServerName 127.0.0.1:80 ...
|
- 创建Apache服务
打开命令行(管理员),cd进入C:\Apache24\bin
文件夹,输入如下代码创建服务:1
| httpd.exe -k install -n "Apache24"
|
其中 Apache24 是所创建服务器名称,可更改。如果出现successfully installed说明服务创建成功。同时后面可能会跟一些其他信息,说明你的配置是否正确。
如果需要卸载服务,则执行 httpd.exe -k uninstall -n "Apache24"
命令即可
- 测试Apache
在浏览器地址栏输入在配置文件中配置的地址,如:http://127.0.0.1:80
准备mod_wsgi
- 下载mod_wsgi
进入下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi ,下载相应版本的mod_wsgi,其中ap24代表Apache的版本2.4,cp367代表Python的版本为3.7。这个插件的作用其实是一个python与apache的接口。本教程下载的版本为:mod_wsgi-4.7.1+ap24vc15-cp37-cp37m-win_amd64.whl
- 安装mod_wsgi
将下载的mod_wsgi-4.7.1+ap24vc15-cp37-cp37m-win_amd64.whl
,后缀名改为.zip进行解压,解压后找mod_wsgi.so文件,如果存在该文件,则根据教程http://www.cnblogs.com/fnng/p/4119712.html 找到安装mod_wsgi步骤那里操作即可。
如果不存在该文件,直接将该whl文件复制到python路径下的script文件夹下,cd进入该路径,命令行输入:1
| pip3 install "mod_wsgi-4.7.1+ap24vc15-cp37-cp37m-win_amd64.whl"
|
安装成功后再输入:1
| mod_wsgi-express module-config
|
出现以下三行提示,这三行一定要记下来,后面配置最重要的就是它了:1 2 3
| LoadFile "c:/program files/python37/python37.dll" LoadModule wsgi_module "c:/program files/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd" WSGIPythonHome "c:/program files/python37"
|
至此,mod_wsgi安装成功。
部署Django项目到Apache
再次打开httpd.conf文件,在最末尾添加如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #安装wsgi模块后,出来的三行字符,直接复制过来 LoadFile "c:/program files/python37/python37.dll" LoadModule wsgi_module "c:/program files/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd" WSGIPythonHome "c:/program files/python37" #设置工程中的wsgi路径 WSGIScriptAlias / C:\xxgl\xxgl\wsgi.py #设置工程路径 WSGIPythonPath C:\xxgl #设置wsgi路径 <Directory C:\xxgl\xxgl> <Files wsgi.py> Require all granted </Files> </Directory> #设置静态文件路径 Alias /static C:\xxgl\static <Directory C:\xxgl\static> AllowOverride None Options None Require all granted </Directory> WSGIApplicationGroup %{GLOBAL}
|
其中xxgl为我的工程文件夹。编辑完成后保存文件,回到服务器管理器,找到apache2.4服务,重启服务。
如果项目配置了Apscheduler定时服务,服务启动后无法正常访问,一直转圈中,则必需增加 WSGIApplicationGroup %{GLOBAL}
如果之前配置都没问题,浏览器输入http://127.0.0.1:80 ,就会见到Django页面了。
升级Django项目
- 更新需要升级的文件
利用文件对比工具(如Beyond Compare),以二进制比较,查找和更新文件。切记不要更新文件夹 migrations
下的任何文件。
- 重新编译,记录改动到迁移文件
以管理员方式打开cmd,进入项目根目录,执行下面命令:1
| python manage.py makemigrations
|
- 通过迁移文件同步表
以管理员方式打开cmd,进入项目根目录,执行下面命令:1
| python manage.py migrate
|
- 重启Apache服务