前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >day110-项目发布配置

day110-项目发布配置

原创
作者头像
少年包青菜
修改2020-04-14 10:32:23
6250
修改2020-04-14 10:32:23
举报
文章被收录于专栏:Python 学习Python 学习

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.本地代码传输至 Linux /opt 下(目录自定义)
  • 2.环境准备
    • 2.1虚拟环境
      • 2.2解释器环境搬运
      • 3.配置项目 settings.py
      • 4.nginx 相关配置
        • 4.1负载均衡&虚拟主机&静态资源配置
          • 4.1.1proxy_params的配置,手动创建于 conf/ 下
      • 5.使用uwsgi启动django
        • 5.1安装uwsgi
          • 5.2可以先通过uwsgi命令启动Django(无 css 样式)
            • 5.3通过uwsgi的配置文件启动项目
              • 5.4.配置django的settings.py,收集所有 MyProject 项目所需的静态文件
                • 5.5.更改uwsgi.ini ,指明socket连接,结合uwsgi 和nginx
                  • 5.6通过配置文件启动MyProject(注意uwsgi不会处理静态文件,如果不做静态文件迁移,就不会有 css 样式,有也是浏览器缓存!!!)
                    • 5.7启动 nginx
                      • 5.8登录 www.xxx.com 查看状态
                      • 6..配置supversior,管理uwsgi进程
                        • 6.1supversior 的安装
                          • 6.2生成配置文件
                            • 6.3修改配置文件
                              • 6.4启动supvervisord服务,启动uwsgi
                              相关产品与服务
                              负载均衡
                              负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档