zoukankan      html  css  js  c++  java
  • ubantu+nginx+uwsgi+django部署

    1.更新ubantu的apt

          apt-get update

      必要时候更新系统:      apt-get upgrade

    2.远程连接服务器

      ssh 用户名@ip   

      上传代码 :        scp 本地文件夹/文件   用户名@ip:远程存放位置

    3.安装数据库

       apt-get install mysql-server mysql-client libmysqlclient-dev

    (ps:如果不安装libmysqlclent-dev,接下来安装mysql-python可能会报错)

      安装完成以后通过 mysql -u用户名 -p密码    进入mysql,创建对应的数据库。

    4.安装redis     

      apt-get install redis-server

      确认redis是否运行    netstat -antup  / netstat -ntpl  / ps -ef|gerp redis

    5.安装python环境

        a.安装pip:  apt-get install python-pip

        b.安装python-dev:  apt-get install python-dev

        c.安装项目环境:   pip install -r 环境文件

    (ps 如果要加快速度需要换镜像元:  pip install -r 环境文件 -i https://pypi.tuna.tsinghua.edu.cn/simple gevent)

    6.创建数据库对应的表:

      a.一般情况下:Python manage.py makemigrations          puyhon manage.py migrate

      b.本项目: python manage.py migrate auth

       因为 kombu 的两个应用 kombu_transport_django 和 djkombu 会产生数据表冲 突,所以我们需要先运行

       python manage.py migrate kombu_transport_django --fask-intial

       python manage.py migrate djkombu --fake-initial

         同步数据库:   Python manage.py migrate

    7.安装uWSGI:  

      pip install uwsgi

      a.在项目同级目录下创建conf文件夹,进入conf里创建uwsgi.ini文件配置环境

      

     1 [uwsgi]
     2 socket = 127.0.0.1:3031
     3 #使用nginx连接时使用,Django程序所在服务器地址
     4 chdir = /home/mmc/mmcsite
     5 #项目目录
     6 wsgi-file = mmcsite/wsgi.py
     7 #项目中wsgi.py文件的目录,相对于项目目录
     8 processes = 4
     9 #进程数
    10 threads = 2
    11 #线程数
    12 stats = 127.0.0.1:9191
    13 #在指定的地址上,开启状态服务
    项目配置1
     1 [uwsgi]
     2 #使用nginx连接时使用,Django程序所在服务器地址
     3 socket=10.211.55.2:8001
     4 #直接做web服务器使用,Django程序所在服务器地址
     5 #http=10.211.55.2:8001
     6 #项目目录
     7 chdir=/Users/delron/Desktop/mmc/iot
     8 #项目中wsgi.py文件的目录,相对于项目目录
     9 wsgi-file=mmcsite/wsgi.py
    10 # 进程数
    11 processes=4
    12 # 线程数
    13 threads=2
    14 # uwsgi服务器的角色
    15 master=True
    16 # 存放进程编号的文件
    17 pidfile=uwsgi.pid
    18 # 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的
    19 daemonize=uwsgi.log
    20 # 指定依赖的虚拟环境
    21 virtualenv=/Users/delron/.virtualenv/meiduo
    项目配置2
     1 [uwsgi]
     2     # 项目目录
     3     chdir=/aaa/opwf_dir/opwf/
     4     # 启动uwsgi的用户名和用户组
     5     uid=root
     6     gid=root
     7     # 指定项目的application
     8     module=opwf.wsgi:application
     9     # 指定sock的文件路径
    10     socket=/aaa/opwf_dir/script/uwsgi.sock
    11     # 启用主进程
    12     master=true
    13     # 进程个数
    14     workers=5
    15     pidfile=/aaa/opwf_dir/script/uwsgi.pid
    16     # 自动移除unix Socket和pid文件当服务停止的时候
    17     vacuum=true
    18     # 序列化接受的内容,如果可能的话
    19     thunder-lock=true
    20     # 启用线程
    21     enable-threads=true
    22     # 设置自中断时间
    23     harakiri=30
    24     # 设置缓冲
    25     post-buffering=4096
    26     # 设置日志目录
    27     daemonize=/aaa/opwf_dir/script/uwsgi.log
    项目配置3

      b.uwsgi命令:

        启动uwsgi     uwsgi --ini uwsgi.ini  

        重启uwsgi    service uwsgi restart

        查看uwsgi是否启动成功    ps -ef|grep uwsgi

        关闭uwsgi    uwsgi --stop  uwsgi.pid(2和3配置可生成uwsgi.pid文件用来关闭uwsgi)

    8.安装Nginx:

      apt-get install nginx

      nginx.conf为nginx会检查的配置文件路径。你的监听端口可以写在这些文件的下面。sites-enabled里可以配置文件。

      a.在/etc/nginx/conf.d里新建文件 项目名.conf(myproject.conf)配置nginx。

     1 server {
     2         listen       80;   #监听的端口号    
     3         server_name 127.0.0.1;    #服务器ip或者域名
     4 location / { 
     5            #alias /home/mmc/mmcsite/web/;
     6            root /home/mmc/mmcsite/web/;   #静态文件地址路径
     7            index index.html;               #文件格式
     8  }    
     9         #uwsgi配置
    10         location ^~ /iot/ {
    11               include uwsgi_params;
    12               uwsgi_pass 127.0.0.1:3031;
    13         }
    14         #uwsgi_params文件是Nginx向uWSGI传递的参数,uwsgi_pass的意思动态内容请求都通过名为django的upstream传递给uWSGI,这使用文件socket的方式,那么与之前uwsgi.ini里的socket参数配置一致。
    15         error_page 404 /404.html;
    16             location = /40x.html {
    17 } 
    18         error_page 500 502 503 504 /50x.html;
    19             location = /50x.html {
    20 } } 
    项目配置1
     1 upstream meiduo {
     2          server 100.211.55.2:8001;  # 此处为uwsgi运行的ip地址和端口号
     3          # 如果有多台服务器,可以在此处继续添加服务器地址
     4      }
     5 
     6      #gzip  on;
     7      server {
     8          listen  8000;
     9          server_name api.meiduo.site;
    10 
    11          location / {
    12              include uwsgi_params;
    13              uwsgi_pass meiduo;
    14          }
    15 
    16      }
    17 
    18 
    19      server {
    20          listen       80;
    21          server_name  www.meiduo.site;
    22 
    23          #charset koi8-r;
    24 
    25          #access_log  logs/host.access.log  main;
    26          location /xadmin {
    27              include uwsgi_params;
    28              uwsgi_pass meiduo;
    29          }
    30 
    31          location /ckeditor {
    32              include uwsgi_params;
    33              uwsgi_pass meiduo;
    34          }
    35 
    36          location / {
    37              root   /home/python/Desktop/front_end_pc;
    38              index  index.html index.htm;
    39          }
    40 
    41 
    42          error_page   500 502 503 504  /50x.html;
    43          location = /50x.html {
    44              root   html;
    45          }
    46 
    47      }
    项目配置2
     1 server {
     2         listen 80;
     3         server_name 1.1.1.3;
     4         access_log  /var/log/nginx/access.log  main;
     5         charset  utf-8;
     6         gzip on;
     7         gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;
     8 
     9         error_page  404           /404.html;
    10         error_page   500 502 503 504  /50x.html;
    11         # 指定项目路径uwsgi
    12         location / {
    13             include uwsgi_params;
    14             uwsgi_connect_timeout 30;
    15             uwsgi_pass unix:/aaa/opwf_dir/script/uwsgi.sock;
    16         }
    17         # 指定静态文件路径
    18         location /static/ {
    19             alias  /aaa/opwf_dir/opwf/static_all/;
    20             index  index.html index.htm;
    21         }
    22 
    23 }
    项目配置3

      b.nginx命令

        检查nginx配置是否正确    nginx -t

        启动nginx    service nginx start

        关闭nginx    service nginx stop

        重启nginx    service nginx restart

        查看nginx是否启动    ps -ef|grep nginx

    9.注意事项:

      a.如果使用Django自带的admin,需要收集admin的静态文件(先于配置nginx执行)

        STATIC_ROOT = os.path.jpin(os.path.dirname(os,path.dirname(BASE_DIR)), 'font_end_pc/static')

        (ps. font_end_pc/static为静态文件的路径)

        python manage.py collectstatic

      b.Django中的配置。

        修改uwsgi.py里的配置,将开发模式下的setting换位生产环境下的setting。

        os.environ.setdefault('DJANGO_SETTING_MODULE', 'myproject.settings.prod')

        setting里需要注意的项

     1 DEBUG = True      #生产环境下debug必须为False
     2 
     3 ALLOWED_HOSTS = [...,  'www.baidu.site']  # 添加访问的域名或者ip
     4 
     5 CORS_ORIGIN_WHITELIST = (
     6     '127.0.0.1:8080',
     7     'localhost:8080',
     8     'www.baidu.site:8080',
     9     'api.baidu.site:8000',
    10     'www.baidu.site',     #设置跨域白名单
    11 )
    setting

     

     

       

  • 相关阅读:
    Linux(CentOS6.5)下编译安装Nginx官方最新稳定版(nginx-1.10.0)
    Linux(CentOS6.5)修改系统市区被中国标准时间(北京时间)
    Linux(以CentOS6.5示例)下安装Oracle官方最新版JDK(JDK1.8)
    Linux发行版 CentOS6.5下删除分区操作
    Linux发行版 CentOS6.5下的分区操作
    Linux发行版 CentOS6.5 禁用防火墙步骤
    [置顶] drools规则引擎因为内存泄露导致的内存溢出
    架构师必读经典
    Google Chart API学习(二)
    Google Chart API学习(一)
  • 原文地址:https://www.cnblogs.com/ppzhang/p/9791423.html
Copyright © 2011-2022 走看看