ubuntu配置Django

环境:

Ubuntu 12.04

Python 2.7.3

Django 1.6


安装所需软件:

Apache2

Python

Pip

VirtualEnv

mod_WSGI(Apache模块)

MySQL


1.更新系统

apt-get update

apt-get upgrade


2.修改主机名

echo "pythonlife" > /etc/hostname

hostname -F /etc/hostname

echo -e "\n127.0.0.1 pythonlife.local pythonlife\n" >> /etc/hosts


3.基础软件安装

apt-get -y install apache2-mpm-worker apache2-dev

apt-get -y install python python-dev python-setuptools

easy_install pip

easy_install virtualenv

easy_install virtualenvwrapper


4.安装并启用mod_WSGI

wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz

tar xvfz mod_wsgi-3.4.tar.gz

cd mod_wsgi-3.4

./configure

make

make install

echo "LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so" > /etc/apache2/mods-available/wsgi.load

a2enmod wsgi

a2dissite default


5.安装并配置MySQL数据库

注意:把命令里的DATABSENAME换成Django项目采用的数据库名,DATABASEUSER与PASSWORD是你需要创建的数据库用户的用户名与密码。

apt-get -y install mysql-server mysql-client

echo "CREATE DATABASE DATABASENAME;" | mysql -u root -p

echo "CREATE USER 'DATABASEUSER'@'localhost' IDENTIFIED BY 'PASSWORD';" | mysql -u root -p

echo "GRANT ALL PRIVILEGES ON DATABASENAME.* TO 'DATABASEUSER'@'localhost';" | mysql -u root -p

echo "FLUSH PRIVILEGES;" | mysql -u root -p



6.安装Python与Django

通过VirtualEnv搭建一个虚拟Python环境,然后在这个虚拟环境中用pip安装Django

cd /srv/

mkdir -p my_project/app my_project/app/conf/apache

mkdir -p my_project/logs my_project/run/eggs

virtualenv my_project/venv

/srv/my_project/venv/bin/pip install django


7.创建Django项目

pushd my_project/app/

/srv/my_project/venv/bin/python /srv/my_project/venv/bin/django-admin.py startproject webapp

popd


8.配置mod_WSGI

mkdir -p my_project/app/webapp/site_media

mkdir -p my_project/app/templates

cd my_project/app/conf/apache/

修改配置文件

sudo vim django.wsgi


把下面的代码粘贴进编辑器。(在Vim粘贴前最好:set paste)

import os

import sys


root_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..'))

sys.path.insert(0, os.path.abspath(os.path.join(root_path, 'venv/lib/python2.7/site-packages/')))

sys.path.insert(0, os.path.abspath(os.path.join(root_path, 'app')))

sys.path.insert(0, os.path.abspath(os.path.join(root_path, 'app', 'webapp')))


os.environ['DJANGO_SETTINGS_MODULE'] = 'webapp.settings'


import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()


9.创建新用户

创建一个新用户来运行Apache的mod_WSGI进程。记得修改命令中的USERNAME

useradd --system --no-create-home --home-dir /srv/my_project/ --user-group USERNAME

chsh -s /bin/bash USERNAME


10.配置apche站点

记得替换dinever.com为你自己的域名

sudo vim /etc/apache2/sites-available/dinever.com

黏贴下面的代码,记得修改其中的DOMAIN、USER、静态文件目录与、媒体文件目录

<VirtualHost *:80>

ServerAdmin root@DOMAIN

ServerName DOMAIN


Alias /site_media/ /srv/my_project/app/webapp/site_media/

Alias / /srv/my_project/venv/lib/python2.7/site-packages/django/contrib/admin/

Alias /robots.txt /srv/my_project/app/webapp/site_media/robots.txt

Alias /favicon.ico /srv/my_project/app/webapp/site_media/favicon.ico


CustomLog "|/usr/sbin/rotatelogs /srv/my_project/logs/access.log.%Y%m%d-%H%M%S 5M" combined

ErrorLog "|/usr/sbin/rotatelogs /srv/my_project/logs/error.log.%Y%m%d-%H%M%S 5M"

LogLevel warn


WSGIDaemonProcess DOMAIN user=USER group=USER processes=1 threads=15 maximum-requests=10000 python-path=/srv/my_project/venv/lib/python2.7/site-packages python-eggs=/srv/my_project/run/eggs

WSGIProcessGroup DOMAIN

WSGIScriptAlias / /srv/my_project/app/conf/apache/django.wsgi


<Directory /srv/my_project/app/webapp/site_media>

Order deny,allow

Allow from all

Options -Indexes FollowSymLinks

</Directory>


<Directory /srv/my_project/app/conf/apache>

Order deny,allow

Allow from all

</Directory>


</VirtualHost>

然后启用这个新的站点配置文件

2ensite DOMAIN


11.安装Python的MySQLdb模块

若想让Django操作MySQL数据库,Python下的MySQLdb模块是必装的

apt-get build-dep python-mysqldb

/srv/my_project/venv/bin/pip install MySQL-python


12.配置Django项目

cd ../../

cd webapp/webapp/

vim settings.py

添加

MEDIA_ROOT=/srv/my_project/app/webapp/site_media

TEMPLATE_DIRS=/srv/my_project/app/templates


13.修改权限然后重启Apache

chown -R USERNAME:USERNAME /srv/my_project/

service apache2 restart



安装完后可能会报错

warning: NameVirtualHost *:80 has no VirtualHosts

这是由于VirtualHost *:80或NameVirtualHost *:80在apache的.conf定义了两次,注释掉一次就可以了


你可能感兴趣的:(django,ubuntu,软件安装)