Nginx--------Django基础部署

本地部署

uWSGI

在部署之前,我们得先了解几个概念

  • wsgi web应用程序之间的接口。它的作用就像是桥梁,连接在web服务器和web应用框架之间。

  • uwsgi 是一种传输协议,用于定义传输信息的类型。

  • uWSGI 是实现了uwsgi协议WSGI的web服务器。

 

Django运行流程

 

Django部署基础流程图

 

nginx基础概念

Nginx: 支持高并发,高性能web服务器
    正向代理:具体知道目标,代理客户端,目标用户不知道客户端,例如访问国外网站

    反向代理:不知道具体目标,只知道一个地址,代理服务器,例如访问百度网站

    负载均衡:让每台服务器受的压力是一样的,轮询机制

 

配置Settings文件

DEBUG = False # 关闭debug调试
​
ALLOWED_HOSTS = ['*'] # 允许任何域方法

 

收集静态文件

# 静态文件
STATIC_URL = '/static/'
# 注释掉
#STATICFILES_DIRS = [
#    os.path.join(BASE_DIR, 'static')
#]
STATIC_ROOT = os.path.join(BASE_DIR,'static/')      # 添加这行代码
# 收集静态文件命令,会在<项目路径>/static 下看见admin文件,里面收集了静态资源
python manage.py collectstatic     

 

安装uwsgi

pip install uwsgi

 

新建uwsgi.ini配置文件

#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接
socket = 127.0.0.1:8000
#配置项目路径,项目的所在目录 (注意:修改你自己路径)
chdir = /Desktop/1907/test/test_common
#配置wsgi接口模块文件路径 (注意:修改你自己路径)
wsgi-file = test_common/wsgi.py
#配置启动的进程数
processes = 4
#配置每个进程的线程数
threads = 2
#配置启动管理主进程
master = True
#配置存放主进程的进程号文件
pidfile = uwsgi.pid
#配置dump日志记录
daemonize = uwsgi.log
# 虚拟环境(注意:修改你自己路径)
virtualenv = /home/ubuntu/.virtualenvs/django_env

启动uwsgi

uwsgi --ini uwsgi.ini

重启uwsgi

uwsgi --reload uwsgi.pid

关闭uwsgi

uwsgi --stopu uwsgi.pid

 

安装nginx

  • ubuntu
sudo apt install nginx
  • Mac
xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install nginx

 

配置nginx

vim  /etc/nginx/nginx.conf

user www-data;改成 user root;

注意:在nginx.conf 文件中会看到http {...}等信息,下面的代码一定要拷贝到http {...}大括号里面,根据下面提示更改你自己的文件路径即可

# configuration of the server
server {
    # 你的网站监听的端口,此处先用8000端口测试,正式部署可以改为80或其他
    listen      80;
    # 你的网站的域名,或者你的服务器公网ip(注意更改你自己的ip)
    server_name *.com;     # substitute your machine's IP address or FQDN
    
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    # Django media
    location /media  {
        alias /home/mysite/media;  # 你的media的文件目录(注意更改你自己的文件路径)
    }

    # Django static
    location /static {
        alias /home/mysite/static; # 你的项目收集的静态文件目录(后边会将收集静态文件)(注意更改你自己的文件路径)
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  127.0.0.1:8000;
        include     uwsgi_params;        # uwsgi_params 文件所在目录
    }
}

启动nginx服务器

/etc/init.d/nginx start

重启nginx服务器

/etc/init.d/nginx restart

停止nginx服务器

/etc/init.d/nginx stop

 

远程部署(Ubuntu举例)

ssh root@ip
#ssh root@39.105.46.49

更新服务器

sudo apt update
sudo apt upgrade

安装pip3

sudo apt install python3-pip

安装虚拟环境

sudo pip3 install virtualenv

sudo pip3 install virtualenvwrapper

配置文件.bashrc
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

source .bashrc

安装Mysql

sudo apt install mysql-server

安装Nginx

sudo apt install nginx

安装依赖

# 从本地项目所需要安装的依赖包重定向requirement.txt文件中,自己挑选有用的包
pip freeze > requirements.txt       

# 把requirements.txt上传到服务器,执行安装
pip install -r requirements.txt

pip install  uwsgi

上传代码

Mac或者Ubuntu可以用scp
scp -r xxx.zip root@39.99.142.133:/root

Windows可以用winscp

或者可以用git(推荐)

错误解决

如果遇到静态资源报403错误,把nginx配置文件

user www-data;改成 user root;

 

现在就可以输入你的IP或域名访问你的网站了,快去试试吧

其他相关说明

查看进程
ps -aux | grep uwsgi
ps -aux | grep nginx
killall -9 uwsgi        # 关闭uwsgi服务器
killall -9 nginx        # 关闭nginx服务器


只要一改uwsgi.ini配置文件,需要重启uwsgi服务器
只要一改nginx.conf配置文件,需要重启Nginx服务器


uwsgi --ini uwsgi.ini         # 启动uwsgi服务器
uwsgi --reload uwsgi.pid      # 重启uwsgi服务器
uwsgi --stopu uwsgi.pid       # 关闭uwsgi服务器


/etc/init.d/nginx restart    # 重启nginx服务器
/etc/init.d/nginx start      # 启动nginx服务器
/etc/init.d/nginx stop       # 停止nginx服务器

cat /var/log/nginx/error.log        # 查看nginx错误日志

cd <uwsgi.ini配置文件所在的路径>           
cat uwsgi.log                       # 查看uwsgi的错误日志

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值