zoukankan      html  css  js  c++  java
  • Nginx+uwsgi部署django

    0. 登录远程服务器并准备

    ssh 用户@IP -p 端口

    回车后,要求输入服务器密码,再输入密码

    更新软件源

    sudo apt-get update
    sudo apt-get upgrade

    1. 安装nginx

    sudo apt-get install nginx

     查看nginx是否启动:

    ps aux|grep nginx

    2. 查看IP地址:

    在虚拟机运行的话,查看下内网IP

    服务器的话,就不用,反正服务器IP你肯定知道的

    ifconfig

    - 注意虚拟机要的网络连接方式要设成桥接的

    - 在浏览器中运行此ip,看是否是nginx欢迎界面

    3. 安装并设置mysql:

    3.1 安装mysql

    sudo apt-get install mysql-server

     设置密码:root(默认用户),输入密码

     测试mysql是否安装成功

    mysql -u root -p

     输入密码root

     退出

    3.2 更改mysql的IP绑定0.0.0.0:

    这里是deepin系统

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

    这里是Ubuntu

    sudo vim /etc/mysql/my.cnf
    bind-address = 0.0.0.0

    重启mysql:

    sudo service mysql restart

    3.3 权限分配:

    进入mysql:mysql -u root -p,输入密码,运行代码

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

    刷新权限:

    FLUSH PRIVILEGES;

    3.4  在windows中打开Navicat创建连接

    如果是虚拟机:IP填内网IP

    如果是服务器:填服务器IP

    密码要注意是上面 IDENTIFIED BY 后面的密码 root(自行设定)

    连接测试成功后,点确定

    然后新建数据库myblog

    然后如果有数据备份的,可以进行数据恢复(数据传输)

     

    4. python环境和虚拟环境安装配置

    Ubuntu14.04 为我们预装了Python2.7.6和Python3.4

    如果是Ubuntu16.04 预装的是Python2.7.12和Python3.5.2

    我们需要Python2也需要Python3,但是Python3.4有点老了,换成经典的Python3.5

    4.1 安装Python3.5.2

    安装依赖包

    sudo apt-get install openssl
    sudo apt-get install libssl-dev
    (必须先安装这两个,再编译)

    安装Python3.5.2

    下载wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
    
    解压:tar zxvf Python-3.5.2.tgz
    进入:cd Python-3.5.2
    配置并安装到指定目录:./configure --prefix=/usr/local/python35
    
    编译:make
    安装:make install

    出现错误:error: no acceptable C compiler found in $PATH

    # for Ubuntu / Debian:
    
    sudo apt-get install build-essential

     

    创建软链接

    sudo mv /usr/bin/python3 /usr/bin/python3-old
    ln -s /usr/local/python35/bin/python3.5 /usr/bin/python3
    ln -s /usr/local/python35/bin/pip3 /usr/bin/pip3

     

    4.1 安装pip

    sudo apt-get install python-pip

    4.2 安装virtualenv

    pip install virtualenv

    4.3 安装virtualenvwrapper

    pip install virtualenvwrapper

    4.4 配置workon

    vim ~/.bashrc
    # 编辑bashrc文件
    
    export WORKON_HOME=$HOME/.virtualenvs
    export PROJECT_HOME=$HOME/workspace
    export VIRTUALENVWRAPPER_SCRIPT=/usr/local/bin/virtualenvwrapper.sh #先find一下具体位置,替换
    source /usr/local/bin/virtualenvwrapper.sh_lazy.sh #先find一下具体位置,替换

     配置完bashrc文件后,切记source一下,才能生效

    source ~/.bashrc

    然后尝试创建虚拟环境

    mkvirtualenv mxonline

    若出现:virtualenvwrapper could not find virtualenv in your path 错误

    这是因为我们的virtualenv的路径不对,我需要创建一个软链接


    先 find / -name virtualenv,看一下是哪个路径,我的是/usr/local/bin/virtualenv
    然后创建软链接:sudo ln -s /usr/local/bin/virtualenv /usr/local/bin/virtualenv

    然后再创建虚拟环境

    mkvirtualenv mxonline

    4.5 安装requirements.txt

     导出

    在Windows导出requirements,复制内容到虚拟机新建的requirements.txt

    Django==1.9.8
    django-crispy-forms==1.6.1
    django-formtools==2.0
    django-pure-pagination==0.3.0
    django-simple-captcha==0.4.6
    DjangoUeditor==1.8.143
    future==0.16.0
    httplib2==0.9.2
    MySQL-python==1.2.5
    olefile==0.44
    Pillow==4.1.1
    PyMySQL==0.7.11
    six==1.10.0
    xlrd==1.0.0

     安装

    pip install -i https://pypi.douban.com/simple/ -r requirements.txt

    若遇到 EnvironmentError: mysql_config not found

    解决方案

    sudo apt-get install libmysqlclient-dev

    解决问题后,再重新

    pip install -i https://pypi.douban.com/simple/ -r requirements.txt

      

    我在Ubuntu中安装MySQL-python时出现错误

    failed building wheel for mysql-python ubuntu

    解决方法,安装这两个

    apt-get python-dev libmysqlclient-dev

    原文参考:http://codeinthehole.com/tips/how-to-set-up-mysql-for-python-on-ubuntu/

    5. 安装git

    sudo apt-get install git

     clone项目到虚拟机

    git clone git@github.com:BingmingWong/mxonline.git

     注意要检查下,settings.py文件的数据库名和密码是否和我们设置的一样

    6. 测试项目是否可以正常运行

    python manage.py runserver 0.0.0.0:8000

    若出现django.db.migrations.exceptions.NodeNotFoundError

    则把所有apps下的migration删除

    rm -r migrations

    然后再在Windows中输入192.168.0.101:8000看是否可以访问,所有静态文件也可以正常访问

    --------

    7. uwsgi的安装配置

     安装

    pip install uwsgi

    测试uwsgi是否可以拉起整个项目

    uwsgi --http :8000 --module MxOline.wsgi

    执行完后,到Windows中输入192.168.0.101:8000看是否可以访问(正常可以访问了,但是没有css样式,因为我们没有配置nginx)

    配置uwsgi

    在项目根目录新建uwsgi.ini

    # mysite_uwsgi.ini file
    [uwsgi]
    
    # Django-related settings
    # the base directory (full path)
    chdir           = /home/alon/mxonline# Django's wsgi file
    module          = MxOline.wsgi
    # the virtualenv (full path)
    
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    processes       = 10
    # the socket (use the full path to be safe
    socket          = 127.0.0.1:8000
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true
    virtualenv = /home/alon/.virtualenvs/mxonline

    8. 配置nginx

     配置

    在项目根目录下,新建uc_nginx.conf

    vim uc_nginx.conf
    # the upstream component nginx needs to connect to
    upstream django {
    # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
    server 127.0.0.1:8000; # for a web port socket (we'll use this first)
    }
    # configuration of the server
    
    server {
    # the port your site will be served on
    listen 80;
    # the domain name it will serve for
    server_name 192.168.0.101; # 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/alon/mxonline/media; # 指向django的media目录
    }
    
    location /static {
    alias /home/alon/mxonline/static; # 指向django的static目录
    }
    
    # Finally, send all non-media requests to the Django server.
    location / {
    uwsgi_pass django;
    include uwsgi_params; # the uwsgi_params file you installed
    }
    }

     创建完成后

    拷贝或者创建软链接到nginx目录

    #拷贝
    cp uc_nginx.conf /etc/nginx/conf.d/
    
    # 创建软链接
    sudo ln -s uc_nginx.conf /etc/nginx/conf.d/

    配置完成后,记得重启Nginx

    sudo service nginx restart

      

    9. 静态文件收集

    先修改settings.py配置

    添加下面一行内容:

    STATIC_ROOT = os.path.join(BASE_DIR, "static")

     注释掉

    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static")
    ]

     执行收集命令

    python manage.py collectstatic

    10. 测试uwsgi和nginx是否配置成功

    cd到uwsgi.ini所在目录,运行如下命令

    uwsgi -i uwsgi.ini

    然后到虚拟机和Windows都输入ip:192.168.0.101

    如果都可以正常访问我们的项目,就说明配置成功了。(样式,静态文件都可以访问)

    11. uwsgi的重启

    关闭uwsgi后(uwsgi在运行项目中),uwsgi会自动重启

    关闭

    pkill -f uwsgi

    查询

    ps aux|grep uwsgi

    会发现,kill掉后又自动重启

    12. 将debug关闭

    在真正的生产环境当中,应该将debug关闭,否则一旦访问页面出错,会暴露我们网站的一些信息。

    附:

    以上是在deepin系统下进行部署。

    如果是在centos下进行部署,要注意一个权限的问题。

    在centos下nginx运行是以nginx用户运行的,对一些目录是没有权限的。

    我们需要修改下nginx的配置,让其以root用户运行。

    vim /etc/nginx/nginx.conf
    # 在第一行,将www-data改成root

    然后,kill掉nginx

    pkill -f ginx

    然后直接运行nginx,回车

    nginx

    还有可能,样式没有,我们只要修改下样式目录的访问权限即可

  • 相关阅读:
    《天才在左,疯子在右》
    MVC思想概述
    java文件读写
    HTTP协议简单笔记
    自学Python_Day01
    Linux基础介绍篇
    PHP学习 Day_01
    Linux中部分命令英语全拼
    Linux学习基础命令(三)
    Linux学习基础命令(二)
  • 原文地址:https://www.cnblogs.com/wongbingming/p/7106830.html
Copyright © 2011-2022 走看看