https://docs.djangoproject.com/en/1.11/
*django-admin startproject collect_site 创建项目collect_site的目录
*python manage.py runserver 启动网页
*python manage.py startapp books 创建项目单个应用app目录
*在models.py中创建数据模型,例
class MyUser(models.Model): username=models.CharField(max_length=50,unique=True) password=models.CharField(max_length=50,null=False)
*配置数据库连接相关信息
django默认使用sqlite作为数据库,配置数据库为mysql:
在与项目同名的app目录下的__init__.py中添加:
import pymysql
pymysql.install_as_MySQLdb()
在settings.py中设置
DATABASES={
‘default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'mydb',
'USER':'root'
'HOST':'localhost',
'PORT':3306,
'PASSWORD':'mypassword'
},}
*在数据库中创建模型中定义的表,有两种方式
1.使用django的数据迁移功能
python manage.py makemigrations books 生成app books的模型创建语句
python manage.py migrate 根据生成的模型创建语句,创建表
python manage.py sqlmigrate books 0002 查看应用于模型的sql语句 (
如果要变更表结构,需要确保变更前有makemigrations, 后面的makemigrations都是在前一个版本的基础上生成对应修改的sql语句
2.手动在数据库中创建与models.py中模型相对应的表
数据库中的表名格式为 app名+’_'+模型名 ,全为小写。
数据库中表字段名与模型中变量名一致,全为小写
至此 ,配置完成,可以开始编写views.py和urls.py的编写:函数处理与映射url的设置.
为项目添加git
在git的远程服务器上新建一个项目仓库
git init -bare collect.git ,创建完后将新建文件collect.git的所有权改为git,不然本地没有权限推送
在本地项目目录中初始化git仓库
git init
将不需要跟踪的文件添加到.gitignore文件中,例 static/将忽略所有目录下的static文件夹;*.pyc将忽略所有扩展名为pyc的文件
git add . 将项目文件中的所有文件都加入追踪(不包含.gitignore中的标记目录)
git commit -m "some project init" 提交项目存档
git remote add origin git@120.345.34.9:/home/git/collect.git 将本地git项目关联到远程服务器上的git仓库
git push --force --set-upstream origin master 首次将本地git关联的项目推送到远程git仓库
*将静态文件自动收集到一个目录下
可以使用python manage.py collectstatic, (需提前在settings.py中设置收集存放的目录 STATIC_ROOT = os.path.join(BASE_DIR, "static/")
也可手动将静态文件复制到指定目录
*settings.py中需更改为
DEBUG = False ALLOWED_HOSTS = ['*'](也可将配置的域名加进去)*创建虚拟环境 virtualenv collect_env
在windows上开启虚拟环境 collect_env/scripts/activate
退出虚拟环境 deactivate
虚拟环境中不能使用外面安装的包,需要单独安装
pip install django==1.11.7等等(也可以使用 pip install -r requirements.txt 一键安装requirements.txt中记录的安装包,pip freeze > requirements.txt 用于创建requirements.txt)
*将测试数据库中的表结构复制到生产数据库,
*settings.py中的数据库连接配置改成生产数据库配置
*从git远程仓库拉取代码 git clone git@120.324.13.49:/home/git/collect.git
1. 使用 python manage.py runserver 0.0.0.0:8000 运行网页,0.0.0.0用于让django自带的server监听所有IP的访问,不仅是本地的访问
在生产环境中settings.py的DEBUG需设置成False,由此django的server可能就不支持静态文件,需要添加 --insecure
并在settings.py中指定静态文件的目录STATICFILES_DIRS=[os.path.join(BASE_DIR,"static"),os.path.join(BASE_DIR,"books","static"),]与路由地址STATIC_URL='/static/'
python manage.py runserver --insecure 0.0.0.0:8000
因为django的默认在生产环境中不支持静态文件。
2.在windows server 2008上部署django,使用iis作为server,来启动django网页。
配置iis
pip install wfastcgi 安装sfastcgi模块
将python的site-package目录下的wfastcgi.py复制到项目的根目录下
打开windows上的开始-管理工具-internet信息服务(iis)管理器 ,在左边的 网站 目录上右击添加网站。
物理路径为项目根目录,网站名称自定义,端口自定义,其他保持默认设置。
创建FastCGI,点击左侧 网站-刚添加的网站 ,双击右侧的“处理程序映射”(注,不要在iis控制台直接点击,不然创建的FastCGI会对所有网站生效),点击弹窗右侧的“添加模块映射”。
请求路径 : *
模块: FastCgiModule
可执行文件:python.exe路径|项目目录下的wfastcgi.py路径
名称:自定义
请求限制: 映射下的单选框 -仅当请求映射至一下内容时才调用处理程序: 保持未勾选状态
依次点击确定退出。
进入iis控制台(左边的网站上级目录),双击FastCGI设置,双击弹窗右边的,之前创建的那条fastCgi,在弹窗里编辑“环境变量” django执行时的环境变量有3个:WSGI_HANDLER :django.core.wsgi.get_wsgi_application()
PYTHONPATH:项目根目录
DJANGO_SETTINGS_MODULE:项目根目录名.settings
添加完成后重启iis或去应用程序池回收一下就好,网站已能正常访问。
iis由于权限 问题无法访问 python Failed to open the data source: Permission denied
将项目目录的文件属性,安全,用户中添加 iis_iusers用户,权限为可读,可写。若还是出现无访问权限,将python.exe的目录文件夹权限中也做相应的iis_iusers的权限添加。
iis上的静态文件目录
在网站目录下选中静态文件的目录,双击右边的“处理程序映射”,将弹窗中的中部的条目中之前创建的FastCgi删除,即可.(右侧的“恢复为父项”可以恢复对此目录的修改)
如果静态文件夹的路径在项目路径外,则可以在网站目录下添加虚拟目录,然后在静态文件夹目录下添加web.config文件即可:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<!-- this configuration overrides the FastCGI handler to let IIS serve the static files -->
<handlers>
<clear/>
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
</handlers>
</system.webServer>
</configuration>
iis的服务器缓存设置,可选中对应的网站目录,然后选择右边的 功能视图中 “HTTP响应头标” ,--->“设置常用标头" 勾选使web内容过期,选择对应的过期间隔时间 即可
3.在linux centos 上部署 django ,使用 gunicorn+nginx 来启动网页
*安装gunicorn , pip install gunicorn
*安装nginx yum install nginx
*配置启动nginx
启动nginx ./nginx ,
*如果是阿里云上的服务器,除了要打开防火墙,对于需要打开的端口,还在在安全组中添加。
*配置nginx ,简单将 /usr/local/nginx/conf/nginx.conf中的http{server {location /static {},location / {}}编辑即可
location / static {alias 项目静态文件夹目录;} #设置静态文件地址
location / { proxy_set_header Host $host; #用于让gunicorn 和django知道他们运行在哪个域名下
proxy_pass http://unix:/tmp/superlists.socket;} #设置 将请求转移到哪个地址 ,如果运行gunicorn时的监听地址为127.0.0.1:8000,则此处proxy_pass的值应设置为 http://127.0.0.1:8000
*为了让nginx能访问静态文件,要将conf文件中的 第一行 user anyone 的anyone设置成具有访问静态文件夹权限的用户,设置为root就可以了。
修改了nginx的配置文件要重新加载一下配置 , nginx -s reload ,启动nginx , nginx(含全路径)
*配置启动gunicorn (gunicorn安装在虚拟环境中)
进入项目根目录 ../virtualenv/bin/gunicorn --bind / -b 127.0.0.1:8000 superlists.wsgi:application ,其中superlists.wsgi表示项目根目录下的与根目录同名的app-superlists下面的wsgi.py文件.
关闭gunicorn ,先查询出进程号,再使用 kill -QUIT 进程号 ,杀掉进程。
也可在项目根目录下 创建文件 gunicorn.conf,并把它设置为可执行的文件,./gunicorn.conf 来启动
[...]
exec ../virtualenv/bin/gunicorn \
--bind unix:/tmp/superlists.socket \
--access-logfile ../access.log \
--error-logfile ../error.log ]
superlists.wsgi:application
即可通过外网访问了。
转载于:https://www.cnblogs.com/Ting-light/p/9513047.html
相关资源:千峰django基本操作笔记