nginx+uwsgi+django+SSL最小白全面配置教程

先说说项目的是干啥的

本来咱们玩web只需要django就能建立一个正儿八经带server的服务器,不过django自带的只能支持单并发的访问,而且效果不是特别好。

这个时候就用到了 nginx ,关于nginx网上的介绍很多我就不多说了,只需要知道这玩意是一个服务器框架,用了它相当于tomcat一样自带一个服务器。

不过由于nginx以及一些其他原因,静态资源的访问不是特别好,这个时候就需要用到uwsgi这个框架。

最后在实际生产过程中,现在大部分都是使用https访问,所以最后在nginx中配置好了SSL证书,我们就可以愉快的用https访问,而且环境搭建好了和我们的真正逻辑代码是解耦的,所以一次搭建,终身爽快。

下面我会仔细说名安装和配置过程 环境是(ubuntu + nginx 1.103 + uwsgi 最新版 + django 2.1.3 +python 3.5)

安装nginx:

再控制台中输入即可按章nginx
~$ sudo apt-get install nginx #安装
但是这种安装方法可能会出现问题,不过都是小问题,具体百度一下就行了
跟着命令好一串撸下来,我相信你已经装好了nginx。
然后我们需要测试一下。

我们需要在 ubuntu 中找到这个 etc/nginx/nginx.conf 文件,这个文件是nginx的配置文件。
nginx.conf 中又一个 http{} 里面可以配置若干个 server{} 。其目的就是监听http访问中的若干端口,这里我们需要添加一个server{}如下:

server {
    listen       8000;    # 修改端口号
    server_name  localhost;
    #charset koi8-r; 
    #access_log  logs/host.access.log  main;
    location / {
        root   html;
        index  index.html index.htm;
    }

这段的意思就是监听8000 端口。
接下来配置好了 我们使用
nginx -t 命令检测一下是否配置正确
如果没问题则直接在命令行输入 nginx 即可启用nginx。反正我用的这个版本是这样直接启动。
这个时候我们直接在浏览器输入127.0.0.1:8000 来测试nginx是否配置成功
如果成功则会出现


image.png

安装uwsgi

咱们先把nginx给停掉 使用命令 nginx -s stop
uwsgi 是python自带的包 所以安装起来非常方便 只需要
pip install uwsgi 即可

咱们测试一下 uwsgi是否可用
随便找个位置建立一个文件 test.py
里面的代码是

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

在这个目录下运行命令
uwsgi --http :8000 --wsgi-file test.py
意思是使用组建 uwsgi 监听端口8000 并且运行这个test.py文件,如果正常,会在浏览器访问127.0.0.1:8000时出现:
Hello World

然后就是django 这个也是python的包 我默认你已经有了一个基于django可以运行的项目。

把uwsgi和django结合起来

这个时候 我们就需要用到 uwsgi的一种配置文件。我们随便找个目录新建一个demo.ini文件
文件内容如下:

[uwsgi]
socket = 0.0.0.0:8000  
#真实服务的端口  这个8000端口 是把nginx 和django串起来的 并不是实际浏览器访问的接口
chdir = /root/englishDemo/demoWB/  #我们django项目的根目录

# wsgi.py文件在项目中的位置  这个文件每个django项目都有
module = demoWB.wsgi
# process-related settings
# master
master          = true
# 运行的进程数
processes       = 4
vacuum = true

这个配置文件还有很多内容,读者有需要可以自行查阅。
现在咱们只要运行这个配置文件
uwsgi --ini demo.ini
即可运行django程序了。是不是很方便,不用runserve 每次指定域名和端口号
相当于是uwsgi代替我们执行

把nginx 和 uwsgi 结合起来

这一部分也很简单 我们只需要修改nginx中在安装过程中提到的配置文件即可
etc/nginx/nginx.conf
打开这个文件后,我们在原有的基础上修改http{}中的内容

upstream django {
       server 0.0.0.0:8000; #web的socket端口
    }

 server{
            listen 80;
            access_log /root/log.txt; # Nginx日志配置
            server_name www.asdasasd.com; #这里输入你自己的网址
            charset utf-8;
          
            error_page 404 /404.html; # 错误页面
            error_page 500 502 503 504 /50x.html; # 错误页面

            location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
                root /root/englishDemo/demoWB; #django项目的根目录
                include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
                uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
                uwsgi_pass django; # 指定uwsgi的sock文件所有动态请求就会直接丢给他
        }
}

重启nginx的时候就可以和uwsgi结合起来了。

nginx配置SSL证书

这个证书可以从很多地方获得。我在这里举例从阿里云上
先选择网盾 SSL证书


image.png

选择免费版本


image.png

购买之后审核完成, 会又下载连接,下载之后是 .pem 和 .key的两个文件。
咱们需要通过这两个文件配置nginx。
还是打开刚刚的 nginx.conf配置文件。修改为
      server {
    listen 443;  #这里需要443 为https 默认的端口
    access_log /root/log.txt; # Nginx日志配置

    server_name www.xxxxxxxx.com; #这里是你的域名
    ssl on;
    root html;
    index index.html index.htm;

        ssl_certificate /etc/nginx/cert/xxxxxxxx.pem; #你的pem  前面的目录可以自己随便建立

        ssl_certificate_key /etc/nginx/cert/xxxxxxxx.key; #你的key  前面的目录可以自己随便建立
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
                        root /root/englishDemo/demoWB;
                include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
            uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
            uwsgi_pass django; # 指定uwsgi的sock文件所有动态请求就会直接丢给他
    }
}

重启一下nginx即可
这一波操作完成

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

推荐阅读更多精彩内容