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