部署 Nginx +uwsgi+centos7+django+supervisor 项目
部署CRM项目
前言
使用软件
nginx
- 使用nginx是为了它的反向代理功能,项目会通过Django+uWSGI+Nginx进行服务器线上部署。
uWSGI
python web服务器开发使用WSGI协议(Web Server Gateway Interface)
python web项目默认会生成一个wsgi.py文件,确定好应用模块。
生产环境中使用的是uWSGI,实现了WSGI所有接口,C语言编写,效率很高的web服务器。
uWSGI是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要做的就是把HTTP协议转化成语言支持的网络协议。比如把HTTP协议转化成WSGI协议,让Python可以直接使用。
centos7
- 打包项目CRM文件夹,压缩文件
- 通过xftp、scp、lrzsz等上传文件至Centos服务器
CRM项目文件
virtualenv
- 构建一个干净,隔离的python解释器环境,防止软件依赖,冲突等问题,建议使用。
supervisor
项目部署
准备工作
1 将项目上传到服务器上
方法一:使用xftp工具,进项上传文件夹,将项目代码,传到linux服务器当中
- 这个页面操作,实在不会百度
方式2: 使用scp从本地将文件上传到linux服务器中
scp -r 本地文件夹 远程用户名@远程ip:远程文件夹/
2 将mysql数据迁移到服务器数据库
服务器端安装mysql(mariadb)数据库链接:https://www.cnblogs.com/yuncong/p/10253215.html
数据导入导出
在linux服务端,mysql,导入knight的数据
1.mysql数据的导出,与导入
这个命令是在linux/windows中敲的
mysqldump -u root -p --all-databases > knight.dump 2.上传这个数据文件到linux数据库中 3.在linux的mysql,导入这个数据文件
mysql -uroot -p < /opt/knight.dump
注意:linux的数据库,需要对root用户设置远程链接的权限
grant all privileges on *.* to root@'%' identified by 'redhat';
# 授权所有的权限,在所有库,所有表 对 root用户在所有的主机上, 权限密码为redhat, 注意是自己设置的密码
# 刷新授权表
flush privileges;
注意2:linux的防火墙要给关闭,否则windows去链接linux的3306端口可能被拒绝
centos7默认已经使用firewall作为防火墙了
1.关闭防火墙
systemctl status firewalld #查看防火墙状态
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld#关闭防火墙开机启动
systemctl is-enabled firewalld.service#检查防火墙是否启动
1. 激活虚拟python环境
这里使用的是virtualenv进行管理
安装virualenvwrapper工具链接:https://www.cnblogs.com/yuncong/p/10251899.html
# 创建虚拟环境
mkvirtualenv my_django
# 激活该虚拟环境
workon my_diango
激活环境后,cd到项目目录下
可以使用pip freeze模块迁移
生成项目依赖模块
# 在本地
pip freeze >requirements.txt
在虚拟环境中
pip install -r C:\Users\Administrator\requirements.txt
# pip install -r 路径
启动django项目
python3 manage.py runserver 0.0.0.0:8000
启动项目注意的问题,根据报错进行下载相应的模块,
项目中settings.py中俩个关键位置记得更改:
# 这个参数
ALLOWED_HOSTS = ['*']
# 数据库连接参数
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "crm",
"HOST": "127.0.0.1",
"PORT": 3306,
"USER": 'root',
"PASSWORD": '123'
}
}
启动成功之后退出, 这里只是为了测试项目
2 安装uwsgi
安装
pip3 install uwsgi
1 通过uwsgi启动django项目(注意这里要在项目目录下)
uwsgi --http :8000 --module knight.wsgi
2 使用uwsgi.ini配置文件来启动项目,这个文件要自己创建,随意放在哪,我这里是放在项目目录中的
# 新建uwsgi.ini
touch uwsgi.ini
# 查看
ls uwsgi.ini
编辑uwsgi.ini,注意编辑中的路径之类的数据要进行更改
[uwsgi]
# Django-related settings
# the base directory (full path)
#写上项目的绝对路径
chdir = /opt/knight
# Django's wsgi file #填写找到django的wsgi文件,填写相对路径,以chdir参数为相对路径
module = knight.wsgi
# the virtualenv (full path)
#填写虚拟环境的绝对路径
home = /root/Envs/knight/
# process-related settings
# master
#启动uwsgi主进程
master = true
# maximum number of worker processes
processes = 5 #如果你使用了nginx,做反向代理,必须填写socket链接,而不是http参数
# the socket (use the full path to be safe
#socket = 0.0.0.0:8000 #如果你不用nginx,直接使用uwsgi,运行一个http服务端,就用这个http参数
http = 0.0.0.0:8000 # ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
指定配置文件启动uwsgi
uwsgi --ini uwsgi.ini
启动之后可以通过网址进行访问了
3 配置nginx
- 作用: 使用ngixn处理django的静态文件
设置django的静态文件目录,收集一下
修改项目中settings.py,写下如下参数
STATIC_ROOT= '/opt/static' #该路径根据实际放置
使用命令收集django的静态文件
python manage.py collectstatic
查看django的静态文件收集目录
ls /opt/static
配置nginx,进行反向代理,找到uwsgi项目,且配置nginx处理uwsgi的静态文件
编辑nginx.conf
server {
listen 80;
#域名qishijd.com
server_name qishijd.com;
#只要用户访问qishijd.com:80/ 就走这个location匹配>,反向代理给uwsgi:
location / {
include uwsgi_params;
uwsgi_pass 0.0.0.0:8000;
}
#当用户请求是qishijd.com/static/的时候
#就会进入这个location匹配
#通过alias参数进行路径别名,让nginx去/opt/static底下去找静>态资源
location /static {
alias /opt/static;
}
}
配置完成后启动uwsgi,重启nginx,
注意问题
在浏览器上输入网址后,数据不加载,可能原因
#如果你使用了nginx,做反向代理,必须填写socket链接,而不是http参数
# the socket (use the full path to be safe
#socket = 0.0.0.0:8000 #如果你不用nginx,直接使用uwsgi,运行一个http服务端,就用这个http参数
http = 0.0.0.0:8000
这俩只选一个
本地域名添加
在本地编辑
vim /etc/hosts
# 加载你nginx.conf中这个参数对应的域名
# server_name qishijd.com; 格式为 192.168.11.11 qishijd.com # 保存退出
进程管理工具superviosr
注意
使用python2的模块管理工具,去下载supervisor ,注意此时,退出虚拟环境
使用python2的模块管理工具,去下载supervisor ,注意此时,退出虚拟环境
使用python2的模块管理工具,去下载supervisor ,注意此时,退出虚拟环境
使用python2的模块管理工具,去下载supervisor ,注意此时,退出虚拟环境
使用python2的模块管理工具,去下载supervisor ,注意此时,退出虚拟环境安装supervisor
yum install python-setuptools
安装
easy_install supervisor
使用supervisor命令,生配置文件
echo_supervisord_conf > /etc/supervisor.conf
在这个配置文件中加入我们想要管理的任务
vim /etc/supervisor.conf
# 在底部写入如下配置
#定义一个任务,名字自定义
#commnad=参数,定义我们启动项目的命令 [program:crm_knight]
command=/root/Envs/knight/bin/uwsgi /opt/knight/uwsgi.ini
stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程
通过配置文件启动supervisor服务
supervisord -c /etc/supervisor.conf
启动了supervisor服务端后,管理任务
supervisorctl -c /etc/supervisor.conf
任务管理命令如下:有两种,一个是交互式,一个是参数形式
参数形式
supervisorctl -c /etc/supervisor.conf stop/start/restart all
supervisorctl -c /etc/supervisor.conf start crm_knight交互式形式
supervisorctl -c /etc/supervisor.conf
部署 Nginx +uwsgi+centos7+django+supervisor 项目的更多相关文章
- debian完整部署 Nginx + uWSGI + Django
手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...
- CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点 以下 ...
- nginx + uWSGI 为 django 提供高并发
django 的并发能力真的是令人担忧,这里就使用 nginx + uwsgi 提供高并发 nginx 的并发能力超高,单台并发能力过万(这个也不是绝对),在纯静态的 web 服务中更是突出其优越的地 ...
- 学习VirtualEnv和Nginx+uwsgi用于django项目部署
以下叙述中用到的操作系统:Linux CentOS 6.X. 最近几天了解一下VirtualEnv,Apache+Daemon mode,Nginx+uwsgi的概念,并且在项目中实验性部署了一下(目 ...
- Django 部署(Nginx+uwsgi)
使用 uwsgi 来部署 安装 uwsgi sudo pip install uwsgi --upgrade 使用 uwsgi 运行项目 uwsgi --http :8001 --chdir /pat ...
- nginx+uwsgi启动Django项目
1.安装项目环境 系统环境:ubuntu16.04 python环境:python3.5.2 Django版本:django1.11.7 nginx环境:nginx_1.10.3 虚拟环境:virtu ...
- Nginx+uWSGI+Python+Django构建必应高清壁纸站
写在前面 做这个网站的初衷是因为,每次打开必应搜索搜东西的时候都会被上面的背景图片吸引,我想必应的壁纸应该是经过专业人员精选出来的,我甚至会翻看以前的历史图片,唯一美中不足的是必应的首页只能查看最多7 ...
- (转)nginx uwsgi wsgi django 这些东西究竟是什么关系
有太多的文章告诉我们nginx uwsgi django 这些东西怎么用了,太多的人知道这些东西的怎么使用,怎么配置,怎么优化,但是还是有一部分人比如我这种水货不知道这些东西到底是啥,为啥一个项目的发 ...
- nginx uwsgi wsgi django 这些东西究竟是什么关系
有太多的文章告诉我们nginx uwsgi django 这些东西怎么用了,太多的人知道这些东西的怎么使用,怎么配置,怎么优化,但是还是有一部分人比如我这种水货不知道这些东西到底是啥,为啥一个项目的发 ...
随机推荐
- 经常使用的系统类Math、Arrays、System、BigInteger和BigDecimal以及日期类,时间戳
一.Math 常用类: //看看Math常用的方法(静态方法)//1.abs绝对值int abs = Math . abs(-9);System. out . printLn(abs);//9//2. ...
- MASA Framework - DDD设计(1)
目录 MASA Framework - 整体设计思路 MASA Framework - EventBus设计 MASA Framework - MASA Framework - DDD设计(1) DD ...
- 最好的Java开发工具---IDEA
IntelliJ IDEA工具的使用 1. 常见的Java集成开发工具 Eclipse IBM团队研发的一个开源的非常好用的集成开发环境.寓意:吞并Sun公司.不过Sun最终被Oracle公司收购了. ...
- 加密模块hashlib+日志模块logging
目录 1.hashlib 加密模块 1.hashlib模块基本使用 1.2 详细操作 ①md5加密模式 ②sha256复杂加密模式 ③加盐操作(普通加盐) ④加盐操作(动态加盐) 2.logging ...
- Solution -「CF 1491H」Yuezheng Ling and Dynamic Tree
\(\mathcal{Description}\) Link. 做题原因:题目名. 给定一个长度 \(n-1\) 的序列 \(\{a_2,a_3,\cdots,a_n\}\),其描述了一棵 \ ...
- Solution -「POJ 3710」Christmas Game
\(\mathcal{Decription}\) Link. 定义一棵圣诞树: 是仙人掌. 不存在两个同一环上的点,度数均 \(\ge 3\). 给出 \(n\) 棵互不相关的圣诞树,双人 ...
- ConcurrentHashMap (jdk1.7)源码学习
一.介绍 1.Segment(分段锁) 1.1 Segment 容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并 ...
- STM32 HAL 库实现乒乓缓存加空闲中断的串口 DMA 收发机制,轻松跑上 2M 波特率
前言 直接储存器访问(Direct Memory Access,DMA),允许一些设备独立地访问数据,而不需要经过 CPU 介入处理.因此在访问大量数据时,使用 DMA 可以节约可观的 CPU 处理时 ...
- 使用已有流量进行RFC2544测试—信而泰网络测试仪实操
一.测试说明 先创建流量,将流量运行起来,流量正常.再使用创建的流量进行RFC2544测试,可以避免因为配置原因流量不通,影响RFC 2544测试. 而且创建流量的时候,可以编辑报文,例如增加TCP/ ...
- 在vs2022环境中用C#创建COM组件
规则 com组件以接口的方式对外开放. 1:所要导出的类必须为公有: 2:所有属性.方法也必须为公有: 3:要导出的属性.方法必须用接口方式: interface IName { [DispId(1) ...