服务器版本为centos7.4,默认看本博客的人会基本的django开发,即知道如何使用pip安装django及venv虚拟环境并新建项目以及使用django自带的wsgi.py启动项目。

本教程使用的是root用户,并不推荐。

1、更新系统:

yum update

yum upgrade

2、安装nginx

如果能成功通过yum install nginx安装最好(也最简单),但是由于公司限制,我使用的是nginx源码进行安装,如果你是通过yum安装,直接跳到2.6。

2.1、安装make和g++

yum -y install gcc automake autoconflibtool make

yum install gcc gcc-c++

2.2、安装PCRF库,自行百度下载tar.gz包,放在自己的路径下

tar -zxvf pcre-8.41.tar.gz

cd pcre-8.41

./configure

make

make install

2.3、安装zlib库,自行百度下载tar.gz包,放在自己的路径下

tar -zxvf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure

make

make install

2.4、安装ssl,自行百度下载tar.gz包,放在自己的路径下

tar –zxvf openssl-1.1.0f.tar.gz

2.5、安装nginx,自行百度下载tar.gz包,放在自己的路径下

此处我们把nginx安装在/usr/local/nginx 目录下

tar -zxvf nginx-1.12.2.tar.gz

cd nginx-1.12.2

./configure --sbin-path=/usr/local/nginx/nginx\

--conf-path=/usr/local/nginx/nginx.conf\

--pid-path=/usr/local/nginx/nginx.pid\

--with-http_ssl_module \

--with-pcre=/xxxxx/pcre-8.41 \

--with-zlib=/xxxxx/zlib-1.2.11 \

--with-openssl=/xxxxx/openssl-1.1.0f

make

make install

注意,此处的/xxxx/即为上面安装各库时选择的路径。

安装成功后/usr/local/nginx 目录下如下

2.6、查看80端口有没有被占用:

netstat -ano|grep 80

2.7、启动(如果是通过yum命令装的,默认应该是/usr/sbin/nginx)

/usr/local/nginx/nginx

在浏览器中访问ip,出现下图即为成功。

3、安装uwsgi

进入虚拟目录

cd /home/xxxx/venv

开启虚拟环境

source bin/activate

安装uwsgi

yum install python-devel(跳过这步直接安装uwsgi报错,从stackoverflow上找到的解决方案,如果还报错看看是不是没有c编译环境,安装就好了)

pip install uwsgi

4、django和uwsgi结合

进虚拟环境,自己新建一个project hello,用python manage.py runserver 0.0.0.0:8000测试是否能正常访问。

然后关闭服务器,此处假设目录为/root/django/env/hello,运行以下命令:

uwsgi --http :8008 --chdir /root/django/env/hello --wsgi-file hello/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:8000

常用选项如下所示:

  • 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后面跟的是相对目录

此时在浏览器中输入:http://ip:8008/,出现如下界面,表示两者结合成功 :

由于参数很多,我们需要把它们写入到一个配置文件中,在项目的app目录下新建 hello_uwsgi.ini,输入:

# hello_uwsgi.ini file
[uwsgi]# Django-related settings
socket= :8008# the base directory (full path)
chdir  = /root/django/env/hello# Django s wsgi file
module    = hello.wsgi# process-related settings
# master
master     = true# maximum number of worker processes
processes = 4# ... with appropriate permissions - may be needed
# Django s wsgi file
module    = hello.wsgi# process-related settings
# master
master     = true# maximum number of worker processes
processes = 4# ... with appropriate permissions - may be needed
# clear environment on exit
vacuum    = true# chmod-socket = 664
# add uwsgi log
daemonize = /xxxxx/uwsgi.log
socket= :8008# the base directory (full path)
chdir  = /root/django/env/hello# Django s wsgi file
module    = hello.wsgi# process-related settings
# master
master     = true# maximum number of worker processes
processes = 4# ... with appropriate permissions - may be needed
# Django s wsgi file
module    = hello.wsgi# process-related settings
# master
master     = true# maximum number of worker processes
processes = 4# ... with appropriate permissions - may be needed
# clear environment on exit
vacuum    = true# chmod-socket = 664
# add uwsgi log
daemonize = /xxxxx/uwsgi.log

保存后,运行(这步请将上面红色字体的socket改为http,socket是配置与nginx通信的(tcp协议),等下一步跟

nginx结合的时候再改回为socket,这里我们浏览器测试要改为http协议):

uwsgi --inihello_uwsgi.ini

在浏览器同样输入http://ip:8008/,看到it works的页面,说明配置成功。

5、django与uwsgi和nginx结合

进入虚拟环境,在项目根目录(此处是/root/xxxx/venv/project)新建static文件夹,运行

python manage.py collectstatic命令将所有静态文件收集到static文件夹内。

修改/usr/local/nginx/nginx.conf(yum安装应该是/etc/nginx/nginx.conf)(以后静态文件就由nginx来处理,

走8092端口,动态资源走8008端口,去服务器请求)

    # add 这里如果是多台主机,ip都要写上,并且这几台主机的nginx配置必须是一样的upstream pacap {#sticky;server 1.1.1.1:8008 max_fails=2 fail_timeout=5s;server 1.1.1.1:8008 max_fails=2 fail_timeout=5s;}# modifyserver {listen       8092;server_name  localhost;root         /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;#charset koi8-r;#access_log  logs/host.access.log  main;location /showdb {charset  utf-8; include uwsgi_params;uwsgi_pass  pacap;uwsgi_read_timeout 1800;}location /static/ {root /home/xxxx/venv/mysite/;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}

运行命令(先确认uwsgi和nginx的进程已经全部kill掉)

uwsgi --ini /root/django/env/hello/hello_uwsgi.ini & /usr/local/nginx/nginx

在浏览器访问http://ip:8092,看到it works页面即成功。

如果不需要端口,可将8092改成80。

centos下配置django、uwsgi和nginx(亲测成功)相关推荐

  1. centos7.3部署django用uwsgi和nginx[亲测可用]

    centos7.3部署django用uwsgi和nginx[亲测可用] 现在nginx nginx version: nginx/1.10.2 uwsgi 2.0.17 django2.0.5 都已经 ...

  2. CentOS7 搭建Pulsar 消息队列环境,CentOS(Linux)部署Pulsar,亲测成功,以及Python操作Pulsar实例驱动

    在 最佳开源数据库与数据分析平台奖 中,之前曾连续两年入选的 Kafka 意外滑铁卢落选,取而代之的是新兴项目 Pulsar,Bossie Awards中对 Pulsar 点评如下:"Pul ...

  3. 3 win10环境下安装Pytorch可视化工具Visdom(亲测,欢迎交流)

    0 Win10环境下安装Visdom可视化工具(亲测成功,欢迎交流) Visdom可视化工具: 本文测试安装环境为windows10+Anaconda+python3.7.10 (注意先装好Anaco ...

  4. 如何在CentOS 7上使用uWSGI和Nginx来运行Django应用程序

    @(tigerfive)[tigerfive][linux学习笔记][uwsgi][django][nginx] 前言 先决条件和目标 安装和配置VirtualEnv和VirtualEnvWrappe ...

  5. centos oracle 服务自动启动,CentOS下配置Oracle 11gR2为系统服务自动启动

    CentOS下配置Oracle 11gR2为系统服务自动启动 CentOS下配置Oracle 11gR2为系统服务自动启动 为什么80%的码农都做不了架构师?>>> PS:在Wind ...

  6. nginx配置ssl实现https访问 亲测有效

    nginx配置ssl实现https访问 亲测有效 申请证书 运行用户,默认即是nginx,可以不进行设置 停止nginx 启动 nginx日常操作命令 申请证书 在这里,我直接申请腾讯云的免费证书.这 ...

  7. CentOS下配置VNCServer,重启服务仍然生效

    CentOS下配置VNC Server,重启服务,配置仍然生效的方法: 本文前提:系统已安装好gnome桌面,如果没有请执行下面的命令安装即可. yum groupinstall "Desk ...

  8. linux vnc服务重启,CentOS下配置VNCServer,重启服务仍然生效

    CentOS下配置VNC Server,重启服务,配置仍然生效的方法: 本文前提:系统已安装好gnome桌面,如果没有请执行下面的命令安装即可. yum groupinstall "Desk ...

  9. vs中imshow函数报错_Win7下VS2010中配置Opencv2.4.4的方法(32位和64位都有效)(亲测成功)...

    在vs2010下配置opencv是件痛苦的事情,一点点错误可能就会导致莫名其妙的报错,各种error让人郁闷不已,这里提供给大家一篇vs2010下配置opencv2.4.4的方法,我是64位的win7 ...

最新文章

  1. visual studio 2017 创建 android 本地共享库(.so) 并从 C# android 项目中调用
  2. Python计算机视觉:第一章 图像处理基础
  3. DL之PSPNet:PSPNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  4. 计划策略-50-没有最终装配的计划
  5. boost::graph::distributed::hohberg_biconnected_components用法的测试程序
  6. linux内核驱动模块开发makefile实例解析
  7. RabbitMQ简单介绍+Windows环境安装
  8. cocos2d的单例
  9. myeclipse以及tomcat乱码解决
  10. C++数据库编程 ODBC查询数据
  11. 欧姆龙PLC CP1H与变频器通信要点总结
  12. 正常查看网页中压缩的js代码
  13. DirectVobSub(VsFilter)的基本原理和实现实现
  14. 按头安利 好看又实用的鼠标事件网页特效素材看这里
  15. html实现展开余下全文多个,DIV+css内容太长,实现点击展开余下全文
  16. 华为机试真题 C 实现【非严格递增连续数字序列】【2022 Q4新题】
  17. 基于Java的雷电游戏设计(含源文件)
  18. UE4 Matinee的动画倒播
  19. 浏览器配置异常_打开360浏览器出现配置文件错乱提示怎么办?
  20. 广电网宽带 如果要远程连接阿里RDS数据库,设置了白名单也不行。

热门文章

  1. Pip给指定版本的Python安装模块
  2. 手机黑屏时闪屏怎么回事_电脑总是黑屏,闪屏是怎么回事啊
  3. 49、SD卡FATFS文件系统实验
  4. 如何使用安卓变声电话软件实现边变声边通话
  5. XX医院等级保护技术方案
  6. 基于抠图的人像特效算法
  7. 橡皮筋类 QRubberBand
  8. 《终结者·洛谷》第4章
  9. IRISnet闹剧谁之过?
  10. Python数据分析及可视化案例--2018成都市公共租赁住房家庭(个人)配租信息分析