day110-项目发布配置

2020-04-14 10:32:23 浏览数 (1)

1.本地代码传输至 Linux /opt 下(目录自定义)

代码语言:javascript复制
# settings 配置
# django项目需要配置allow_hosts=['*'],允许所有主机访问
# debug=True  #返回给项目一个debug信息,暴露了项目配置信息,因此在线上要关闭

2.环境准备

2.1虚拟环境

代码语言:javascript复制
# 准备一个独立的虚拟环境
mkvirtualenv luffy_even

2.2解释器环境搬运

代码语言:javascript复制
# 本地
pip3 freeze > requirements.py
# 服务器
pip3 install -r requirements.py

3.配置项目 settings.py

代码语言:javascript复制
1.启动linux的数据库,创建对应的数据库,密码设置等等
    create database my_project;  
    
2.更改settings.py 
		DATABASES = {
			'default': {
				'ENGINE': 'django.db.backends.mysql',
				'NAME': 'my_project',    # 数据库名
				'HOST': '127.0.0.1',     # 这里服务器的ip地址
				'PORT': 3306,	         # 端口
				'USER': 'root',	         # 用户名 
				'PASSWORD': 'leon123',   # 用户密码
			}
		}
		
3.更改允许主机
    ALLOWED_HOSTS = ['*']

4.线上关闭debug,默认先用True
	debug=True 

4.nginx 相关配置

4.1负载均衡&虚拟主机&静态资源配置

代码语言:javascript复制
1.修改配置文件nginx.conf ,写入如下配置

	# 负载均衡池配置
	# ip根据实际情况配置
	upstream mydjango {   
		server 192.163.1.X:8000 weight=1; 
		server 192.163.1.X:8000 weight=2; 
		server 192.163.1.X:8000 weight=3; 
}
	
	# 虚拟主机配置
	server {
	  listen 80;
	  # 域名自定义
	  server_name  www.xxx.com;
	  location / {
	  # 注意这里是 uwsgi
	  uwsgi_pass mydjango;
	  include /opt/nginx1-12/conf/uwsgi_params;;
}

	# 静态资源配置
	location /static  {
	alias /data/static;
}
}

4.1.1proxy_params的配置,手动创建于 conf/ 下

代码语言:javascript复制
2.手动创建这个参数文件
# 参数只是给代理加上一些功能
# touch /opt/nginx1-12/conf/proxy_params
# 写入信息
	proxy_set_header Host $http_host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

	proxy_connect_timeout 30;
	proxy_send_timeout 60;
	proxy_read_timeout 60;

	proxy_buffering on;
	proxy_buffer_size 32k;
	proxy_buffers 4 128k;

5.使用uwsgi启动django

5.1安装uwsgi

代码语言:javascript复制
pip3 install uwsgi

5.2可以先通过uwsgi命令启动Django(无 css 样式)

代码语言:javascript复制
uwsgi --http :8888  --module MyProject.wsgi 
代码语言:javascript复制
# uwsgi可以热加载项目
# --py-autoreload是告诉uwsgi自动重启加载django项目
    uwsgi --http :9999  --module mycrm.wsgi --py-autoreload=1 
代码语言:javascript复制
# 补充
# 通过uwsgi命令启动python应用
    uwsgi --http   0.0.0.0:8888  --wsgi-file test1.py  
	    --http  指明是http协议
		--socket 启动一个socket 链接
	    --wsgi-file  指明一个python应用文件

5.3通过uwsgi的配置文件启动项目

代码语言:javascript复制
1.在项目目录下手动创建uwsgi.ini文件
    touch /opt/MypPoject/uwsgi.ini
2.写入如下配置
    [uwsgi]
	# 项目的绝对路径,定位到项目的第一层
	chdir           = /opt/MyProject
	# 指明项目的wsgi文件路径
	module          = MyProject.wsgi
	# 指明你的虚拟解释器的路径(在虚拟环境下  pwd)
	home            = /root/Envs/luffy_even
	# 指明通过uwsgi,启动多少个进程
	processes       = 5

	# 非常重要
	# 非常重要
	# 非常重要
	# 如果你已经配置了nginx(启动了nginx服务,配置了uwsgi_pass),请用这个socket连接
	socket          = 0.0.0.0:8000

	# 如果你没用nginx,想通过uwsgi直接启动web服务,指明http协议
	# http          = 0.0.0.0:9999

	#在退出uwsgi环境后,清空环境变量
	vacuum          = true

5.4.配置django的settings.py,收集所有 MyProject 项目所需的静态文件

代码语言:javascript复制
1.通过命令,收集整个项目所有的静态文件,放入到/opt/static/
    # settings 添加
    STATIC_ROOT='/opt/static/'
2.执行命令
    python3 manage.py collectstatic
3.此时 MyProject 的所有静态文件,都跑到/opt/static/底下了
    ls /opt/static/
    admin  css  imgs  js  plugins....

5.5.更改uwsgi.ini ,指明socket连接,结合uwsgi 和nginx

代码语言:javascript复制
#如果你已经配置了nginx,请用这个socket连接
    socket          = 0.0.0.0:8000

5.6通过配置文件启动MyProject(注意uwsgi不会处理静态文件,如果不做静态文件迁移,就不会有 css 样式,有也是浏览器缓存!!!)

代码语言:javascript复制
uwsgi --ini  uwsgi.ini 

5.7启动 nginx

代码语言:javascript复制
/opt/nginx-12/sbin/nginx

5.8登录 www.xxx.com 查看状态

6..配置supversior,管理uwsgi进程

# 注意,请退出虚拟环境,在宿主机环境下,安装 supvervisor

# supvervisor 通过 python2.7 安装

6.1supversior 的安装

代码语言:javascript复制
yum install python-setuptools
代码语言:javascript复制
# 安装软件
    easy_install supervisor

6.2生成配置文件

代码语言:javascript复制
# 使用supervisor命令,常用命令如下
# 生成配置文件
	echo_supervisord_conf >  /etc/supervisord.conf

6.3修改配置文件

代码语言:javascript复制
vim /etc/supervisord.conf
    [program:myproject]
    # 启动uwsgi的命令就是这个
    command=/root/Envs/nbcrm/bin/uwsgi  --ini /opt/MyProject/uwsgi.ini
    # 自动启动uwsgi,挂了之后自动加载
    autorestart=true

6.4启动supvervisord服务,启动uwsgi

代码语言:javascript复制
# 服务端命令,用于启动这个服务
	supervisord -c  /etc/supervisord.conf
代码语言:javascript复制
# 也可以通过命令交互式的管理uwsgi
# 服务端启动后,通过命令管理软件
	supervisorctl  start myproject
	supervisorctl  stop  myproject 
	supervisorctl status myproject

0 人点赞