• 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

    <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> 

    其中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文件,然后更改。

    修改前的文件:

     server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                index  index.html index.htm;
            }

    修改后:

        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;
            }

    其中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里面

  • 相关阅读:
    MD支持新标签跳转
    线上问题cpu100处理记录
    OpenShift 4.6方式下OperatorHub的变化
    OpenShift 4.5.7 版本基础镜像下载
    GLPI企业使用(一),连接AD域,LDAP登录。
    GLPI配置文件说明:默认权限组
    企业服务器规划
    港股通转托管
    mui实现下拉刷新以及click事件无法响应问题
    asp.net core+websocket实现实时通信
  • 原文地址:https://www.cnblogs.com/Xjng/p/3559984.html
Copyright © 2020-2023  润新知