需要软件

mysql nginx python(版本2.7.4) django-1.2.5 uwsgi

1 安装mysql nginx python 此步略

2

安装django-1.2.5

tar -zxvf django-1.2.5.tar.gz

cd django-1.2.5

python2.7 setup.py install


安装setuptools-0.6c11
python2.7 setup.py install


安装uwsgi-latest.tar.gz

wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz

python2.7 uwsgiconfig.py --build



下面将make的编译产生的可执行文件移动到/usr/local/uwsgi/bin/里面去
mkdir -p /usr/local/uwsgi/bin/
cp uwsgi /usr/local/uwsgi/bin/
mkdir -p /usr/local/uwsgi/logs
mkdir -p /usr/local/uwsgi/conf

cat >> /usr/local/uwsgi/conf/uwsgi.xml < EOF
<uwsgi>
         <socket>127.0.0.1:8000</socket>
         <listen>200</listen>
         <master>true</master>
         <pidfile>/usr/local/uwsgi/logs/uwsgi.pid</pidfile>
         <processes>8</processes>
         <chdir>/dir/my_django</chdir>
         <pythonpath>/dir</pythonpath>
         <pythonpath>/dir/my_django</pythonpath>
         <module>django_wsgi</module>
         <profiler>true</profiler>
         <memory-report>true</memory-report>
         <enable-threads>true</enable-threads>
         <logdate>true</logdate>
         <limit-as>6048</limit-as>
         <daemonize>/usr/local/uwsgi/logs/django.log</daemonize>
       </uwsgi>

EOF

创建应用模块
cd /dir
django-admin.py startproject my_django
目录树
my_django/
|-- __init__.py
|-- __init__.pyc
|-- django_wsgi
|-- django_wsgi.py
|-- django_wsgi.pyc
|-- manage.py
|-- settings.py
|-- settings.py.bk
|-- settings.pyc
|-- urls.py
|-- urls.py.bk
|-- urls.pyc
|-- uwsgi.xml
`-- views.py

[root@my_django]# cat >> django_wsgi.py < EOF
import os
import django.core.handlers.wsgi
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'  
application = django.core.handlers.wsgi.WSGIHandler()

EOF

Nginx配置
server {
       listen  80;
        server_name 192.168.2.1;

         location / {
           root /dir/my_django;
           uwsgi_pass   127.0.0.1:8000;
           include     uwsgi_params;
           access_log  /usr/local/nginx/logs/access.log;  
           error_log  /usr/local/nginx/logs/error.log;
     }
}

继续安装
MySQL-python-1.2.3
python2.7 setup.py build
python2.7 setup.py install
vi site.cfg
将mysql_config = /usr/local/mysql/bin/mysql_config 指向mysql安装路径

错误1.
>>> import MySQLdb
Traceback (most recent call last):
File "", line 1, in
File "build/bdist.linux-i686/egg/MySQLdb/__init__.py", line 19, in
File "build/bdist.linux-i686/egg/_mysql.py", line 7, in
File "build/bdist.linux-i686/egg/_mysql.py", line 6, in __bootstrap__
ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

解决方法
首先查找模块
export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql
# find / -name libmysqlclient_r.so.16
/usr/local/src/mysql-5.1.44-linux-i686-glibc23/lib/libmysqlclient_r.so.16
/usr/local/mysql/lib/libmysqlclient_r.so.16
将模块路径加入动态链接库设置为共享
vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/lib
/usr/local/lib
/usr/local/mysql-5.1.56/lib/mysql
/root/mysql-5.1.56/packages/mysql-5.1.56/libmysql_r/.libs
加载 ldconfig -v


测试import MySQLdb
django连接mysql
进入mysql新建一个数据库aaa,create database bbb并且 GRANT ALL PRIVILEGES ON bbb.* TO root@localhost IDENTIFIED BY '' WITH GRANT OPTION;
退出mysql进入一个工程,修改settings.py
DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
       'NAME': 'bbb',                      # Or path to database file if using sqlite3.
       'USER': 'root',                      # Not used with sqlite3.
       'PASSWORD': '',                  # Not used with sqlite3.
       'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
       'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
   }
}

保存后可以在python shell中测试是否连接正确

python manage.py shell
>>> from django.db import connection
>>> cursor = connection.cursor()
然后创建你的models,完成之后执行以下命令
python manage.py validate #检查modes语法逻辑是否正确
python manage.py sqlall bbb #bbb为工程名,执行这步产生creattable的sql语句,但没有真正的在数据库中创建表
python manage.py syncdb #初始化数据库,真正创建表
ok,没什么错误就可以runserver了

另外:若修改了表结构就是models中的内容,需python manage.py sqlreset bbb 或者 python manage.py reset bbb

启动uwsgi 命令:
/usr/local/uwsgi/bin/uwsgi -x /usr/local/uwsgi/conf/uwsgi.xml