• Centos7部署django项目


    django项目写完以后(web)最好能部署到服务器上,这样就可以在随时随地查看内容了。

    本项目不采用usgi+ngix的部署方式,为追求简单部署的条件,使用在后台一直运行(runserver)的策略,当然了还有宝塔面板这个工具,但是为了巩固linux更加知道部署内容,不推荐新手直接使用宝塔来一键部署,其方法步骤见下面目录,需要一定的linux知识,可以看我这篇博客Linux1

    其实近年来越来越多的开发者使用了Docker工具,这个也是非常好用的工具,部署起来相当不错,抽时间再看看。

    本次环境是Centos 7,在腾讯云买的服务,不得不说,腾讯云配置是相当人性化,其中的镜像源也是非常快的,学生价也是优惠满满。
    【腾讯云】多款云产品1折起,买云服务器送免费机器,最长免费续3个月,学生更是优惠众多点击此处
    在这里插入图片描述

    mysql 安装

    关于mysql的安装请看我这篇博客的后半部分:点击此处
    这里附上主要的运行代码:
    先下载源:

    wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
    
    
    • 1
    • 2

    安装源:

    rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
    
    • 1

    查看mysql

    yum repolist all | grep mysql
    
    
    • 1
    • 2

    安装mysql

    yum install -y mysql-community-server
    
    
    • 1
    • 2

    启动mysql:

    systemctl start mysqld
    
    # 如果未成功,继续安装,或者进入我的博客查看响应的内容
    yum install mysql-community-server 
    
    • 1
    • 2
    • 3
    • 4

    关于腾讯云的安装中也存在一些问题,不过问题不大,基本网上都能搜到。

    安装python环境

    这一步非常关键,直接决定了能不能运行程序。我将在其中遇到的问题也一一奉上:
    1.首先更新软件包

    yum update -y
    
    • 1

    2.安装软件管理包和可能用到的依赖

    yum -y groupinstall "Development tools"
    yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel
    
    • 1
    • 2

    下载python 3到/usr/local目录
    注意,一般Centos 7会自带python环境,一般python --version显示的是2.7.9版本,python3 --version显示的是3.6.8版本。由于我本地的环境是3.7.9环境,所以就最好下载此版本,以满足开发需求。

    # 进入到下载目录文件
    cd /usr/local
    # 下载对应的python版本,如果是下载3.9.10只需要改后面数字就可以了
    wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
    
    #解压
    tar -zxvf Python-3.7.9.tgz 
    # 如果上述命令有问题,可以试一下这个命令,如果没有tar这个命令,请yum install tar
    tar zxvf Python-3.7.9.tgz -C ./
    
    # 进入到指定文件目录
    cd Python-3.7.9
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这里值得一提,一开始我就直接编译运行了,没想到在后面pip安装的时候出现了问题,
    ModuleNotFoundError: No module named ‘_ctypes‘。

    原因:原因:

    Python3中有个内置模块叫ctypes,它是Python3的外部函数库模块,它提供兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用CentOS7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。
    由于在CentOS7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在安装pip的时候就报"ModuleNotFoundError: No module named ‘_ctypes’"。

    # 执行
    yum install libffi-devel -y
    # 安装
    yum install python
    
    • 1
    • 2
    • 3
    • 4

    以上两步也可以遇到了再安装:

    # 编译安装到指定路径
    ./configure --prefix=/usr/local/python3
    # 安装python3
    make 
    make install 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    安装完成以后,需要建立软链接,添加变量,方便在终端使用

    # 首先删除原来的python3变量版本
    rm -rf /usr/bin/python3
    rm -rf /usr/bin/pip3
    
    # 建立软链接,注意路径不要弄错了
    ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
    ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这样就可以了。
    在这里插入图片描述
    关于可以建立虚拟环境来进行编译运行,我这里也不用多提了,可以跳过这个步骤。这个步骤是为了不和其他django版本进行冲突的。

    pip install virtualenv
    
    ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
    # 进入到env目录下
    virtualenv --python=/usr/bin/python3 pyweb
    # 启动虚拟环境
    source activate
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    本地项目迁移到服务器

    本次使用的是Macbook部署文件夹,IDE为Pycharm。
    首先在本地项目上有一些准备工作,这些不做好,到时候运行起来还得远程操作比较麻烦(虽然有vscode帮助)
    在settings.py中

    # 这个//一定要注意,添加此处
    STATIC_ROOT  = os.path.join(BASE_DIR, '/static/')
    #运行所有主机运行,修改此处
    ALLOWED_HOSTS = ['*']
    
    • 1
    • 2
    • 3
    • 4

    下面进入项目根目录,使用命令把所有安装的模块打包到requirements.txt

    pip freeze > requirements.txt
    
    • 1

    将项目打包压缩上传,首先在服务器根目录建一个django文件夹,路径命令

    mkdir /django
    
    • 1

    我这里使用macbook进行上传:
    打开shell,新建远程连接,点击sftp,输入用户root,sftp root@ip
    由于我的本地文件在桌面

    # 这个意思就是将本地文件上传到服务器
    sftp> put /Users/jacin/Desktop/name.zip  /root/django
    
    • 1
    • 2

    windos 上传建议使用xshell中的xftp工具,也是相当好用。
    下面进入django文件夹,解压,由于我这个.zip文件

    unzip name.zip
    
    • 1

    下面就是和本地一样了:
    进入到name文件夹,

    pip3 install -r requirements.txt
    
    • 1

    然后直接python3 manage.py runserver 127.0.0.1:8000
    看看有没有报错,如果没有报错的话。
    直接运行这个让他在后台跑就行了,不需要使用ngix+usgi等一系列麻烦的步骤。

    nohup python3 manage.py runserver 0.0.0.0:8000 >djo.out 2>&1 &
    
    • 1

    这个命令是,只要你一直开云服务,那么你的公网ip:8000就一直开着的。
    nohup :英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。djo.out:日志文件存放位置2>&1 解释:将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。日志文件(标准输出和标准错误输出)保存到djo.out
    如果想关闭了:

    lsof -i tcp:8000
    Kill -9 3225
    
    • 1
    • 2

    这样在浏览器输入你的云服务器地址:8000就可以看到django项目了。

    vscode远程开发

    由于部署到服务器,不可避免地需要修改代码,但不能总是使用vim命令吧,不得不说,vim还是比较麻烦的,所以vscode就成了好用的东西。
    首先在插件里面下载remote-ssh,
    更改设置,File->Preferences->Settings->Extension->Remote-SSH,找到Show Login Terminal并勾选。
    下载后以后在左边的图标中点击+号,输入ssh 的ip与密码就可以访问了。
    在这里插入图片描述
    下面就是打开相应的文件样式。
    然后选择打开相应的文件夹就可以了。
    在这里插入图片描述

  • 相关阅读:
    mysql核心-innodb与myisam详细解读
    当用户打开控制台时,禁止操作
    第2章 控制结构和函数(编程题)
    AppData文件夹下Local,Locallow和Roaming
    rk3588使用npu进行模型转换和推理,加速AI应用落地
    Vue搭建移动端h5项目(已开源,附带git地址)Vant+Vue Router+Vuex+axios封装+案例交互+部分代码说明
    k8s 基于kubeadm搭建高可用集群
    带符号整数的除法与余数
    Lift, Splat, Shoot图像BEV安装与模型详解
    springcloud新闻发布系统源码
  • 原文地址:https://blog.csdn.net/QAZJOU/article/details/126525114