uwsgi + nginx django云端部署设置

想看安装步骤的跳到第二步
第一步有什么用我也不知道

一、整一个流程大概这样

在这里插入图片描述

二、步骤

2.1 pip install uwsgi

2.2 创建目录

在项目根目录下创建 deploy 目录来装 uwsgi 的配置文件和log
在这里插入图片描述

2.3 创建 uwsgi_conf.ini 文件

关于socket,其实并没有那么复杂,这里是用与nginx通信用,该端口与实际项目内的配置无关,可以自行设置,并且不可以占用nginx的 listen 端口,就这样。

# uwsgi_conf.ini
[uwsgi]
# 选择内网IP和端口,别搞个啥域名的出来,在本地通讯就好了
socket=localhost:8001

# 项目根目录
chdir=/home/user1/projects/classonline

#项目中wsgi.py文件的相对目录
wsgi-file=classonline/wsgi.py

# 进程数
processes=2

# 线程数
threads=2

# uwsgi服务器的角色
master=True

# 存放进程编号的文件 启动时自动按照该配置创建
pidfile=uwsgi.pid

# 日志文件
daemonize=logs/uwsgi.log

# 指定虚拟环境所在目录,不能填相对目录
virtualenv=/root/pythonenvs/django22

2.4 安装 nginx

在安装 nginx 的时候出现了错误,大概是跟 redis 有关,如果出现了错误,请安装好并启动 redis,如果有且服务已启动直接跳过,灵活一点

  1. 安装redis :apt install redis-server
  2. 启动redis :service redis-server start
  3. 安装ngnix :apt install nginx
  4. 配置nginx,/etc/nginx/conf.d/default.conf
upstream classonline {
    
    
	# 此处为uwsgi运行的ip地址和端口号
	server localhost:8001;
}


server {
    
    
    # 监听端口
    listen      80;

    # 服务器域名或者ip地址,填好了 这里非常重要,只能写一个,不然云服务器不通,我也不知道原因,反正就写着吧
    server_name yejue.com;

    # 编码
    charset     utf-8;

    # 文件最大上传大小
    client_max_body_size 75M;

    # 媒体文件 你项目配置的media 绝对路径
    location /media  {
    
    
        alias /home/user1/projects/classonline/media;
    }

    # 静态文件 你项目配置的static 绝对路径
    location /static {
    
    
        alias /home/user1/projects/classonline/static;
    }

    # 主目录
    location / {
    
    
        uwsgi_pass  classonline;   			# 这里跟上面一样就ok
        include    /etc/nginx/uwsgi_params;	# 这里不要乱动
    }
}

  1. 测试是否可用(注意命令执行的路径与name,不是上面那个default)
    $ nginx -t -c /etc/nginx/nginx.conf
    在这里插入图片描述
  2. 运行 nginx,
$ service nginx start
  1. 可以重新加载配置
$ nginx -s reload -c /etc/nginx/nginx.conf

2.5 运行 uwsgi

# $ 是指在命令行执行

# &代表后台运行,不要也没关系
$ uwsgi uwsgi_conf.ini &

# 停止。 其中uwsgi.pid 是自己生成的,存放了uwsgi的pid信息,对应上面的uwsgi配置
$ uwsgi --stop uwsgi.pid 
# 也可以 ps -ef | grep uwsgi,然后暴力kill
kill -9 pid

三、有个坑爹问题

uwsgi + nginx 配置之后curl可以访问,浏览器不可访问,这让我一脸懵逼,配置了一天一夜没找到原因,翻了很多文档也没有说。

众所周知 curl 其实就是个可以访问域名返回网页的东东,类似于 requests.get

后来发现 Chrome 不知道为什么缓存了,看了一天一夜的文档找不出毛病,换了个浏览器,居然显示正常。

如果真要用Chrome访问,可以尝试一下清理各种缓存。我舍不得清理,于是用selenium召唤了一个全新的chrome,完结撒花了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39177678/article/details/108253738