django+uwsgi+nginx+sqlite3部署

Posted .Tang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django+uwsgi+nginx+sqlite3部署相关的知识,希望对你有一定的参考价值。

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...

以上是关于django+uwsgi+nginx+sqlite3部署的主要内容,如果未能解决你的问题,请参考以下文章

Install Python+Django+Nginx+UWSGI

使用 Docker 部署 Nginx + Uwsgi

django1.11.6+nginx1.12.2+uwsgi2.0.15 部署 | autoops 生产环境部署指南

Django部署——uwsgi+Nginx(超详细)

Django + Uwsgi + Nginx 实现生产环境部署

通过 Nginx 的 uwsgi + django - uwsgi 设置/生成?