详解Centos7服务器上使用Uwsgi+Nginx部署Django项目

前提:项目可以正常运行,使用python manage.py runserver 开启项目后,在本地能够访问的到!

1.Uwsgi部署

uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器。uWSGI代码完全用C编写,效率高、性能稳定。

  • 进入项目虚拟环境安装uwsgi
  • pip install uwsgi
  • 配置uWSGI,在项目目录下创建uwsgi.ini文件,其中服务器地址和端口号要输入你自己的,并且要对外开启端口,配置如下:
  • [uwsgi]
    #使用nginx连接时使用
    #socket=192.*.*.*:8000
    #直接做web服务器使用
    http=192.*.*.*:8000
    #项目目录
    chdir=/www/projects/项目1
    #项目中wsgi.py文件的目录,相对于项目目录
    wsgi-file=项目1/wsgi.py
    processes=4
    threads=2
    master=True
    pidfile=uwsgi.pid
    daemonize=uwsgi.log
  • 启动uwsgi
  • uwsgi --ini uwsgi.ini
  •  查看uwsgi启动情况
  • ps ajx|grep uwsgi
  • 在浏览器输入服务器网址和端口号,如果可以正常访问则配置成功!
  • #你自己的服务器地址和端口号
    http://192.*.*.*:8000/
  • 关闭uwsgi(不想使用的话可以用此命令关闭)
  • uwsgi --stop uwsgi.pid

2.Nginx部署

使用nginx的作用主要包括负载均衡、反向代理。

  • 在uwsgi.ini中将配置中启用socket,禁用http。
  • [uwsgi]
    #使用nginx连接时使用
    socket=192.*.*.*:8000
    #直接做web服务器使用
    #http=192.*.*.*:8000
    #项目目录
    chdir=/www/projects/项目1
    #项目中wsgi.py文件的目录,相对于项目目录
    wsgi-file=项目1/wsgi.py
    processes=4
    threads=2
    master=True
    pidfile=uwsgi.pid
    daemonize=uwsgi.log
  • 关闭uwsgi,并重新开启
  • # 关闭
    uwsgi --stop uwsgi.pid
    # 开启
    uwsgi --ini uwsgi.ini
  • 下载linux版的nginx后上传到服务器上,解压缩。nginx下载地址http://nginx.org/
  •  
  • 下载后上传到自己的服务器上再进行解压(进入服务器中存放nginx压缩包的目录进行nginx解压
  • tar zxvf nginx-1.6.3.tar.gz
  •  进入解压后的nginx-1.6.3目录,依次执行以下命令进行编译安装
  • # 编译安装
    ./configure
    make
    sudo make install
  •  默认安装到/usr/local/nginx/目录,进入此目录
  • cd /usr/local/nginx/
  •  nginx默认的是80端口,若在启动时报错,很可能就是端口被占用了,我们更改一下端口即可。
  • 若启动正常,按照以下步骤执行
  • 启动nginx
  • sudo sbin/nginx
  •  查看nginx进程
  • 打开浏览器,输入如下网址: http://192.*.*.*:80 (80 是nginx的默认端口,若不能访问,先查看一下服务器是否对外开启了80端口)
  • 如果可以正常访问则说明nginx安装成功,接下来就可以配置我们的项目。
  • 关闭nginx
  • sudo sbin/nginx -s stop
  • 没有报错的可以直接跳过下面的步骤
  • *******************************************************************************************************************************************
  • 如果报错:80端口被占用,我们则需要重新为nginx开启一个端口,我这里以端口8001为例
  • 在服务器上开启8001端口
  • # 运行命令:
    firewall-cmd --get-active-zones
    # 运行完成之后,可以看到zone名称
    # 开启端口号
    firewall-cmd --zone=public --add-port=8001/tcp --permanent
    # 重启防火墙,运行命令:
    firewall-cmd --reload
    # 查看端口号是否开启,运行命令:
    firewall-cmd --query-port=8001/tcp
  • 修改打开conf/nginx.conf文件
  • vim /usr/local/nginx/conf/nginx.conf
  • 将server节点下 listen 的端口号由80改为8001
  • 重新开启nginx即可
  • sudo sbin/nginx
  • *******************************************************************************************************************************************
  • nginx能够正常开启之后,我们就可以让nginx指向我们的uwsgi项目
  • 打开conf/nginx.conf文件
  • vim /usr/local/nginx/conf/nginx.conf
  • 在server节点下添加新的location项,指向uwsgi的ip与端口。
  • location / {
                #将所有的参数转到uwsgi下
                include uwsgi_params;
                #uwsgi的ip与端口
                uwsgi_pass 192.*.*.*:8000;
            }
  • 并在server节点下添加新的location项,用于处理静态文件。(所有的静态文件都会由nginx处理,不会将请求转到uwsgi)
  •  location /static {
            alias /www/projects/项目1/static/;
        }
  • 添加完成后是这样的结构
  • ....... 
    keepalive_timeout  65;
        #gzip  on;
        server {
            listen       8001;
            server_name  localhost;
    
            #charset koi8-r;
            #access_log  logs/host.access.log  main;
            #location / {
            #    root   html;
            #    index  index.html index.htm;
            #}
    
            location / {
                #将所有的参数转到uwsgi下
                include uwsgi_params;
                #uwsgi的ip与端口
                uwsgi_pass 192.*.*.*:8000;
            }
    
            location /static {
                alias /www/projects/项目1/static/;
            }
    .......
    
  • 修改项目1中static目录的权限。
  • sudo chmod 777 /www/projects/项目1/static/
  • 修改 项目1/项目1/settings.py文件,添加 STATIC_ROOT
  • BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    
    STATIC_URL = '/static/'
  • 收集所有静态文件到static_root指定目录。在项目目录下执行下面的语句,按YES下一步
  • python manage.py collectstatic
  • 重新启动nginx服务(确保uwsgi服务已经开启)
  • # 关闭
    sudo sbin/nginx -s stop
    # 开启
    sudo sbin/nginx
  • 在本地浏览器中输入http://192.*.*.*:8001,如果可以正常访问则部署成功。如果访问失败请查看(8000、80或8001端口是否对外开启),uwsgi和nginx服务是否成功开启!

部署完毕,祝君成功!

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值