1 环境安装
1.1 Django安装
sudo apt-get install python-pip
sudo apt-get install –upgrade pip
sudo pip install Django
检查Django是否安装成功以及版本号
python
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help","copyright", "credits" or "license" for moreinformation.
>>> import django
>>> django.VERSION
(1, 7, 6, 'final', 0)
>>>
>>> django.get_version()
'1.7.6'
1.2 Apache和wsgi安装
sudo apt-get install apache2
# Python 2
sudo apt-get install libapache2-mod-wsgi
# Python 3
sudo apt-get installlibapache2-mod-wsgi-py3
安装完后确认apache的版本号
apachectl –v
2 环境部署
2.1 Apache部分
Ubuntu中Apache的配置文件在/etc/apache2/下,需要新建一个网站配置文件,路径和文件名如下:
sudo touch /etc/apache2/sites-available/sitename.conf
打开sitename.conf,输入如下配置内容,相关的注释写在里面,实际运行时需要删掉注释。本例中,django的工程文件放到了/home//home/bagainu/pyproject/untitled/下,/home/bagainu/pyproject/untitled/blog是django的一个application,/home/bagainu/pyproject/untitled/untitled中保存的是该django工程的相关配置,包括setting.py和wsgi.py等。
#端口号,如果更改端口号后面也要更新/etc/apache2/ports.conf中的监听端口号
<VirtualHost *:8000>
ServerName localhost
ServerAlias bagainu.com
ServerAdmin bagainu@localhost
# 以上部分随便填写,当前没什么关系,具体作用参考注(3)
#配置media和static文件的访问路径,其中media是用户上传的资源,static是网站的静态文件包括js,css和图片等,注意路径不要写错
Alias /media/ /home/bagainu/pyproject/untitled/blog/media/
Alias /static/ /home/bagainu/pyproject/untitled/blog/static/
<Directory /home/bagainu/pyproject/untitled/blog/media/>
Require all granted
</Directory>
<Directory /home/bagainu/pyproject/untitled/blog/static/>
Require all granted
</Directory>
#配置Django中的wsgi.py文件路径,使apache和django连接,注意路径不要写错
WSGIScriptAlias / /home/bagainu/pyproject/untitled/untitled/wsgi.py
<Directory /home/bagainu/pyproject/untitled/untitled/>
<Files wsgi.py>
Requireall granted
</Files>
</Directory>
#日志的位置,如果不配置在/var/log/apache2/error.log也能找到
ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>
注:
1)如果你的apache版本号是 2.2.x,用下面的代替 Requireall granted
Order deny,allow
Allow from all
如果实在不知道用哪种,可以打开/etc/apache2/apache2.conf,与里面的写法保持一致就行。如果写错,访问时会出现403 Forbidden。
2)如果上面的配置文件中更改了端口号,需要在etc/apache2/ports.conf中增加监听端口,在Listen80后面增加Listen 8000。
3)Apache配置文件中的相关内容可以查阅 点击打开链接
2.2 Django部分
在本例中,Django中需要配置的文件有两个,位置在
/home/bagainu/pyproject/untitled/untitled/wsgi.py
/home/bagainu/pyproject/untitled/untitled/settings.py
wsgi.py的作用是把Apache和Django连接起来,打开wsgi.py,输入以下内容
import os
from os.path import join, dirname, abspath
PROJECT_DIR = dirname(dirname(abspath(__file__))) #3
import sys #4
sys.path.insert(0, PROJECT_DIR) #5
os.environ["DJANGO_SETTINGS_MODULE"]= "untitled.settings" #7
from django.core.wsgi importget_wsgi_application
application = get_wsgi_application()
第3,4,5行为新加的内容,作用是让脚本找到django项目的位置,也可以在sitename.conf中做,用WSGIPythonPath,想了解的自行搜索, 第7行如果一台服务器有多个django project时一定要修改成上面那样,否则访问的时候会发生网站互相串的情况,即访问A网站到了B网站,一会儿正常,一会儿又不正常(当然也可以使用 mod_wsgi daemon 模式)
对/media和/static目录的配置在setting.py文件中,打开setting.py,加入以下内容:
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
STATIC_ROOT =os.path.join(BASE_DIR,'static')
# upload folder
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
然后输入以下指令配置Django静态文件
cd /home/bagainu/pyproject/untitled
python manage.py collectstatic
最后需要配置Django工程的文件权限,如果图个简单,可以直接
sudo chmod 777 –R /home/baginu/pyproject/untitled
这样配置非常不安全(还用说么···),具体的权限配置可以参考其他的资料,这里就图快了。
3 启动服务
sudo service apache2 restart 或 sudoapachectl restart
sudo a2ensite sitename 或 sudoa2ensite sitename.conf
此时访问127.0.0.1:8000或者127.0.0.1:8000/admin应该会有相应。如果用的是虚拟机,可以直接访问虚拟机的ip:8000