zoukankan      html  css  js  c++  java
  • CentOS7下部署Django项目详细操作步骤

    安装项目环境并迁移项目

    1.先把部署可能用到的项目和安装包发送到开发目录

    2.发送完成后查看当前目录,显示如下则表示成功

     

     3.然后安装python3.7编译环境,这在我上篇博客已经写明步骤,点击这里查看详细步骤,安装完后执行python3,进入python的命令交互界面则表示安装成功!

     4.cd到项目目录下,删除无关文件后安装项目运行所需要的依赖包(依赖包应该提前导出来,windows下可执行pip freeze >requirements.txt导出项目所需要的依赖包)

    安装uwsgi     

    1.  pip3 install uwsgi

    2. 设置软链接:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

    安装nginx

    1.先解压之前上传的nginx安装包,如果没有nginx安装包,则执行命令

    wget -c https://nginx.org/download/nginx-1.12.2.tar.gz

     

     2.cd 到nginx安装包目录执行  ./configure 进行配置

     

     3. make && make install 编译安装

     4.设置软链接   ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

     

    配置uwsgi

    1.创建 一个script目录用于存放uwsgi的相关文件,并在目录中配置uwsgi.ini文件,执行vim uwsgi.ini自动创建

    3.uwsgi.ini详细配置内容说明如下所示:

    [uwsgi]
    chdir=/opt/FruitStore #项目目录
    socket=127.0.0.1:8080
    #http=127.0.0.1:8080 #指定IP端口,ip为内网ip,如果是云服务器,是云服务器内网ip
    workers=5 #进程个数
    pidfile=/opt/script/uwsgi.pid #指定pid文件,用于重启和停止
    static-map=/static=/opt/FruitStore/static #指定静态文件
    uid=root #用户
    gid=root #组
    master=true #启动主进程
    vacuum=true # 当服务停止的时候自动移除unix Socket和pid文件
    enable-threads=true #启用线程
    thunder-lock=true #序列化接受的内容
    harakiri=30 #设置自中断时间
    post-buffering=4096 #设置缓冲
    daemonize=/opt/script/uwsgi.log #设置日志目录路径
    
    这儿有几个细节要注意
    
    首先这个端口你可以随便选,但是不要用22,80之类的,这些端口是有特殊作用的。
    你选的这个端口你得保证已经加入安全组了。假如你是在阿里云买的服务器,那么你登录你的账号之后,在安全组那儿需要添加这个端口
    
    其中配置文件中socket与http的区别:
    
    当使用http时,uWSGI可以充当web服务器,客户端可直接访问,当然也可以通过nginx转发到uWSGI,此时nginx与uWSGI之间通讯协议是http协议。nginx中通过proxy_pass实现。
    当使用socket时,uWSGI无法当做web服务器,只能通过nginx访问,此时nginx与uWSGI之间的通信协议是uwsgi,相比HTTP协议,此协议效率更高。nginx中通过uwsgi_pass实现。
    
    我这里是使用uwsgi+nginx组合来作为服务器,所以选用socket

    4.截图展示(注意不要有注释和空格,可能会出现编码问题)

     5.启动uwsgi

     另附常见的uwsgi命令:

    uwsgi --ini uwsgi.ini          # 启动

    uwsgi --reload uwsgi.pid  # 重启

    uwsgi --stop uwsgi.pid     # 关闭

    配置nginx

    1.cd /usr/local/nginx/conf 配置nginx.conf

     2.为了配置的安全,我们先备份该文件,执行cp nginx.conf nginx.conf.bak

     3.修改节选第一部分,执行 vim nginx.conf

     修改节选第二部分:

     server {
    
        listen 80;  # 我要监听那个端口
        server_name 192.168.29.129; # 设置对外访问入口,可以是域名可以是IP地址,我设置的是IP
    
        charset utf-8;
    
        access_log logs/access.log; #访问日志
        error_log logs/error.log; #错误日志
    
        location / {
        include uwsgi_params;
        uwsgi_connect_timeout 30;
        uwsgi_pass 127.0.0.1:8080  #和uwsgi的socket地址保持一致
      }
    
    gzip_types text
    /plain text/css application/json application/x-javascript text/xml application/xml application/ xml+rss text/ javascript;
    location
    = /static/ { alias /opt/FruitStore/static; #静态文件地址 index index.html index.htm; } }

     安装mariadb数据库并配置

    1.下载mariadb

     yum install mariadb-server mariadb -y 

      2.安装完成后,启动mariadb服务端

    systemctl start/stop/restart/status mariadb #(分别为开启、停止、重启、查看状态)
    systemctl enable mariadb #设置开机启动mariadb

     3.初始化数据库

    mysql_secure_installation #设置root密码等

     4.设置数据库 vim /etc/my.cnf

    其中lower_case_table_names=1在从外界数据迁移时可能会用到,如果不配置可能因为表名大小写而导致表名不一致,从而无法查到对应的数据

     5.重启mariadb

    systemctl restart mariadb

     6.登入数据库,如下则说明安装成功!

     PS:执行命令:show variables like "%character%";show variables like "%collation%";可查看编码类型

    启动服务

    1.创建项目运行的数据库

      2.cd到项目目录下编辑settings,其中debug先不要急着改为false,不然有错误也不会显示,等调试结束后在关掉!

     3.配置数据库

     4.同步表结构到mariadb

    python3 manage.py  makemigrations

    python3 manage.py migrate

    # 同步前,应该先把之前的迁移文件删除

    5.执行python manage.py runserver 0.0.0.0:8000 发生编码错误

     

     6.拷贝出错的路径,用vim编辑把decode改为encode在保存即可!

     

    7.重新启动服务后,执行python3 manage.py runserver 0.0.0.0:8000,记得先关闭防火墙。

     

     8.效果展示:部署成功!

     数据迁移

    1.把之前的表结构和表中的数据从数据库中导出成sql文件,并上传至开发目录,如果之前使用的是sqlite数据库,则需要先把sqlite数据库中的数据导入mysql中,具体做法参考我之前的博客

     2.为了保持不被之前的数据干扰,先删除之前的空表,创建一个空的同名数据库

     3.把opt目录下的sql文件数据导进创建好的数据库

     4.重启mariadb数据库,命令:systemctl restart mariadb,数据显示,数据迁移成功!

    参考博客:https://blog.csdn.net/tianyi19/article/details/112278008

  • 相关阅读:
    中文词频统计
    复合数据类型,英文词频统计
    Mybatis 异常:Cause: java.io.IOException: Could not find resource com.xxx.xxx.xml
    Ajax:修改了项目的ajax相关代码,点击运行没有效果
    大数据应用期末总评
    分布式并行计算MapReduce
    分布式文件系统HDFS 练习
    安装关系型数据库MySQL和大数据处理框架Hadoop
    爬虫综合大作业
    爬取全部的校园新闻
  • 原文地址:https://www.cnblogs.com/Liu928011/p/14873569.html
Copyright © 2011-2022 走看看