zoukankan      html  css  js  c++  java
  • django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)

    1.前期准备

    1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用。

    pip freeze >requirements.txt

    2.将项目文件夹→右键→添加压缩文件,压缩为zip包

    3.准备软件

    1.xshell(用于远程操作服务器)

    2.FileZilla(用于从客户端将项目包上传到服务器)

    3.Navicat 12 (用于同步数据库)

    4.环境

    云服务器/云主机:京东云

    (云服务还是要选大厂的,我也试过一些比较小的厂的云服务,不说是哪家了,哇,简直是坑啊,各种报错各种什么都安不上。友情提醒,云服务还是要在腾讯云、阿里云、百度云、金山云、京东云、网易云这些里面选用吧。国外的像亚马逊啊,虽然云计算的技术上可能领先于国内云,价格也更加公道,但是,有些事,大家应该懂得,所以,贵是贵了点,还是选国内的吧。)

    系统:Ubuntu16.04 64位

    2.基本配置

    1.使用xshell链接云服务器/云主机系统(云服务器和云主机在这里概念差不多可以等同,后面都叫云服务器)

    1.打开xshell→【文件】→【新建】,输入你云服务器的公网ip

     

    2.选择刚刚建立的会话,然后点【连接】

    3.输入登录用户名:root

    4.输入登录密码

    5.连接成功

    2.新建用户ubuntu

    1.执行命令

    adduser ubuntu
    #设置密码
    #确认密码
    #设置姓
    #设置名
    #设置电话
    #设置家庭电话
    #除了密码以为,其他的这些信息用处不大
    y+回车
    cd /home #切换到家目录下
    ls #查看家目录下的目录,可以看到ubuntu的目录已经建立

     

    2.切换用户ubuntu

    3.给普通用户ubuntu添加权限

    #切换回root用户
    su root
    #输入root登录密码
    chmod u+w /etc/sudoers #给sudoers增加写权利
    vim /etc/sudoers#编辑sudoers,在找到这行 root ALL=(ALL) ALL,在他下面添加ubuntu     ALL=(ALL)     NOPASSWD: ALL
    chmod u-w /etc/sudoers#取消sudoers的写权利
    su ubuntu #切换会ubuntu用户
    #vim编辑器常用命令
    #英文输入法模式下,i键进入编辑模式,可以通过上下左右键移动光标,进行编辑内容
    #英文输入法模式下,Esc键 退出编辑模式,输入:wq 保存并退出,输入q不保存退出,输入q!强行退出

    3.同步数据库

    1.安装mysql数据库

    sudo apt-get install mysql-server -y
    #设置密码:(不显示,请将密码设置的与客户端上数据库密码一致,方便使用)
    sudo apt-get install mysql-client
    sudo apt-get install libmysqlclient-dev -y

    2.配置远程连接权限

    su root #切换root用户
    #root 登录密码
    vim /etc/mysql/mysql.conf.d/mysqld.cnf 
    # 英文输入环境下,敲 i 键,进入插入模式
    #上下左右键移动光标,注释掉 bind-address = 127.0.0.1
    #英文输入环境下,敲Esc键,输入:wq 保存退出
    mysql -u root -p
    #输入密码(不显示),登录mysql
    
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    
    flush privileges;
    
    quit
    #用Navicat链接服务器数据库,如果报错:
    fuser -k 3306/tcp
    #将客户端数据库通过数据传输,传输到服务器

     3.使用Navicat 12 同步数据库

    1.创立连接

    2.建立本地连接

    3.建立服务器链接

    4.传输数据库

     

    然后点击【开始】等待传完100%

    5.查看一下数据库是否上传成功

    mysql -u root -p
    show databases;#查看所有数据库
    quit #退出数据库

    4.取消远程连接数据库权限

    vim /etc/mysql/mysql.conf.d/mysqld.cnf
    # 英文输入环境下,敲 i 键,进入插入模式
    #上下左右键移动光标,去掉 bind-address = 127.0.0.1这行的注释
    #英文输入环境下,敲Esc键,输入:wq 保存退出

    4.上传项目

    su ubuntu #切换回ubuntu用户

    1.使用FileZilla上传项目zip包

    2.解压项目zip包

    sudo apt install unzip
    unzip xueyiwang.zip 

     

    5.安装Python3.6

    sudo add-apt-repository ppa:fkrull/deadsnakes #然后会提示你敲击回车键
    #回车
    sudo apt-get install python-software-properties -y
    sudo apt-get update
    sudo apt-get install python3.6-dev python3.6-venv -y
    
    sudo apt install python-pip -y

    6.配置虚拟环境

    1.安装依赖包

    python3.6 -m venv env36
    #在当前目录下,创建一个python3.6的虚拟环境,取名为env36,目前自带虚拟环境只支持到3.6.2
    
    . env36/bin/activate
    #进入虚拟环境
    #退出虚拟环境 deactivate
    
    
    cd xueyiwang
    pip3 install -r requirments.txt
    #安装相关依赖包,其中requirments.txt,是在客户端时,通过pip freeze > requirments.txt获得
    #这个过程也许需要多等一会,比较low一点的云服务就慢一些,亲身体验,bat里,百度的最慢
    #有可能pip要升级,如果版本过时,会提示用户更新命令的

     

    2.修改settings.py

    cd xueyiwang
    vim settings.py

     

    #进入settings.py文件中,点击i键,变为编辑模式
    #通过上下左右键移动光标
    ALLOWED_HOSTS = ['公网ip']
    #在最底追加
    STATIC_ROOT=os.path.join(BASE_DIR,"static/")
    #然后敲Esc键,输入:wq 保存退出

     

    3.测试运行项目

    cd ..
    python manage.py runserver 0.0.0.0:8000 
    #浏览器访问:公网ip+8000 
    #发现啥都有啦!
    #ctrl+c退出项目运行状态

     

     

    7.虚拟环境中安装uwsgi

    1.安装

    cd ~
    pip3 install uwsgi

    2.检测是否安装成功

    cd xueyiwang
    uwsgi --http :8000 --module xueyiwang.wsgi
    
    #通过uwsgi启动项目,这一步必须在项目目录下操作执行
    #ctrl+C键关闭项目服务状态
    #fuser -k 8000/tcp
    #关闭8000端口占用
    #浏览器访问公网ip+8000 仍然可以正常访问,证明uwsgi安装成功

    8.安装配置nginx

    1.安装nginx

    cd ..
    sudo apt install nginx -y

    2.配置uwsgi与nginx连接

    cd xueyiwang
    cp /etc/nginx/uwsgi_params .   #在项目目录下执行,注意后面这个点儿别落下 
    #回到~目录下
    cd ..

     

    3.配置uwsgi.ini

    vim uwsgi.ini
    #进入uwsgi.ini,然后在英文输入下敲i键,进入插入模式,将以下内容填充进去(通过敲i键进入插入模式这一步不能省略,不然粘贴进去的内容会部分丢失)
    #然后在英文输入下,Esc键,然后输入冒号wq+回车,保存退出。
    [uwsgi]
    chdir=/home/ubuntu/xueyiwang
    module=xueyiwang.wsgi:application
    home=/home/ubuntu/env36
    master=true
    processes=10
    socket=:8001
    chmod-socket = 666
    vacuum=true

     

    4.配置nginx

    #cd 到项目目录下
    vim xueyiwang_nginx.conf
    #新建进入了nginx.conf文件
    #在英文输入法下,敲i键,进入可插入模式
    #粘贴以下内容
    upstream django {
        # server unix:/root/xueyiwang/xueyiwang.sock; # for a file socket
        server 127.0.0.1:8001; # for a web port socket (we'll use this first)
    }
     
    # configuration of the server
    server {
        # the port your site will be served on
        listen      8000;
        # the domain name it will serve for
        server_name .example.com; # substitute your machine's IP address or FQDN
        charset     utf-8;
     
        # max upload size
        client_max_body_size 75M;   # adjust to taste
     
        # Django media
        location /media  {
            alias /home/ubuntu/xueyiwang/media;  # your Django project's media files - amend as required
        }
     
        location /static {
            alias /home/ubuntu/xueyiwang/static; # your Django project's static files - amend as required
        }
     
        # Finally, send all non-media requests to the Django server.
        location / {
            uwsgi_pass  django;
            include   /home/ubuntu/xueyiwang/uwsgi_params; # the uwsgi_params file you installed
        }
    }

    5.建立软链接

     sudo ln -s /home/ubuntu/xueyiwang/xueyiwang_nginx.conf /etc/nginx/sites-enabled/ 

     

    6.手机静态文件

    #cd 到项目目录下执行
    python manage.py collectstatic
    #yes

     

     7.最后测试

    #修改settings.py中
    DEBUG = False
    cd ~
    sudo service nginx restart
    #重启nginx
    #启动uwsgi
    uwsgi --ini uwsgi.ini
    #浏览器访问http://公网ip:8000 

     

     

    #浏览器访问公网ip+:8000 可以看到,能够正常访问,静态文件和媒体文件都在,说明nginx代理正常。

    9.联系方式

    跟着一步一步做下来,应该都可以部署项目成功啦吧?如果遇到了什么报错,可以加我微信来问我^_^。

    赞赏5元

    我的微信

  • 相关阅读:
    遗传算法
    UVa 11584 Partitioning by Palindromes
    UVa1625 Color Length
    UVa10003 Cutting Sticks
    UVa1347 Tour
    UVa116 (单向TSP,多决策问题)
    uVa 12563 Jin Ge Jin Qu
    模糊综合评判
    Python进阶(5)_进程与线程之协程、I/O模型
    Python进阶(4)_进程与线程 (python并发编程之多进程)
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/9219207.html
Copyright © 2011-2022 走看看