• django+uwsgi+nginx+sqlite3部署+screen


    note:可通过该命令查找文件未知

    sudo find / -name filename

    一:项目(github) 

     ssh root@server ip               #  连接你的服务器

     git clone -b https://mygithub.com     #  -b 指定分支

    安装virtualenv及配置环境变量     详细见:https://www.cnblogs.com/tangpg/p/8458233.html

    mkvirtualenv envname -p python3 # 创建项目使用的python版本的虚拟环境,创建成功默认回进入该虚拟环境
    pip install -r requirements.txt  # 安装项目依赖
    python manage.py runserver  # 保证项目能够运行

     note:!!!

    使用数据库为sqlite3可能会出现如下错误:
    django.db.utils.NotSupportedError: URIs not supported
    应该修改根据错误提示的路径下的base.py文件
    if self.features.can_share_in_memory_db:
                kwargs.update({'uri': True})  # 将此处的True改为False
            return kwargs

    二:配置uwsgi

    pip install uwsgi   # 安装

    在项目根目录创建 uwsgi.ini 名字自取

    [uwsgi]
    # 取决于nginx配置 upstream
    socket          = 127.0.0.1:9000
    socket          = 127.0.0.1:9001
    # 项目根目录
    chdir           = /home/jason/projectName# Django的wsgi文件
    module       = projectName.wsgi
    # Python虚拟环境的路径
    home            = /home/user/.virtualenvs/envname/bin/python
    # 进程相关的设置
    # 主进程
    master          = true
    # 最大数量的工作进程
    processes       = 1  # 感觉跟服务器cpu有关,反正我单核设置成2就会导致浏览特别慢
    # 设置socket的权限
    chmod-socket    = 666
    # 退出的时候是否清理环境
    vacuum          = true
    # 静态文件 绝对地址
    static-map = /static=/home/user/projectName/static

    三:nginx 配置

    安装nginx    详情:https://www.cnblogs.com/tangpg/p/8962773.html

    配置环境变量,编辑/etc/profile 增加如下内容:
    
    NGINX_HOME= /usr/local/nginx
    
    export PATH=$PATH:$NGINX_HOME/bin
    
    source /etc/profile   # 重启配置信息
    mkdir conf.d  # 在nginx.conf目录下创建文件
    cd conf.d  # 进入
    touch project.conf  # 创建nginx配置文件,配置此项目的配置信息
    在nginx.conf中的http块的最后面, include usr/local/nginx/conf/conf.d/project.conf # 将该配置文件加载到nginx.conf配置中
    nginx -s reload # 重启nginx服务 如果没有权限,切换为root用户重启
    upstream anyname {
        server 127.0.0.1:9000 weight=3;  # 两台服务器 与 wsgi配置相关  weight=3, 9000端口处理3个请求,9001处理第四个请求。以此循环
        server 127.0.0.1:9001;
    }
    
    # 配置服务器
    server {
        # 监听的端口号,通过服务器ip监听的端口
        listen      80;
        # 域名 or ip
        server_name your server ip;
        charset     utf-8;
    
        # 最大的文件上传尺寸
        client_max_body_size 75M;
    
        # 静态文件访问的url, nginx再次加载静态文件
        location /static {
            # 静态文件地址
            alias /home/user/projectName/static;
        }
    
        # 最后,发送所有非静态文件请求到django服务器
        location / {
            include uwsgi_params;
    # uwsgi_pass 127.0.0.1:9000; # uwsgi.ini 的socket参数相同 or
    uwsgi_pass anyname; # upstream anyname
         uwsgi_param UWSGI_SCRIPT projectName.wsgi; # wsgi.py文件
         uwsgi_param UWSGI_CHDIR /home/user/projectName; # 指定项目目录
         index index.html index.html;
         client_max_body_size 35m; } }

    四:启动uwsgi

    uwsgi --ini uwsgi.ini

     

    就可以通过 服务器域名或ip访问了

    但是这样会有个问题,断开ssh连接,改进程也就被kill了。为此,我们可以使用screen

    五:  screen

    yum install screen

    出现该错误:

    Error downloading packages: ...

    执行 : yum clean all, 再重yum ...  我就ok了。

     常用命令:

    screen -S qugemingzi  # 创建会话窗口,并取名
    Ctrl+a+d  # 暂时退出窗口
    exit # 结束会话
    screen -r qugemingzi # -r + name回到之前的窗口 查看会话列表: screen -ls 恢复之前离开的会话:screen -r 会话名或进程号 清除dead状态的会话:screen -wipe 启动一个开始就是Detached状态的会话:screen -dmS 名字 命令

     1.创建一个会话窗口:screen -S name

    2.在次窗口中运行第四不命令: uwsgi --ini uwsgi.ini

    3. 将该会话挂起: Ctrl + a + d 

    这样断开ssh 连接,也不会中断进程了。。。

    perfect...

  • 相关阅读:
    轻松管理您的网络password
    尝到awk
    重载虚函数的相关问题
    阿赫亚web安全JSON
    SplitContainer如何实现左侧导航,正确显示和导航内容
    POJ 3450 Corporate Identity KMP解决问题的方法
    virtio-blk分析
    JavaScript权威指南科03章 种类、值和变量(1)
    iOS开展-Xcode技巧总结(持续更新)
    POI设置边框
  • 原文地址:https://www.cnblogs.com/tangpg/p/9625567.html
Copyright © 2020-2023  润新知