Centos7.6下Nginx+Uwsgi+Django部署

                  本人服务器是使用腾讯云Centos7.6.以下配置均在Root权限下操作。

1. python3

  1.1 安装依赖包

sudo yum -y groupinstall "Development tools"
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

  1.2 下载Python3安装包

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0a1.tar.xz

  1.3 解压

tar -xvJf  Python-3.7.0a1.tar.xz

  1.4 配置编辑参数

cd Python-3.7.0a1
./configure --prefix=/usr/local/bin/python3

  1.5 编译和安装

make
make install

2. 安装虚拟环境

  2.1 安装虚拟环境

pip3 install virtualenv
pip3 install virtualenvwrapper

  2.2 创建存放虚拟环境的文件夹

mkdir /root/.virtualenvs

  2.3 更改.bashrc配置文件

vim ~/.bashrc
find / -name virtualenvwrapper.sh # 查看路径
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python # 指定virtualenvwrapper执行的python版本
export WORKON_HOME=/root/.virtualenvs    # 虚拟环境存放目录
source /usr/local/bin/virtualenvwrapper.sh    # virtualenvwrapper.sh所在目录

  2.4 激活更新配置

source ~/.bashrc

  2.5 虚拟环境基本命令

mkvirtualenv  创建虚拟环境
deactivate  退出虚拟环境
workon  查看虚拟环境
workon 虚拟环境名   进入虚拟环境

3. 安装PCRE库

  3.1 进入local文件夹

cd /usr/local/

  3.2 下载安装包

wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz

  3.3 解压安装包

tar -zxvf pcre-8.33.tar.gz

  3.4 配置编辑参数

cd pcre-8.33
./configure

  3.5 编译安装

make && make install

  3.6 如果报错:configure: error: You need a C++ compiler for C++ support

解决办法:
yum install -y gcc gcc-c++

4. 安装SSL库

  4.1 进入到local文件夹

cd /usr/local/

  4.2 下载安装包

wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz

  4.3 解压安装包

tar -zxvf openssl-1.0.1j.tar.gz

  4.4 配置编辑参数

cd openssl-1.0.1j
./config

  4.5 编译安装

make && make install

5. 安装Zlib库

  5.1 进入local文件夹

cd /usr/local/

  5.2 下载安装包

wget http://zlib.net/zlib-1.2.11.tar.gz

  5.3 解压安装包

tar -zxvf zlib-1.2.11.tar.gz

  5.4 配置编辑参数

cd zlib-1.2.11
./configure

  5.5 编译安装

make && make install

6. 安装Nginx

  6.1 进入local文件夹

cd /usr/local/

  6.2 下载安装包

wget http://nginx.org/download/nginx-1.8.0.tar.gz

  6.3 解压安装包

tar -zxvf nginx-1.8.0.tar.gz

  6.4 配置编辑参数

cd nginx-1.8.0
./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module

  6.5 编译安装

make && make install

  6.6 启动测试

/usr/local/nginx/sbin/nginx

  6.7 设置开机自启

vi /etc/rc.local
/usr/local/nginx/sbin/nginx   # 增加到最后一行

  6.8 可能遇到的错误

错误1:
./configure: error: SSL modules require the OpenSSL library.
解决办法:
yum -y install openssl openssl-devel

错误2:
./configure: error: the HTTP gzip module requires the zlib library
解决办法:
在–prefix后面接以下命令:
--with-pcre=/usr/local/pcre-8.36 指的是pcre-8.36 的源码路径。--with-zlib=/usr/local/zlib-1.2.8 指的是zlib-1.2.8 的源码路径。

错误3:
nginx: [emerg] still could not bind()
解决办法:
cd /usr/local/nginx/sbin/
./nginx -s reload

7. 安装Uwsgi

  7.1 安装

pip3 install uwsgi

8. 安装Django(在虚拟环境下)

  8.1 安装

pip3 install django==1.11.11

9. 创建Django项目(在虚拟环境下)

  9.1 创建项目

 django-admin startproject 工程名称

  9.2 创建子应用

首先cd到工程目录下
python manage.py startapp 子应用名称

  9.3 创建视图函数

cd到子应用下
vim views.py

添加到py文件中
from django.http import HttpResponse

def index(request):
    """
    index视图
    :param request: 包含了请求信息的请求对象
    :return: 响应对象
    """
    return HttpResponse("hello the world!")

  9.4 创建路由

vim meiduo/users/urls # 子路由

from django.conf.urls import url
from . import views

# urlpatterns是被django自动识别的路由列表变量
urlpatterns = [
    # 每个路由信息都需要使用url函数来构造
    # url(路径, 视图)
    url(r‘^index/$‘, views.index),
]

vim meiduo/urls   # 主路由 

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^‘, include(‘users.urls‘)),
]

  9.5 配置settings文件

cd 项目目录/项目名/1. 注册子应用   我的子应用名是users
INSTALLED_APPS = [
    ‘users.apps.UsersConfig‘,
]

2. 设置HOST
ALLOWED_HOSTS = [‘*‘]

  9.6 配置Nginx文件

vim /use/local/nginx/conf/nginx.conf

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;# 设置log日志文件
error_log  /var/log/nginx/nginx_error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;

    access_log  /var/log/nginx/nginx_access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  127.0.0.1;
    root /home/python/Desktop/kaiyuan/static;        #charset koi8-r;

        #access_log  logs/host.access.log  main;
    # 设置首页访问路径
    location =/ {
        root /home/python/Desktop/kaiyuan/static/;        index index.html index.htm;
    }

    location =/index.html{
        index    index.html;
    }
    # 设置静态页面访问路径
    location /static{
        alias /home/python/Desktop/kaiyuan/static;        autoindex on;
    }
    #设置Django项目访问路径和uwsgi
    location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:9090;  # 这里要和Uwsgi写的一致
            uwsgi_param UWSGI_SCRIPT kaiyuan.wsgi;            uwsgi_param UWSGI_CHDIR /home/python/Desktop/kaiyuan;            }
}

  9.7 配置Uwsgi文件

[uwsgi]
# 用于和Nginx通讯
socket = 127.0.0.1:9090
# Django项目根目录
chdir = /home/python/Desktop/kaiyuan
# Django项目wsgi文件
module = meiduo.wsgi
# 启动主进程来管理其他进程,其他的uwsgi进程都是master的子进程
master = true
# 当服务器退出的时候自动删除unix socket文件和pid文件。
vacuum = true
# 指定pid文件
pidfile = /home/python/Desktop/kaiyuan/uwsgi.pid# 日志
daemonize = /home/python/Desktop/kaiyuan/uwsgi.log# 自动加载
py-autoreload = 1

  9.8 重启Nginx和Uwsgi

重启Nginx
cd /usr/local/nginx/sbin/
./nginx -s reload  # 重启

重启Uwsgi
cd /home/python/Desktop/kaiyuan/   # cd到自己的配置文件目录
uwsgi --ini uwsgi.ini

原文地址:https://www.cnblogs.com/yinbohang/p/11794836.html

时间: 2024-08-30 00:29:57

Centos7.6下Nginx+Uwsgi+Django部署的相关文章

Nginx+uWSGI+Django部署web服务器

目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py 编辑luffy/luffy/urls.py 运行并测试 uWSGI部署 测试运行uWSGI 使用uWSGI运行django项目 uWSGi热加载Djangoa项目 部署nginx nginx配置uwsgi和django django部署static文件 重新加载nginx进行测试 测试nginx

nginx+uwsgi+django部署流程

当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uwsgi+django是我们常用的django部署方式.nginx作为最前端的服务器,他负责接收所有的客户端请求,对于请求的静态文件,由nginx服务器自己完成,因为它具有很好处理静态文件的能力,性能进行过优化,支持高并发量:uWSGI服务器作为支持服务器,是用来服务nginx的,nginx将请求的动态

如何将django部署从顶级目录迁移到子目录下(NGINX UWSGI DJANGO)

因为公司网站合并,要将我们的DJANGO项目从IP的顶级目录迁移到域名的二级目录. 以前硬编码的URL可惨了. 还涉及到upload目录,静态目录,websocket目录. 全用{% url %}问题不太大. nginx分前后两级,uwsgi配置要作相应更改,django的setting需要变量登陆网址. 这样,在正式网站访问二级目录,测试环境仍然可以根目录访问. nginx_front: server { listen 80; server_name localhost; location /

在ubuntu16上进行nginx+uwsgi+django部署的简要步骤

网上有很多部署教程,说了一大堆,遇到坑还是要自己一个个解决,这里有几个比较重要的坑大家一定要注意. 1.首先要安装python和python-dev环境,如果没有安装python-dev后面安装有些依赖要报错.这是第一个坑. apt-get install python python-dev pip 2.安装uwsgi要先安装gcc的编译环境.这是第二个坑.如果不安装gcc运行uwsgi也不会报错,后台进程就是不启动. 我被这个坑了很久. apt-get install gcc 3.找一个目录,

ubantu+nginx+uwsgi+django部署

1.更新ubantu的apt apt-get update 必要时候更新系统:      apt-get upgrade 2.远程连接服务器 ssh 用户名@ip 上传代码 :        scp 本地文件夹/文件   用户名@ip:远程存放位置 3.安装数据库 apt-get install mysql-server mysql-client libmysqlclient-dev (ps:如果不安装libmysqlclent-dev,接下来安装mysql-python可能会报错) 安装完成以

使用Nginx+uWSGI+Django方法部署Django程序(下)

在上一篇文章<五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)>中,阐述了如何只使用uWSGI来部署Django程序. 当然,单单只有uWSGI是不够的,在实际的部署环境中,Nginx是必不可少的工具. 在本篇文章中,我将一直延用“N步法”的风格来阐述如何将uWSGI与Nginx做连接来部署Django程序.并在最后,会较为完整的阐述本社区的部署方法. 本文大纲: 环境介绍 配置uWSGI 配置Nginx Nginx+uWSGI+Django的实现方式 一些建

【转】五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(下)

五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(下) By Django中国社区 at 2013-05-18 04:38 在上一篇文章<五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)>中,阐述了如何只使用uWSGI来部署Django程序. 当然,单单只有uWSGI是不够的,在实际的部署环境中,Nginx是必不可少的工具. 在本篇文章中,我将一直延用“N步法”的风格来阐述如何将uWSGI与Nginx做连接来部署Django程序.并

debian完整部署 Nginx + uWSGI + Django

debian完整部署 Nginx + uWSGI + Django 手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供的服务器包用apt-get这种方式安装的.这种方式比较简单,但没有新版本. 另外就是使用源代码自己编译安装,这种比较繁琐,但能选择适合的版本安装. 这里介绍的是第二种,使用源代码编译的版本进行安装部署. 部署测试环境: - wind

【转】五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)

五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上) By Django中国社区 at 2013-05-12 15:05 Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.nginx把所有静态请求自己来处理(这是NGINX的强项).然后,NGINX将所有非静态请求通过uwsgi传递给Django,由Django来进行处理,