怎样安装django

2018年6月5日 | 分类: 【技术】

【介绍】

官网:https://www.djangoproject.com/
下载:https://www.djangoproject.com/download/

【安装】

Django可以使用pip、git、源码包三种方式安装。

参考:https://jingyan.baidu.com/article/870c6fc32a1b90b03fe4be19.html

pip方式

pip install Django

输出:

...
Successfully installed Django-2.0.6 pytz-2018.4

安装路径:

Requirement already satisfied: pytz in /usr/local/lib/python3.6/site-packages (from Django) (2018.4)

【配置】

参考:http://www.cnblogs.com/oubo/archive/2012/04/06/2434961.html

参考:http://amon.org/mod_python
参考:http://amon.org/mod_wsgi

【实战】

部署django-cms。

下载:https://github.com/divio/django-cms/

文档:https://github.com/divio/django-cms/blob/develop/docs/how_to/install.rst

安装 django-cms:

pip install django-cms

安装 MySQL支持:

pip install mysqlclient

Django安家,让Apache找到它

将Django工程放在/var/www/下:
sudo vi /etc/apache2/sites-available/yoursite.conf 修改配置文件;
sudo a2ensite yoursite.conf 配置文件生效;
sudo service apache2 restart 重启Apache。

Apache默认的网站目录是/var/www/。通常来说,如果你只是自己搭着玩玩也没有必要更改这个目录,直接就将你的Django工程文件夹放在这就行了。

如果你想要放在别处的话,可以通过修改/etc/apache2/apache2.conf中的,将其改为,不过配套的你需要修改其权限。具体的修改方法这里。

以上只是完成了为Django安家这一步,但是我们还需要让Apache找到Django(方便查水表)。

新建一个网站配置文件:

sudo vi /etc/apache2/sites-available/yoursite.conf。

这里边包含了你所有的网站配置信息,包括Apache如何查找静态文件(js/css/images),网站上传的文件存在哪里,最重要的,包含了Apache识别Django的wsgi文件。
#
ServerName www.yourdomain.com
#ServerAlias otherdomain.com
#ServerAdmin youremail@gmail.com

# 存放用户上传图片等文件的位置,注意去掉#号
#Alias /media/ /var/www/ProjectName/media/

# 静态文件(js/css/images)的存放位置
Alias /static/ /var/www/ProjectName/static/

# 允许通过网络获取static的内容

Require all granted

# 最重要的!通过wsgi.py让Apache识别这是一个Django工程,别漏掉前边的 /
WSGIScriptAlias / /var/www/ProjectName/ProjectName/wsgi.py
# wsgi.py文件的父级目录,第一个ProjectName为Django工程目录,第二个ProjectName为Django自建的与工程同名的目录


Require all granted

通过修改上面的文件,你就可以让Apache找到你的Django工程,上边可以修改的内容包括:

80:修改80为其他数字,可以更改你的端口号,国内的电信貌似把80端口给封了(如果你的域名没有备案的话)。注意,还要修改/etc/apache2/port.conf文件中的Listen *port*。
ServerName:后边改成你自己的域名,如果没有的话就用IP代替。注意,如果改成了域名,还需要修改Django工程下的seeting.py文件,将其ALLOWED_HOSTS=[]改为ALLOWED_HOSTS=[‘www.yourdomain.com’],多个域名可以通过逗号隔开。
ServerAlias:你的其他域名或IP。

最后要让这个配置文件生效,你需要运行

sudo a2ensite yoursite.conf

有时候,你可能需要让它失效(因为你将yoursite.conf改名为其他名字?),可以运行

sudo a2dissite yoursite.conf

做完以上步骤,Apache会提醒你要执行sudo service apache2 relaod,这条命令主要是你手动命令Apache根据你刚才配置的yoursite.conf去寻找Django工程,当然我一般都是restart,如果你的Apache不为其他的网站提供服务,那么你也restart吧,因为重启大法好!

每次你修改Django工程文件之后,都要restart一下,它才会生效。

4.修改Django的wsgi.py文件

修改上面说的/var/www/ProjectName/ProjectName/wsgi.py为如下格式

import os
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))

import sys
sys.path.insert(0,PROJECT_DIR)
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “examsys.settings”)

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

这个配置文件的作用也是让Apache找到Djanog,毕竟不能一厢情愿吗,Apache同意和Django“交往”了,但是万一人家Django不乐意呢?
最后,还记得我说的嘛?

每次你修改Django工程文件之后,都要restart一下,它才会生效。

5.调试错误

如果你的网站没有加载静态文件(js/css/images),请检查你的静态文件是不是在ProjectName/static下,而不是在ProjectName/AppName/static下(改这里边的文件是不用重启Apache的)。
不知道啥问题,就是不管用,请查看Apache的错误文档。
cat /var/log/apache2/error.log
No module named xxxx。首先检查一下你所依赖的库是否安装全了,没有的话就pip install。
No module named django或者其他含django的错误。这说明你的环境搭错了。往上翻error.log,找到AH00489开头的错误,看看你到底用的是什么环境。一般都是你第二步Apache的Python解释器安装错误。

以上皆参考涂伟忠老师的自强学堂,我自己搭建Django+Apache2时的心得,如果还不明白,可以去自强学堂看看。

【参考】

参考:https://code.ziqiangxuetang.com/django/django-deploy.html
参考:http://www.runoob.com/django/django-install.html
参考:http://106.15.37.116/2018/05/31/linux-centos-%e5%ae%89%e8%a3%85django/
参考:http://106.15.37.116/2018/06/02/django-%e5%8d%9a%e5%ae%a2%e5%bc%80%e5%8f%91%ef%bc%9a%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae/
参考:http://www.cnblogs.com/fnng/p/3737964.html
参考:https://qiita.com/yusukeasari/items/46c08e36dd4fea65a893
参考:https://qiita.com/ngc224/items/85d82fdfe4e664e53b7e
参考:https://www.jianshu.com/p/b40a4a12fff1
参考:http://www.cnblogs.com/oubo/archive/2012/04/06/2434961.html

参考:https://www.jianshu.com/p/6199b5c26725
参考:https://imshusheng.com/python/216.html