zoukankan      html  css  js  c++  java
  • Django框架-Linux7上部署

    目录结构

    .
    └── www
        └── MangeSystem
            ├── manage.py
            ├── MangeSystem
            │   ├── db_router.py
            │   ├── __init__.py
            │   ├── __pycache__
            │   │   ├── __init__.cpython-36.pyc
            │   │   ├── settings.cpython-36.pyc
            │   │   ├── urls.cpython-36.pyc
            │   │   └── wsgi.cpython-36.pyc
            │   ├── settings.py
            │   ├── urls.py
            │   └── wsgi.py
            ├── static
            │   ├── admin
            │   │   ├── css
            │   │   │   ├── base.css
            │   │   │   ├── changelists.css
            │   │   │   ├── dashboard.css
            │   │   │   ├── fonts.css
            │   │   │   ├── forms.css
            │   │   │   ├── login.css
            │   │   │   ├── rtl.css
            │   │   │   └── widgets.css
            │   │   ├── fonts
            │   │   │   ├── LICENSE.txt
            │   │   │   ├── README.txt
            │   │   │   ├── Roboto-Bold-webfont.woff
            │   │   │   ├── Roboto-Light-webfont.woff
            │   │   │   └── Roboto-Regular-webfont.woff
            │   │   ├── img
            │   │   │   ├── calendar-icons.svg
            │   │   │   ├── gis
            │   │   │   │   ├── move_vertex_off.svg
            │   │   │   │   └── move_vertex_on.svg
            │   │   │   ├── icon-addlink.svg
            │   │   │   ├── icon-alert.svg
            │   │   │   ├── icon-calendar.svg
            │   │   │   ├── icon-changelink.svg
            │   │   │   ├── icon-clock.svg
            │   │   │   ├── icon-deletelink.svg
            │   │   │   ├── icon-no.svg
            │   │   │   ├── icon-unknown-alt.svg
            │   │   │   ├── icon-unknown.svg
            │   │   │   ├── icon-yes.svg
            │   │   │   ├── inline-delete.svg
            │   │   │   ├── LICENSE
            │   │   │   ├── README.txt
            │   │   │   ├── search.svg
            │   │   │   ├── selector-icons.svg
            │   │   │   ├── sorting-icons.svg
            │   │   │   ├── tooltag-add.svg
            │   │   │   └── tooltag-arrowright.svg
            │   │   └── js
            │   │       ├── actions.js
            │   │       ├── actions.min.js
            │   │       ├── admin
            │   │       │   ├── DateTimeShortcuts.js
            │   │       │   └── RelatedObjectLookups.js
            │   │       ├── calendar.js
            │   │       ├── cancel.js
            │   │       ├── change_form.js
            │   │       ├── collapse.js
            │   │       ├── collapse.min.js
            │   │       ├── core.js
            │   │       ├── inlines.js
            │   │       ├── inlines.min.js
            │   │       ├── jquery.init.js
            │   │       ├── popup_response.js
            │   │       ├── prepopulate_init.js
            │   │       ├── prepopulate.js
            │   │       ├── prepopulate.min.js
            │   │       ├── SelectBox.js
            │   │       ├── SelectFilter2.js
            │   │       ├── timeparse.js
            │   │       ├── urlify.js
            │   │       └── vendor
            │   │           ├── jquery
            │   │           │   ├── jquery.js
            │   │           │   ├── jquery.min.js
            │   │           │   └── LICENSE-JQUERY.txt
            │   │           └── xregexp
            │   │               ├── LICENSE-XREGEXP.txt
            │   │               ├── xregexp.js
            │   │               └── xregexp.min.js
            │   ├── css
            │   │   └── mian_coustom.css
            │   └── imags
            │       ├── logo-footer.png
            │       └── logo.jpg
            ├── stuModel
            │   ├── admin.py
            │   ├── apps.py
            │   ├── __init__.py
            │   ├── migrations
            │   │   ├── 0001_initial.py
            │   │   ├── __init__.py
            │   │   └── __pycache__
            │   │       ├── 0001_initial.cpython-36.pyc
            │   │       └── __init__.cpython-36.pyc
            │   ├── models.py
            │   ├── __pycache__
            │   │   ├── admin.cpython-36.pyc
            │   │   ├── apps.cpython-36.pyc
            │   │   ├── __init__.cpython-36.pyc
            │   │   ├── models.cpython-36.pyc
            │   │   ├── urls.cpython-36.pyc
            │   │   └── views.cpython-36.pyc
            │   ├── tests.py
            │   ├── urls.py
            │   └── views.py
            ├── templates
            │   ├── index.html
            │   └── stuSystem
            │       ├── addclass.html
            │       ├── addstu.html
            │       ├── addtea.html
            │       ├── editclass.html
            │       ├── editstu.html
            │       ├── edittea.html
            │       ├── html_stu_model
            │       │   ├── base_add_edit.html
            │       │   ├── base.html
            │       │   └── nav.html
            │       ├── showclass.html
            │       ├── showstu.html
            │       └── showtea.html
            ├── test.py
            ├── uwsgi.ini
            ├── uwsgi.ini.bak
            ├── uwsgi.log
            └── uwsgi.pid
    项目目录结构

    1、安装python3.6

    yum -y install yum-utils
    yum groupinstall development
    yum install https://centos7.iuscommunity.org/ius-release.rpm # 配置官方库
    yum install python36u

    # 之后执行命令只能用python3.6 开头,可以做别名alias python3='python3.6'并写入到

    echo "alias python3='python3.6'" >> /etc/profile
    . /etc/profile

    2、安装pip包管理器

    yum -y install python36u-pip
    设置别名[pip安装好后,也只能pip3.6开头执行命令,故需设置别名]
    echo "alias pip3='pip3.6'" >> /etc/profile
    soure /etc/profile

    pip3 list # 查看已安装好的包 可能需要更新,按提示更新即可

    3、安装mysql5.7

    rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm # 配置官方库
    
    yum -y install mysql-community-server
    
    systemctl start mysqld # 启动后才能生成随机密码,然后才能更改密码
    systemctl enable mysqld # 开机自启动
    
    mysql -V 或mysql --version # 查看版本
    
    # mysql5.7版后都会为root生成随机密码在/var/log/mysqld.log中
    grep 'temporary password' /var/log/mysqld.log # 找到随机密码,然后复制出来使用
    或
    mysql -uroot -p$(awk '/temporary password/{print $NF}' /var/log/mysqld.log)
    
    # 登录mysql重置密码
    mysql -uroot -p'password'
    
    # 修改登录密码
    mysql> alter user 'root'@'localhost' identified by 'Root2018.com';

    4、安装pymsql

    pip3 install pymysql

    5、安装django

    pip3 install django==1.11.5

    6、安装uwsgi

    yum install -y python36u-devel # python.h 开发工具依赖
    pip3 install uwsgi

    在项目目录下创建uwsgi.ini文件,内容如下

    [uwsgi]
    # 使用nginx连接时使用功能,上线时才使用socket,指定项目执行的端口号
    socket=127.0.0.1:8000
    # 项目目录
    chdir=/code/www/MangeSystem
    # 项目中wsgi.py文件的目录,相对于项目目录
    wsgi-file=MangeSystem/wsgi.py
    # 最大进程
    processess=2
    # 最大线程
    threads=2
    # 开启主进程
    master=True
    #
    pidfile=uwsgi.pid
    daemonize=uwsgi.log

    配置文件配好后,启动uwsgi服务【最好等下面的django项目配置完成后再启动】

    uwsgi在哪个目录启动,就会在哪个目录生成uwsgi.pid和uswgi.log文件,故需要切换到项目目录下执行
    启动:uwsgi --ini uwsgi.ini
    停止:uwsgi --stop uwsgi.pid
    重启:uwsgi --reload uwsgi.pid
    强制停止:killall -8 uwsgi
    这里我们启动uwsgi服务,可以通过ps -ef | grep uwsgi看到已经有四个uwsgi服务启动。

    7、在本地创建目录存放django项目

    mkdir /code/www/
    
    将目录code的属主属组改成nginx,因为nginx是通过nginx用户访问该目录的
    chown -R nginx:nginx /code
    
    通过xftp将项目目录copy到服务器www目录下如:/code/www/MangeSystem/
    
    在启动django前先将app中的migrations目录下之前在测试环境生成的数据清理掉,不然在Linux上执行数据库迁移命令无法创建对应的表

    8、配置django项目setting中其它内容:template,static,allow_hosts等配置

    8.1、允许访问IP,及开启debug模式

    DEBUG = True
    ALLOWED_HOSTS = ['*'] # 1、配置可访问ip

    8.2、注册应用

    INSTALLED_APPS=[ 'stuModel.apps.StumodelConfig' # 2、注册app]

    8.3、模板目录配置

    TEMPLATES
    'DIRS': [os.path.join(BASE_DIR, 'templates')] ,如果是命令创建项目,需在项目根目录下手动创建templates目录

    8.4、数据库配置

    # 手动创建数据库

    mysql> create database db_stu_system charset utf8;

    # 创建用户并授权

    mysql> grant all privileges on db_stu_system.* to 'python'@'%' identified by 'Python@2018';

    # 配置setting中database模块

    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'db_stu_system',
    'USER': 'python',
    'PASSWORD': 'Python@2018',
    'HOST': '127.0.0.1',
    'PORT': 3306,
    },
    }

    # 配置项目于settings.py同级__init__文件

    import pymysql
    pymysql.install_as_MySQLdb()
    
    # 切到项目目录,执行数据库迁移命令
    python3 manage.py makemigrations
    python3 manage.py migrate app_name

    8.5、配置静态文件目录

    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static') # 需手动在项目根目录下创建static目录
    ]

    8.6、多个app在全局urls配置分发及命名空间,在当个app中配置urls文件写url与视图函数对应关系,及url命名及反向解析操作

    9、配置nginx

    9.1、添加配置django静态路劲

    cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/addmoney.conf
    
    vim /etc/nginx/conf.d/addmoney.conf
    server {
    listen 80;
    server_name www.addmoney.top addmoney.top;
    #charset koi8-r;
    #access_log /var/log/nginx/host.access.log main;
    
    location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:8000;
    uwsgi_param UWSGI_SCRIPT MangeSystem.wsgi;
    uwsgi_param UWSGI_CHDIR /code/www/MangeSystem;
    rewrite "/(.*)" "/stu_system/show_class/$1" last;
    }
    
    location /static {
    client_max_body_size 35m;
    alias /code/www/MangeSystem/static;
    
    }
    #error_page 404 /404.html;
    
    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /usr/share/nginx/html;
    }
    
    }

    注:用uwsgi不需要启动django项目,不用uwsgi直接启动django项目也是可以的

    10、开启防火墙80端口

    firewall-cmd --zone=public --add-port=80/tcp --permanent
    
    firewall-cmd --reload
  • 相关阅读:
    EXCEL自动导出HTML
    亡灵序曲超清
    支持国产动画-唐伯卿和曾小兰
    中国表情
    logging 日志
    datetime库运用
    hashlib 加密
    os2
    python json数据处理
    python操作redis
  • 原文地址:https://www.cnblogs.com/sunxiuwen/p/9694070.html
Copyright © 2011-2022 走看看