设为首页 收藏本站
查看: 726|回复: 0

[经验分享] Django -- 整合apache、nginx

[复制链接]

尚未签到

发表于 2018-11-10 10:07:48 | 显示全部楼层 |阅读模式
  前面章节我们都是通过python manage.py runserver运行服务器,访问django,但这只适用于测试环境。当项目正式发布后,我们需要一个稳定可持续的服务器,比如apache、nginx等等。接下来我们将用apache、nginx启动服务器。
  wsgi:一种实现了python解析的通用接口标准/协议,实现了python web程序与服务器交互。
  uwsgi:他也是一种通信协议,是uWSGI服务器自有的协议;
  uWSGI:一种python的web服务器,实现了uwsgi、WSGI两种协议,而uwsgi实现了WSGI、uwsgi、http等协议。apache、nginx都必须引用模块才能解析动态语言。只不过这两个具备很好的静态内容处理能力。
  gunicorn/uwsgi:都是wsgi协议(python web server gateway interface)的实现,它们做的事情是协议转换,协议的一头是web app(如flask, django等framework的app),另一头是web server(如apache, nginx等);
  gunicore/uwsgi在默认的情况下都是同步模型,但都比通常的web framework实现得好。
  gevent是利用协程(greenlet库)实现的一个高性能异步IO的库,它做的事情就是实现异步模型。
  ====================================================================
  Apache (wsgi模块)
  yum  install mod_wsgi
  https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/
  
    WSGIScriptAlias / /opt/simplecmdb/simplecmdb/wsgi.py
  
    WSGIDaemonProcess simplecmdb python-path=/opt/simplecmdb:/usr/lib64/python2.7/site-packages
  
    WSGIProcessGroup  simplecmdb
  
    Alias /static /usr/lib64/python2.7/site-packages/django/contrib/admin/static
  

  

  
   
  
        Require all granted
  
   
  

  

  
    Require all granted
  

  

  
WSGISocketPrefix /var/run/wsgi
  nginx (gunicorn模块)
  pip install gunicorn
server {  
    listen       192.168.1.106:8000;
  
    server_name  node01;
  

  
    location /static/admin/ {
  
        root  /usr/lib/python2.6/site-packages/django/contrib/admin/;
  
        index  index.html index.htm;
  
    }
  
    location / {
  
        proxy_pass      http://localhost:8000;
  
    }
  
}
  cd  ~/项目下/  &&  gunicorn 项目名.wsgi:application -D
  如果访问不到,去掉-D后台模式,看是否执行成功;
  另外查看见监听端口,至少两个一个是nginx配置启动的8000,一个是127.0.0.1的8000。
  ------------------------------------------------------------------------------------------------
  uwsgi模块 :效率要比wsgi好的多的多
  --------------------------------------------------------------------------------------------------------------
  nginx (uwsgi模块)
  pip install uwsgi
  新建test.py文件,内容如下:
def application(env, start_response):  
   start_response('200 OK', [('Content-Type','text/html')])
  
   return "Hello World"
  运行:uwsgi --http 10.0.18.33:8001 --wsgi-file test.py
  访问:10.0.18.33:8001 输出 Hello World 即成功。
  cat /etc/uwsgi9090.ini
[uwsgi]  
socket = 127.0.0.1:8001
  
master = true         //主进程
  
vhost = true          //多站模式
  
no-site = true        //多站模式时不设置入口模块和文件
  
workers = 2           //子进程数
  
reload-mercy = 10
  
vacuum = true         //退出、重启时清理文件
  
max-requests = 1000
  
limit-as = 512
  
buffer-size = 30000
  
pidfile = /var/run/uwsgi9090.pid
  
daemonize = /website/uwsgi9090.log
  修改nginx配置文件:vim  uwsgi_django.conf
server {  
    listen     10.0.18.33:8001;
  
    server_name  uwsgi.django.test;
  

  
    location / {
  
        uwsgi_pass  127.0.0.1:8001     #必须和uwsgi中的设置一致
  
        uwsgi_param UWSGI_SCRIPT HelloWorld.wsgi;
  
        #入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
  
        uwsgi_param UWSGI_CHDIR /qqqqqqqqq/python/django/HelloWorld; #项目根目录
  
        index  index.html index.htm;
  
        client_max_body_size 35m;
  
    }
  
}
  启动:uwsgi --ini /etc/uwsgi9090.ini   &&   /usr/local/nginx/sbin/nginx
  测试:首先查看端口是不是都起来了,然后访问http://10.0.18.33:8001/,出现django界面即可。
  重启:fuser -k 8001/tcp
  -----------------------------------------------------------------------------------------------------
  错误一:ImportError: No module named HelloWorld.settings
  unable to load app 0 (mountpoint='') (callable not found or import error)
  解决:export PYTHONPATH=$PYTHONPATH:/qqqqqqqqq/python/django/HelloWorld ,因为在sys.path中找不到项目路径,当然加入到path的方法也很多,以上只是其中一种。
  错误二:ImportError: No module named django.core.wsgi
  unable to load app 0 (mountpoint='10.0.18.33:8001|')
  解决:vim /etc/uwsgi9090.ini  添加pythonpath = /usr/lib/python2.7/site-packages 即可
DSC0000.png -----------------------------------------------------------------------------------------------------





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633141-1-1.html 上篇帖子: nginx-locaiton 下篇帖子: Nginx——强大的web
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表