django项目部署(腾讯云服务器centos)
基本步骤:
购买腾讯云服务器并配配置好 >> 本地项目依赖收集准备 >> 上传项目等文件到服务器 >> 服务器安装部署软件和python环境 >> 开始部署(全局来看就这5个步骤)
目录
目录
1. 购买腾讯云服务器并配配置好
1.1 搜索腾讯云 :
1.2 选择服务器
1.3 填写购买服务器相关信息并购买
1.4 登录服务器
1.5 安装宝塔面板
1.6 登录宝塔面板
2. 收集项目依赖
3. 上传项目文件、依赖文件到服务器
4. 为项目配置一个python环境和安装部署软件
4.1 为项目配置python环境
4.2 安装部署软件
5. 开始部署
5.1 为项目配置uwsgi服务
5.2 编写nginx启动脚本
5.3 为项目配置nginx服务
5.4 开启uwsgi和nginx服务
6. 补充:
1. 购买腾讯云服务器并配配置好
1.1 搜索腾讯云 :

1.2 选择服务器
最新活动 >> 新用户专享 >> 轻量应用服务器



1.3 填写购买服务器相关信息并购买
选择centos7.6(自己看清楚别乱选),其他信息默认即可
1.4 登录服务器
修改自己的密码(用户名一般不改),如下图:


1.5 安装宝塔面板
为服务器安装宝塔面板,这个宝塔面板是方便我们管理服务器的,比如:上传文件,开启终端执行命令、管理数据库等等都很方便

在终端执行以下命令进行安装:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

安装完成后根据得到的网址、用户名、密码可以登录宝塔面板后台(我们先截图保存起来,还有一件事要先做,因为网址实际上是我们服务器的IP+8888端口号+随机字符,所以确保我们能访问到我们需要开启我们服务器的8888端口,如下图)

1.6 登录宝塔面板
根据上一步得到的信息,修改宝塔面板用户名和密码(因为自己得到的都是随机的,不好记忆)

2. 收集项目依赖
这一步我们在windows开发环境中收集即可,首先明确好自己用的python解释器版本,是虚拟还是真实环境,然后我们进入项目运行所在的环境中,使用以下(2条命令)任意一条命令即可收集,收集完我们可以查看检查以下
pip freeze > requirements.txt
pipreqs ./ --encoding=utf-8 --force
3. 上传项目文件、依赖文件到服务器
安装了宝塔面板之后就很简单了,参考下图(一般在/opt目录下创建一个目录用来放置项目文件):

4. 为项目配置一个python环境和安装部署软件
4.1 为项目配置python环境
centos7.6是自带python3.6的我们可以直接用来作为项目环境(当然我们也可以自己安装高版本的python,自己创建虚拟环境),我们选择好python环境安装一些依赖作为django项目的环境,这里给出以依赖文件方式安装依赖的命令
pip install -r requirements.txt
4.2 安装部署软件
部署的方案是uwsgi+nginx,所以我们要下载uwsgi和nginx
### 1. 安装uwsgi
yum install gcc
yum install python36-devel(具体看自己的python版本)
yum install uwsgi### 2 安装nginx
## 2.1 安装依赖
yum -y install gcc gcc-c++ wget net-tools pcre-devel zlib-devel openssl-devel## 2.2 下载nginx压缩包并解压
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.7.12.tar.gz (这里下载的nginx版本是1.7.12)
tar zxvf nginx-1.7.12.tar.gz## 2.3配置nginx
cd nginx-1.7.12(进入nginx目录,复制下面的语句进行配置)
./configure \
--prefix=/usr/local/nginx \
--with-threads \
--with-file-aio \
--with-ipv6 \
--with-pcre \
--with-http_ssl_module \
--with-http_spdy_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_stub_status_module \
--with-mail \
--with-mail_ssl_module### 3. 编辑和安装
## 3.1 编辑
make
## 3.2 查看是否有错误
echo $? //显示0
## 3.3 安装
make install
5. 开始部署
所谓开始部署无非是为项目配置uwsgi和nginx服务,然后让服务运行,首先我们来配置uwsgi服务,在配置nginx
5.1 为项目配置uwsgi服务
创建/opt/mypro/uwsgi.ini即```vi opt/jd/uwsgi.ini``(路径中的mypro就是我所说的上传django项目所放置的目录),内容如下:
[uwsgi]
socket=0.0.0.0:8080 # 使用nginx连接时使用
# http=0.0.0.0:8080 # 直接做web服务器使用,0.0.0.0表示所有ip可访问
# 项目目录
chdir=/opt/jd/django_demo
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=django_demo/wsgi.py
# 开启进程数
processes=4
# 每个线程开的线程数量
threads=2
# 开启主进程
master=True
# 保存uwsgi pid号文件
pidfile=uwsgi.pid
# 日志文件
daemonize=uwsgi.log
5.2 编写nginx启动脚本
在为项目配置nginx服务之前我们先编写nginx启动脚本,并加入系统服务,创建/etc/init.d/nginx即```vi /etc/init.d/nginx```,内容如下:
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx SettingsNGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"start() {echo -n $"Starting $prog: "mkdir -p /dev/shm/nginx_tempdaemon $NGINX_SBIN -c $NGINX_CONFRETVAL=$?echoreturn $RETVAL
}stop() {echo -n $"Stopping $prog: "killproc -p $NGINX_PID $NGINX_SBIN -TERMrm -rf /dev/shm/nginx_tempRETVAL=$?echoreturn $RETVAL
}reload(){echo -n $"Reloading $prog: "killproc -p $NGINX_PID $NGINX_SBIN -HUPRETVAL=$?echoreturn $RETVAL
}restart(){stopstart
}configtest(){$NGINX_SBIN -c $NGINX_CONF -treturn 0
}case "$1" instart)start;;stop)stop;;reload)reload;;restart)restart;;configtest)configtest;;*)echo $"Usage: $0 {start|stop|reload|restart|configtest}"RETVAL=1
esacexit $RETVAL
# 将上面文件保存退出 接下来添加权限
chmod 755 /etc/init.d/nginx
#添加nginx到服务
chkconfig --add nginx
#加到开机自动启动
chkconfig nginx on
5.3 为项目配置nginx服务
#首先把原来的配置文件清空
> /usr/local/nginx/conf/nginx.conf
#编辑
vi /usr/local/nginx/conf/nginx.conf
nginx.conf配置文件内容如下:
user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;events
{use epoll;worker_connections 6000;
}http
{include mime.types;default_type application/octet-stream;server_names_hash_bucket_size 3526;server_names_hash_max_size 4096;log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]''$host "$request_uri" $status''"$http_referer" "$http_user_agent"';sendfile on;tcp_nopush on;keepalive_timeout 30;client_header_timeout 3m;client_body_timeout 3m;send_timeout 3m;connection_pool_size 256;client_header_buffer_size 1k;large_client_header_buffers 8 4k;request_pool_size 4k;output_buffers 4 32k;postpone_output 1460;client_max_body_size 10m;client_body_buffer_size 256k;client_body_temp_path /usr/local/nginx/client_body_temp;proxy_temp_path /usr/local/nginx/proxy_temp;fastcgi_temp_path /usr/local/nginx/fastcgi_temp;fastcgi_intercept_errors on;tcp_nodelay on;gzip on;gzip_min_length 1k;gzip_buffers 4 8k;gzip_comp_level 5;gzip_http_version 1.1;gzip_types text/plain application/x-javascript text/css text/htm application/xml;server{listen 80;server_name 自己的主机ip;include /usr/local/nginx/conf/host/*.conf;charset utf-8; location /static {alias /opt/jd/django_demo/static; #django_demo/static是项目静态目录}location / {include uwsgi_params;uwsgi_pass 0.0.0.0:8080; #8080端口对应uwsgi配置的端口uwsgi_param UWSGI_SCRITP django_demo.wsgi; #django_demo是项目名uwsgi_param UWSGI_CHDIR /opt/jd/django_demo; #django_demo是项目名}}}
到此我们项目的uwsgi和nginx服务就配置好了,接下来还有两件事要做:开启自己服务器的8080端口(我们项目要用,从刚才的配置文件中就能看出哈),开启服务(项目就在服务器开始运行了),开启服务器端口前面已经说过了,【】自己去完成】,下面直接开始开启服务就完成部署了
5.4 开启uwsgi和nginx服务
# 开启uwsgi服务
cd /opt/mypro # uwsgi.ini所在目录
uwsgi --ini uwsgi.ini# 开启nginx服务
systemctl start nginx# 这里再给些相关的命令
ps -aux | grep uwsgi (查看uwsgi的进程,若仅有一个grep进程则服务没开启)
pkill -9 uwsgi (杀死所有uwsgi进程)
systemctl status nginx (查看nginx服务状态)
systemctl stop nginx (关闭nginx服务)
6. 补充
我要补充的是关于数据库迁移和修改项目文件后的相关操作
6.1 数据库迁移:
对于数据库迁移,我们看命令就知道咋做了。。。
python mange.py makemigrations
python mange.py migrate
首先是python代表python环境我们要进入项目的python环境,其次是manage.py这个是我们的项目目录下的所以我们要进入项目目录执行这两条命令。
有一点不同于windows的是,在centos中python版本为3.x时使用的命令是【python3】而不是python,所以我们的迁移语句应该是:
python3 mange.py makemigrations
python3 mange.py migrate
6.2 修改项目文件后的操作
我们部署完成后,如果在需要修改了一些内容,然后我们要做些什么?
其实只要在项目基础上改,我们需要做的事业没多少哈:
如果修改了model.py中模型,那么重新迁移,再重启uwsgi服务即可
如果修改了*.py/*.html,仅仅重启uwsgi服务即可
。。。
对于nginx服务一个应用于项目静态资源的服务,我们部署完即使修改了静态资源都不需要去重启
至此本章就完结了,如果有相关问题可以评论区留言收到将会回复解决
相关文章:
django项目部署(腾讯云服务器centos)
基本步骤: 购买腾讯云服务器并配配置好 >> 本地项目依赖收集准备 >> 上传项目等文件到服务器 >> 服务器安装部署软件和python环境 >> 开始部署(全局来看就这5个步骤) 目录 目录 1. 购买腾讯云服务器并配配置好 …...
计算机网络笔记、面试八股(一)——TCP/IP网络模型
Note:【计算机网络笔记、面试八股】系列文章共计5篇,现已更新3篇,剩余2篇(TCP连接、Web响应)会尽快更新,敬请期待! 本章目录1. TCP/IP网络模型1.1 应用层1.1.1 应用层作用1.1.2 应用层有哪些常用…...
51单片机入门 - 简短的位运算实现扫描矩阵键盘
介绍 例程使用 SDCC 编译、 stcgal 烧录,如果你想要配置一样的环境,可以参考本专栏的第一篇文章“51单片机开发环境搭建 - VS Code 从编写到烧录”,我的设备是 Windows 10,使用普中51单片机开发板(STC89C52RC…...
Mr. Cappuccino的第45杯咖啡——Kubernetes之部署SpringBoot项目
Kubernetes之部署SpringBoot项目创建一个SpringBoot项目将SpringBoot项目打成Jar包使用Dockerfile制作镜像部署SpringBoot项目创建一个SpringBoot项目 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache…...
vscode在远程服务器提交git的时候无需每次都要输入账号密码的配置
要避免在每次 git 操作时都需要输入账号和密码,可以使用 SSH 鉴权,具体步骤如下:生成 SSH key在本地计算机上使用命令 ssh-keygen -t rsa -b 4096 生成 SSH key。这个命令将在 ~/.ssh 目录下生成两个文件:id_rsa 和 id_rsa.pub&am…...
【Spring 基础】
【Spring 基础】 一、 Spring 介绍 1. 简述 Spring 技术是 JavaEE 开发必备技能,企业开发技术选型专业角度 简化开发,降低企业级开发的复杂性 IoCAOP 事务处理 框架整合,高效整合其他技术,提高企业级应用开发与运行效率 MyBat…...
2023年全国最新机动车签字授权人精选真题及答案5
百分百题库提供机动车签字授权人考试试题、机动车签字授权人考试预测题、机动车签字授权人考试真题、机动车签字授权人证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 四、多选题 1.以下哪些气体属于排放污染物(…...
5138: 数字游戏
描述爸爸、妈妈还有YuYu一起玩一个数字游戏,玩家从某个数开始挨个轮流报数,当数字里含有4或7时,不能报出该数字,只能拍一下手。报数的顺序总是从YuYu开始,然后妈妈、爸爸,最后回到YuYu,以此类推…...
阅读笔记9——DenseNet
一、DenseNet DenseNet的网络结构如图1-1所示,其核心是Dense Block模块,Dense Block中的一个黑点就代表一个卷积模块(不是一个卷积层,而是DenseNet提出的一个BottleNeck模块,后文有讲解),每条黑…...
PowerAutomation获取邮件附件并删除这个邮件方法
这个文章是怎么来的呢?现在不是低代码开发平台启蒙阶段嘛?笔者也有幸在工作中进行了尝试,目前也已经在实际工作中结合Python进行了使用,当然,是可以提高IT的工作效率的。需求是这样的,想从公司的EBS平台报表…...
websocket报错集锦-不断更新中
问题1:Failed to construct ‘WebSocket’: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. 问题描述 Mixed Content: The page at https://AAAAAA.com was loaded over HTTPS, but attempted to connect to the insecur…...
Spring Cloud Nacos源码讲解(七)- Nacos客户端服务订阅机制的核心流程
Nacos客户端服务订阅机制的核心流程 说起Nacos的服务订阅机制,大家会觉得比较难理解,那我们就来详细分析一下,那我们先从Nacos订阅的概述说起 Nacos订阅概述 Nacos的订阅机制,如果用一句话来描述就是:Nacos客…...
【华为OD机试模拟题】用 C++ 实现 - 对称美学(2023.Q1)
最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明对称美学题目输入输出示例一输入输出说明示例二输入输出说明备注Code使用说明 参加华为od机试,一定要注意不要完全背诵代码...
Go语言内存管理详解-学习笔记
1 自动内存管理 1.1 相关概念 Mutator:业务线程,分配新对象,修改对象指向关系Collector:GC线程,找到存活对象,回收死亡对象的内存空间Serial GC:只有一个collector(需要暂停&#…...
Geospatial Data Science (4): Spatial weights
Geospatial Data Science (4): Spatial weights 在本节中,我们将学习空间分析中关键部分之一的来龙去脉:空间权重矩阵。这些是结构化的数字集,用于形式化数据集中观测值之间的地理关系。本质上,给定地理的空间权重矩阵是维度 N N N 乘以 N N N 的正定矩阵,其中...
JUC-Synchronized相关内容
设计同步器的意义多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。共享:资源可以由多个线程同时访问可变:资源可…...
【c++】文件操作(文本文件、二进制文件)
文章目录文件操作文本文件写文件读文件二进制文件写文件读文件文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放; 通过文件可以将数据持久化; c中对文件操作需要包含头文件 文件类型分为两种: 1、文本文…...
带你了解IP报警柱的特点
IP可视报警柱是一款室外防水紧急求助可视对讲终端。安装在学校、广场、道路人流密集和案件高发区域,当发生紧急情况或需要咨询求助时按下呼叫按钮立即可与监控中心值班人员通话,值班人员也可通过前置摄像头了解现场情况并广播喊话。IP可视报警柱的使用特…...
一步步教你电脑变成服务器,tomcat的花生壳设置(原创)
1,首先你去https://console.oray.com/这网站注册个帐号,如果注册成功它会送你一个免费域名,当然不记得也没关系,你记住你注册的 帐号跟密码,然后下载它的软件(花生壳动态域名6.0正式版)有xp跟li…...
Python 卷积神经网络 ResNet的基本编写方法
ResNet(Residual Network)是由微软亚洲研究院提出的深度卷积神经网络,它在2015年的ImageNet挑战赛上取得了第一名的好成绩。ResNet最大的特点是使用了残差学习,可以解决深度网络退化问题。在传统的深度神经网络中,随着…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
