在服务器Ubuntu16.04 上部署Django+uWSGI+Nginx

百度云服务器BCC安装ubuntu16.04 +python3.6配置uWSGI和Nginx 部署Django项目 题外话 最近也不开学不开工,闲着没事在做一个python+Django的项目。正好域名之前刚审核通过。开始着手在百度云部署自己的项目,记录一下过程中踩过的坑。 简介 Django是一个功能强大的Web框架,可以帮助你开发Python应用程序或网站。 Django包含一个简化的开发服务器,用于在本地测试你的代码,但对于任何与生产相关的内容,都需要更安全,更强大的Web服务器。 百度云安装Ubuntu... 阅读详情

1.安装好Ubuntu系统

  • 先换下载源
  • 然后在设置语言

2.更新所有软件(重要)

sudo apt update

sudo apt upgrade

3.升级pip到最近版本

sudo pip3 install --upgrade pip
# 如果报错
sudo pip3 install -U setuptools

4.pip安装错误:pip install - locale.Error: unsupported locale setting

Traceback (most recent call last):
  File "/usr/bin/pip3", line 11, in 
    sys.exit(main())
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 215, in main
    locale.setlocale(locale.LC_ALL, '')
  File "/usr/lib/python3.5/locale.py", line 594, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

解决办法:

export LC_ALL=C

5.使用pip配置相同的运行环境

1.在配置好的机器上使用 pip freeze > requirements.txt 生成安装列表
2.把生成的文件复制到目标机器上
3.在目标机器上执行 sudo pip install -r requirements.txt 自动读取列表并安装

6.安装mysqlclient报错:

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-94ik7yxu/mysqlclient/

解决办法:

sudo apt-get install libmysqlclient-dev

7.安装虚拟环境

安装虚拟环境 sudo pip3 install virtualenv virtualenvwrapper
安装完成使用 which virtualenvwrapper.sh 查看 virtualenvwrapper.sh 位置,然后将它放到source后
配置环境变量 vim ~/.bashrc 添加如下内容,保存后执行 source .bashrc

具体配置如下:

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virutalenvs
source /usr/local/bin/virtualenvwrapper.sh

8.安装uwsgi,虚拟环境和外部环境都要安装

sudo pip install uwsgi

测试

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3
    #return ["Hello World"] # python2

运行:

uwsgi --http :8000 --wsgi-file test.py

测试Django项目:

python manage.py runserver 0.0.0.0:8000

使用uWSGI运行Django项目:

uwsgi --http :8000 --module mysite.wsgi

9.安装Nginx

sudo apt-get install nginx

设置uwsgi_params:

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

设置 projectname_nginx.conf:

upstream django {
    server 127.0.0.1:8001;
}

# configuration of the server
server {
    listen      80;
    server_name .example.com; # substitute your machine's IP address or FQDN
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    # Django media
    location /media  {
        alias /path/to/your/mysite/media;  # your Django project's media files - amend as required
    }

    location /static {
        alias /path/to/your/mysite/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed
    }
}

这个配置文件告诉nginx提供来自文件系统的媒体和静态文件,以及处理那些需要Django干预的请求。设置的 static 目录和 media 目录将由 Nginx进行代理。

将这个文件链接到/etc/nginx/sites-enabled,这样nginx就可以看到它了:

sudo ln -s ~/path/to/your/mysite/projectname_nginx.conf /etc/nginx/sites-enabled/

部署静态文件,必须先编辑 setting.py,添加如下内容

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

 然后运行

python manage.py collectstatic

重启Nginx

sudo service nginx restart

10.连接Nginx和uWSGI 

配置uwsgi.ini

[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /home/ubuntu/smallservice
# Django's wsgi file
module          = smallservice.wsgi
# the virtualenv (full path)
home            = /home/ubuntu/.virutalenvs/django
daemonize       = /home/ubuntu/log/test.log
# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = :8001
# ... with appropriate permissions - may be needed
chmod-socket    = 666
# clear environment on exit
vacuum          = true

使用此文件运行uwgi:

uwsgi --ini mysite_uwsgi.ini # the --ini option is used to specify a file

 再次测试Django是否可以运行

11.系统运行时运行 uWSGI

这一步是让这一切在系统启动的时候自动执行,修改 /etc/rc.loacl 文件,然后在 “exit 0” 行前面加上:

uwsgi --ini /path/to/mysite_uwsgi.ini

另附:升级Python版本

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

 找不到PIP,解决:

wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate
sudo python get-pip.py

参考资料:https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/tutorials/Django_and_nginx.html

从零开始在 Ubuntu 下部署 Nginx uWSGI Django 服务器 个人技术博客地址:http://songmingyao.com/ 从零开始在 Ubuntu 下部署 Nginx uWSGI Django 服务器 阅读详情

相关推荐

Django + nginx + uswgi 的部署总结

Django + nginx + uswgi 的部署总结 一.引言 自己小组内写了一个网站,需要部署到远程服务器,搜索了好多资料,但是大部分资料都比较繁琐,并且没有一个教程能够直接从头到尾适合,在部署过程中,我是按照很多教程然后综合试验着逐渐部署成功,其中有不少的bug是自己费劲心思才搞定,所以在这里把我的部署方法介绍一下。 二.远程服务器的选取 首先,你可以把你的网

fengzq15的博客 4834

ubuntu16.04下使用nginx+uwsgi+django部署django项目

安装nginx 1.安装nginx的相关依赖 sudo apt-get install libpcre3-dev gcc zlib1g-dev build-essential 2.使用apt-get安装nginx sudo apt-get install nginx 3.启动你的nginx sudo service nginx restart 在你浏览器的地...

水恋鱼 812

部署 Django 到服务器

Django 专用服务器提供商:https://www.21yunbox.com/ 基于Ubuntu16.04 + Python3(虚拟环境) + nginx + mysql + Django 先安装一些必要的环境,这些操作都是在你已经购买了阿里云服务器。并且在本地你已经搭建好了Django项目为前提。现在我们所做的就是把本地的环境在阿里云的服务器上重新搭一遍。 linux服务器默认是python2.7,如果你的项目是基于python3,必须先安装python3,建议安装python3的虚拟环境,..

742

通过nginx+uwsgi部署django应用在ubuntu

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33755847的博客 139

Ubuntu16.04下Nginx+uwsgi部署Django项目

对于Python初学者,部署会踩很多,这里是自己初学时的经验,所以粘出来和大家分享

读书笔记|智能运维系统落地方案

对于互联网公司来说,系统复杂化导致的人工运维成本激增已经是普遍现象,采用智能运维是行之有效的应对策略。智能运维的核心思想是利用算法来处理海量运维数据,积累运维经验,从而代替人工思考判断,以自动化的过程实现风险的预防、发现、定位和处理。而智能运维系统是其中的重中之重,但建设企业应用智能运维系统,不是应用运维部独立规划设计就可以完成的,它需要业务、产品、开发、基础设施运维多部门协同才能顺利实施。 那么,作为运维人员,您是否了解智能运维系统的架构?如果参与规划建设智能运维系统,该怎么着手呢?下面我们立足实际需求

xiaoshuaca的博客 682

Ubuntu服务器通过uWSGI和Nginx部署Django项目教程

uWSGI+Nginx+Django工作原理 nginx作为服务器前端,接受客户端所有的请求,统一来管理。Nginx把所有的静态请求自己处理(静态文件处理是nginx的强项),然后把所有非静态请求通过uwsgi传递给Django,由Django来处理,从而完成一次web请求。 部署环境 阿里云服务器Ubuntu 16.04版 (Linux),Python 3.X。如果你是首次购买阿里云服务器,你应...

qq_39129986的博客 348

深度学习暑期科研项目(两个月发EI论文)

对本科生而言,越早接触系统的科研训练开始上手科研项目,就越能在未来的升学求职中占据很大的优势。暑假是提升个人简历、丰富科研经历的最佳时期!哈尔滨工业大学博士师兄也会在8月1日开始带大家上手科研项目,并撰写发表EI会议论文。

Magnolia_He的博客 1443

Ubuntu 16.04 + Nginx + Django 项目部署

搭建服务器虚拟环境 在本机进入虚拟环境,执行命令导出当前需要的所有包。 pip freeze > requirements.txt 通过ftp或者scp等软件将项目代码和requirements.txt文件上传到服务器。 mkvirtualenv 虚拟环境名称   #在ubuntu 服务器上新建一个虚拟环境 ​ pip install -r requi...

Logan的博客 361

基于COMSOL电弧动态仿真模型优化:高收敛性可修改吹弧方案解析

在多物理场耦合分析中,电弧动态仿真历来是数值稳定性的难点:温度从室温跃升至数万开尔文,电导率随温度呈数量级跳变,流动、传热与电磁场相互牵制,极易引发求解器不收敛或初始值不一致等问题。如何构建高收敛性的数值模型,成为开关设备灭弧性能优化的重要技术基础。通过合理的几何简化、全耦合求解器配置、辅助扫描初始化策略以及参数化建模手段,可以实现对吹弧方案的灵活调整与批量寻优,从而系统性评估气流速度、喷口形状、触头间距等关键因素对熄弧性能的影响。这类仿真方法广泛应用于断路器、接触器等高压电器产品研发,为灭弧室结构设计提供

weixin_29758911的博客 350

不用敲命令!用宝塔面板可视化部署pbootCMS的保姆级教程(2024最新版)

本文提供2024年最新版pbootCMS可视化部署教程,全程使用宝塔面板操作,无需任何命令行知识。从服务器初始化、LNMP环境配置到源码上传、安装向导,手把手指导用户通过图形化界面快速搭建专业网站,适合零基础新手和追求高效建站的用户。

weixin_42509507的博客 490

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

1、安装Python3.6 sudo add-apt-repository ppa:fkrull/deadsnakes #然后会提示你敲击回车键 #回车 sudo apt-get install python-software-properties -y sudo apt-get update sudo apt-get install python3.6-dev python3.6-venv ...

ghostdom_imp的博客 250

D触发器版图设计的艺术:最小化面积与最大化性能的平衡之道

本文探讨了D触发器版图设计中如何平衡最小化面积与最大化性能的核心挑战。通过分析晶体管布局、互联优化、时钟分布等关键策略,结合先进制程下的功耗与信号完整性考量,为数字IC工程师提供了从基础优化到制造验证的实用解决方案,助力实现高性能、低面积的芯片设计。

aa123的博客 910

ubuntu16.04下nginx+uwsgi+django服务器部署

1.python开发环境 安装pyenv,python,virtualenv,需要使用python虚拟环境env365 2.安装配置nginx 安装 sudo apt-get install nginx 配置 cd /etc/nginx/sites-available cp default www.xingjidemimi.cn vim www.xingjidemimi.cn 修改www.xing...

AdeCary的博客 889

GaussDB本地安装手册(主备模式)

如果实例状态是Normal,则安装成功。三节点集中式配置文件。

Sebastien23的博客 2635

【深度学习】最强算法之:残差网络(ResNet)

一篇掌握深度学习算法之:残差网络

商务合作 | 面试培训 | 职场规划 ==>主页扫码 7837

西门子PLC控制步进电机:接线、参数与编程调试全攻略

在工业自动化领域,PLC与步进电机的组合是小型运动控制系统的常见方案。理解脉冲输出、方向信号与驱动器参数匹配是掌握运动控制的基础。步进电机依靠驱动器将脉冲序列转换为角位移,PLC通过高速脉冲输出控制位置与速度。掌握晶体管输出选型、共阴极接线、脉冲当量计算等关键技术,能有效避免丢步、抖动等常见故障。从单轴点位控制到多轴联动,运动控制广泛应用于包装、装配、检测等设备。西门子PLC作为主流控制器,其S7-200 SMART与S7-1200系列提供了完善的运动控制指令,工程实践中需要结合接线细节与调试方法,才能实现

weixin_33827731的博客 390

FCTA/FCTB 前方交通穿行预警/制动系统技术规范

FCTA&FCTB前方交叉路口预警制动系统是针对十字路口和停车场等"鬼探头"场景设计的驾驶辅助系统。系统在自车速度0-40km/h范围内工作,通过角雷达和摄像头检测侧向来车.

未知艺术家的博客 743

实战ubuntu16.04云服务器上搭建Nginx+uWSGI+Django

前言 这篇文章手把手带你了解如何在ubuntu16.04云服务器上搭建Nginx+uWSGI+Django开发环境~ 环境准备 服务器ssh安全配置 这里可以参考我之前的博文,服务器安全篇【ssh安全】 python默认更改 针对腾讯云默认python使用python2.7,虽然可以使用py -3可以调用python3,但依旧觉得不便。两个命令很容易搞定python默认py...

Sp4rkW的博客 2326

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

关于uWSGI+nginx+django项目的部署

前提:ubuntu16.04系统中,django2.0.9、uWSGI、nginx均以成功安装,django项目MyWeb也在开发环境中测试成功。 目的:通过配置文件(nginx的配置文件、uWSGI的配置文件)实现浏览器依靠nginx+uWSGI+django的方式访问网页。 我们知道,在nginx+uWSGI+django的生产环境中,浏览器访问网页的过程是:浏览器先向nginx发出HTTP请...

weixin_43523521的博客 224

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【绝对详细!不好使你顺着网线敲我!】Django3.1在Ubuntu16.04上的部署

前言 转眼间Django版本更新已经到了3.1.7,在使用Django3.1时,使用以往版本的Django部署方法进行部署时许多已经都不起作用,但也能搜索到许多有帮助的技术性文章。于是特将整个部署过程整理于此以供参考。 部署架构 目前依旧流行的Python3.7配合 uWSGI + Nginx + 阿里云的Ubuntu 16.04 + Django3.1 +Mysql 5.7.33 辅助工具 Pycharm 2020.1.3 专业版 + XShell6 + Xftp6 总体流程 Created with R

qq_43576837的博客 502

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口。 准备工作 1.首先购买一台阿里云的ECS服务器,选择Ubuntu16.04操作系统(我使用的是学生机 10/月) 2.注册一个码云账号,因为github私有项目是收费的,而码云是免费的。 3.准备一个Django项目,在本地机运行没有问...

weixin_34220623的博客 127

阿里云Ubuntu服务器通过uWSGI和Nginx部署Django项目

阿里云Ubuntu服务器上部署Django项目的教程,采用的是经典的uWSGI+Nginx架构组合,完全可以胜任中大型Django项目的开发。

m0_38144883的博客 571

完整版 Nginx+Uwsgi+Django+Python服务器部署及调试

官方文档 https://docs.djangoproject.com/en/1.8/howto/static-files/ Nginx+Uwsgi+Django+Python服务器部署 环境:Ubuntu16.04 1.python开发环境 安装pyenv,python,virtualenv,需要使用python虚拟环境env (1.)安装Pyenv pyenv 这个工具用来 管理我们的Pyth...

梧桐凰的博客 1970

python3.6 django部署_Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统这个是写好的Django程序在本地机运行的情况,一个查询接口。准备工作1.首先购买一台阿里云的ECS服务器,选择Ubuntu16.04操作系统(我使用的是学生机 10/月)2.注册一个码云账号,因为github私有项目是收费的,而码云是免费的。3.准备一个Django项目,在本地机运行没有问题。在这个例...

weixin_39845221的博客 164

django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)

1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用。 pip freeze >requirements.txt 2.将项目文件夹→右键→添加压缩文件,压缩为zip包 3.准备软件 1.xshell(用于远程操作服务器) 2.FileZilla(用于从客户端将项目包上传到服务器) 3.Navicat 1...

weixin_30700099的博客 168
上一篇: 在Ubuntu 18.04 中设置开机自动执行脚本
下一篇: 使用PyCharm自带的Python Console运行Django shell
命运的棋局
博客等级 码龄10年 15粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值