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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Django项目部署(命令函部署)

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
  1. 更新代码
git pull origin master

五. 创建虚拟环境

1.安装virtualenv

pip3 install virtualenv

2.创建虚拟环境

  1. 创建文件夹用于保存项目虚拟环境
mkdir /envs
  1. 创建环境
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


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
前端开发 数据库 Docker
一款可以直接使用的招聘网站, react django开发招聘网站,docker 部署
一款可以直接使用的招聘网站, react django开发招聘网站,docker 部署
92 0
|
XML 应用服务中间件 Linux
在一个centos服务器上同时部署tomcat,django,flask
在一个centos服务器上同时部署tomcat,django,flask
126 0
|
2月前
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
143 0
|
4月前
|
Shell Linux 数据库
Django管理命令大揭秘:如何打造定制脚本,实现任务自动化?
【8月更文挑战第31天】在现代Web开发中,自动化是提升效率和减少错误的关键。Django管理命令作为一种强大功能,允许我们在项目中轻松创建自定义脚本和自动化任务,如数据备份、报告生成等。通过在`app/commands`目录下创建`.py`文件,可以定义各种管理命令。例如,`send_daily_emails.py`用于发送日常邮件。我们定义一个继承自`BaseCommand`的类,并在`handle`方法中实现具体逻辑。管理命令不仅支持接收命令行参数,还可以充分利用Django的模型、视图和表单,帮助我们高效完成复杂任务。
36 0
|
4月前
|
前端开发 JavaScript 安全
Django入门到放弃之常见配置及基本命令
Django入门到放弃之常见配置及基本命令
|
4月前
|
Linux Shell 数据库
python Django教程 之 安装、基本命令、视图与网站
python Django教程 之 安装、基本命令、视图与网站
|
4月前
|
前端开发 JavaScript Linux
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
|
6月前
|
运维 Serverless 测试技术
函数计算产品使用问题之如何部署Django服务
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7月前
|
测试技术 数据安全/隐私保护 Docker
Docker部署开源项目Django-CMS企业内容管理系统
【5月更文挑战第20天】Docker部署开源项目Django-CMS企业内容管理系统
156 1
|
7月前
|
数据处理 数据库 开发者
Django中的自定义管理命令:扩展管理功能的途径
【4月更文挑战第15天】Django教程:介绍如何创建和使用自定义管理命令以扩展框架功能。在应用的`management/commands`目录下创建Python文件,继承`BaseCommand`,实现`handle`方法。示例代码展示了如何定义参数和执行逻辑。自定义命令适用于批量数据处理、定期任务、项目初始化和自定义迁移操作。注意文件位置、命令安全性和稳定性。自定义管理命令能提升开发和维护效率。