当前位置: 首页 > 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;随着…...

【索引】什么是索引

&#x1f4d4; 笔记介绍 大家好&#xff0c;千寻简笔记是一套全部开源的企业开发问题记录&#xff0c;毫无保留给个人及企业免费使用&#xff0c;我是作者星辰&#xff0c;笔记内容整理并发布&#xff0c;内容有误请指出&#xff0c;笔记源码已开源&#xff0c;前往Gitee搜索《…...

【算法刷题】动态规划算法题型及方法归纳

动态规划特点 动态规划中每一个状态一定是由上一个状态推导出来&#xff0c;根据这个特点&#xff0c;可以在状态计算过程中&#xff0c;存储某一条件下的数据&#xff0c;当再次遍历该条件时&#xff0c;直接取该条件对应的数据即可&#xff0c;可以避免重复计算&#xff0c;…...

PolarDB数据库的CSN机制

背景 对postgres数据库熟悉的同学会发现在高并发场景下在获取快照处易出现性能瓶颈&#xff0c;其原因在于PG使用全局数组在共享内存中保存所有事务的状态&#xff0c;在获取快照时需要加锁以保证数据一致性。获取快照时需要持有ProcArraryLock共享锁比遍历ProcArray数组中活跃…...

使用kubeadm 部署kubernetes 1.26.1集群 Calico ToR配置

目录 机器信息 升级内核 系统配置 部署容器运行时Containerd 安装crictl客户端命令 配置服务器支持开启ipvs的前提条件 安装 kubeadm、kubelet 和 kubectl 初始化集群 &#xff08;master&#xff09; 安装CNI Calico 集群加入node节点 机器信息 主机名集群角色IP内…...

Servlet笔记(11):Servletcontext对象

1、什么是ServletContext ServletContext是一个全局储存空间&#xff0c;随服务器的生命周期变化&#xff0c; Cookie&#xff0c;Session&#xff0c;ServletContext的区别 Cookie&#xff1a; 存在于客户端的本地文本文件 Session&#xff1a; 存在于服务器的文本文件&#…...

EM算法是什么

EM算法是什么 EM算法&#xff08;Expectation-Maximization Algorithm&#xff09;是一种用于参数估计的迭代算法。它常被用于含有隐变量&#xff08;latent variable&#xff09;的概率模型中&#xff0c;例如高斯混合模型、隐马尔可夫模型等。 EM算法分为两个步骤&#xff…...

C++---线性dp---方格取数(每日一道算法2023.2.25)

注意事项&#xff1a; 本题属于"数字三角形"和"摘花生"两题的进阶版&#xff0c;建议优先看懂那两道&#xff0c;有助理解。 题目&#xff1a; 输入: 8 2 3 13 2 6 6 3 5 7 4 4 14 5 2 21 5 6 4 6 3 15 7 2 14 0 0 0输出&#xff1a; 67#include <cm…...

《第一行代码》 第八章:应用手机多媒体

一&#xff0c;使用通知 第一步&#xff0c;创建项目&#xff0c;书写布局 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"android:layout_width"match_parent"android:layout_he…...

C++设计模式(20)——迭代器模式

亦称&#xff1a; Iterator 意图 迭代器模式是一种行为设计模式&#xff0c; 让你能在不暴露集合底层表现形式 &#xff08;列表、 栈和树等&#xff09; 的情况下遍历集合中所有的元素。 问题 集合是编程中最常使用的数据类型之一。 尽管如此&#xff0c; 集合只是一组对…...

戴尔Latitude 3410电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。硬件型号驱动情况主板戴尔Latitude 3410处理器英特尔酷睿i7-10510U已驱动内存8GB已驱动硬盘SK hynix BC511 NVMe SSD已驱动显卡Intel UHD 620Nvidia GeForce MX230(屏蔽)无法驱动声卡Realtek ALC236已驱动网卡Realtek RTL81…...