nginx+django+uwsgi部署阿里云服务器详解

阿里云服务器双十一搞活动,趁机低价入手了一只,但是把我的Django框架搭建起来的项目部署上去的时候遇到很多的问题,自己摆弄了一个星期,总算把部署流程搞清楚了,在此做下记录,供后人参考。
一、概念
开始部署之前最好先了解下相关概念,所谓知其然知其所以然

Django: 一个MVC架构的Web框架, 自带wsgi和server功能
Uwsgi: 一个高性能的cgi中间件,也提供Web服务器功能
nginx: 一个免费开源并且高性能的HTTP服务器和反向代理
Django 和 Uwsgi 都提供服务器功能,的确nginx并不是必须,但是要部署到生产环境,需要考虑到某些情况
1 、安全问题:程序不能直接被浏览器访问到,而是通过nginx,nginx只开放某个接口,uwsgi本身是内网接口,这样运维人员在nginx上加上安全性的限制,可以达到保护程序的作用。
2、负载均衡问题:一个uwsgi很可能不够用,即使开了多个work也是不行,毕竟一台机器的cpu和内存都是有限的,有了nginx做代理,一个nginx可以代理多台uwsgi完成uwsgi的负载均衡。
3、静态文件问题:用django或是uwsgi这种东西来负责静态文件的处理是很浪费的行为,而且他们本身对文件的处理也不如nginx好,所以整个静态文件的处理都直接由nginx完成,静态文件的访问完全不去经过uwsgi以及其后面的东西。
另外,Django虽然自带服务器功能,但性能不佳,仅仅用于测试开发阶段;uWsgi的服务器性功能没研究过,但它主要是一个Web服务器网关接口,服务器性能不是它的强项
二、安装uwsgi

pip install uwsgi

安装完成后,下面来测试是否安装成功。上面说了uwsgi也能提供web服务功能,所以咱们创建一个test.py文件,然后启动uwsgi,在游览器中验证uwsgi是否运行成功,相关代码如下:

pip install uwsgi //安装
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi //添加软链,以便在任何目录使用uwsgi
# 新建test.py
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 //8000端口随意设定

然后我们可以在远程服务器的游览器里打开127.0.0.1:8000,或者自己本地的游览器中打开xx.xx.xx.xx:8000(公网IP:8000),显示hello world,证明安装成功。
三、uwsgi配置
在目录/home/www下创建jcdemo项目,然后创建一个jcapp

cd /home/www
django-admin startproject jcdemo
cd jcdemo
python manage.py startapp jcapp

在项目根目录下创建uwsgi配置文件

cd /home/www/jcdemo
mkdir script //创建存放pid、log文件的路径
vim jcdemo_uwsgi.ini //创建jcdemo_uwsgi.ini文件,把一下内容复制进去

[uwsgi]
socket = 127.0.0.1:9001  #内部端口,自定义
chdir           = /home/www/jcdemo  #项目根目录
module          = jcdemo.wsgi  #wsgi文件路径,wsgi文件是随创建项目的时候生成在
master          = true
processes       = 4
vacuum          = true
pidfile        =/home/www/jcdemo/script/uwsgi.pid  #生成pid文件
daemonize    = /home/www/jcdemo/script/UWSGI.log  #生成日志文件    

:wq保存
三、nginx安装和配置nginx.conf

cd /opt //源码安装的时候我一般把源码下载到这个路径
wget http://nginx.org/download/nginx-1.13.7.tar.gz //下载
tar -zxvf nginx-1.13.7.tar.gz //解压
cd nginx-1.13.7
./configure
make && make install  //nginx一般默认安装好的路径为/usr/local/nginx,
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx //添加软链,以便在任何目录使用nginx

在/user/local/nginx/conf/中打开nginx.conf,做以下修改

server {
    listen 8080; #暴露给外部访问的端口 
    server_name localhost; 
    charset utf-8; 
    location / { 
        include uwsgi_params; 
        uwsgi_pass 127.0.0.1:9001; #这个端口要和jcdemo_uwsgi.ini里socket保持一致,外部访问8080就转发到内部9001
     }    
     location /static/ { 
            alias /home/www/jcdemo/static/; #项目静态路径设置 
    }
}

(以上内容请保证在默认内容的大括号内,:wq保存)
四、启动项目
进入到项目目录下,依次执行以下三个命令:

uwsgi --ini jcdemo_uwsgi.ini  //加载uwsgi配置
pkill -9 nginx //强制停止nginx服务
nginx  //启动nginx服务

补充:

1 启动:
 2 uwsgi --ini 配置文件路径 如:--ini uwsgi.ini
 3 uwsgi --ini uwsqi.ini # ini启动(路径注意)
  uwsgi -x uwsqi.xml  # xml 启动
 4 停止 
 5 uwsgi --stop uwsqi.pid #(路径注意)
 6 ​
 7 # 查看日志
 8 tail -f uwsgi.log
 9 ​
10 # uwsgi.log 和  uwsqi.pid 都是uwsgi启动后自动生成的有时候不知道原因没有生成 uwsqi.pid  想要停止项目可以先找到进程再杀掉
11 ​
12 # 检查 进程
13 ps --aux |grep uwsgi

好了,现在就可以在本地游览器访问你的django项目了
在游览器中打开47.100.196.111:8080/admin(47.100.196.111为你的服务器公网地址)

点关注,不迷路,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352