zoukankan      html  css  js  c++  java
  • mxonline实战17,上线部署

    在线演示: http://47.244.22.82

    python3+django2.0的环境

    需要安装的库
    pip install django-simple-captcha django-pure-pagination

    Ueditor安装注册
    到github中搜索djangoueditor,发现一个liyaopinner/DjangoUeditor3_imooc
    下载后把DjangoUeditor文件夹放在python指定目录下,我的是D:Program Filespython3.5Libsite-packages

    linux中路径查看方式,进入python3命令行后执行

    >>> from distutils.sysconfig import get_python_lib
    >>> print(get_python_lib())

     一般是/usr/lib/python3/dist-packages
     
     
     
     
    一. 准备工作
     
    1. 正式环境安装好nginx后,配置文件在/etc/nginx/sites-enable,默认访问首页放在/var/www/html中
    当访问该地址的时候,nginx 会按照 index.html,index.htm ,index.php 的先后顺序在根目录中查找文件。如果这三个文件都不存在,那么nginx就会返回403 Forbidden。
     
     
    2. 如果某个包下载的比较慢,可以试试豆瓣源,比如pip install -i https://pypi.douban.com/simple pillow==3.4.1
     
    3. http://projectsedu.com/  讲解通过nginx和uwsgi部署django应用
     
    4. 准备虚拟环境
    windows安装
    pip install virtualenv,pip install virtualenvwrapper-win
     
    ubuntu16安装
    pip3 install virtualenv virtualenvwrapper
    在~/.bashrc中添加
    export WORKON_HOME=$HOME/.virtualenvs 
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 
    source /usr/local/bin/virtualenvwrapper.sh
    重新加载.bashrc文件
    source  ~/.bashrc
     
    保存退出后,建立一个目录来存放虚拟环境
    mkdir $HOME/.virtualenvs
     
    新建虚拟环境
    mkvirtualenv mxonline
     
    进入虚拟环境
    workon mxonline
     
    测试环境中mxonline如果是跑在虚拟环境中的,使用pip list查看该项目安装了那些第三方包,然后使用pip freeze > requirements.txt把这些第三方包的名字导出来,然后把此文件拷贝到linux正式的虚拟环境中,使用pip install -r requirements.txt就可以全部安装了
     
     
     
    5. linux数据库中新建库mxonline3, 然后用navicat把原先的数据传过来
     
     
     
     
    二. 服务器配置
     
    1. 安装uwsgi
    pip install uwsgi
     
     
    2. 测试uwsgi
    uwsgi --http :8000 --module MxOnline.wsgi
     
     
    3. 配置nginx
    在项目目录中新建conf/uc_nginx.conf
     
    upstream django {
    server 127.0.0.1:8000 ;
    }
     
    server {
    listen      80;
    server_name 你的ip地址 www.mxonline.com;  #也可以指定对应域名
    charset     utf-8;
     
    # max upload size
    client_max_body_size 75M;   # adjust to taste
     
    # Django media
    location /media  {
        alias 你的目录/Mxonline/media;  # 指向django的media目录
    }
     
    location /static {
        alias 你的目录/Mxonline/static; # 指向django的static目录
    }
     
    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     uwsgi_params; # the uwsgi_params file you installed
    }
    }
     
     
    4. 将该配置文件加入到nginx的启动配置文件中
    sudo ln -s 你的目录/Mxonline/conf/nginx/uc_nginx.conf /etc/nginx/conf.d/
     
     
    5. 拉取所有需要的static file 到同一个目录
    在django的setting文件中,添加下面一行内容:
    STATIC_ROOT = os.path.join(BASE_DIR, "static/"),同时注释掉之前的STATICFILES_DIRS = (...)
       
    运行命令
        python manage.py collectstatic
     
     
    6. 运行nginx
    sudo /usr/sbin/nginx
    这里需要注意 一定是直接用nginx命令启动, 不要用systemctl启动nginx不然会有权限问题
     
     
    7. 通过配置文件启动uwsgi,根据情况自行修改
    在项目目录Mxonline中,新建conf/uwsgi.ini 配置文件, 内容如下:
     
        # mysite_uwsgi.ini file
        [uwsgi]
     
        # Django-related settings
        # the base directory (full path)
        chdir           = 你的目录/MxOnline
        # Django's wsgi file
        module          = MxOnline.wsgi
        # the virtualenv (full path)
     
        # process-related settings
        # master
        master          = true
        # maximum number of worker processes
        processes       = 10
        # 使用socket的启动方式,比http更高效
        socket          = 127.0.0.1:8000
        # ... with appropriate permissions - may be needed
        # chmod-socket    = 664
        # clear environment on exit
        vacuum          = true
        # 你的虚拟环境目录
        virtualenv = /home/bobby/.virtualenvs/mxonline 
        logto = /tmp/mylog.log
     
    注:
        chdir: 表示需要操作的目录,也就是项目的目录
        module: wsgi文件的路径
        processes: 进程数
        virtualenv:虚拟环境的目录
     
    workon mxonline
    uwsgi -i 你的目录/Mxonline/conf/uwsgi.ini &
     
     
    8.  windows上测试用未注册域名访问linux上部署的项目
    c/windows/system32/drivers/etc/HOSTS文件中添加
    47.52.136.86    www.mxonline.com  # 当访问域名时自动跳转到ip地址,因为我们之前在nginx配置文件中添加了这个域名,所以可访问
     
     
    9. pkill -f uwsgi 会自动重启uwsgi,在修改配置文件时可用
     
     
    10. 正式上线后需要修改的配置
    settings.py中修改
    DEBUG=False
    ALLOWED_HOSTS = ['*']
     
    项目urls.py中添加如下,使样式和图片生效
    from mxonline.settings import STATIC_ROOT
    re_path('static/(?P<path>.*)', serve, {"document_root": STATIC_ROOT}),
     
     
    11. 当使用centos普通用户部署环境的时候,有时会出现502错误,是权限问题,只需要修改/etc/nginx/nginx.conf第一行 user root,然后重启nginx:/usr/sbin/nginx -s reload
     
     
    12设置自定义的404, 500页面(经测试可成功设置自定义404)
  • 相关阅读:
    JAVA并发-CountDownLatch
    【转载】Makedown数学公式语法
    算法的时间复杂度
    JVM-卡表(Card Table)
    sync.WaitGroup的使用以及坑
    go 多协程爬取图片
    go ioutial 读取写入文件
    go 下载图片
    go 正则 爬取邮箱代码
    go 解析path
  • 原文地址:https://www.cnblogs.com/regit/p/9603002.html
Copyright © 2011-2022 走看看