Django项目部署在Centos7

把Django项目部署在Centos7下

  • 先有一个Django项目

    一个员工管理系统(ems) 员工管理系统

  • 使用VMware创建一个虚拟的Linux系统

  • Centos7下安装MySql5.7 详细安装

  • Centos7下安装Python3.5 详细安装

  • Centos7下安装Django2.0.6

- 安装数据库驱动:- yum install gcc mariadb-devel- pip install mysqlclient- pip install django=="2.0.6"- 测试使用:- django-admin startproject testproj  在当前目录下创建一个project:"testproj"- cd到testproj目录下的testporj目录下settings.py 修改配置:ALLOWED_HOSTS = ["*"]- 启动django内置的web服务器。cd到testproj目录下,执行:python manage.py runserver 0.0.0.0:port- 在Windows的浏览器中访问:ip:port -- ip为Linux系统的ip地址
  • Centos7下安装uWSGI
- 将uWSGI的tar包发送linux
- 解压tar:tar -zxvf  uwsgi-2.0.17.tar.gz
- cd到解压目录下,编译:make
- 为了可以更方便的执行  uwsgi   启动uWSGI服务器,定制链接:ln -s /usr/local/uwsgi-2.0.17/uwsgi /usr/bin/uwsgi则可以在任意目录下执行 uwsgi 去启动uWSGI服务器
- 测试使用python的wsgi服务器-uWSGI- 在任意的一个目录中定义一个python脚本:hello.pydef application(env, start_response):start_response('200 OK', [('Content-Type','text/html;charset=utf-8')])return [bytes('你好啊!!','utf-8'),b'Mr_lee']    # 基于wsgi协议规范实现的代码- 启动uWSGI服务器,并部署hello.py程序uwsgi --http 192.168.248.128:8001 --wsgi-file hello.py   #注意hilo.py可以写成绝对路径- 浏览器访问:192.168.248.128:8001
  • uWSGI部署Django项目

    1.mysql数据库操作:

	设置mysql的引擎默认为:innodb在/etc/my.cnf的[mysqld]中添加配置:default-storage-engine=InnoDB建议mysql设置为严格模式在/etc/my.cof的[mysqld]中添加配置:sql_mode=STRICT_TRANS_TABLES查看mysql的配置参数:mysql> show variables where variable_name like '%mode%';注:修改配置后,要重启Mysql服务在数据库中建好项目需要的database:“ems2_project”可使用Navicat创建,注意修改字符集为:utf8
	2.在Django项目的settings.py中修改配置
	DENUG = False # 去掉开发模式ALLOWED_HOSTS = ["*"] # 开放访问hostDATABASES = {'default' : 'django.db.backends.mysql','NAME' : 'ems2_project','USER' : 'root','HOST' : 'localhost' # 建议写同一个ip地址,在每个uWSGI中'PORT' : 3306,'PASSWORD' : '123456'}
	3.发送项目到Linux并做移植
	python manage.py makemigrationspython manage.py migrate
	4.编写uWSGI的配置文件创建文件:config.ini # 建议放在项目的跟目录下
	[uwsgi]http = 192.168.186.159:9000 # uWSGI服务器访问地址# uWSGI和Nginx通信的portsocket = 192.168.186.159:9001chdir = /usr/local/Django_project/ems2_project # 项目所在目录(建议存放在/usr/local/下,先创建Django_project目录)wsgi-file = ems2_project/wsgi.py # 基于项目目录的相对路径processes = 4threads = 2stats = 192.168.186.159:9002vacuum = truepidfile = /usr/local/Django_project/ems2_project/uwsgi.pid # 建议进程ID存放位置daemonize = /usr/local/Django_project/ems2_project/uwsgi.log # 建议日志文件存放位置
	5.根据如上配置启动uWSGI服务器uwsgi --ini config.ini # 注意:config.ini是相对路径6.关闭服务器uwsgi -- stop uwsgi.pid # 通过进程id文件 注:如多次开启并未关闭,需要kill -9 进程id
  • Centos7下安装、配置Nginx
安装:- 将tar包发送的linux- 解压 tar -zxvf nginx-1.11.1.tar.gz - 安装依赖 yum install gcc zlib-devel pcre-devel   - cd到解压目录:./configure    #配置检测- cd到解压目录:make && make install  #编译并安装- 安装完成,安装路径为/usr/local/nginx   ,日志路径为 /usr/local/nginx/logs ,可执行文件路径为 /usr/local/nginx/sbin ,配置文件路径为 /usr/local/nginx/conf欢迎页面路径为 /usr/local/nginx/html- ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx 制作连接,便于执行nginx指令- nginx  #启动 nginx -s stop #关闭nginx -s reload #重启http://ip:80即可访问nginx欢迎页面
配置:到配置路径中的nginx.conf      /usr/local/nginx/conf/nginx.conf 
upstream ems{server 192.168.157.141:9001; # uWSGI's socket = 192.168.x.x:9001#可以在添加其他的uWSGI的服务器
}server {listen 80;server_name  192.168.157.142;   # nginx服务器的ipcharset utf-8;location / {uwsgi_pass ems; #和上面的upstream转接  include  /usr/local/nginx/conf/uwsgi_params; # the uwsgi_params file you installed}	location /static { #http://ip:80/static/a/b/c/d.png  ==> /usr/local/static/a/b/c/d.png	alias /usr/local/static; # your Django project's static files - amend as required}
}
  • 搭建uWSGI集群

搭建uWSGI集群,只需要多做几份uWSGI的配置文件,文件中设置不同的ip:port,指向相同的project,然后启动多个uWSGI即可。

*默认:轮询upstream django {server 192.168.0.103:8989;   server 192.168.0.104:8989;}
*iphash:基于ip的负载均衡.upstream django {ip_hash;server 192.168.0.103:8989;server 192.168.0.104:8990;}
*权重轮询:upstream django {server 192.168.0.103:8989 weight=1;   server 192.168.0.104:8990 weight=2;   }
*最小连接数:upstream django {least_conn;   server 192.168.0.103:8989;server 192.168.0.104:8990;}

至此,一个项目部署成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(7)树

目录 树的知识点: 定义: 专业术语: 操作(重点): 树的操作: 创建二叉树: 先序遍历: 中序遍历: 后序遍历: 这篇笔记是根据郝斌老师的上课讲义整理而得。 树的知识点&#xf…

由浅到深理解ROS(5)- launch启动文件的理解与编写

ROS提供了一个同时启动节点管理器(master)和多个节点的途径,即使用启动文件(launch file)。事实上,在ROS功能包中,启动文件的使用是非常普遍的。任何包含两个或两个以上节点的系统都可以利用启动…

【CodeForces - 1199C】MP3(思维,离散化)

题干: One common way of digitalizing sound is to record sound intensity at particular time moments. For each time moment intensity is recorded as a non-negative integer. Thus we can represent a sound file as an array of nn non-negative integers…

Centos7下安装MySql

1、安装方式 1.1 方式一 yum安装(推荐使用该方式) 在CentOS中默认安装有MariaDB,这个是MySQL的分支 如果必须要安装MySQL,首先必须添加mysql社区repo通过输入命令: rpm -ivh http://dev.mysql.com/get/mysql-commu…

(8)排序

排序&#xff1a; 排序和查找的关系&#xff1a;排序是查找的前提&#xff0c;排序是重点。 冒泡 插入 选择 归并排序 快速排序&#xff1a;一次确定一个数的位置 #include <stdio.h>void QuickSort(int *a, int low, int high) {int pos;if(low < high){pos FindP…

由浅到深理解ROS(6)-坐标转换

转自 ROS 中对于多坐标系的处理是使用树型表示&#xff0c;在机器人自主导航中&#xff0c;ROS会构建这几个很重要的坐标系&#xff1a; base_link: 一般位于tf tree的最根部&#xff0c;物理语义原点一般为表示机器人中心&#xff0c;为相对机器人的本体的坐标系。(base_foot…

Centos7下安装Python3.5

1、安装依赖 - yum -y install python-devel openssl-devel bzip2-devel zlib-devel expat-devel ncurses-devel sqlite-devel gdbm-devel xz-devel tk-devel readline-devel gcc - yum -y groupinstall "Development tools"如上两步&#xff0c;汇总安装了p…

【BZOJ - 3450】Tyvj1952 Easy(数学期望,期望的线性性)

题干&#xff1a; 某一天WJMZBMR在打osu~~~但是他太弱逼了&#xff0c;有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做&#xff0c;成功了就是o&#xff0c;失败了就是x&#xff0c;分数是按comb计算的&#xff0c;连续a个comb就有a*a分&#xff0c;comb就…

吐血推荐收藏的学位论文排版教程(完整版)

目录 01.保存的高级选项设置 02.纸张设置为A4纸大小 03.设置页边距和装订线距离 04.度量衡的设置 05.创建“论文正文”样式 06.修改论文正文样式 07.设置并修改标题样式 08.给中英文摘要、附录、等大标题套用样式 09.两个Word文档之间进行并排查看 12.一键生成多级列…

由浅到深理解ROS(7)-URDF

转自 相信许多爱好者止步于昂贵的机器人价格。虽然有了Arduino&#xff0c;但一个载重能力很弱的机器人小车成本也得一两百块钱。搭建自己的机器人更是费时费力。 所以如果你只是普通机器人爱好者&#xff0c;或者还没想好要拿机器人做什么&#xff0c;那我们还是从模拟器开始…

Apollo进阶课程 ① | 带你纵览无人车

目录 1&#xff09;无人驾驶级别的分类 2&#xff09;无人驾驶技术的关键点 3&#xff09;火热的无人驾驶 不缺独角兽 原文链接&#xff1a;Apollo进阶课程 ① | 带你纵览无人车 Apollo自动驾驶进阶课程是由百度Apollo联合北京大学共同开设的课程&#xff0c;邀请百度Apoll…

linux基本简介

Linux基础知识点 Linux是一套免费使用的类Unix操作系统&#xff0c;继承了Unix一网络为核心的设计思想&#xff0c;是一个性能稳定的多用户操作系统。 特点&#xff1a;免费、安全、可靠、稳定、多平台 Linux的目录结构 bin &#xff1a;存放二进制可执行文件sbin&#xff1…

【BZOJ - 4318】OSU!(概率dp,数学期望,期望的线性性)

题干&#xff1a; osu 是一款群众喜闻乐见的休闲软件。 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作&#xff0c;每次操作只有成功与失败之分&#xff0c;成功对应1&#xff0c;失败对应0&#xff0c;n次操作对应为1个长度为n的01串。在这个串中连续的 X个…

word2vec原理详解及实战

目录 1&#xff09;前言 1.1 语言模型 1.2N-gram模型 1.3词向量表示 2&#xff09;预备知识 2.1 sigmoid函数 2.2 逻辑回归 2.3贝叶斯公式 2.4 Huffman编码 3&#xff09;神经网络概率语言模型 4&#xff09;基于Hierarchial Sodtmax模型 4.1CBOW模型 4.2 Skip-gr…

由浅到深理解ROS(8)-线程管理

转自 单线程Spinning ros::spin()是最简单的单线程自旋, 它会一直调用直到结束 用法: ros::spin(); 另一个单线程spinning是ros::spinOnce(),它定期调用等待在那个点上的所有回调 用法: ros::spinOnce(); 简单的我们自己实现一个用法相同的ros::spin() 这样: ros::get…

计算机网络通讯协议

网络通讯&#xff1a; 就是要把特定意义的数据通过物理介质传送给对方。把电信号变成有意义的数据&#xff1a; 以字节为单位分组&#xff0c;标识好每一组电信号的信息特征&#xff0c;按照分组的顺序来依次发送。 以太网规定&#xff1a;一组电信号为一个数据包&#xff0c…

【CodeForces - 518D】Ilya and Escalator(概率dp,数学期望)

题干&#xff1a; Ilya got tired of sports programming, left university and got a job in the subway. He was given the task to determine the escalator load factor. Lets assume that n people stand in the queue for the escalator. At each second one of the tw…

Apollo进阶课程 ② | 开源模块讲解(上)

目录 1&#xff09;无人驾驶车介绍 2&#xff09;高精地图 3&#xff09;定位 4&#xff09;感知 5&#xff09;轨迹规划 6&#xff09;控制 7&#xff09;云端 原文链接&#xff1a;Apollo进阶课程 ② | 开源模块讲解&#xff08;上&#xff09; Apollo自动驾驶进阶课…

由浅到深理解ROS(9)- 几个基本概念的理解 坐标系 包

1.坐标系 最常用的就是map&#xff0c;odom&#xff0c;base_link&#xff0c;base_laser坐标系&#xff0c;这也是开始接触gmapping的一些坐标系。 map:地图坐标系&#xff0c;顾名思义&#xff0c;一般设该坐标系为固定坐标系&#xff08;fixed frame&#xff09;&#xff…

计算机常用技巧

windows禁用自带键盘命令&#xff08;笔记本&#xff09; 禁用&#xff1a;sc config i8042prt start disabled 恢复&#xff1a;sc config i8042prt start auto锁屏 win l