• Python web项目Django部署在Ubuntu18.04腾讯云主机上


    Django2.1 + Python3.6 + nginx + uwsgi 部署到Ubuntu18.04

    材料准备

    1. 准备一个Django项目
    2. 准备一台Ubuntu18.04的主机

    ssh连接到主机(腾讯云)

    Mac直接在bash中输入ssh root@你的主机ip
    Windows请下载ssh远程连接工具例如Putty
    腾讯云默认不能以root身份登录,请使用以下方式登录

    $ ssh -q -l ubuntu -p 22 你的主机ip
    

    配置Python3.6环境

    Ubuntu18.04已经默认安装了python3.6.5,所以不需要再安装了,可使用python3命令查看
    安装pip3:

    $ sudo apt install python3-pip
    

    在命令行中输入pip3以验证是否安装成功。
    接下来安装virtualenv和virtualenvwrapper:

    $ pip3 install virtualenv
    $ pip3 install virtualenvwrapper
    
    #创建你项目的虚拟环境
    $ mkvirtualenv django
    
    # 创建虚拟环境的根目录
    $ mkdir $HOME/.virtualenvs
    #配置环境变量
    $ sudo vim ~/.bashrc
    

    将以下内容放到最后面

    export WORKON_HOME=$HOME/.virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
    source ~/.local/bin/virtualenvwrapper.sh
    

    激活环境变量来生效:

    $ source ~/.bashrc
    

    安装Nginx

    $ sudo apt-get install nginx
    #查看是否运行
    $ ps aux | grep nginx
    

    安装完成后,在浏览器中输入你的ip地址,如果看到以下界面则说明安装完成!

    安装Mysql并配置

    $ sudo apt-get install mysql-server
    #查看是否运行
    $ ps aux | grep mysql
    

    接下来配置mysql的密码和权限问题

    $ sudo mysql_secure_installation
    

    执行后会弹出多个选择界面

    1.是否安装密码校验插件
    VALIDATE PASSWORD PLUGIN can be used to test passwords......
    选择n
    
    2.设置密码
    Please set the password for root here.
    New password:xxxxxx
    Re-enter new password:xxxxxx
    
    3.删除匿名用户(生产环境有必要删除)
    By default, a MySQL installation has an anonymous user......
    选择y
    
    4.是否允许root用户远程登录
    Normally, root should only be allowed to connect from
    ‘localhost’. ......
    选择y
    
    5.是否删除“测试”库
    By default, MySQL comes with a database named ‘test’ that
    anyone can access. This is also intended only for testing,......
    选择y
    
    6.是否立即生效
    Reloading the privilege tables will ensure that all changes......
    选择y
    
    

    配置完mysql后,把bind-address注释掉,使得本机以外的ip都能连接进来:

    $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
    
    # 把这一行注释上
    # bind-address 127.0.0.1
    
    #保存退出!wq
    

    然后登录到mysql中

    $ mysql -uroot -p
    mysql> use mysql
    mysql> update user set host=’%’ where user=‘root’;
    mysql> grant all on *.* to root@'%' identified by '你的密码' with grant option;
    flush privileges;
    

    重启mysql服务:

    $ service mysql restart
    

    到此,mysql配置完成,可以在你的本地机上用navicat连接到远程服务器测试,方便操作数据库

    测试Django项目能否正常运行

    #进入虚拟环境
    $ workon django
    $ cd 你的项目根路径
    #同步到数据库
    $ python manage.py migrate
    
    $ python manage.py runserver 0.0.0.0:8000
    

    在你的本机上输入服务器ip:8000测试能否访问,如果能访问则接着往下看(此时static静态资源还没有被代理加载不出来)

    安装uwsgi和测试

    #首先进入虚拟环境
    $ workon django
    $ pip3 install uwsgi
    

    然后先测试一下uwsgi能否拉起django项目

    $ cd 你的项目根路径
    $ uwsgi --http :8000 --module 你的项目名.wsgi
    

    如果能拉起的话,就可以来配置nginx和uwsgi了。

    nginx配置和uwsgi配置

    创建自己的nginx.conf配置

    vim my_nginx.conf
    
    server {
    
    listen    80;
    server_name 你的ip地址或者域名;
    charset    utf-8;
    
    client_max_body_size 75M;
    
    #代理django的媒体文件
    location /media {
            alias 你的项目路径/media;
    }
    #代理django的静态文件
    location /static {
            alias 你的项目路径/static;
    }
    #端口转发
    location / {
            uwsgi_pass django;
            include    uwsgi_params;
    }
    }
    

    配置完成后把文件复制到nginx目录下并重启服务:

    $ cp my_nginx.conf /etc/nginx/conf.d/
    
    $ service nginx restart
    

    然后配置uwsgi.ini

    $ vim uwsgi.ini
    
    [uwsgi]
    chdir    = 你的项目根路径
    module   = 你的项目名.wsgi
    master   = true
    processes = 10
    socket   = 127.0.0.1:8000
    vacuum   = true
    virtualenv = /home/ubuntu/.virtualenvs/django
    #你的项目的虚拟环境地址
    

    Django项目生产环境配置

    首先需要收集静态文件

    #收集静态文件
    $ python manage.py collectstatic
    

    在settings.py中,注释掉STATICFILES_DIRS

    #STATICFILES_DIRS=[
    #os.path.join(BASE_DIR,'static')
    #]
    
    # 加入 STATIC_ROOT=os.path.join(BASE_DIR,'static')
    

    settings.py中,debug改为True:

    DEBUG = True
    ALLOWED_HOSTS = ['*']
    

    启动项目,部署成功

    来到uwsgi.ini目录下

    uwsgi -i uwsgi.ini
    

    在浏览器中输入服务器ip地址

    成功访问

    部署成功!

    以上就是Ubuntu18.04的部署
    ** 如果想在Ubuntu16.04部署,大致步骤是一模一样的,只是Ubuntu16.04中预装了python2没有python3,需要自行安装python3和pip3,仅仅多了此步骤而已!**

  • 相关阅读:
    06-tree Shaking
    05-babel-解析高级js语法+polyfill按需注入
    Symbol.iterator
    回调
    finally
    then的参数
    通过简单例子看Promise(一)
    作为Promise构造函数参数的函数
    resolved和rejected
    resolve和reject
  • 原文地址:https://www.cnblogs.com/PyKK2019/p/10636112.html
Copyright © 2020-2023  润新知