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

Centos 6.5部署nginx+uwsgi+django相关推荐

  1. nginx+uWSGI + django部署项目

    项目部署 nginx+uWSGI + django 1. WSGI WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器(返回静态资源的就是web服务器,Nginx)如何与Web应用程序( ...

  2. nginx+uwsgi+django环境部署部署

    首科常昊技术部 Django框架部署文档: 硬件环境:阿里云ecs服务器8核心.16GB.10Mbps 环境结构:nginx+uwsgi+django 所需软件:python-3.6.1.pip3.6 ...

  3. Docker部署Angular+Nginx+uwsgi+Django项目

    Docker部署Angular+Nginx+uwsgi+Django项目 0.前言 在开发部署时,容易遇到服务器环境不一致,多台服务重复部署操作过于繁杂的情况.这时可以采用Docker来提供一套统一的 ...

  4. Nginx+uWSGI+Django方法部署Django程序

    在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.nginx把所有静态请求自己来处理(这是NGINX的强项).然后,NGINX将所有非静态请求通过u ...

  5. 如何配置nginx+uwsgi+django?(知乎上面的看着不错)

    作者:知乎用户 链接:https://www.zhihu.com/question/27295854/answer/36365005 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  6. Nginx+uWSGI+Django原理

    Python的Web开发中,如果使用Django框架,那么较为成熟稳定的服务器架构一般是Nginx+uWSGI+Django.而为什么一定要三个结合在一起呢?直接使用Django的runserver来 ...

  7. Ubuntu Nginx uwsgi django 初试

    /*************************************************************************************** Ubuntu Ngin ...

  8. nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架 ...

  9. Nginx uWsgi Django环境搭建

    2019独角兽企业重金招聘Python工程师标准>>> 由于一个监控项目(使用django开发)交接到所在项目组,需要了解python的web开发和环境搭建. 这里记录环境的搭建流程 ...

最新文章

  1. jpa中使用Query判断条件查询
  2. SAP MM 执行事务代码MRRL报错-No message was found for partner 100065 company code 0001-
  3. Kotlin 1.3.30 发布,改进性能和引入新特性
  4. DF学数据结构系列——B树(B-树和B+树)介绍
  5. driver.class.php line: 109,thinkphp3.2.3 无法加载数据库驱动: Think\Db\Driver\
  6. SecureCRT 配置文件中 找密码
  7. java 快速构建ssm项目_SSM快速搭建
  8. 哈希存储 java_Java容器系列之HashMap的存储
  9. 论文浅尝 | 混合注意力原型网络的含噪音少样本的关系分类
  10. Android Studio 设置字体
  11. 一文读懂Docker及其对系统管理员的重要性
  12. js获取display的值_JS实现多行溢出省略号思路
  13. 改进型MUSIC算法(python)
  14. Fortran95学习总结
  15. Spring常用注解(全常用)
  16. linux添加变色龙引导,变色龙Chameleon Install 2281引导工具 windows电脑安装黑苹果
  17. maven module 路径_解决maven项目中-Dmaven.multiModuleProjectDirectory报错问题
  18. 1223 Dice Roll Simulation
  19. python 计算众数、中位数、分位数、偏度、峰度
  20. 精密划片机的三种切割方式

热门文章

  1. php处理base64数据,php基于base64解码数据与图片的转换
  2. iphone mac地址是否随机_iOS8随机MAC地址功能:需要满足前提要求
  3. 简单线性回归(Simple Linear Regression)和多元线性回归(Multiple Regression)学习笔记
  4. LeetCode 548. 将数组分割成和相等的子数组(哈希set)
  5. LeetCode 第 31 场双周赛(273/2767,前9.87%,第3次全部通过)
  6. 红米k30 android版本,Redmi K30 Pro 推送 MIUI 12.2.1 稳定版:为安卓跨版本升级
  7. python实现etl_为什么选择R而不是Python做ETL
  8. formdata.append加多个值_redis的五种数据结构和应用场景:微博微信点赞+加购物车等...
  9. ad域不去用frs_Windows Server 2008搭建AD域控服务器 - 小王同学!
  10. mysql的where字句调优_mysql中select和where子句优化的总结