前言

将本地开发的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. ROS机器人开发实践学习笔记2

    刚刚开始学习ROS,打算入机器人的坑了,参考教材是<ROS及其人开发实践>胡春旭编著 机械工业出版社 华章科技出品.本来以为可以按照书上的步骤一步步来,但是,too young to si ...

  2. JS的十大排序算法

     名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bub ...

  3. RAD,Eclipse切換界面語言(中日英)

    找到RAD的EXE的位置: 右鍵→屬性→Link先(Target) 將原來的"C:\Program Files\IBM\SDP\eclipse.exe" -product com. ...

  4. 动态连通性问题——算法union-find

    问题定义:问题的输入是一列整数对,其中每个整数都表示一个某种类型的对象,一对整数p,q可以被理解为"p和q是相连的".我们假设“相连”是一种对等的关系. 这也意味着它具有: 1.自 ...

  5. Oracle impdp导入数据报错:无法读取要读取的存储文件(Linux)

    当向Linux下的Oracle11g通过数据泵impdp导入数据库时,出现如图所示错误. 错误原因:bdck.dmp该为大写. 切记:Linux系统严格区分大小写.

  6. 批量停止、删除docker容器

    批量停止 根据NAMES停止所有容器 docker stop `docker ps | awk 'NR!=1{print $NF}'` 根据CONTAINER ID停止所有容器 docker stop ...

  7. Android通过adb shell am broadcast发送广播 参数说明

    通过命令行执行adb shell am broadcast发送广播通知. adb shell am broadcast 后面的参数有: <INTENT> specifications in ...

  8. double,float,BigDecimal类型数值的操作

    float四舍五入保留两位小数 /** * float四舍五入保留两位小数 * */ public static float formatDecimal(float n) { return (Math ...

  9. 使用Python处理Excel表格的简单方法

    使用Python处理Excel表格的简单方法 这篇文章主要介绍了使用Python处理Excel表格的简单方法,本文给大家介绍的非常详细,需要的朋友可以参考下 Excel 中的每一个单元,都会有这些属性 ...

  10. MLN Alchemy

    1. 前言: 本文主要参考Alchemy Tutorial, washington主页上挂出的所有Alchemy项目(包括Alchemy1.0, Alchemy2.0, AlchemyLite)都无法 ...