当前位置: 首页 > news >正文

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&#xf…...

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 操作时都需要输入账号和密码&#xff0c;可以使用 SSH 鉴权&#xff0c;具体步骤如下&#xff1a;生成 SSH key在本地计算机上使用命令 ssh-keygen -t rsa -b 4096 生成 SSH key。这个命令将在 ~/.ssh 目录下生成两个文件&#xff1a;id_rsa 和 id_rsa.pub&am…...

【Spring 基础】

【Spring 基础】 一、 Spring 介绍 1. 简述 Spring 技术是 JavaEE 开发必备技能&#xff0c;企业开发技术选型专业角度 简化开发&#xff0c;降低企业级开发的复杂性 IoCAOP 事务处理 框架整合&#xff0c;高效整合其他技术&#xff0c;提高企业级应用开发与运行效率 MyBat…...

2023年全国最新机动车签字授权人精选真题及答案5

百分百题库提供机动车签字授权人考试试题、机动车签字授权人考试预测题、机动车签字授权人考试真题、机动车签字授权人证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 四、多选题 1.以下哪些气体属于排放污染物&#xff08…...

5138: 数字游戏

描述爸爸、妈妈还有YuYu一起玩一个数字游戏&#xff0c;玩家从某个数开始挨个轮流报数&#xff0c;当数字里含有4或7时&#xff0c;不能报出该数字&#xff0c;只能拍一下手。报数的顺序总是从YuYu开始&#xff0c;然后妈妈、爸爸&#xff0c;最后回到YuYu&#xff0c;以此类推…...

阅读笔记9——DenseNet

一、DenseNet DenseNet的网络结构如图1-1所示&#xff0c;其核心是Dense Block模块&#xff0c;Dense Block中的一个黑点就代表一个卷积模块&#xff08;不是一个卷积层&#xff0c;而是DenseNet提出的一个BottleNeck模块&#xff0c;后文有讲解&#xff09;&#xff0c;每条黑…...

PowerAutomation获取邮件附件并删除这个邮件方法

这个文章是怎么来的呢&#xff1f;现在不是低代码开发平台启蒙阶段嘛&#xff1f;笔者也有幸在工作中进行了尝试&#xff0c;目前也已经在实际工作中结合Python进行了使用&#xff0c;当然&#xff0c;是可以提高IT的工作效率的。需求是这样的&#xff0c;想从公司的EBS平台报表…...

websocket报错集锦-不断更新中

问题1&#xff1a;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的服务订阅机制&#xff0c;大家会觉得比较难理解&#xff0c;那我们就来详细分析一下&#xff0c;那我们先从Nacos订阅的概述说起 Nacos订阅概述 ​ Nacos的订阅机制&#xff0c;如果用一句话来描述就是&#xff1a;Nacos客…...

【华为OD机试模拟题】用 C++ 实现 - 对称美学(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明对称美学题目输入输出示例一输入输出说明示例二输入输出说明备注Code使用说明 参加华为od机试,一定要注意不要完全背诵代码࿰...

Go语言内存管理详解-学习笔记

1 自动内存管理 1.1 相关概念 Mutator&#xff1a;业务线程&#xff0c;分配新对象&#xff0c;修改对象指向关系Collector&#xff1a;GC线程&#xff0c;找到存活对象&#xff0c;回收死亡对象的内存空间Serial GC&#xff1a;只有一个collector&#xff08;需要暂停&#…...

Geospatial Data Science (4): Spatial weights

Geospatial Data Science (4): Spatial weights 在本节中,我们将学习空间分析中关键部分之一的来龙去脉:空间权重矩阵。这些是结构化的数字集,用于形式化数据集中观测值之间的地理关系。本质上,给定地理的空间权重矩阵是维度 N N N 乘以 N N N 的正定矩阵,其中...

JUC-Synchronized相关内容

设计同步器的意义多线程编程中&#xff0c;有可能会出现多个线程同时访问同一个共享、可变资源的情况&#xff0c;这个资源我们称之其为临界资源&#xff1b;这种资源可能是&#xff1a;对象、变量、文件等。共享&#xff1a;资源可以由多个线程同时访问可变&#xff1a;资源可…...

【c++】文件操作(文本文件、二进制文件)

文章目录文件操作文本文件写文件读文件二进制文件写文件读文件文件操作 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放&#xff1b; 通过文件可以将数据持久化&#xff1b; c中对文件操作需要包含头文件 文件类型分为两种&#xff1a; 1、文本文…...

带你了解IP报警柱的特点

IP可视报警柱是一款室外防水紧急求助可视对讲终端。安装在学校、广场、道路人流密集和案件高发区域&#xff0c;当发生紧急情况或需要咨询求助时按下呼叫按钮立即可与监控中心值班人员通话&#xff0c;值班人员也可通过前置摄像头了解现场情况并广播喊话。IP可视报警柱的使用特…...

一步步教你电脑变成服务器,tomcat的花生壳设置(原创)

1&#xff0c;首先你去https://console.oray.com/这网站注册个帐号&#xff0c;如果注册成功它会送你一个免费域名&#xff0c;当然不记得也没关系&#xff0c;你记住你注册的 帐号跟密码&#xff0c;然后下载它的软件&#xff08;花生壳动态域名6.0正式版&#xff09;有xp跟li…...

Python 卷积神经网络 ResNet的基本编写方法

ResNet&#xff08;Residual Network&#xff09;是由微软亚洲研究院提出的深度卷积神经网络&#xff0c;它在2015年的ImageNet挑战赛上取得了第一名的好成绩。ResNet最大的特点是使用了残差学习&#xff0c;可以解决深度网络退化问题。在传统的深度神经网络中&#xff0c;随着…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...