57- 项目 -19 - 部署

一.  把代码部署到服务器上

        不要和静态文件服务器部署到一起,否则后期nginx会冲突

        1. 打包第三方库
pip freeze > requirements.txt # 打包第三方库
        2. 将代码拷贝到服务器上

        3. 新建虚拟环境安装第三方库
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 下载第三方库
        4. 编辑分词的文件,重新生成索引数据

                虚拟环境中找到分词文件,编辑分词的文件,重新生成索引数据

                否则会报错

        5. 更改支付查询调用的函数里面的沙箱路径

                使用支付宝沙箱模式,记得更改支付查询调用的函数里面的沙箱路径

                否则会报错

        6. 运行

                能启动就代表成功

python3 manage.py runserver 0.0.0.0:8000
        7. 浏览器访问
http://192.168.37.152:8000/user/login

# 访问被拒绝
    # (1). 配置settings.py
	#    ALLOWED_HOSTS = [] 设置为 ["*"],否则访问不到
	# (2). 检查防火墙(关闭 或者 开放8000端口) 
    # 其他报错就百度一下

二. uwsgi作为web服务器

1. 安装uwsgi
pip install uwsgi
2. 配置 settings.py
DEBUG=False
ALLOWED_HOSTS=['*']
3. 在项目根目录新建配置文件 uwsgi.ini
        [uwsgi]
		#使用nginx连接时使用
		# socket=你刚刚查到的本地ip地址:8000
		 
		#直接做web服务器使用 python manage.py runserver ip:port
		http=192.168.37.152:8000
		 
		#项目目录
		chdir=/dddd/django20
		 
		#项目中wsgi.py文件的目录,相对于项目目录
		wsgi-file=django20/wsgi.py
		 
		# 指定启动的工作进程数
		processes=4
		 
		# 指定工作进程中的线程数
		threads=2
		 
		# 开启主进程模式--uwsgi服务器的角色   uwsgi做主进程,关闭该进程其他相关进程也会被杀掉
		master=True
		 
		# 保存启动后主进程的pid
		pidfile=uwsgi.pid
		 
		# 设置uwsgi后台运行,uwsgi.log保存
		daemonize=uwsgi.log

		#虚拟开发环境路径(可以不写)
		virtualenv = /dddd/myproject
4. uwsgi启动和停止
启动: uwsgi --ini 配置文件路径 # 例如: uwsgi --ini uwsgi.ini

停止: uwsgi --stop uwsgi.pid路径 # 例如:uwsgi --stop uwsgi.pid
5. 静态页面问题

        settingspy中debug改为false的时候django就不会默认处理静态文件了,

        所以静态文件不会显示,需要使用nginx处理静态文件

三. 部署-基本部署架构解析

1. uwsgi部署

2. uwsgi + nginx 部署

四. 部署-nginx配置转交请求给uwsgi

        1. 修改uwsgi.ini配置文件
#使用nginx连接时使用
socket=你刚刚查到的本地ip地址:8000 # 打开
 
#直接做web服务器使用 
# http=192.168.37.152:8000  # 注释
        2. 修改nginx配置文件
# 1. 进入文件
cd /usr/local/nginx/conf
vim nginx.conf


# 2. 修改配置文件
server {
        listen       80;
        server_name  localhost;


		location / {
			# 包含uwsgi的请求参数
			include uwsgi_params;
			# 转交请求给uwsgi, uwsgi服务器的ip和端口
			uwsgi_pass 192.168.37.152:8000;
		}
			

		error_page   500 502 503 504  /50x.html;
		location = /50x.html {
			root   html;
		}

		}
           3. 更新项目配置文件
 sudo /usr/local/nginx/sbin/nginx -s reload
            4.  启动nginx 和 uwsgi
// 启动nginx 和 uwsgi
sudo /usr/local/nginx/sbin/nginx
uwsgi --ini uwsgi.ini

// 其他指令
sudo /usr/local/nginx/sbin/nginx -s reload // 重启
sudo /usr/local/nginx/sbin/nginx -s stop// 停止
            5. 浏览器访问
http://192.168.37.152/user/login

        

五. 部署- nginx配置处理静态文件

        1. centos 新建 静态文件目录
mkdir -p /dddd/static
        2. settings.py 配置静态文件路径
# 指定收集静态文件的路径
STATIC_ROOT = 收集的静态文件路径 例如:/dddd/static;
        3. centos 修改文件权限
sudo chmod 777 /dddd/static/
        4. django执行收集静态文件的命令
# 执行命令会把项目中所使用的静态文件收集到STATIC_ROOT指定的目录下。
python manage.py collectstatic
        5. 配置nginx.conf文件
# 1. 进入文件
cd /usr/local/nginx/conf
vim nginx.conf


# 2. 修改配置文件
server {
	...
	
	# nginx配置转交请求给uwsgi
	...

	# nginx处理静态文件
	location /static {
		 # 指定静态文件存放的目录 
            alias   /dddd/static/; # 指定静态文件路径
       }

    }
   6. 更新项目配置文件
 sudo /usr/local/nginx/sbin/nginx -s reload
 7. 浏览器访问
http://192.168.37.152/index

六. nginx 转发请求给另外地址

        项目服务器 和 静态页面服务器使用两个虚拟机区分

1. 配置项目服务器上的 nginx配置文件 传递请求给静态文件服务器
# 1. 进入文件
cd /usr/local/nginx/conf
vim nginx.conf


# 2. 修改配置文件
server {
	...
	
	# nginx配置转交请求给uwsgi
	...

	# nginx处理静态文件
	...

    location = / {
		# 传递请求给静态文件服务器的nginx
		proxy_pass http://静态页面服务器ip; // 例如: 192.168.38.199;
	}

    }
        2. 更新项目nginx配置文件
 sudo /usr/local/nginx/sbin/nginx -s reload

 

七. nginx配置upstream实现负载均衡

        启动多个uwsgi,让nginx实现负载均衡,将请求分配到多个uwsgi服务器上

      

1. 启动多个uwsgi
# 1. 复制一份 uwsgi.ini
    cp uwsgi.ini uwsgi2.ini

# 2. 修改uwsgi2.ini内容:
    #使用nginx连接时使用
	socket=192.168.37.152:8001
				 
	# 保存启动后主进程的pid
	pidfile=uwsgi2.pid
		 
	# 设置uwsgi后台运行,uwsgi.log保存
	daemonize=uwsgi2.log

    # 启动uwsgi2.ini
    uwsgi --ini uwsgi2.ini
2. 修改项目的nginx配置文件
# 1. 进入文件
cd /usr/local/nginx/conf
vim nginx.conf


# 2. 修改配置文件

    # 指定上游服务器,dailyfresh随便起,两个uwsgi配置的ip和端口
	upstream dailyfresh{
	server 192.168.37.152:8000;
	server 192.168.37.152:8001;
	
	}
    server {
        listen       80;
        server_name  localhost;


	# nginx配置转交请求给uwsgi
	location / {
		# 包含uwsgi的请求参数
		include uwsgi_params;
		# 转交请求给uwsgi
		# uwsgi_pass 192.168.37.152:8000;

		uwsgi_pass dailyfresh;
	}

	...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值