django部署

尽管runserver已经很接近于服务器的形式,但是并不能支持外网访问或很多人同时访问。因此需要将网站部署到服务器上,而django在本地使用runserver运行和部署到服务器在配置文件上是不同的,下面详细介绍下django部署前的准备工作。

关闭debug

首先为了安全起见,部署到服务器前需要关闭debug模式,即修改settings.py文件中的
DEBUG = False
TEMPLATE_DEBUG = False
当然,我们也可以重新建一个设置文件,如settings_production.py用于生产环境。在这个py文件中设置DEBUG为False。
DEBUG关闭后需要在修改ALLOWED_HOSTS = [ ‘127.0.0.1’ ]

当DEBUG= True时,默认使用的是django自带的404错误页面,同时页面中会显示具体的错误信息,可能会暴露隐私信息,因此需要关闭这一功能。关闭后如果出现404错误,django会在你的模版根目录中寻找名叫404.html的页面。因此,关闭了DEBUG功能后我们需要在根目录中添加有意义的404页面。

django在Debug功能关闭后就会自动停止staticfiles功能,因此这时候会发现runserver后网页中的静态文件都没有了。
到这一步的时候如果不需要部署到服务器上只想在电脑上测试可以使用命令python manage.py runserver –insecure网页中就会正确显示css,js等静态文件。

Apache + mod_wsgi

假定我们现在已经写好了网页,DEBUG也已经按上面的操作关闭了。下一步就是下载Apache和mod_wsgi。这里我用的是Apache2.4 和python3.4对应的mod_wsgi。

安装Apache

下载Apache2.4后,解压后放到安装位置如:d:/Apache/Apache24
(1)修改路径:如

ServerRoot "c:/Apache24"改为ServerRoot “d:apache/Apache24”;//Apache程序的位置。

DocumentRoot "c:/Apache24/htdocs"改为DocumentRoot ""d:/apache/Apache24/htdocs"";//网站的根目录

ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/"改为ScriptAlias /cgi-bin/ "d:/apache/Apache24/cgi-bin/"和这个类似的还有一个地方要改,总之可以CTRL+F搜出c:/Apache,把它改为自己的安装路径就对了

(2)第213行ServerName前面的“#”号去掉;
(3)测试:在cmd中进入d:/Apache/Apache24/bin文件夹,输入httpd回车,如果conf文件修改正确这里应该没有任何反应,说明Apache已经运行成功,不要关闭命令窗口。然后再浏览器中输入http://127.0.0.1:80/
出现 It works即表示测试成功。
注意端口有没有被占用的问题~

下载mod_wsgi

下载对应版本的mod_wsgi文件并解压,我的是python3.4 64位,所以下载的是这里找到的mod_wsgi-4.4.13+ap24vc10-cp34-none-win_amd64.whl文件,将whl改为zip文件后解压,将其中的mod_wsgi.so文件复制到d:Apache/Apache24/modules文件夹下

重新打开D:\Apache24\conf\httpd.conf,在文档尾部添加了以下内容,主要是配置路径,告诉Apache关于Django的static的路径等:

#add mod_wsgi.so module
LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias / E:/Django_Workspace/labsite/labsite/wsgi.py

WSGIPythonPath E:/Django_Workspace/labsite

<Directory E:/Django_Workspace/labsite/labsite>
<Files wsgi.py>
    Require all granted
</Files>
</Directory>

Alias /static E:/Django_Workspace/labsite/bigdata/static
<Directory E:/Django_Workspace/labsite/bigdata/static>
    AllowOverride None
    Options None
    Require all granted
</Directory>

重新在cmd中启动httpd,在浏览器中输入http://127.0.0.1:80/bigdata/index后就可以看到之前写的django的页面首页。

但是这时候还没结束,因为虽然页面显示对了,但是admin后台管理页面的css,js加载不出来,另外之前上传的头像也不能正确显示,还需要进一步设置。

静态文件收集

admin页面的静态文件存在了D:python3/…/django/contrib/admin里面,通过人工复制的操作当然也可以收集但是容易出错。

首先我们修改setting.py文件:

这是原来的配置:

STATIC_URL = '/static/'

MEDIA_URL = '/bigdata/upload/'

在文中添加STATIC_ROOT如下:

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, "bigdata/static")

MEDIA_URL = '/bigdata/upload/'

在Django项目的根目录运行 cmd命令,收集到静态文件:

我的是在Django_Workspace/labsite下运行:
python manage.py collectstatic

将settings文件还原,即删掉STATIC_ROOT

重新运行Apache,看到admin页面已经可以正常显示了。

你可能感兴趣的:(django,配置文件)