相关文章

也可以看看

Nginx部署多应用

 |   

当拥有一个服务器后,发现有众多的应用想要部署在这个服务器上,而且想要为每个应用创建一个独有的二级域名,比如个人博客- blog.haojunyu.com,比如个人项目页面- pro.haojunyu.com等等,反正就是想要将自己所折腾的一切都放到这个服务器上,一方面算是给自己这么长时间在应用开发上的成果做个展示,另一方面是提醒自己不要再重复的造轮子,毕竟青春有限,还有很多其他的事情值得去尝试。这个以 Nginx 部署两个 Python 的 Web 框架 Django 和 Flask 为例。

在之前的博文中我们仿照 在Ubuntu上使用Nginx部署Flask应用在自己的服务器上成功部署了 Flask 应用,下面先在 Ubuntu上使用Nginx 部署 Django 应用,然后将二者合并在一起。

Django应用

环境部署

我们使用 virtualenv (virtualenvwrapper来管理虚拟环境)来部署 Django 应用,部署流程如下:

1mkvirtualenv djangoEnv  #在$HOME/.virtualenvs/目录下创建djangoEnv环境
2pip install django
3# 后台使用mysql数据库
4sudo apt install mysql-server-5.x
5sudo apt install python-mysqldb

常用Django命令

基本的 Django 应用命令如下:

1# 创建项目
2django-amdin.py startproject djangoPro
3# 重构数据库
4python manage.py migrate
5# 启动应用
6python manage.py runserver 0.0.0.0:8090
7# 创建应用模块
8python manage.py startapp djangoApp

Nginx配置

Django 应用在 Nginx 服务上面的配置是参考的菜鸟教程上的 使用Nginx部署Django应用

  1. uwsgi 配置 和Flask应用一样,uwsgi是作为Django应用和Nginx服务器之间的桥梁的。配置如下:

     1[uwsgi]
     2socket = 127.0.0.1:8090
     3master = true         //主进程
     4vhost = true          //多站模式
     5no-site = true        //多站模式时不设置入口模块和文件
     6# workers = 2           //子进程数
     7reload-mercy = 10     
     8vacuum = true         //退出、重启时清理文件
     9max-requests = 1000   
    10limit-as = 512
    11buffer-size = 30000
    12pidfile = /var/www/django/django_uwsgi.pid    //pid文件,用于下面的脚本启动、停止该进程
    13daemonize = /var/log/uwsgi/django_uwsgi.log
    
  2. Nginx配置

     1server {
     2  listen      443;
     3  server_name django.haojunyu.com; #此时域名已经映射到主机IP
     4
     5  ssl on;
     6  ssl_certificate /var/www/django/1_haojunyu.com_bundle.crt;
     7  ssl_certificate_key /var/www/django/2_haojunyu.com.key;
     8  ssl_session_timeout 5m;
     9  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
    10  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
    11  ssl_prefer_server_ciphers on;
    12
    13  location / { try_files $uri @yourapplication; }
    14  location @yourapplication {
    15      include uwsgi_params;
    16      uwsgi_pass 127.0.0.1:8090;  # 和uwsgi中socket配置的值一致
    17      uwsgi_param UWSGI_SCRIPT djangoPro.wsgi;  # 入口文件,即wsgi.py相对于项目根目录的位置,这里.相当于一层目录
    18      uwsgi_param UWSGI_CHDIR /djangoPro; # 项目根目录
    19      index index.html index.htm;
    20      client_max_body_size 35m;
    21  }
    22}
    

    TIPS:

    1. 当我们使用sudo server nginx restart重启Nginx失败时,一定要善用sudo nginx -t命令来检测nginx.conf文件是否有问题。
    2. 这里uwsgi充当服务器和应用之间的桥梁作用,当浏览器访问返回Bad GatWay时就得用ps -aux | grep uwsgi来检测uwsgi服务有没有启动

合并多应用

这里对于 Nginx 配置多个应用,建议将各个不同应用的 Nginx 配置文件放在 /etc/nging/conf.d/ 目录下,有几个应用就创建几个配置文件,这样易于管理和配置。

二级域名的使用

对于不同的应用,显然是不能使用相同的域名的,所以这就有了通过二级域名来区分不同的应用,这里分别用 django.haojunyu.com 来表示 django 应用,用 flask.haojunyu.com 来表示 flask 应用。在 Nginx 的配置文件中 server_name 就是相应的二级域名,而在域名解析中添加两条 A 记录,主机记录和记录值分别是 django 及对应的 IP 地址和 flask 及对应的 IP 地址。

参考文献

  1. 在Ubuntu上使用Nginx部署Flask应用
  2. 使用Nginx部署Django应用
技术茶话会
< 前一篇 后一篇 >