Nginx+uWSGI+Django+Python在Linux上的部署

搞了一整天,终于以发现自己访问网络的端口是错误的结束了。

首先要安装Nginx,uWSGI,Django,Python,这些都可以再网上查到。

安装好后可以用 whereis 命令查看是否安装好了各种软件。

例如 whereis nginx

nginx wget http://nginx.org/download/nginx-0.8.54.tar.gz

Django wget http://media.djangoproject.com/releases/1.2/Django-1.2.5.tar.gz

 

 

1.创建django项目

需要用到命令

?django-admin.py startproject projectname  其中projectname 为自定义的项目名
如果显示djfenf: command not found  就需要把django-admin.py的路径加入到环境变量中  可以用
find /--name django-admin.py 来查找django-admin.py在那个路径
然后 用 
export  PATH=/work/django/:$PATH 
命令添加环境变量,其中/work/django 为django-admin.py的路径
2.创建django.py文件
在django项目里面的manage.py文件所在的目录下 创建 django.py
import  os,sys
import  django.core.handlers.wsgi
os.environ[DJANGO_SETTINGS_MODULE]=auth_check.settings
application=django.core.handlers.wsgi.WSGIHandler()

其中auth_check 为你创建的项目名称 

3.创建uwsgi.xml文件

在django.py文件的目录创建uwsgi.xml

Nginx+uWSGI+Django+Python在Linux上的部署
<uwsgi>  
<socket>0.0.0.0:9090</socket>  
<listen>20</listen>  
<master>true</master>  
<pidfile>/usr/local/nginx/uwsgi.pid</pidfile>  
<processes>8</processes>  
<module>django</module>
<pythonpath>/root/work/djangodemo/auth_check</pythonpath>  
<profiler>true</profiler>  
<enable-threads>true</enable-threads>  
<logdate>true</logdate>  
</uwsgi> 
Nginx+uWSGI+Django+Python在Linux上的部署

其中9090为端口号,这个需要与后面配置的nginx.conf中的端口一样,module表示上面创建的django.py文件,pythonpath为django.py文件的绝对路径(可以有多个pythonpath)

4.启动uwsgi

输入命令启动uwsgi

uwsgi -x uwsgi.xml

5.配置nginx

进入nginx目录  可以通过

which nginx

命令查找,然后再conf目录下找到 nginx.conf文件,然后更改。

修改前的文件:

Nginx+uWSGI+Django+Python在Linux上的部署
 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
Nginx+uWSGI+Django+Python在Linux上的部署

修改后:

Nginx+uWSGI+Django+Python在Linux上的部署
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
 include uwsgi_params;
                uwsgi_pass 127.0.0.1:9090;
        }
Nginx+uWSGI+Django+Python在Linux上的部署

其中9090要与上面的xml文件一样,80为访问的端口

6.启动 nginx

/usr/local/nginx/sbin/nginx

每次修改conf文件后都需要重启nginx

/usr/local/nginx/sbin/nginx -s reload

7.访问网络

curl "http://192.168.153.134"

ip地址可以使ifconfig里面的你的本机的地址,可以是0.0.0.0,可以是127.0.0.1

如果返回的html是django的页面就表明你成功了

访问网络时的端口是nginx.conf里面的listen参数,这里是80,不是uwsgi的端口(9090),切记切记。

 8.后记

1)如果访问网络,返回的html有“The page you are looking for is temporarily unavailable.”

表明你的uswgi服务没启动,或nginx里的端口与uswgi的端口不一致

2)uwsgi有多个参数,-x 表示以xml为配置文件启动uwsgi,-d /var/log/uwsgi.log 为后台运行uwsgi并把日志写到/var/log/uwsgi.log里面

 

Nginx+uWSGI+Django+Python在Linux上的部署

上一篇:Python socket 客户端和服务器端


下一篇:C++11 std::chrono库详解