Centos 6.5部署nginx+uwsgi+django

Centos 6.5部署nginx+uwsgi+django

一、安装python3,系统默认是python2.6

1、安装依赖软件
yum -y install sqlite-devel
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2、下载安装python3.6
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
tar zxvf Python-3.6.1.tgz
cd Python-3.6.1
./configure --prefix=/usr/local/python3
make && make install
3、创建python及pip命令软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
4、测试
[root@localhost ~]# python3
Python 3.6.1 (default, Dec 21 2017, 16:14:49)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('test_haha');
test_haha

二、安装django

1、访问链接下载最新django版本,https://www.djangoproject.com/download/
2、安装django依赖组件pytz
pip3 install pytz-2017.3-py2.py3-none-any.w
3、安装django
tar zxvf Django-2.0.tar.gz
cd Django-2.0
python3 setup.py install
4、测试
上传django项目
cd django_project
python3 manage.py runserver 0.0.0.0:80
访问http://127.0.0.1 可以访问
三、安装uwsgi web网关
1、下载安装uwsgi
wget http://projects.unbit.it/downloads/uwsgi-2.0.1.tar.gz
tar zxvf uwsgi-2.0.1.tar.gz
cd uwsgi-2.0.1
python3 uwsgiconfig.py --build
python3 uwsgiconfig.py --clean
cp -R /root/uwsgi-2.0.1 /usr/local/uwsgi
ln -s /usr/local/uwsgi/uwsgi /usr/bin/uwsgi
2、启动,测试
创建测试文件
# vim test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
启动
/usr/local/uwsgi/uwsgi --http :9090 --wsgi-file /root/test.py
访问http://ip:9090 可以访问成功
3、uwsgi和django结合
uwsgi --http :9090 --chdir /home/code/Ticket_system --wsgi-file Ticket_system/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9192
访问http:ip:9090 可以访问成功
#如果在访问django项目时静态文件加载失败可以先忽略,在nginx配置中会指定静态文件路径,配置后可以正常访问
ps:
--chdir /home/code/Ticket_system django项目目录
    • http : 协议类型和端口号
    • processes : 开启的进程数量
    • workers : 开启的进程数量,等同于processes(官网的说法是spawn the specified number ofworkers / processes)
    • chdir : 指定运行目录(chdir to specified directory before apps loading)
    • wsgi-file : 载入wsgi-file(load .wsgi file)
    • stats : 在指定的地址上,开启状态服务(enable the stats server on the specified 
address)
    • threads : 运行线程。由于GIL的存在,我觉得这个真心没啥用。(run each worker in prethreaded
    • mode with the specified number of threads)
    • master : 允许主进程存在(enable master process)
    • daemonize : 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器(daemonize uWSGI)。实际上最常用的,还是把运行记录输出到一个本地文件上。
    • pidfile : 指定pid文件的位置,记录主进程的pid号。
    • vacuum : 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件(try to remove all of the generated file/sockets)
注意:–wsgi-file后面跟的是相对目录
4、uwsgi有两种启动方式,一种通过端口即上边这种方式,另一种通过配置.ini文件启动即下边用到的方式

四、安装nginx

1、下载安装依赖第三方软件pcre
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.34/pcre-8.34.tar.bz2
tar jxvf pcre-8.34.tar.bz2
cd pcre-8.34
./configure --enable-utf8
make && make install
2、下载安装依赖第三方软件openssl
下载openssl-1.0.2h.tar.gz
tar zxvf openssl-1.0.2h.tar.gz
3、下载安装nginx
nginx-1.9.9.tar.gz
tar zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9
./configure --prefix=/usr/local/nginx --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-openssl=/root/openssl-1.0.2h --with-http_gzip_static_module --with-http_sub_module --with-cc=/usr/bin/gcc
make && makeinstall
4、新建www用户
useradd -s /sbin/nologin -M www
5、修改配置文件
备份nginx配置文件
cd /usr/local/nginx/conf
cp -f nginx.conf nginx.conf_bak
vim nginx.conf
user www;         #修改启动用户为www
worker_processes 4;         #启动4个进程,根据实际需求配置
6、启动nginx
/usr/local/nginx/sbin/nginx
访问测试http://ip 默认80端口,可以访问

五、nginx+uwsgi+django三者结合

1、django项目中/根目录下创建uwsgi.ini
# vim uwsgi.ini
[uwsgi]
#uwsgi启动端口
socket = 127.0.0.1:9090 
#django项目目录
chdir=/home/code/Ticket_system 
module=Ticket_system.wsgi
master = true
processes=2
threads=2
max-requests=2000
chmod-socket=664
vacuum=true
# 日志路径
daemonize = /home/code/Ticket_system/logs/uwsgi.log 
2、配置nginx
# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#指定静态文件路径,避免django项目中静态文件无法加载
location /static {
alias /home/code/Ticket_system/app01/static;
}
location / {
#新增加两个uwsgi配置
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090;
root html;
index index.html index.htm;
}
.......
#下边必须操作,否则后台管理admin的静态资源会无法访问
1)第一种方法:找到django-admin静态文件的目录
# python3 
>>> import django  
>>> django.__file__  
'/usr/local/python3/lib/python3.6/site-packages/Django-2.0.4-py3.6.egg/django/__init__.py'
找到根目录之后我需要的绝对路径为(不同版本可能不一样,根据自己实际情况来)
/usr/local/python3/lib/python3.6/site-packages/Django-2.0.4-py3.6.egg/django/contrib/admin/static
把static 拷贝到自己定义的static目录,一般是在项目的根目录下,或者应用的根目录下,
2)第二种方法,建立自己的静态文件夹
修改settings,建立自己的文件夹
STATIC_ROOT = “/home/code/Ticket_system/static"  
运行下面命令把相关文件copy到这个目录
python manage.py collectstatic  
3、启动uwsgi
uwsgi --ini /home/code/Ticket_system/uwsgi.ini
ps:如果启动时报错uwsgi: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
解决:  

  cd /lib64
  ln -s libpcre.so.0.0.1 libpcre.so.1

4、启动nginx(如果之前启动了kill停掉再启动)
/usr/local/nginx/sbin/nginx
5、访问成功
ps:
遇到的问题访问时报错,/usr/local/nginx/logs/error.log
2017/12/25 17:06:52 [error] 2086#0: *12 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "uwsgi://127.0.0.1:9090", host: "192.168.199.212"
先尝试把djnago项目目录加权限 chown www:www /home/code/Ticket_system
发现还是不行 后来把项目的上级目录也加www权限 chown www:www /home/code就可以了
--end--

转载于:https://www.cnblogs.com/zhangmeixia/p/8109986.html

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

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

相关文章

maven 引入外部jar包的几种方式

方式1&#xff1a;dependency 本地jar包 <dependency><groupId>com.hope.cloud</groupId> <!--自定义--> <artifactId>cloud</artifactId> <!--自定义--> <version>1.0</version> <!--自定义--> <scope>sys…

三大运营商集体为电费发愁,宣布“智能化关闭5G基站”,5G建设能省则省!

来源&#xff1a;卫星与网络何为“智能化关闭5G基站”本月初有消息称&#xff0c;中国联通洛阳分公司分别对已经入网的3种不同基站射频单元设备&#xff08;AAU&#xff09;&#xff0c;分不同时段定时开启空载状态下的深度休眠功能&#xff0c;从而实现智能化基站设备能耗管控…

mac brew install nginx遇到的坑

默认使用 brew install nginx 出现了一下的错误&#xff1a; localhost:testdj newstart$ brew install nginx > Installing dependencies for nginx: openssl, pare > Installing nginx dependency: openssl > Downloading https://homebrew.bintray.com/bottles/ope…

脑电传感器并不复杂,那精度呢?

来源&#xff1a;网络脑电传感器并不复杂&#xff0c;只是精度很难保证。本质上就是一个金属电极加上一个放大器&#xff08;前置保护&#xff09;&#xff0c;主要是防止传输过程中电压发生改变。一、介绍脑电波&#xff08;EEG&#xff09;检测其实和在医院常见的心电图&…

前端智能化的加速时刻:华为机器视觉的创新方程式

来源&#xff1a;脑极体守林员小陈每天的工作&#xff0c;大部分时间都用来在林间巡逻&#xff0c;以便第一时间发现安全隐患。枯燥繁重的工作让年轻的他有点郁闷。有天他举着朋友圈里转发的文章问领导&#xff0c;听说有地方都能用AI来识别山火了&#xff0c;咱们啥时候能用上…

Vue-Router + Vuex 实现单页面应用

效果查看(一个食品安全网,大家也可以发布一些食品安全的见闻,尽举手之劳): 源代码:https://pan.baidu.com/s/1i43H3LV 如果想要服务器端代码可以在评论里说明一下 利用vue路由和vuex实现了一个单页面应用&#xff0c;项目结构如下: 入口&#xff1a;main.js import ./global.cs…

改变宇宙之前,GPT-3最先改变的可能是OpenAI

大数据文摘出品来源&#xff1a;bdtechtalks编译&#xff1a;HippoGPT-3是人工智能研究实验室OpenAI的最新成果。它是有史以来规模最大的语言模型&#xff0c;引发了一系列关于人工智能将如何快速改变众多行业的讨论。但是&#xff0c;很少有人去讨论GPT-3是如何改变OpenAI本身…

Java王者火柴人

前言 基于Java的飞翔小鸟游戏&#xff0c;本代码来自b站up主分享。本游戏所需的图片素材需要自己获取并下载&#xff0c;在此视频下&#xff0c;视频链接&#xff1a;【Java经典小游戏项目之飞翔的小鸟】 https://www.bilibili.com/video/BV1ou411o7br/?p10&share_source…

Windows 快捷键

win快捷键&#xff1a; 单独按Windows&#xff1a;显示或隐藏 “开始”功能表 WindowsBREAK&#xff1a;显示“系统属性” 对话框 WindowsD&#xff1a;显示桌面或恢复桌面 WindowsM&#xff1a;最小化所有窗口 WindowsShiftM&#xff1a;还原最小化的窗口 CtrlShiftN&am…

day2-元组 列表-赋值和深浅拷贝

一 元组 元组其实跟列表差不多&#xff0c;也是存一组数&#xff0c;只不是它一旦创建&#xff0c;便不能再修改&#xff0c;所以又叫只读列表 用途&#xff1a;一般情况下用于自己写的程序能存下数据&#xff0c;但是又希望这些数据不会被改变&#xff0c;比如&#xff1a;数据…

乖乖给行人让路?学界推出无人机控制技术NMPC,可在低空中实现自主导航和避障...

来源&#xff1a;万物智能视界前天&#xff0c;在深圳经济特区40周年庆上&#xff0c;上千架无人机在深圳上空演绎了一场大型灯光秀。近些年&#xff0c;各种无人机高空秀屡见不鲜&#xff0c;在刚刚过去的七夕夜上&#xff0c;上海警方也运用无人机开启了一场反欺诈安防宣传。…

个人银行管理系统

// 4-10个人银行账户管理系统.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 #include <iostream> #include <cmath> using namespace std; class SavingsAccount {//存储账户类 private:int id; //账号double balance; //余额…

一天学习一个设计模式之命令模式

命令模式&#xff08;Command&#xff09;&#xff0c;将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 代码如下&#xff1a; 1 /** 2 * 抽象命令角色类 3 */ 4 publi…

PNAS:张航课题组揭示人类为何“扭曲”概率信息

来源&#xff1a;脑科学2020年8月25日&#xff0c;北京大学心理与认知科学学院、北京大学IDG麦戈文脑科学研究所、北大-清华生命科学联合中心的张航研究组在美国科学院院刊&#xff08;PNAS&#xff09;上发表了题为“The bounded rationality of probability distortion”的文…

修改结构体中成员的值

#include <iostream> using namespace std; struct student { char name[10]; float grade; }; //更改student数据的grade成员&#xff0c;参数形式为引用 void change(student& x, float grade) { x.grade grade; } //更改student数据的grade成员&…

Object.prototype的成员介绍

3.Object.prototype的成员介绍 Object.prototype是js中所有的对象的祖宗Object.prototype中所有的成员都可以被js中所有的对象使用&#xff01;3.1. 方法&#xff1a; hasOwnProperty 语法&#xff1a; 对象.hasOwnProperty("属性名")功能&#xff1a; 判断当前对象自…

为什么AI感知与人类感知无法直接比较?

来源丨TechTalks作者丨Ben Dickson编译丨科技行者人类级别的表现、人类级别的精度……在开发AI系统的企业中&#xff0c;我们经常会听到这类表述&#xff0c;其指向范围则涵盖人脸识别、物体检测&#xff0c;乃至问题解答等各个方面。随着机器学习与深度学习的不断进步&#xf…

C++中冒号的用法

1.冒号&#xff08;:&#xff09;用法 &#xff08;1&#xff09;表示机构内位域的定义&#xff08;即该变量占几个bit空间&#xff09; typedef struct _XXX{unsigned char a:4;unsigned char c;} ; XXX&#xff08;2&#xff09;构造函数后面的冒号起分割作用&#xff0c;是…

JaveScript运算符(JS知识点归纳三)

JaveScript中有许多的运算符,在这里就只说明一些需要注意的. 01 一元运算符 一元:指的是参与运算的操作数只有一个 最经常使用的是 -- 计算规则: /-- 前置于操作数的时候 , 先进行 aa1,再去进行运算 /--后置于操作数的时候 , 先进行运算,在进行aa1 无论/--前置于操作数还是后…

微软白皮书:47页报告详解中国芯片设计云技术

来源&#xff1a;智东西在多方面因素的推动下&#xff0c;中国的芯片设计行业迎来了前所未有的发展契机。当前&#xff0c;我国芯片设计业的产品范围已经涵盖了几乎所有门类&#xff0c;且部分产品已拥有了一定的市场规模&#xff0c;但我国芯片产品总体上仍然处于中低端&#…