• 【技术博客】Django+uginx+uwsgi框架的服务器部署


    1.登录服务器

    使用ssh来直接登录到服务器terminal进行操作,推荐使用XShell和XFtp来进行远程登录和文件传输。

    2.运行环境准备

    本组获得的华为云服务器为ubuntu16.04版本,先安装python和pip。然后安装django,注意安装版本要和本地测试的django版本一致,下面以2.0为例

    pip3 install django2.0
    

    安装nginx

    sudo apt-get update
    sudo apt-get install nginx
    

    安装完成后。用你电脑的浏览器访问你的服务器的公网ip地址,看看安装成功没有。

    安装uwsgi

    在你的本地电脑访问https://uwsgi-docs.readthedocs.io/en/latest/Download.html,下载Stable/LTS版本的源文件。

    本地下解压这个源文件,然后用xftp把文件拖放到阿里云的Ubuntu的家目录(home)下,使用cd命令进入到该文件夹下,按顺序依次输入下面三条命令:

    sudo apt-get install python3-setuptools
    sudo apt-get install python3-dev
    sudo python3 setup.py install
    

    安装MySQL

    sudo apt-get install mysql-server mysql-client
    

    配置mysql文件:

    sudo vim/etc/mysql/mysql.conf.d/mysqld.cnf
    

    然后注释掉下面这行代码:

    # band-address = localhost
    

    3.配置项目

    先用xftp把你的整个博客项目拖到家目录(home)那里,或者使用git工具从代码库里面拷贝,然后开始配置nginx文件:

    cd /etc/nginx/sites-available
    vim default
    

    使用cd命令进入到sites-available文件夹,文件夹下有一个default文件,使用vim打开它,找到default文件下的这段代码,如果没有就要添加上去:

    server_name 192.168.1.121;
    location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    # try_files $uri $uri/ =404;
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:8000; }
    location /static {
    alias /home/feixue/python/www/for_test/static;
    }
    location /media {
    alias /home/ubuntu/blog/media; }
    

    192.168.1.121替换成你自己服务器公网IP地址;

    static 那里也要替换成你自己Django项目的static路径;

    media 同理换成你自己Django项目的media路径,这是媒体文件的文件夹;

    注意:location后面是有空格的,必须要有!alias后面也是有空格的;include上面那句话也是要注释掉的!

    修改成完成后使用 wq 保存退出。

    再输入下面命令重启服务:

    sudo service nginx restart
    

    配置uwsgi

    在django项目有manage.py文件的目录下,新建一个uwsgi.ini文件和一个run.log文件

    然后我们使用vim编辑器编辑uwsgi.ini文件:

    [uwsgi]
    chdir = /home/NAME
    module = NAME.wsgi:application
    socket = 127.0.0.1:8000
    master = true
    daemonize = /home/run.log
    disable-logging = true
    

    chdir 是你的项目的根目录,要替换成实际的路径;

    moudule 是你的入口wsgi模块,将NAME替换成项目名称;

    socket 是通信端口设置,这个设置不用改,复制即可;

    master = true 表示以主进程模式运行,不用改,复制即可;

    daemonize 是日志文件目录,这个路径就是刚刚新建的run.log文件的路径;

    disable-logging = true 表示不记录正常信息,只记录错误信息。

    修改settings.py文件

    打开settings.py文件找到下面代码并修改:

    DEBUG = False
    ALLOWED_HOSTS = [‘192.168.178.128’]
    

    上面这个在一些情况下不改好像也不影响运行。

    4.运行服务

    使用下面的命令重启运行nginx和uwsgi:

    sudo service nginx restart
    sudo killall -9 uwsgi
    sudo uwsgi uwsgi.ini
    

    django项目在本地的运行方式是python manage.py runserver,而在服务器上则不需要,交给uwsgi来完成这步即可。在三者的框架下,django作为一个基于python的Web应用框架,实现网站的实际功能。nginx作为一个Web服务器,通过监听端口来接收用户端信息。uwsgi则是把上面两者连接起来,uwsgi作为通信协议可以确定服务器(nginx)和应用框架(django)之间的传输信息标准。所以我们在服务器上启动nginx service后再启动uwsgi即可运行服务。

  • 相关阅读:
    JQuery2
    Java基础复习4
    HTML基础复习4
    Java基础复习3
    HTML基础复习3
    HTML基础复习2
    HTML基础复习1
    shiro权限管理(认证和授权)
    权限管理(认证和授权)
    关于mybatis动态sql的if标签的一个问题
  • 原文地址:https://www.cnblogs.com/stupidRJGC/p/10961218.html
Copyright © 2020-2023  润新知