前言

将本地开发的django项目部署至linux上的uwsgi服务器,并配置nginx,完成基于ubuntu+nginx+uwsgi的上线运行。下面整理相关步骤。

服务器配置virtualenv

如果不想直接用python环境运行,则需要在服务器上安装并配置virtual env。如果直接用python环境,则可跳过这一步。

pip install virtualenv
pip install virtualenvwrapper

需要配置环境变量,以能使用相关命令:

在 ~下创建.bash_profile,添加如下内容:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh

然后运行命令:

source ~/.bash_profile

配置完成。使用如下命令:

mkvirtualenv its_name # 创建virtual env
workon its_name # 切换到某个env下(如果不指定its_name)则是列出所有已有env
deactive # 退出当前env
rmvirtualenv its_name # 删除某个virtual env

安装依赖包

首先在开发本地,需要导出pip依赖包列表。

pip freeze > plist.txt

将此文件放至服务器环境,并批量安装依赖。

workon [虚拟环境名称]
pip install -r plist.txt -i https://pypi.douban.com/simple
# 注,这里使用豆瓣源安装,在国内下载速度比pip官方源快很多

django项目的修改

需要修改settings.py文件,关闭debug模式。

DEBUG = False
ALLOW_HOSTS=['*',] #表示可以访问服务器的ip

配置uwsgi

安装:

pip install uwsgi

需要在django项目根目录(与manage.py同级目录)下,新建一个uwsgi.ini文件,写入相关配置:

[uwsgi]
socket=外网ip:端口(使用nginx连接时,使用socket)
http=外网ip:端口(直接做web服务器,使用http)
chdir=项目根目录
wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log

可以启动uwsgi啦:

启动:uwsgi --ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid
重启:uwsgi --reload uwsgi.pid

配置nginx

需要预先安装nginx:

apt install nginx

对nginx进行配置:

cd /etc/nginx/sites-available
cp default default.bak
vi default

可进行如下配置:

server{
# 根据自身需要使用80或443
listen 443;
server_name search.codingcat.cn; # 可以配置域名ssl证书
ssl on;
ssl_certificate /etc/nginx/ssl/search.codingcat.cn.crt;
ssl_certificate_key /etc/nginx/ssl/search.codingcat.cn.key; location / {
uwsgi_pass 127.0.0.1:8888;
include uwsgi_params;
} # 因为uwsgi下,静态目录无法访问,所以使用nginx来处理静态请求
# 这里是直接将static路径请求赚到了项目的static下
location /static {
root /home/ubuntu/pythonweb/wesearch/;
}
}

备注:如果使用了django自带admin后台,admin的静态目录也无法访问,可依此方法配置/ static/admin 到django源码中的admin静态目录下,或者将admin目录拷贝到自己项目的static目录下。

启动nginx:

service nginx start
service nginx stop
service nginx restart

ubuntu+nginx+uwsgi部署django web项目的更多相关文章

  1. nginx + uwsgi 部署 Django+Vue项目

    nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...

  2. 填坑!!!virtualenv 中 nginx + uwsgi 部署 django

    一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...

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

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

  4. nginx + uwsgi 部署django项目

    因项目需求,需要部署django项目,这里是基础的nginx配合uwsgi部署django,后续会采用docker部署的方式 环境: centos7 python3.5.4 django2.1.4 u ...

  5. 使用Nginx+Uwsgi部署Python Flask项目

    第一次用Flask做Web(也是第一次用Python做Web),在部署的时候遇到了不少问题,现在将过程就下来,供在这方面也有疑惑的人参考.(PS:使用Apache+mod_wsgi部署模式的可以参考另 ...

  6. nginx+uwsgi部署Django项目到Ubuntu服务器全过程,以及那些坑!!!

    前言:自己在windows上用PyCharm编写的Django项目,编写完后在windows上运行一点问题都没有,但是部署到服务器上时却Bug百出.百度,CSDN,sf,各种搜索寻求解决方案在历时3天 ...

  7. Nginx + uWSGI 部署Django 项目,并实现负载均衡

    一.uWSGI服务器 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI ...

  8. 使用Nginx+uWSGI部署Django项目

    1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgi l ...

  9. 部署 Nginx +uwsgi+centos7+django+supervisor 项目

    部署CRM项目 前言 使用软件 nginx 使用nginx是为了它的反向代理功能,项目会通过Django+uWSGI+Nginx进行服务器线上部署. uWSGI python web服务器开发使用WS ...

随机推荐

  1. AGC009C Division into Two

    题意 有\(n\)个严格升序的数,请你分成两个集合\(A\)和\(B\),其中一个集合任意两数之差不小于\(x\),另一集合任意两数之差不小于\(y\). 问方案数,集合可以为空. $n \le 10 ...

  2. 第11组 Beta冲刺(3/5)

    第11组 Beta冲刺(3/5)   队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/12006665.html 作业博客 https://edu. ...

  3. 【matlab】模拟变焦拼接代码备份

    1.初版,边缘未处理. % % In----near % If----far % In=imread('D:\文件及下载相关\桌面\模拟变焦拼接\Matlab_code\nearframe\frame ...

  4. C++内容记录

    仅个人记录 https://ke.qq.com/course/336509 M了个J - 博客园 https://www.cnblogs.com/mjios/

  5. vps虚拟机df -h根分区100%

    前言:今天上午接到一个网友的求助,说是服务器的根分区满了.但是,找不到具体的大文件在哪里.由于故障确实很古怪,我就要来了故障服务器的相关账户密码. 故障服务器相关环境: 系统:Centos 6.5 s ...

  6. js取url问号后的参数方法封装

    工具方法: function getRequest() { var url = location.search; // 获取url中?后面的字符串 var theRequest = new Objec ...

  7. 【UE】常用的UltraEdit使用技巧

    Tip 1: Alt+C 列模式可以说最初选择使用这个文本编辑软件,原因很简单,就是因为“她”具有列编辑模式.如果您还不知道什么是列编辑模式的话,我想您应该好好研究一下啦.这是一个超级“赞”的功能.在 ...

  8. JS创建类和对象,看完了,头就不大了

    JavaScript 创建类/对象的几种方式 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活 ...

  9. unity读取灰度图生成三维地形mesh

    准备灰度图 IGray.png及草地贴图 IGrass.jpg ,放入Assets下StreamingAssets文件夹中.     创建空材质,用作参数传入脚本.   脚本如下,挂载并传入材质球即可 ...

  10. 【算法导论】--分治策略Strassen算法(运用下标运算)【c++】

    由于偷懒不想用泛型,所以直接用了整型来写了一份 ①首先你得有一个矩阵的class Matrix ②Matrix为了方便用下标进行运算, Matrix的结构如图:(我知道我的字丑...) Matrix. ...