DRF/Django+Vue项目线上部署:腾讯云+Centos7.6(github的SSH认证)

以下教程来源于武沛齐老师,请支持老师的原版视频。

1.服务器选购和配置

1.1.服务器选购

1.2.防火墙/安全组配置

80是HTTP的端口,443是HTTPS的端口,22是远程连接的端口,3306是mysql的端口。


1.3.远程连接软件(tabby)配置

下载:https://github.com/Eugeny/tabby/releases/tag/v1.0.223

选择配置和连接

点击管理配置

点击新建/配置文件组,输入名称(我这里输入的是常用

点击克隆

输入名称,选择分组,主机那输入服务器的IPv4地址(公网IP),输入密码,点击保存。


此时我们再来到配置页,发现分组多了一个常用组,且新标签页的默认配置改为了SSH,然后我们点击最上方的小电脑图标从而打开一个新标签页,并选择SSH,点进去选择"保存并记住本机密钥",发现连接成功。

1.4.mysql配置

通过tabby连接上服务器后,输入以下命令

shell 复制代码
# 安装服务器
yum install mariadb-server -y
# 安装客户端
yum install mariadb -y
# 启动,停止服务的命令是systemctl stop mariadb
systemctl start mariadb
# 设置开机自启动
systemctl enable mariadb
# 账号初始化
mysql -u root -p
# 紧接着回车
use mysql;
# 查看用户数据表
show tables;
# 查看mysql默认提供的账号
select Host,User from user;

可以看到其中第一条localhost和第一条vm-20-14-centos(这里每人主机名不同,名称会不同)以及::1,这三条账户的安全性较低,于是我们删除这三条账户

sql 复制代码
delete from user where Host='localhost.localdomain';
delete from user where Host='localhost' and User='';
delete from user where Host='::1' and User='root';
delete from user where Host='vm-20-14-centos';

最后查看默认账户,如下:

紧接着我们要为是root的账户都设置密码

sql 复制代码
# 更新密码
UPDATE user SET password=password('你的密码') WHERE user='root';
# 刷新配置
flush privileges;

因为root的权限太大了,这是整个远程服务器的管理员,所以我们需要为我们本次部署的项目再创建一个用户

sql 复制代码
insert into mysql.user(user,host,password) values('你的项目名','%',password('你这个项目账号的密码'));

接着,我们为我们部署的项目创建一个数据库并授权

sql 复制代码
# 创建数据库
CREATE DATABASE 你的项目名 DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_bin;
FLUSH PRIVILEGES;
# 授权
grant all privileges on 你的项目名.* to 你的项目名@'%';

本地测试一下这个mysql是否可以连接

bash 复制代码
mysql -h 你的服务器公网IP -u 你的项目名 -p
# 紧接着输入密码

1.5.python环境配置(virtualenv和python3.9)

shell 复制代码
# 查看服务器上python3的版本
python3 --version

如果显示的是python 3.9.x,则命令如下:

shell 复制代码
# 安装虚拟环境
pip3.9 install virtualenv
# 创建虚拟环境目录并创建虚拟环境
mkdir /envs
virtualenv /envs/你的项目名 --python=python3.9

如果显示的是python 3.6.x,则命令如下:

shell 复制代码
pip3.6 install virtualenv
# 创建虚拟环境目录并创建虚拟环境
mkdir /envs
virtualenv /envs/你的项目名 --python=python3.6

如果显示的是其他python版本,则以此类推,接着进行虚拟环境的激活。

shell 复制代码
# 激活虚拟环境
source /envs/你的项目名/bin/activate
# 退出虚拟环境是deactivate

1.6.git安装

shell 复制代码
yum install git -y

2.代码部署

现在,整个项目的架构如下:

2.1.git仓库创建

视频中用的是gitee,本人用的是github,都可以哈。

shell 复制代码
# 激活虚拟环境
source /envs/你的项目名/bin/activate
cd /data/
# 我用的仓库地址是SSH地址,不是HTTPS地址
git clone 你的仓库地址
cd 仓库目录
# 切换到frontend分支,如果你的仓库只有一个主分支,可以忽略
git checkout frontend
# 之后每次代码有所改动时,git pull origin 分支名进行拉取

2.1.1.Github的SSH认证

注意,现在git升级了,特别是你同意了F2A协议的话,有可能执行完git clone后要求你登录并认证。我在这提供SSH的认证。

bash 复制代码
# 在服务器上生成SSH密钥对,即使此时在虚拟环境中也可以
ssh-keygen -t ed25519 -C "[email protected]"
# 按提示操作(可以直接按Enter接受默认文件位置和空密码)
# 查看并复制公钥
cat ~/.ssh/id_ed25519.pub

然后将公钥添加到Git托管平台

  • 登录GitHub,点击右上角头像 → Settings → SSH and GPG keys
  • 点击"New SSH key",粘贴复制公钥内容,添加描述并保存。
  • 在服务器上输入ssh -T [email protected]进行测试

2.2.项目依赖安装

shell 复制代码
pip install -r requirements.txt

注意,如果报错,可能是某些依赖版本较高,可以借鉴如下:

如果你的服务器python版本是3.9,参考如下:

txt 复制代码
Django==4.0.9
djangorestframework==3.13.1
django-cors-headers==3.13.0
mysqlclient==2.1.1
urllib3==1.24.3

如果你的python版本是3.6,参考如下:

txt 复制代码
Django==3.2.25
djangorestframework==3.12.4
django-cors-headers==3.10.1
mysqlclient==2.1.1 

2.2.1.mysqlclient安装报错

如果报错如下:

shell 复制代码
# 安装python开发包
sudo yum install python3-devel -y
# 查看 Python.h 路径(根据你的 Python 版本调整路径)
ls /usr/include/python3.6m/Python.h
# 有输出则没问题,随后重新安装项目依赖即可

2.3.local_settings.py和数据库迁移

shell 复制代码
yum install vim -y
touch local_settings.py
vim local_settings.py

i,输入内容如下:

python 复制代码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '1.4.中你服务器上mysql的项目对应的数据库',
        'USER': '1.4.中你服务器上mysql的项目对应的数据库的账号',
        'PASSWORD': '1.4.中你服务器上mysql的项目对应的数据库的密码',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'charset': 'utf8mb4',
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        }
    }
}

点击esc,然后输入:wq,按回车保存退出。

shell 复制代码
# 回到项目根目录
cd ..
python manage.py makemigrations
python manage.py migrate

2.4.测试运行

shell 复制代码
python manage.py runserver 0.0.0.0:80

然后在浏览器输入服务器公网IP,显示如下:

其实项目已经部署好了,我们也进到了这个项目里,只是报了400。

页面信息和我不一样的很正常,因为我们部署的python项目是不一样的。

3.静态资源配置

现在我们的项目结构如下,主要要进行红色步骤的配置,如果是静态资源,我们直接返回静态资源,所以需要进行静态资源的收集。如果是动态资源,我们nginx转发给uwsgi让其进行处理。

相关推荐
香蕉可乐荷包蛋13 分钟前
vue数据可视化开发echarts等组件、插件的使用及建议-浅看一下就行
vue.js·信息可视化·echarts
老朋友此林17 分钟前
MiniMind:3块钱成本 + 2小时!训练自己的0.02B的大模型。minimind源码解读、MOE架构
人工智能·python·nlp
老马啸西风18 分钟前
sensitive-word-admin v2.0.0 全新 ui 版本发布!vue+前后端分离
vue.js·ui·ai·nlp·github·word
湛海不过深蓝42 分钟前
【ts】defineProps数组的类型声明
前端·javascript·vue.js
layman05281 小时前
vue 中的数据代理
前端·javascript·vue.js
柒七爱吃麻辣烫1 小时前
前端项目打包部署流程j
前端
宸汐Fish_Heart1 小时前
Python打卡训练营Day22
开发语言·python
layman05281 小时前
vue中理解MVVM
前端·javascript·vue.js
伊织code2 小时前
PyTorch API 9 - masked, nested, 稀疏, 存储
pytorch·python·ai·api·-·9·masked
wxl7812272 小时前
基于flask+pandas+csv的报表实现
python·flask·pandas