Django项目部署(命令函部署)

news2024/12/25 12:56:37

Django项目搭建

一. 下载宝塔面板

我这里使用的是命令函部署 , 下载宝塔主要为了是方便操作 , 宝塔的终端支持复制粘贴 , 而且可以帮助我们快速的检索文件目录以及避免一些软件的环境配置

下载方法:

​ 打开浏览器访问 : 宝塔面板下载,免费全能的服务器运维软件 (bt.cn)

在这里插入图片描述
进入xshell将链接粘贴上去 , 回车运行即可

下载后会在终端显示用户名和密码 , 该密码只有第一次登录时有效 , 登录之后进入面板记得修改密码

宝塔的默认端口是8888 , 记得在安全组中放行该端口 , 不然无法访问

在这里插入图片描述

二. 安装Python环境

一般服务器的Linux环境中是自带Python3.6版本的 , 这里还是更具自己的需求进行下载对应版本

1、进入管理员的身份,先安装依赖的编译环境

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc

2、使用 wget 命令到官网中下载 python 的安装包

没有 wget 命令。下载 wget
yum -y install wget

进入 opt 目录 , 将安装包下载到该目录中

wget https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz

3、对压缩包进行解压,并且创建目录

tar -zxvf Python-3.8.10.tgz

4、进入解压好的 python 安装包

cd /opt/Python-3.8.10

5、进行编译安装

./configure 

make

make install
出现没有编译环境 gcc 
yum  install gcc

二. 安装MySQL环境

1、使用 wget 下载安装包,下载到 opt 目录中

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

2、安装 MySQL 公钥

rpm -i mysql57-community-release-el7-10.noarch.rpm

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

3、安装 MySQL 服务

yum -y install mysql-community-server

4、启动 MySQL

启动 MySQL 服务
systemctl start mysqld.service
关闭 MySQL 服务
systemctl stop mysqld.service
查看 MySQL 服务状态
systemctl status mysqld.service

5、获取进入 MySQL 的临时密码

grep 'password' /var/log/mysqld.log![image-20240226212436131](D:/Users/lenovo/Desktop/day21_3.Linux%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.assets/image-20240226212436131.png)

进入 MySQL 服务

mysql -uroot -p【回车】
输入密码

6、配置 MySQL 的密码

mysql 原本的密码复杂度比较高,大小写字母和数字混合不少于8位的密码

修改密码的负责度
set global validate_password_policy=0;
set global validate_password_length=1;

配置密码
alter user "root"@"localhost" identified  by "密码";
alter user "root"@"localhost" identified  by "root";

退出 MySQL 服务

7、修改 MySQL 的配置文件,修改字符编码

vim /etc/my.cnf
[client]
default-character-set=utf8 

[mysqld]
port = 3306
character-set-server=utf8
collation-server=utf8_general_ci

8、关闭MySQL服务,重新启动 MySQL 服务

如果出现上述安装不成功的情况自行百度或者使用宝塔进行安装
在这里插入图片描述

安装之后还是依照前面的命令配置一下环境

这里要注意一下的是宝塔安装后 , 密码修改可以直接通过自带的数据库进行修改
在这里插入图片描述
我的建议是不要在这个界面上直接添加数据库 , mysql下载完毕后还是通过命令函创建数据库

进入mysql

mysql -uroot -proot # 这里的默认账号名为root密码自行修改

创建数据库

create database 数据库名;

四. 配置git仓库

这里推荐使用gitee国内版本使用的是中文也方便使用 , github需要科学上网访问比较麻烦

1.在项目文件夹中创建.getignore文件

  1. 在项目中中有些文件是不需要迁移到服务器上的 , 如项目迁移文件备份文件等 , 可以通过github地址获取到相关语言的.getignore文件

    文件地址: https://github.com/github/gitignore

  2. 导出项目依赖文件

    pipreqs ./ --encoding=utf-8
    pip3 install -r requirements.txt
    

2.初始化仓库

设置用户名

使用以下命令来设置你的 Git 用户名:

git config --global user.name "几许"

设置用户邮箱

使用以下命令来设置你的 Git 邮箱地址:

git config --global user.email "1529063814@qq.com"

检查设置

你可以使用以下命令来检查你的 Git 配置:

git config --list

或者,你可以专门针对用户名和邮箱进行检查:

git config --global user.name  
git config --global user.email

切换工作目录

cd django_-shop-system

初始化 Git 仓库

git init

origin 替代网址便于以后调用

git remote add origin https://gitee.com/jixuonline/django_-shop-system.git

这条命令将一个名为 origin 的远程仓库添加到您的本地 Git 仓库。通常,origin 是默认的远程仓库名,用于指向您首次克隆或推送到的远程仓库。这里的 URL https://gitee.com/jixuonline/django_-shop-system.git 是您 Gitee 仓库的 URL。

3.上传代码到git

​ 将文件打包到远程仓库:

git add .
git commit -m 'init'
git push origin master

4.服务器拉取代码

1.下载git
yum install git -y
2.进入要下载的位置 , 创建目录
cd /opt/www/
3.克隆代码
git clone https://gitee.com/jixuonline/django_-shop-system.git
>>>输入账号和密码
3.下载更新代码
  1. 进入项目根目录

    cd /opt/www/django_-shop-system
    
  2. 更新代码

    git pull origin master
    

五. 创建虚拟环境

1.安装virtualenv

pip3 install virtualenv

2.创建虚拟环境

  1. 创建文件夹用于保存项目虚拟环境

    mkdir /envs
    
  2. 创建环境

    virtualenv /envs/django_-shop-system --python=python3.8
    

3.激活虚拟环境

source /envs/django_-shop-system/bin/activate

虚拟环境激活之后就可以在环境中安装要使用的模块

模块的话前面已经导入到requirements.txt文件中了 , 直接下载就行

pip3 install -r requirements.txt

六. Linux配置uwsgi环境

1.进入虚拟环境

source /envs/django_-shop-system/bin/activate

2.安装uwsgi

 pip install uwsgi

3.基于uwsgi运行项目 – 基于配置文件

在项目目录下创建配置文件

#socket= 0.0.0.0:8005
http= 0.0.0.0:8005
# http=120.55.47.111:8005
chdir=/opt/www/django_-shop-system/
wsgi-file = /opt/www/django_-shop-system/JiXuShopSystem/wsgi.py
#callable = application
processes = 2
threads = 2
virtualenv = /envs/django_-shop-system/
master=True
pidfile=uwsgi.pid
uid = 2001
gid = 1001
buffer-size = 65536
static-map = /static=/opt/www/django_-shop-system/static/

进入项目目录激活虚拟环境

cd /opt/www/django_-shop-system
source /envs/django_-shop-system/bin/activate

运行uwsgi

uwsgi --ini django_-shop-system_uwsgi.ini

uwsgi --stop uwsgi.121339

后台运行

uwsgi --ini django_-shop-system_uwsgi.ini &

针对运行比较麻烦我们可以创建shell脚本 , 脚本放项目目录即可

shell脚本

reboot.sh – 重启uwsgi
#!/usr/bin/env bash

echo -e "\033[34m--------------------wsgi process--------------------\033[0m"

ps -ef|grep nb_uwsgi.ini | grep -v grep

sleep 0.5

echo -e '\n--------------------going to close--------------------'

ps -ef |grep nb_uwsgi.ini | grep -v grep | awk '{print $2}' | xargs kill -9

sleep 0.5

echo -e '\n----------check if the kill action is correct----------'

/envs/nb/bin/uwsgi  --ini nb_uwsgi.ini &  >/dev/null

echo -e '\n\033[42;1m----------------------started...----------------------\033[0m'
sleep 1

ps -ef |grep nb_uwsgi.ini | grep -v grep
stop.sh – 关闭uwsgi
#!/usr/bin/env bash

echo -e "\033[34m--------------------wsgi process--------------------\033[0m"

ps -ef |grep nb_uwsgi.ini | grep -v grep

sleep 0.5

echo -e '\n--------------------going to close--------------------'

ps -ef |grep nb_uwsgi.ini | grep -v grep | awk '{print $2}' | xargs kill -9

sleep 0.5

赋予可执行权限

chmod 755 reboot.sh
chmod 755 stop.sh

运行

./reboot.sh

七. 配置nginx环境

Nginx

Nginx:开源的高性能的HTTP和反向代理服务器

反向代理:服务器做出逆向操作 , 代理服务器接收用户发送的请求,解析转发给内部服务器,返回Response的响应。

WAF功能:阻止 web 攻击

Nginx特点:内存小 , 并发能力强 , 灵活好扩展

下载依赖包以及安装包

sudo yum install epel-release
yum install -y nginx

如果这里配置有问题的同学也可以直接在宝塔中下载

进入/etc/nginx目录 , 找到nginx.conf , 将下面的代码替换原来的就行

nginx配置:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    # include /etc/nginx/conf.d/*.conf;

    server {
        listen       80;	
        listen       [::]:80;
        server_name  120.55.47.111;	
        # root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        # include /etc/nginx/default.d/*.conf;
        charset utf-8;
        location /static {
                alias /opt/www/django_-shop-system/static;	
        }

        location / {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:8005;
	
        }




        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }


}


启动nginx

systemctl start nginx
systemctl stop nginx
 # 重启

开机启动
systemctl enable nginx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1793641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于stm32的软件复位

使用软件复位的目的: 软件复位并不会擦除存储器中的数据,它只是将处理器恢复到复位状态,即中断使能位被清除,系统寄存器被重置,但RAM和Flash存储器中的数据保持不变。 STM32软件复位(基于库文件V3.5) ,对…

Junit(Java单元测试)

配置文件 要想使用 Junit 进行单元测试需要引入以下第三方库&#xff1a; 引入后可以使用 Test&#xff0c;BeforeEach等注解 <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter<…

JVM之垃圾回收面试总结

文章目录 1.GC概述1.1 什么是垃圾1.2 为什么需要GC&#xff1f;1.3 早期垃圾回收1.4 Java垃圾回收机制1.5 评估GC的性能指标 2.垃圾回收相关算法2.1 垃圾标记阶段的算法2.1.1 引用计数算法(Java没有使用)2.1.2 可达性分析算法 2.2 垃圾清除阶段的算法2.2.1 标记-清除(Mark-Swee…

C语言 | Leetcode C语言题解之第128题最长连续序列

题目&#xff1a; 题解&#xff1a; typedef struct {int key;UT_hash_handle hh; }Hash; int longestConsecutive(int* nums, int numsSize) {Hash* headNULL;Hash* tempNULL;for(int i0;i<numsSize;i){int numnums[i];HASH_FIND_INT(head,&num,temp);if(!temp){temp…

Java编程常见问题汇总六

系列文章目录 文章目录 系列文章目录前言一、反射使用不当二、不必要的同步三、错误的选择List类型四、HashMap size陷阱五、对Hashtable, HashMap 和 HashSet了解不够 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

Ruoyi-Blog 基于若依后台的博客系统,长期维护

RuoYiBlog-一个基于若依的超级漂亮的博客系统 ✨项目介绍 一直想做一个博客平台&#xff0c;看过许多优秀的开源项目&#xff0c;但没有找到合适的。于是我利用业余时间把若依后台管理和pb-cms结合起来&#xff0c;在自己的参考中开发了一部分&#xff0c;就有了这个 项目可用…

【数学建模】MATLAB入门教程:插值与拟合(下)

前言 插值与拟合在数据处理和科学计算中扮演着非常重要的角色&#xff0c;它们用于估算未知数据点的值&#xff0c;帮助我们理解和预测数据趋势 一、一维插值 1、一维插值定义 已知n1个节点(,)(j0,1,...,n,其中互不相同&#xff0c;不妨设a<<...<b),求任一插值点(…

CSAPP Lab06——Shell Lab通关思路

远距离的欣赏 近距离的迷惘 谁说太阳会找到月亮 ——修炼爱情 完整代码见&#xff1a;CSAPP/shlab-handout at main SnowLegend-star/CSAPP (github.com) 上来就遇到了些小问题&#xff1a;①本来想看看“tshref”支持的命令&#xff0c;结果命令居然被拒绝执行了&#xff0c;…

现代密码学-认证协议

A.B两个用户想通过网络先建立安全的共享密钥再进行保密通信&#xff1f;A(B)如何确信自己正在和B(A)通信而不是C&#xff1f;这种通信方式为双向通信&#xff0c;此时的认证为相互认证。 相互认证 A/B两个用户在建立共享密钥时需要考虑的核心问题&#xff1a;保密性和实时性&…

刷代码随想录有感(93):贪心算法——无重叠区间(区间重叠问题:求区间重叠次数)

题干: 代码&#xff1a; class Solution { public:static bool cmp(vector<int>& a, vector<int>& b){return a[0] < b[0];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end(), c…

2024年湖北职称评审面试答辩技巧有哪些?看完你就懂了

2024年度湖北省部分工程专业水平能力测试面试答辩开始了&#xff0c;答辩时间是&#xff1a;2024年6月15、16日。 测试地点&#xff1a;武汉市武昌区洪山侧路63号茶港军转小区1号楼(武汉大学西门旁) 水平能力测试注意事项&#xff1a; &#xff08;一&#xff09;报名参加202…

企业级数据保护:华企盾DSC敏感内容识别与加密技术

在当今数字化时代&#xff0c;企业面临的数据安全挑战日益严峻。敏感数据的泄露不仅会导致经济损失&#xff0c;还可能损害企业的声誉和客户信任。因此&#xff0c;采用先进的敏感内容识别和加密技术&#xff0c;例如华企盾DSC敏感内容识别&#xff0c;对企业数据进行有效保护至…

Ubuntu server 24 (Linux) IPtables 双网卡 共享上网NAT 安装配置DHCP

一 开启路由转发功能 sudo vim /etc/sysctl.conf net.ipv4.ip_forward1 sudo sysctl -p 二 安装DHCP #更新软件包列表&#xff1a; sudo apt update #安装DHCP服务器 sudo apt install isc-dhcp-server #修改监听网卡,根据实际修改 sudo vi /etc/default/isc-dhcp-server …

【动手学深度学习】使用块的网络(VGG)的研究详情

目录 &#x1f30a;1. 研究目的 &#x1f30a;2. 研究准备 &#x1f30a;3. 研究内容 &#x1f30d;3.1 多层感知机模型选择、欠拟合和过拟合 &#x1f30d;3.2 练习 &#x1f30a;4. 研究体会 &#x1f30a;1. 研究目的 理解块的网络结构&#xff1b;比较块的网络与传统…

AI 入门指南二 :AI提示词(Prompt)

一&#xff0c;提示词的定义 提示词在中文中意为“触发”&#xff0c;在自然语言处理&#xff08;NLP&#xff09;的领域&#xff0c;它更接近于一个“心领神会”的概念&#xff0c;而非具有明确定义的术语。 简而言之&#xff0c;提示词是用户对大型语言模型的输入&#xff0…

Qt | Qt 资源简介(rcc、qmake)

1、资源系统是一种独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件(前面所讨论的数据都存储在外部设备中)。若应用程序始终需要一组特定的文件(比如图标),则非常有用。 2、资源系统基于 qmake,rcc(Qt 的资源编译器,用于把资源转换为 C++代码)和 QFile …

EE trade:通货膨胀对老百姓意味着什么

通货膨胀&#xff0c;是经济领域中的一个常见现象&#xff0c;对社会各阶层尤其是普通老百姓的生活产生了深远影响。理解通货膨胀对老百姓的真实含义&#xff0c;可以帮助我们更好地应对日常生活的变化与挑战。 1. 生活成本的上升 最直接的影响体现在生活成本上。通货膨胀会导致…

音频pop音的数学与物理解释

音频数据跳变太大的时候通常会有pop音&#xff0c;此时频谱上看pop音位置能量较高 音频中的“pop”音通常是由于信号的不连续性或瞬态变化造成的。这种不连续性的数学和物理原因可以从以下几个方面解释&#xff1a; 数学解释 信号不连续性 当音频信号发生突变时&#xff0c;…

Android完整备份:备份Android手机数据的4种最佳方法

如今&#xff0c;人们每天都依赖手机&#xff0c;丢失数据对我们所有人来说都是一个大麻烦。由于生活是不可预测的&#xff0c;没有人知道什么时候他的数据可能会被意外删除或丢失。因此&#xff0c;仔细备份手机数据非常重要。大多数主要智能手机平台都具有将数据备份到计算机…

C/C++学习路线

学习分享 C语言学习路线 视频&#xff1a;浙大翁恺C语言程序设计&#xff0c;当时学习C语言的时候感觉老师讲的很有意思&#xff0c;现在依然很受学生欢迎&#xff0c;播放量也很高&#xff0c;C语言主要需要学习数组&#xff0c;指针&#xff0c;结构体和函数等&#xff0c;…