• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > Linux系统运用 > linux下从头开始搭建Django环境

    linux下从头开始搭建Django环境

    作者: 分类:Linux系统运用 点击: 162 次
    wordpress CMS主题:ssmay主题

      首先服务器来自阿里云,python我预先装好了 ananconda python3的版本。笔者在本地开发好Django项目后部 署到Ubuntu16.04的服务器,遇到了一些坑,记录一下。

      开始搭建

      听说Django linux环境需要nginx处理静态资源和uwsgi处理动态资源,之前Php的环境一直用的nginx,nginx 的安装很简单这里不细说了,文章后面会写到nginx-Django配置的细节。

      安装uwsgi

      pip install uwsgi

      提示报错,错误信息大致如下

      lto1: fatal error: bytecode stream generated with LTO version 6.0 instead of the expected 4.1
      compilation terminated.
      lto-wrapper: fatal error: gcc returned 1 exit status
      compilation terminated.
      /home/liuzhen/anaconda3/compiler_compat/ld: error: lto-wrapper failed
      collect2: error: ld returned 1 exit status
      *** error linking uWSGI ***
      lto1: fatal error: bytecode stream generated with LTO version 6.0 instead of the expected 4.1
      compilation terminated.
      lto-wrapper: fatal error: gcc returned 1 exit status
      compilation terminated.
      /home/liuzhen/anaconda3/compiler_compat/ld: error: lto-wrapper failed
      collect2: error: ld returned 1 exit status
      *** error linking uWSGI ***

      解决方案。 降低gcc版本。https://www.e-learn.cn/content/python/376420

      编辑uwsgi.py

      在manage.py所在目录下创建 uwsgi.py,vim uwsgi.py,复制下面代码保存

      [uwsgi]
      # 配置服务器的监听ip和端口,让uWSGI作为nginx的支持服务器的话,设置socke就行;如果要让uWSGI作为单
      独的web-server,用http
      # http = 127.0.0.1:3309
      socket = 127.0.0.1:8000
      # 配置项目目录(此处设置为项目的根目录)
      chdir = /home/python/mysite
      # 配置入口模块 (django的入口函数的模块,即setting同级目录下的wsgi.py)
      wsgi-file = mysite/wsgi.py
      # 开启master, 将会多开一个管理进程, 管理其他服务进程
      master = True
      # 服务器开启的进程数量
      processes = 2
      # 以守护进程方式提供服, 输出信息将会打印到log中
      daemonize = wsgi.log
      # 服务器进程开启的线程数量
      threads = 4
      # 退出的时候清空环境变量
      vacuum = true
      # 进程pid
      pidfile = uwsgi.pid
      # 配uWSGI搜索静态文件目录(及django项目下我们存放static文件的目录,用uWSGI作为单独服务器时才需要
      设置,此时我们是用nginx处理静态文件)
      # check-static = /home/python/Desktop/ttsx`

      [uwsgi]
      # 配置服务器的监听ip和端口,让uWSGI作为nginx的支持服务器的话,设置socke就行;如果要让uWSGI作为单
      独的web-server,用http
      # http = 127.0.0.1:3309
      socket = 127.0.0.1:8000
      # 配置项目目录(此处设置为项目的根目录)
      chdir = /home/python/mysite
      # 配置入口模块 (django的入口函数的模块,即setting同级目录下的wsgi.py)
      wsgi-file = mysite/wsgi.py
      # 开启master, 将会多开一个管理进程, 管理其他服务进程
      master = True
      # 服务器开启的进程数量
      processes = 2
      # 以守护进程方式提供服, 输出信息将会打印到log中
      daemonize = wsgi.log
      # 服务器进程开启的线程数量
      threads = 4
      # 退出的时候清空环境变量
      vacuum = true
      # 进程pid
      pidfile = uwsgi.pid
      # 配uWSGI搜索静态文件目录(及django项目下我们存放static文件的目录,用uWSGI作为单独服务器时才需要 设置,此时我们是用nginx处理静态文件)
      # check-static = /home/python/Desktop/ttsx`

      启动uwsgi

      uwsgi --ini uwsgi.py

      报错如下

      uwsgi: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No
      such file or directory

      uwsgi: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No
      such file or directory

      这是因为我使用了anaconda的python,所以没有找到默认的libpcre.so.1,需要将 anaconda 的lib中的libpcre.so.1,移动到lib下

       ln -s ~/anaconda3/lib/libpcre.so.1 /lib

      再次启动

      uwsgi --ini uwsgi.py

      提示

      [uWSGI] getting INI configuration from uwsgi.py

      成功!

      配置nginx

      直接和php配置一样,在/etc/nginx/sites-available/default中添加如下配置。

      server {
      listen 80;
      server_name xx.xx.com
      charset UTF-8;
      access_log /var/log/nginx/myweb_access.log;
      error_log /var/log/nginx/myweb_error.log;

      client_max_body_size 75M;

      location / {
      include uwsgi_params;
      uwsgi_pass 127.0.0.1:8000;
      uwsgi_read_timeout 2;
      }
      location /static {
      expires 30d;
      autoindex on;
      add_header Cache-Control private;
      alias /home/python/mysite/static/;
      }
      }

      server {
      listen 80;
      server_name xx.xx.com
      charset UTF-8;
      access_log /var/log/nginx/myweb_access.log;
      error_log /var/log/nginx/myweb_error.log;

      client_max_body_size 75M;

      location / {
      include uwsgi_params;
      uwsgi_pass 127.0.0.1:8000;
      uwsgi_read_timeout 2;
      }
      location /static {
      expires 30d;
      autoindex on;
      add_header Cache-Control private;
      alias /home/python/mysite/static/;
      }
      }

      部署到服务器后,设置一下ALLOWED_HOSTS(允许访问的域名)vim mysite/mysite/setting.py,在ALLOWED_HOSTS 中添加 ‘xx.xx.com’。配置好之后,重启 uwsgi;

      这里贴一个我在用的重启办法

      杀死进程

      ps -e | grep uwsgi

      找到uwsgi的端口号,然后杀掉进程(10029是我机器此时的uwsgi的端口号),杀掉第一个就全部杀掉了。

      kill -9 10029

      启动uwsgi

      uwsgi --ini uwsgi.py

      重启nginx

      /etc/init.d/nginx/restart

      (转自:https://winjourn.cn/?p=775 )



      QQ二维码

    文章作者:zhangxuan
    本文地址:http://wanlimm.com/77201808256686.html
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    This site uses Akismet to reduce spam. Learn how your comment data is processed.