• 阿里云ECSserver部署django


    參考


    server安装的是Centos 系统。

    uwsgi是使用pip安装的。

    nginx是使用yum install nginx安装。

    python 2.7, mysql 5.5使用 yum安装。


    它们之间的逻辑关系例如以下:


    the web client <-> the web server <-> the socket <-> uwsgi <-> Django

    uswgi负责从Django拿内容,通过socket传给 web server如nginx, 最后显示到 网页浏览器。


    在django的项目下,建文件 uswgi.ini。能够不用在uswgi后面写一串选项。


    # uwsgi.ini file
    [uwsgi]
    
    # Django-related settings
    # the base directory (full path)
    chdir           = /var/www/html/
    # Django's wsgi file
    module          = app.wsgi:application
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    processes       = 10
    # the socket (use the full path to be safe
    #socket          = 127.0.0.1:8001
    socket		 = /tmp/site.sock
    # ... with appropriate permissions - may be needed
    chmod-socket    = 666
    # clear environment on exit
    vacuum          = true
    process		= 4
    threads		= 2

    # Django's wsgi file这个相应你自己Django项目的就好。

    chdir就是Django的所在文件夹,和manage.py同一文件夹。

    其它能够默认。


    相同建立nginx.conf


    # nginx.conf
    
    # the upstream component nginx needs to connect to
    upstream django {
        server unix:///tmp/site.sock; # for a file socket
        #server 127.0.0.1:8001; # for a web port socket (we'll use this first)
    }
    
    # configuration of the server
    server {
        # the port your site will be served on
        listen      80;
        # the domain name it will serve for
        server_name demo.mmm.com; # substitute your machine's IP address or FQDN
        charset     utf-8;
    
        # max upload size
        client_max_body_size 128M;   # adjust to taste
    
        # Django media
        location /media  {
            alias /var/www/html/media;  # your Django project's media files - amend as required
        }
    
        location /static {
            alias /var/www/html/static; # your Django project's static files - amend as required
        }
    
        # Finally, send all non-media requests to the Django server.
        location / {
            uwsgi_pass  django;
            include     /var/www/html/uwsgi_params; # the uwsgi_params file you installed
        }
    }
    


    uwsgi_pass django; 中的django和upstream django 相相应。

    两头的socket名字要一样。uwsgi里要改sock的权限为666,默认的664,nginx会连不上,在/var/log/nginx/error.log里能够看到connect is denied。


    据说使用socket比port要好,注意unix://这个前缀。加上后面sock的路径,是3个///,看起来不好看。

    不管使用socket还是TCPport。uwsgi的socket和nginx的server值要相应,否则没法接通路径。


    server_name demo.mmm.com; 看文章时,把server_name这个词看成域名。给改动掉,结果nginx启动失败。能够用域名或者IP。

    ln -s  /var/www/html/nginx.conf   /etc/nginx/conf.d/

    链接后,这样在conf.d 配置文件夹里会有Django下建立的nginx.conf,比較方便。


    uwsgi_params文件在/etc/nginx以下有,老外说是复制到Django文件夹下。不知道直接使用会有什么差别。


    最后:

    使用chkconfig nginx on  把nginx设置成自启动服务。

    在/etc/rc.local里加一行 uwsgi /var/www/html/uwsgi.ini  --uid www  --gid www


    我没加uid和gid,以root执行uwsgi会被警告的。


    原来是打算用apache的,所以有个/var/www/html文件夹。mod-python报错后,不知道怎么处理。 

    系统自带Python2.6,mod-python就是调用的2.6。


    nginx不能从uwsgi获得数据时,就会输出nginx的默认页面。还会输出 Bad Gateway提示。


    linux最大的麻烦是。程序和配置文件分散。安装程序,我不知道它在哪里。

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    吴裕雄--天生自然 R语言开发学习:图形初阶
    吴裕雄--天生自然 R语言开发学习:导入数据
    如何基于阿里云搭建适合初创企业的轻量级架构?
    基于协同过滤算法的推荐
    重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准
    完爆 Best Fit,看阿里如何优化 Sigma 在线调度策略节约亿级成本
    阿里云物联网边缘计算加载MQTT驱动
    阿里云物联网平台体验(树莓派+Python篇)
    RAM SSO功能重磅发布 —— 满足客户使用企业本地账号登录阿里云
    阿里云高级技术专家带你全面了解云主机性能评测
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4728303.html
Copyright © 2020-2023  润新知