基础部署与运行
我们已经完成音乐网站平台的所有功能开发,接下来运行整个项目,测试每个页面的功能是否符合开发需求。
上线部署
在试运行项目之前,还需要设置项目的上线模式,因为自定义异常页面只能在上线模式。
首先打开配置文件setting.py,在该文件中设置以下配置属性:
DEBUG = False
ALLOWED_HOSTS = ['*'] # 当然也可以只写公网ip *代表主机所有可用ip
STATIC_ROOT = BASE_DIR / 'static'
当Django设为上线模式时,它不再提供静态资源服务,该服务应交由Nginx或Apache服务器完成,因此在项目的路由列表添加静态资源的路由信息,让Django知道如何找到静态资源文件,否则无法在浏览器上访问static文件夹的静态资源文件,路由信息如下:
from django.contrib import admin
from django.urls import path, include, re_path
from django.views.static import serve
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('index.urls')),
path('ranking.html', include('ranking.urls')),
path('play/', include('play.urls')),
path('comment/', include('comment.urls')),
path('search/', include('search.urls')),
path('user/', include('user.urls')),
# 定义静态资源的路由信息
re_path('static/(?P<path>.*)', serve, {'document_root': settings.STATIC_ROOT}, name='static'),
# 定义媒体资源的路由信息
re_path('media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}, name='media'),
]
综上所述,设置Django项目上线模式的操作步骤如下:
- 在项目的setting.py中设置配置属性STATIC_ROOT,该配置指向整个项目的静态资源文件夹,然后修改配置属性DEBUG和ALLOWED_HOSTS。
- 使用collectstatic指令收集整个项目的静态资源,这些静态资源将存放哎配置属性STATIC_ROOT设置的文件路径中。
- 在项目的urls.py中添加静态资源的路由信息,让Django知道如何找到静态资源文件。
购买服务器
服务器优先选择租用。租一个服务器(一台线上电脑)有公网IP + 配置环境即可,购买需要注意以下点:
1,优先选择啊里云/腾讯云等大厂的服务器
阿里云:www.aliyun.com/
2,购买需要注意安装系统的版本,部署都会用LINUX。如centos7.5,原因如下:
1,WINDOWS是收费的 图形化界面,运行加载资源慢
2,LINUX免费,非图形界面,加载快
3, 可以查看服务器的优惠活动进行购买
1,如你是第一次购买往往会有很大优惠
4, 购买完成服务器后
1,确认自己的公网IP
2,修改密码后远程上服务器 和 修改系统镜像为centos7.5
服务器远程
远程连接服务器可以使用提供的连接页面进行远程 也可以下载Xshell,finalshell等远程工具进行远程,mac可使用(item2)
Xshell下载官网:www.xshell.com/zh/free-for… 以下演示finalshell连接:
通常都使用ssh进行连接
服务器系统设置
购买的服务器需要设置 端口和安全组,找到服务器页面的安全组选项,配置如下示例
22 SSH
3306 mysql
8379 redis
80 浏览器端口
443 https 浏览器端口
如果想支持这个功能,需要开发对应端口,除了这些还要去设置django需要使用的端口进行开放
以上服务器准备就完事了
服务器基础操作
3,熟悉常用基础的linux命令
注:因为没有可视化界面,所有操作都使用命令运行。
如系统目录结构 删除 创建 移动 重命名 进入 解压 复制 编辑
保存退出 配置环境变量 等基础命令操作
需要查看老师提供的基础命令文档进行学习
配置服务器项目环境
1,python 安装,需要根据项目所需版本进行安装,也可以参考老师安装文档 2,虚拟环境 配置虚拟环境可以分割项目环境 3,uwsgi 接受用户请求连接 (处理python代码非常厉害 静态文件就不行了) 4,nginx 做反向代理 是优先接收请求 ,如果是代码请求,如视图代码。转发给uwsgi处理python代码,如果是文件就自动处理
5,mysql安装 安装也可以参考老师安装文档
以下为完全流程:
安装python
项目安装版本3.8.0
sudo yum update
线上安装大约需要半小时,注意是网络请求的问题 建议下载后使用本地的文件进行安装,安装具体流程参考老师提供的文档
安装mysql
1 安装mysql选择3.7或者以上的版本
2 安装分为在线版本和离线版本
在线版本就是使用命令源在网络上下载对应版本的安装包,需要注意网络会影响下载速度
离线安装指得是在自己电脑上下载好,上传到服务器直接解压安装,不会收到网络的影响
安装具体流程参考老师提供的文档
Python模块迁移
获取第三方库信息,作用是将当前的模块和版本全部放入到requirements.txt的文件
以下命令在自己命令窗口运行
pip freeze > requirements.txt
服务器安装python的依赖文件
pip3 install --upgrade pip # 更新pip
pip3 install --upgrade setuptools # pip install --upgrade setuptools
pip3 install -r requirements.txt # 将文件上传到服务器后在对应版本使用命令安装所有版本
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: pip.pypa.io/warnings/ve…
这个警告是在使用root用户身份运行pip时出现的,它提醒您在root用户下使用pip可能会导致权限问题和与系统包管理器冲突的行为。它建议您使用虚拟环境来代替。虚拟环境在后面会进行构建。
数据库数据迁移
备份数据库提取sql文件,将文件上传到服务器
CREATE DATABASE 数据库名; # 创建数据库:
CREATE DATABASE music_db; # 创建数据库:
将数据库名替换为您要创建的数据库名称。
确认数据库已创建:
SHOW DATABASES;
迁移数据,是在外部运行的,不需要进入到数据库。
/var/www/music/20230718203142.sql 是备份文件路径
Navicat 可以备份后选择备份文件点击提取sql获取文件
mysql -uroot -p music_db < /var/www/music/20230718203142.sql
Enter password: 数据库密码
测试运行
将代码打包上传到服务器后 venv文件可以不打包
yum install unzip # 安装解压工具
unzip xxx.zip # 选择一个好地方解压文件
启动项目
python3 manage.py runserver 0.0.0.0:8000
// 后台挂起运行
nohup python3 manage.py runserver 0.0.0.0:8000
到此,基础的部署配置就完成了。