django项目部署(腾讯云服务器centos)

news2024/9/27 21:27:43

基本步骤:

购买腾讯云服务器并配配置好 >> 本地项目依赖收集准备 >> 上传项目等文件到服务器 >> 服务器安装部署软件和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 Settings

NGINX_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_temp
        daemon $NGINX_SBIN -c $NGINX_CONF
        RETVAL=$?
        echo
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        killproc -p $NGINX_PID $NGINX_SBIN -TERM
        rm -rf /dev/shm/nginx_temp
        RETVAL=$?
        echo
        return $RETVAL
}

reload(){
        echo -n $"Reloading $prog: "
        killproc -p $NGINX_PID $NGINX_SBIN -HUP
        RETVAL=$?
        echo
        return $RETVAL
}

restart(){
        stop
        start
}

configtest(){
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload)
        reload
        ;;
  restart)
        restart
        ;;
  configtest)
        configtest
        ;;
  *)
        echo $"Usage: $0 {start|stop|reload|restart|configtest}"
        RETVAL=1
esac

exit $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服务一个应用于项目静态资源的服务,我们部署完即使修改了静态资源都不需要去重启

至此本章就完结了,如果有相关问题可以评论区留言收到将会回复解决

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

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

相关文章

【算法设计技巧】分治算法

分治算法 用于设计算法的另一种常用技巧为分治算法(divide and conquer)。分治算法由两部分组成: 分(divide):递归解决较小的问题(当然,基准情况除外)治(conquer):然后,从子问题的解构建原问题的解。 传统上&#x…

升级日记本-课后程序(JAVA基础案例教程-黑马程序员编著-第七章-课后作业)

【实验7-4】 升级版日记本 【任务介绍】 1.任务描述 本案例要求编写一个模拟日记本的程序,通过在控制台输入指令,实现在本地新建日记本、打开日记本和修改日记本等功能。 用户输入指令1代表“新建日记本”,可以从控制台获取用户输入的日记…

物联网MQTT协议简单介绍

物联网曾被认为是继计算机、互联网之后,信息技术行业的第三次浪潮。随着基础通讯设施的不断完善,尤其是 5G 的出现,进一步降低了万物互联的门槛和成本。物联网本身也是 AI 和区块链应用很好的落地场景之一,各大云服务商也在纷纷上…

mysql8.0-日志

目录 错误日志 错误日志主要记录如下几种日志: 查询日志 测试 慢查询日志 二进制日志 日志格式 日志查看 修改日志格式 二进制日志的删除 二进制日志的还原 错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysql启动和停止时,…

【Python基础】类

面向对象编程 面向对象编程是最有效的软件编写方法之一。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 面向对象和面向过程的区别 比如我想吃西红柿炒蛋,怎么运用面向过程的方法来解决这个问题呢?…

怕上当?来看这份网络钓鱼和诈骗技术趋势

网络钓鱼和诈骗:当前的欺诈类型 网络钓鱼 钓鱼者可以攻击任何在线服务——银行、社交网络、政府门户网站、在线商店、邮件服务、快递公司等——中的证书。但是,顶级品牌的客户往往面临更大风险,因为相比小品牌,人们更喜欢使用和…

12 个适合做外包项目的开源后台管理系统

1.D2admin 开源地址:https://github.com/d2-projects/d2-admin 文档地址:https://d2.pub/zh/doc/d2-admin/ 效果预览:https://d2.pub/d2-admin/preview/#/index 开源协议:MIT 2.vue-element-admin 开源地址:https…

BACnet协议详解————MS/TP物理层,数据链路层和网络层

文章目录写在前面1 物理层2 数据链路层MSTP的流程如下noteMS/TP帧格式3 网络层写在前面 这周加更一篇,来弥补一下之前落下的进度。简单的说两句,之前讲应用层的时候,只是跟官方的手册来同步一下,但是从个人理解来说,自…

Spring拦截器

SpringMVC提供了拦截器机制,允许运行目标方法之前进行一些拦截工作或者目标方法运行之后进行一下其他相关的处理。自定义的拦截器必须实现HandlerInterceptor接口。preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求…

(周末公众号解读系列)2000字-视觉SLAM综述

参考链接:https://mp.weixin.qq.com/s?__bizMzg2NzUxNTU1OA&mid2247528395&idx1&sn6c9290dd7fd926f11cbaca312fbe99a2&chksmceb84202f9cfcb1410353c805b122e8df2e2b79bd4031ddc5d8678f8b11c356a25f55f488907&scene126&sessionid1677323905…

10 分钟把你的 Web 应用转为桌面端应用

在桌面端应用上,Electron 也早已做大做强,GitHub桌面端、VSCode、Figma、Notion、飞书、剪映、得物都基于此。但最近后起之秀的 Tauri 也引人注目,它解决了 Electron 一个大的痛点——打包产物特别大。 我们知道 Electron 基于谷歌内核 Chro…

C++回顾(二)——const和引用

2.1 C中的const 2.1.1 C与C中const的比较 (1)C语言中的const C语言中 const修饰的变量是一个 常变量,本质还是变量,有自己的地址空间。 (2)C中的const 1、C中 const 变量声明的是一个真正的常量&#xff…

24 openEuler管理进程-调度启动进程

文章目录24 openEuler管理进程-调度启动进程24.1 定时运行一批程序(at)24.1.1 at命令24.1.2 设置时间24.1.3 执行权限24.2 周期性运行一批程序(cron)24.2.1 运行机制24.2.2 crontab命令24.2.3 crontab文件24.2.4 编辑配置文件操作…

Linux基础命令-whereis查找命令及相关文件

文章目录 whereis 命令介绍 命令格式 基本参数 参考实例 1)查找date命令及相关文件 2)只显示date的二进制文件 3)只显示源代码文件 4)指定目录查找二进制文件 which与whereis对比 命令总结 whereis 命令介绍 通过帮助…

【TCSVT22】Pareto Refocusing for Drone-view Object Detection【航拍目标检测】

论文与代码论文地址:https://ieeexplore.ieee.org/document/9905640/代码地址:未开源背景与动机作者认为阻碍航拍场景目标检测发展的原因主要有以下两个:航拍图像中存在大量困难目标,文中作者把困难目标总结为小目标和遮挡的目标。…

机械革命旷世G16电脑开机变成绿屏了无法使用怎么办?

机械革命旷世G16电脑开机变成绿屏了无法使用怎么办?最近有用户使用的机械革命旷世G16电脑一开机之后,电脑屏幕就变成了绿色的,无法进行任何的操作。出现这个问题可能是因为电脑中病毒了,或者是系统出现故障。我们可以通过U盘来重新…

实习-----Mybatis 框架

Mybatis 框架ORM持久化介绍 了解什么是“持久化”即把数据(如内存中的对象)保存的磁盘的某一文件中ORM概念ORM,即Object Relational Mapping,它是对象关系映射的简称。它的作用是在关系型数据库和对象之间作一个映射,是…

CNTM 和ADA线下会议总结!

预计CNTM将会是ADA和Ocean共同孵化的第二个AI项M!CNTM25号和ADA在台湾举办线下会议 并在近期CNTM和Ocean在一起交流AI技术,同时AGIX也是ADA和Ocean深度孵化的项目,预计CNTM将会是ADA和Ocean共同孵化的第二个AI项目!什么是 CNTM &a…

【测试平台系列】如何停止测试任务执行

今天我们就玩点好玩的,和大家一起探讨:怎么停止一段python代码。之后我们将会运用到pity之中。 知识要点 本文需要大家对asyncio相关知识有一些了解,至于原理方面,大家可以自行查阅,因为我也没细看。 为什么要做这个…

Spring使用mongoDB步骤

1. 在Linux系统使用docker安装mongoDB 1.1. 安装 在docker运行的情况下,执行下述命令。 docker run \ -itd \ --name mongoDB \ -v mongoDB_db:/data/db \ -p 27017:27017 \ mongo:4.4 \ --auth执行docker ps后,出现下列行,即表示mongoDB安…