ubuntu django+uwsgi+nginx服务器部署

django配置

  • 项目settings中要修改以下内容:
DEBUG = False  # 上线必须是False,此时静态文件全部失效
ALLOWED_HOSTS = ['*']  # 允许任意ip访问
# 静态文件交给nginx处理,配置静态文件的路径
STATIC_ROOT = '/var/www/项目名/static'
STATIC_URL = '/static/'
# 静态文件的目录配置保留
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 在项目的根目录(和manage.py同级目录内),新建uwsgi.ini文件,具体内容如下:
[uwsgi]
# 使用nginx连接时使用
socket = 127.0.0.1:8080  
# 项目目录,服务器上的所在路径
chdir = /home/hy/Desktop/ganji_webserver
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file = ganji_web/wsgi.py
processes = 4  # 四个工作进程
threads = 2  # 每个进程两个线程 
master = True  # 1个主进程
pidfile=uwsgi.pid  # 进程id存放文件
daemonize=uwsgi.log  # 进程守护日志
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

uwsgi的配置

  • 安装
    pip install uwsgi

  • 启动测试,要在uwsgi.ini所在的目录下运行
    uwsgi --ini uwsgi.ini
    然后通过ps aux|grep uwsgi 查看是否有进程,应当一共5个。

  • 访问127.0.0.1:8080
    有可能出现服务器错误的提示,是因为如果使用的虚拟环境,wsgi找不到虚拟环境的路径,要单独配置。
    打开wsgi.py,在django.core.wsgi导入之前,将路径添加到sys.path中。注意找对自己的django所在位置
import sys

sys.path.append('~/.virtualenvs/ganji_web_dj/lib/python3.5/site-packages/django')
from django.core.wsgi import get_wsgi_application
 
 
  • 1
  • 2
  • 3
  • 4
  • 配置上述完成后,需要重启服务器
  • ps -e 查看进程对应的pid
    uwsgi --stop uwsgi.pid 关闭
    uwsgi --ini uwsgi.ini 启动

nginx

  • 官方下载,拷贝至服务器解压缩
  • ubuntu安装时如果提示 error: the HTTP rewrite module requires the PCRE library,需要安装需要安装 pcre 包。
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
# 你可能还需要安装
sudo apt-get install openssl libssl-dev
 
 
  • 1
  • 2
  • 3
  • 4
  • 进入解压的nginx目录内执行以下命令安装
./configure
make
sudo make install
 
 
  • 1
  • 2
  • 3
  • 默认安装到了/usr/local/nginx目录
  • 进入上述目录启动:sudo sbin/nginx默认80端口
  • 打开浏览器,输入地址127.0.0.1/访问看到nginx的欢迎页面
  • 修改配置文件nginx/conf/nginx.conf
    在server节点下添加新的location,指向uwsgi的ip和端口
# 将原有的location / 注释掉
location / {
    # 将所有的参数转到uwsgi下
    include uwsgi_params;
    # uwsgi的ip和端口
    uwsgi_pass 127.0.0.1:8080;
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 静态文件处理。所有的静态文件交由nginx处理,不会将请求转到uwsgi
    还是上边的nginx.conf文件,sudo vim conf/nginx.conf
location /static{
    alias /var/www/项目名/static;
}
 
 
  • 1
  • 2
  • 3
  • 在服务器创建以上的项目目录
    `sudo mkdir -vp /var/www/项目名/static
  • 修改目录权限
    sudo chmod 777 /var/www/项目名/static
  • 收集所有静态文件到static_root 指定目录
    python manage.py collectstatic
    查看 ‘/var/www/项目名/static’ 下已经保存的静态文件是否完整
  • 重启nginx
sudo sbin/nginx -s stop  # 关闭
sudo sbin/nginx  # 启动
 
 
  • 1
  • 2
  • 以上针对非root用户情况的设置

配置多个web应用

  • 修改nginx.conf文件,直接添加多个server,以不同的端口对应不同的web服务,每个server中的uwsgi对应不同的端口
  • 每个项目中的uwsgi.ini文件设置不同的端口号,同一个ip地址,启动了多个uwsgi服务进程(还有只启动一个进程,运行多个web应用的方法)

静态文件处理

  • static_root 的设置是为了在运行collectstatic时,知道将静态文件收集到何处
  • 如果直接在服务器上执行git pull 更新代码,静态文件直接使用python manage.py collectstatic即可,将静态文件更新至对应目录,浏览器访问时,所有静态文件都可获取到

指定nginx的配置文件

  • 如果需要为某个应用单独创建一个配置文件,在/user/local/nginx/conf内单独创建一个文件夹vhost,在其内创建单位的conf文件,如:mao.conf,其中单独写server,如下所示:
server {

        listen 8002;
        server_name 192.168.5.199;
    location /static {
        autoindex on;
        alias /data/tdsd/static/;

}
        location / {
                uwsgi_send_timeout 300;
                uwsgi_connect_timeout 300;
                uwsgi_read_timeout 1800;
                proxy_pass http://127.0.0.1:8101;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_read_timeout 35s;
                include uwsgi_params;
                access_log /var/logs/tdsd_server.log;

        }

}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 然后在/user/local/nginx/conf内的nginx.conf中的http**最后一行**加上需要的配置的路径:include /usr/local/nginx/conf/v_host/*.conf;

root用户

  • 此时,需要有python和对应python版本的uwsgi存在,很可能会出现找不到python解释器的情况
  • 安装uwsgi时,注意使用pip3,否则安装的是对应python2版本的
  • uwsgi --python-version查看python版本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值