nginx+uwsgi+django+virtualenv+supervisor发布web服务器

1.uWSGI命令学习与使用

1.1使用uWSGI启动图书管理系统项目,支持多进程

nginx+uwsgi+django+virtualenv+supervisor发布web服务器

1.2使用pip安装uwsgi模块

pip3 install uwsgi

1.3uwsgi的hello world测试

1.3.1创建文件vim /opt/testuwsgi.py 写入以下内容

cd /opt/
vim wsgitest.py
# 写入下面内容
def application(env, start_response):
    start_response(‘200 OK‘, [(‘Content-Type‘,‘text/html‘)])
    return [b"Hello World"]

1.3.2使用uwsgi命令启动此文件

uwsgi --http :9000 --file testuwsgi.py

在浏览器通过IP加端口进行访问

http://你自己服务器的ip:9000/
即可看到浏览器上打印的内容

nginx+uwsgi+django+virtualenv+supervisor发布web服务器

1.4配置uwsgi.ini文件

在django项目根目录下(manage.py同级目录)创建这个文件

[uwsgi]
#使用nginx连接时使用,Django程序所在服务器地址
# socket=0.0.0.0:9000
#直接做web服务器使用,Django程序所在服务器地址
http=0.0.0.0:9000
#项目目录
chdir=/opt/django_zuoye2
#项目中wsgi.py文件的目录,相对路径,相对于上面的项目目录
wsgi-file=django_zuoye2/wsgi.py
# 进程数
processes=1
# 线程数
threads=2
# uwsgi服务器的角色
master=True
# 存放进程编号的文件
pidfile=uwsgi.pid
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的
# 如果启用了supervisor工具,就将此行注释
daemonize=uwsgi.log
# 指定依赖的虚拟环境
virtualenv=/root/Envs/book_manage_env

注意: 目前暂时先用http,如果使用nginx的话,就需要注释掉http,启用socket

1.5使用uwsgi命令启动django程序

uwsgi --ini /opt/django_zuoye2/uwsgi.ini

前端访问:http://你自己服务器的ip:9000/book_list/
nginx+uwsgi+django+virtualenv+supervisor发布web服务器
会发现没有样式,因为uwsgi不能处理静态文件,下面我们就需要用到nginx

1.6 uwsgi启动后无法访问的问题解决

修改项目里面的wsgi.py文件,将settings的配置指向dev.py

vim /opt/django_zuoye2/django_zuoye2/wsgi.py

修改配置文件

os.environ.setdefault(‘DJANGO_SETTINGS_MODULE‘, ‘django_zuoye2.settings‘)

1.7uwsgi不能处理静态文件

wsgi本身是支持高并发,多进程的功能,这是它的优点

缺点:  不能处理静态文件

1.8收集django的静态文件

由于uwsgi对静态文件的处理很差,然而nginx处理静态文件是一把手,所以我们的项目部署还需要结合nginx来使用

1.8.1设置django的静态文件目录并收集, 打开mysite/settings.py, 加入这一项配置

STATIC_ROOT=‘/opt/django_zuoye2/static‘  # 在STATIC_URL = ‘/static/‘配置上面加这一行
STATIC_URL = ‘/static/‘
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,"static"),
]

那么,上述的参数STATIC_ROOT用在哪?看下面

1.8.2通过python3 manage.py collectstatic 收集所有你使用的静态文件保存到STATIC_ROOT

python manage.py collectstatic

# STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来
# 把这些文件放到一起是为了用nginx等部署的时候更方便

1.8.3查看django的静态文件收集目录

ls /opt/django_zuoye2/static

1.9完成nginx的安装并配置nginx

1.安装nginx需要的依赖库yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel


1.下载源码包
wget -c https://nginx.org/download/nginx-1.16.0.tar.gz
2.解压缩源码
tar -zxvf nginx-1.16.0.tar.gz
3.配置,编译安装  开启nginx状态监测功能
cd /opt/nginx-1.16.0/
./configure --prefix=/opt/nginx116/ --with-http_ssl_module --with-http_stub_status_module 
make && make install 

1.9.1nginx.conf配置文件详情

配置之前,需要将项目目录下的uwsgi.ini中的文件socket注释释放出来,同时将http注释掉

socket=0.0.0.0:9000
#http=0.0.0.0:9000

启动

uwsgi uwsgi.ini

修改 /opt/nginx116/conf/nginx.conf文件

server {
    listen       80;
    server_name  192.168.252.128; #目前在本地,后续有域名直接换成你自己的域名即可
    #charset koi8-r;
    #access_log  logs/host.access.log  main;

    location / {
        include uwsgi_params;
        uwsgi_pass 0.0.0.0:9000;
    }
    location /static {
        root   /opt/django_zuoye2;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

虚拟主机: 用于接受用户发起的80端口的请求,反向代理转发给9000的uwsgi应用, 同时处理后端的静态文件static

nginx+uwsgi+django+virtualenv+supervisor发布web服务器

上一篇:进击的 CSS 渐变


下一篇:js_mongobd