Diango + uwsgi + nginx项目部署的全过程(可外网访问)

前言

自己通过nginx uwsgi 部署django项目,查询了很多资料,遇到了很多问题,最终完成了部署,趁着心情愉悦,写个随笔,为曾像我一样苦寻解决方案的小伙伴们提供些思路。

方法如下

安装Nginx:

#安装nginx
sudo apt-get install nginx

#一些有用的命令
#启动nginx
sudo /etc/init.d/nginx start
#重启nginx
 8sudo /etc/init.d/nginx restart
#停止nginx
sudo /etc/init.d/nginx stop

#很暴力的方法,我喜欢
sudo killall nginx

安装uwsgi:

 pip install uwsgi

 #注意uwsgi需要在虚拟环境中运行

配置uwsgi:

#在项目目录中建立个conf文件夹,将nginx和uwsgi文件都放进去,不是必须#但是个好习惯

#my_uwsgi.ini
ite_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir   = /to/your/project/#这个是项目的路径
# Django's wsgi file
module   = project.wsgi#这个project要换成自己的项目名,也就是uwsgi.py所在的文件夹名
# the virtualenv (full path)
home   = /home/ubuntu/.virtualenvs/虚拟环境名#这个就是虚拟环境的路径

# process-related settings
# master
master   = true
# maximum number of worker processes
processes  = 10
# the socket (use the full path to be safe
socket   = 127.0.0.1:8080#这个用来和Nginx对接,端口号可以改,本人项目将uwsgi作为本地服务,外网不能直接访问,用nginx作为代理,所以用本地的地址。
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum   = true
~

配置nginx

#以下内容在mysite_nginx.conf中,这个文件名也可以随意起
# mysite_nginx.conf

# the upstream component nginx needs to connect to
upstream django {
 # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
 server 127.0.0.1:8080; #这个是用来跟uwsgi对接的,要和my_uwsgi.ini中写一致
}

# configuration of the server
server {
 # the port your site will be served on
 listen  8000;#这个端口是nginx用来监听uwsgi的,默认的是80,总之项目是通过下面的server_name:8000来访问的
 # the domain name it will serve for
 server_name xxx.xxx.xx.xx ; #这个ip就是服务器的ip
 charset  utf-8;

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

 # Django media
 location /media {
  alias /your/project/media; #这个目录是项目的meda目录
 }
 location /static {
  alias /your/project/static; # 这个目录是项目的static目录
 }

 # Finally, send all non-media requests to the Django server.
 location / {
  uwsgi_pass django;#这个是对接uwsgi的
  include  uwsgi_params; # 这个参数按我这样写nginx就能找到的
 }
}

将nginx配置文件链接到启动配置目录:

#注意修改下面的路径及文件名,哈哈不要只复制粘贴啊
sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

修改django项目中的setting.py文件,添加

#要将STATICFILES_DIRS =[os.path.join(BASE_DIR, 'static')]注释掉,Debug在生产模式也要改成False
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

将静态文件打包,让nginx代理:

python manage.py collectstatic

启动nginx,uwsgi

 sudo /etc/init.d/nginx restart
#进入conf文件夹,或者说配置的uwsgi.ini文件所在目录
#uwsgi.ini改成自己的名字
uwsgi -i uwsgi.ini

访问:

ip:port(端口为nginx.conf中配置的)

总结:

写到这也差不多了,项目可以跑起来了,nginx,uwsgi高级配置还在学习中,希望本文对你有所帮助,谢谢。

最后再提醒下,网上有很多配置文件的模板,将我写注释的地方对比修改下,别遗漏。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

参考文档:https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html

     http://uwsgi-docs.readthedocs.io/en/latest/Nginx.html

您可能感兴趣的文章:

  • 关于nginx+uWsgi配置遇到的问题的解决
  • 解决nginx+uwsgi部署Django的所有问题(小结)
  • 详解使用Nginx和uWSGI配置Python的web项目的方法
  • Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
  • 使用Nginx+uWsgi实现Python的Django框架站点动静分离
  • 在Linux系统上通过uWSGI配置Nginx+Python环境的教程
  • 利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
(0)

相关推荐

  • Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程

    具体环境: Ubuntu 14.04 Python 2.7.6 Django 1.7.1 Virtualenv name:test Nginx uwsgi 假设 项目文件夹位于 /data/www/ts 设置保存在 ./conf 复制代码 代码如下: virtualenv name = test domain name = example.com django+uwsgi的部署实在是太蛋疼了..网上已有的教程似乎有新版本的兼容问题.最后跑到uwsgi官网上找的教程终于跑通了.. 不过官网的教程似

  • 在Linux系统上通过uWSGI配置Nginx+Python环境的教程

    1.安装ubuntu有uwsgi的ppa: add-apt-repository ppa:stevecrozz/ppa apt-get update apt-get install uwsgi 2. 用uwsgi代替mod_wsgi Nginx 的整体配置这里不说了,假设已经明白 Nginx的基本配置,那么uwsgi就类似这么配置: location / { include uwsgi_params uwsgi_pass 127.0.0.1:9090 } 再比如django就是: .......

  • 使用Nginx+uWsgi实现Python的Django框架站点动静分离

    由于: Django处理静态文件不太友好: 以后有可能需要处理php或者其他资源的请求: 所以考虑结合nginx,使用nignx做它擅长的路由分发功能:同时做动静分离,即Http请求统一由Nginx进行分发,静态文件由Nginx处理,并返回给客户端:而动态的请求,则分发到uWsgi,由uWsgi再分发给Django进行处理.即客户端 <-> nginx <-> socket <-> uwsgi <-> Django 一.环境 系统:centOS 6 pyth

  • 关于nginx+uWsgi配置遇到的问题的解决

    uWSGI 是在像 nginx . lighttpd 以及 cherokee 服务器上的一个部署的选择.更多选择见 FastCGI 和 独立 WSGI 容器 . 你会首先需要一个 uWSGI 服务器来用 uWSGI 协议来使用你的 WSGI 应用. uWSGI 是一个协议,同样也是一个应用服务器,可以提供 uWSGI .FastCGI 和 HTTP 协议. 1.使uwsgi服务器响应代码大于或等于300的响应重定向到nginx以使用error_page指令进行处理 uwsgi_intercept

  • 解决nginx+uwsgi部署Django的所有问题(小结)

    最近,自己暑假写的小项目也算完毕了,想着投放到自己云服务器上,本来以为只要打开端口运行python3 manager runserver 0.0.0.0:80就搞定了,最后才知道这只适用于Django的开发模式,只支持单用户访问,既然如此,那么就得需要web服务器进行部署了.我便使用了nginx nginx? 为什么是nginx? 首先我觉得它小,很轻量级,用着简便,没有apache那么庞杂,并且网上都推荐nginx部署Django. 安装 这里直接略过,说一点Linux用户推荐大家源码安装,因

  • 详解使用Nginx和uWSGI配置Python的web项目的方法

    基于python的web项目,常见的部署方法有: fcgi:用spawn-fcgi或者框架自带的工具对各个project分别生成监听进程,然后和http服务互动. wsgi:利用http服务的mod_wsgi模块来跑各个project. 不过还有个uwsgi,它既不用wsgi协议也不用fcgi协议,而是自创了一个uwsgi的协议,据作者说该协议大约是fcgi协议的10倍那么快.uWSGI的主要特点如下: 超快的性能. 低内存占用(实测为apache2的mod_wsgi的一半左右). 多app管理

  • 利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程

    在 CentOS 下使用 apache+mod_wsgi 部署了 MoinMoin,但是编辑和保存页面很慢,于是准备使用 nginx+uwsgi 重新部署 本文假定已经按照官方指引 Quick MoinMoin on CentOS完成了 apache 和 mod_wsgi 之外的基础安装 安装 Nginx 默认情况下,CentOS 下没有 nginx 的源,需要自己手动添加,访问 http://nginx.org/en/linux_packages.html#stable 下载 CentOS 6

  • Diango + uwsgi + nginx项目部署的全过程(可外网访问)

    前言 自己通过nginx uwsgi 部署django项目,查询了很多资料,遇到了很多问题,最终完成了部署,趁着心情愉悦,写个随笔,为曾像我一样苦寻解决方案的小伙伴们提供些思路. 方法如下 安装Nginx: #安装nginx sudo apt-get install nginx #一些有用的命令 #启动nginx sudo /etc/init.d/nginx start #重启nginx 8sudo /etc/init.d/nginx restart #停止nginx sudo /etc/ini

  • nginx外网访问内网站点配置操作

    背景: 站点是前后端分离:vue+springboot 前端内网地址:192.168.1.10:81 API内网地址:192.168.1.12:8080 外网域名:abc.ab.com 外网IP:10.114.X.X 需求: 通过域名可以访问站点且站点静态资源且可访问API请求数据 方案一:(前提:外网域名映射服务器外网IP) 1.nginx配置域名监听且访问静态资源 2.重点来了!!!静态资源请求API的地址由192.168.1.12:8080修改为域名访问方式(abc.ab.com:8080

  • Nginx+Uwsgi+Django 项目部署到服务器的思路详解

    首先先说一下思路: 1.本地django项目打包 主要用到的是 python自带的distutils.core 下的 setup,具体代码在下面,主要讲的两个问题是package主要打包为和目录同级的代码,例如:TCMS如果还有一个子文件夹,那就不能自动打包了.这个时候需要用到data_files.glob(*filename)文件名模式匹配,不用遍历整个目录判断每个文件是不是符合. from distutils.core import setup import glob setup( name

  • 聊聊Django+uwsgi+nginx服务器部署问题

    目录 准备工作 安装anaconda: 安装需要的组件 创建django程序(本地) 使用文件传输工具将django程序传输到服务器 部署工作 配置uwsgi 配置nginx 配置ssl证书以提供https访问 准备工作 推荐使用anaconda进行python环境的管理,因python环境容易出现各种版本冲突问题 安装anaconda: wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh bash A

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

    1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用. pip freeze >requirements.txt 2.将项目文件夹→右键→添加压缩文件,压缩为zip包 3.准备软件 1.xshell(用于远程操作服务器)2.FileZilla(用于从客户端将项目包上传到服务器)3.Navicat 12 (用于同步数据库) 4.环境云 服务器/云主机:京东云 (云服务还是要选大厂的,我也试过一些比较小的厂的云服务,不说是哪家了,哇,简直是坑啊,各种

  • Mysql开启外网访问的全过程记录

    Mysql开启外网访问 进入mysql数据库 user mysql; 更新域属性,‘%’表示允许外部访问 update user set host='%' where user = 'root'; 更新权限信息 flush privileges; 执行授权语句 grant all privileges on *.* to 'root'@'%' with grant option; 如果执行完成后外网还不能访问,则需要设置防火墙 进入防火墙设置点击高级设置 进去之后,点击入站规则,选择右边的新建规

  • Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网

    1.准备工作. 1.首先准备安装Vue及Vue-CLI $ npm install vue $ npm install -g @vue/cli 2.其次下载Tomcat tomcat.apache.org/index.html 任选一个版本,我测试用的是macOS,所以下载了第二个压缩包 ​ 下载到本地后,解压缩,并且将解压缩后的文件夹复制到以下路径下,其中电脑名称就是你的用户名称. /Users/{电脑名称}/Library ,并且重命名为ApacheTomcat,这里要提一下,在这个文件夹下

  • WebSocket部署服务器但外网无法连接的解决方法

    前言 本文主要给大家介绍了关于WebSocket部署服务器外网无法连接的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 首先要说的是我遇见的问题: WebSocket connection to 'ws://www.xxxx.com/xxx/xx' failed: Error during WebSocket handshake: Unexpected response code: 200 网站绑定到了服务器,直接在服务器上访问webSocket服务是可行的,但是当我

  • Python开发之Nginx+uWSGI+virtualenv多项目部署教程

    1.新建独立运行环境,命名为env [root@vultr ~]# mkdir projects # 测试的项目总目录 [root@vultr ~]# pip3 install virtualenv [root@vultr ~]# cd projects [root@vultr projects]# virtualenv env --python=python3 --no-site-packages --python:指定Python版本 --no-site-packages:不复制系统已安装P

  • uwsgi+nginx部署Django项目操作示例

    本文实例讲述了uwsgi+nginx部署Django项目操作.分享给大家供大家参考,具体如下: uWSGI概述 uWSGI 是一个全功能的 HTTP 服务器,可以把 HTTP 协议转化成语言支持的网络协议. 安装uwsgi 使用pip安装即可 pip install uwsgi 安装完成后可测试 #vim test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/ht

随机推荐