linux:Ubuntu 12.04 64位

python:自带2.7.3

django 1.7.1

nginx:1.1.19

uwsgi:使用pip安装,版本不详

更新源

apt-get update

安装 Nginx 和 uWSGI

apt-get install nginx uwsgi uwsgi-plugin-python

安装 Python 相关环境

apt-get install python-dev python-virtualenv python-pip

这里如果安装不成功,可以分开安装,试过一次,分开安装才成功,原因目前以我的水平还发现不了,很遗憾。

安装 MySQL

apt-get install mysql-server mysql-client libmysqld-dev

安装 MySQL 的过程中需要输入密码

安装完 MySQL 后需要执行 mysql_secure_installation 命令来提高 MySQL 安全性,照提示进行

安装 PHP

apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-mysql

配置 Django 及多站点支持

这里假设我的网站目录为 /www ,每个用户有自己一个独立的文件夹(这里使用两个用户名作为示例,分别为 test1 和 test2 )

前面的操作步骤为简单起见,只新建一个站点,文件夹名称为 test1

建立目录

mkdir /wwwmkdir /www/test1mkdir /www/test1/mediamkdir /www/test1/static

这里建立的 media 和 static 目录分别用来存放该 Django 项目的 media 和 static 文件。

用 virtualenv 创建虚拟环境并新建测试项目

cd /www/test1virtualenv envsource env/bin/activatepip install Djangodjango-admin.py startproject django_test

这里在 /www/test1/env 目录下新建了一个虚拟环境并激活,安装了 Django 并新建了一个项目,名称为 django_test 。

注:创建并进入环境:mkvirtualenv env1退出环境:deactivate进入已存在的环境或者切换环境:workon env1或者env2删除环境: rmvirtualenv env1

配置 Nginx

在 Nginx 的 sites-available 下创建一个新的配置文件

vim /etc/nginx/sites-available/test1

文件内容如下:

server {    listen  80;    server_name test1.yourdomain.com;    access_log /var/log/nginx/test1.access.log;    error_log /var/log/nginx/test1.error.log;    location / {        uwsgi_pass  unix:///tmp/test1.sock;        include     uwsgi_params;    }    location /media/  {        alias /www/test1/media/;    }    location  /static/ {        alias /www/test1/static/;    }}

接下来将 sites-available 文件夹中刚才添加的文件 ln 到 sites-enabled 文件夹中

ln -s /etc/nginx/sites-available/test1 /etc/nginx/sites-enabled/

配置 uWSGI

接下来是配置 uWSGI,同样在 uWSGI 的目录下创建一个新的配置文件

vim /etc/uwsgi/apps-available/test1.ini

文件内容如下

[uwsgi]vhost = trueplugins = pythonsocket = /tmp/test1.sockmaster = trueenable-threads = trueprocesses = 4wsgi-file = /www/test1/django_test/django_test/wsgi.pyvirtualenv = /www/test1/envchdir = /www/test1/django_testtouch-reload = /www/test1/django_test/reload

注意:文件内容中的 django_test 为刚才创建的 Django 的项目名称

然后将 apps-available 中的配置文件 ln 到 apps-enabled 文件夹中

ln -s /etc/uwsgi/apps-available/test1.ini /etc/uwsgi/apps-enabled/

重启 Nginx 和 uWSGI

service uwsgi restartservice nginx restart

接下来访问你在上面绑定的 server_name 域名就可以看见 It worked! 的界面了。

注意:每次更新代码后需要执行 service uwsgi restart 修改方能生效,或者通过上面配置的 touch-reload 文件来检测改动更新代码。

DJANGO应用部署

首先进入/www/test1/django_test目录,然后创建django app。

cd /www/test1/django_testdjango-admin.py startapp appname

这样在django_test目录下就会有一个appname目录。

就可以编辑里面的views.py文件。同时编辑一下/django_test下的urls.py文件,然后用自己定义的URL和视图方法,就可以正常访问自己的应用了。

多站点配置

如果需要配置多 Django 站点,只需要重复上面的操作即可。

简略演示一下建立第二个站点 test2 的步骤

mkdir /www/test2mkdir /www/test2/mediamkdir /www/test2/staticcd /www/test2virtualenv envsource env/bin/activatepip install Djangodjango-admin.py startproject django_testvim /etc/nginx/sites-available/test2

仿照上面的内容填充配置文件,绑定的域名需要不同

ln -s /etc/nginx/sites-available/test2 /etc/nginx/sites-enabled/
vim /etc/uwsgi/apps-available/test2.ini

仿照上面的内容填充配置文件

ln -s /etc/uwsgi/apps-available/test2.ini /etc/uwsgi/apps-enabled/
service uwsgi restartservice nginx restart

安装 phpMyAdmin

首先为 phpMyAdmin 建立一个独立的目录

mkdir /www/phpmyadmin

然后将 phpMyAdmin 的源码上传到该文件夹下,接下来就是配置 Nginx 使得对应的请求可以转发至 PHP 上

配置 Nginx

在 Nginx 的 sites-available 目录下新建一个配置文件

vim /etc/nginx/sites-available/phpmyadmin

在其中写入如下配置

server {    listen 80;    server_name phpmyadmin.yourdomain.com;    root /www/phpmyadmin;    index index.html index.htm index.php;    location / {        try_files $uri $uri/ /index.html;    }    location ~ .php$ {        fastcgi_pass 127.0.0.1:9000;        fastcgi_index index.php;        include fastcgi_params;    }}

然后将其链接至 sites-enabled 目录下

ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/

重启服务即可

service php5-fpm restartservice nginx restart

现在访问刚才绑定的域名应该可以正常访问 phpMyAdmin 了。

遇到的问题:

1、python组件安装失败,但是分开安装却安装成功了。

2、nginx无法启动,提示

(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80

原因是80端口被占用,只要查一下是谁占用了,杀掉进程就可以重启了,我的是应为默认安装的apache占用了80端口。

netstat -nlp |grep :80killall -9 httpd

参考了:   

===================12.02补充============

新安装了两个模块ahocorasick和esmre。在命令行模式下,可以正常导入,原因是在

/usr/local/lib/python2.7/site-packages

目录中有该模块,但是在django应用的views.py中却无法导入,原因是在env中

/www/test1/env/local/lib/python2.7/site-packages

该目录下并没有ahocorasick该模块。django应用中引用的模块都是在env这个目录下。

在env模式下用pip安装对应模块,才能在django应用中正常引用。

virtualenv envsource env/bin/activate

nginx无法启动新情况

错误提示:

Restarting nginx: nginx: [emerg] unknown directive "uwsgi_pass" in /etc/nginx/sites-enabled/test1:7nginx: configuration file /etc/nginx/nginx.conf test failed

解决办法

apt-get install nginx-full

出现一次无法加载uwsgi的错误,报错信息如下

Restarting nginx: nginx: [emerg] unknown directive "uwsgi_pass" in /etc/nginx/sites-enabled/test1:7

解决方法如下

apt-get install nginx-full

============================分割线========================

获取上一篇下一篇的原始sql方法

上一篇: select * from article where category = current_category and id > current_id order by id desc limit 1;下一篇: select * from article where category = current_category and id < current_id order by id asc limit 1;