华为云云耀云服务器L实例评测|搭建您的私人影院网站

news2024/11/23 13:10:54

前言

本文为华为云云耀云服务器L实例测评文章,测评内容是云耀云服务器L实例搭建在线视频网站,大家可以将这个网站作为私人影院或是分享给朋友,但是尽量不要更广的传播,因为这涉及到版权问题

系统配置:华为云 2核2G 3M CentOS7.9

华为云服务器控制台:https://console.huaweicloud.com/smb/

安装配置

环境配置

Miniconda
cd
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

然后一直回车,直到遇到 是否同意协议? 选择 yes,回车

选择Miniconda3的安装位置,这里选择回车,选择默认的,开始安装

是否初始化,并且会添加环境变量,选择yes,回车

最后刷新环境变量

source ~/.bashrc 
Docker
安装
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动
sudo systemctl start docker
sudo docker run hello-world

此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条确认消息并退出。

MySQL

部署容器(必须挂载数据卷)

docker run -d -p 3306:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=111111 -v ~/sql:/sql mysql:5.7

进入容器

# 进入容器
docker exec -it mysql-container bash
# 进入 MySQL 命令行
mysql -uroot -p111111

创建 video 数据库

CREATE DATABASE video CHARACTER SET utf8;

注意:删除容器命令 docker rm mysql-container -f

端口开放

我们需要配云置服务器的安全组,放行 8000 端口。

设置 CentOS 防火墙,可以直接关闭防火墙,也可以单独通过端口(比较推荐)

# 关闭
systemctl stop firewalld
# 开启特定端口
firewall-cmd --zone=public --add-port=8000/tcp --permanent
# 关闭特定端口
firewall-cmd --zone=public --remove-port=8000/tcp --permanent
# 查看防火墙端口
firewall-cmd --list-ports

但是需要注意,如果您做了如上配置仍旧无法访问端口,可能是因为华为云针对入规则安全组默认配置有问题(实测 CentOS7.9 有问题),您需要做如下配置(这仅仅是针对于某些系统才需要做的操作,大部分系统不需要)

修改 IPv4 为如下配置

image-20230911191235651

如果您只是想要快速搭建部署项目,不想要了解具体实现细节,可以直接跳转 部署项目(平台可能不支持 MD 目录跳转,请自行跳转到对应目录)

注意:原作者的操作系统是 Windows,如果您想要在 Windows 上部署项目可以直接参考原作者仓库,如果您想要使用 Linux 部署,可以继续向下阅读

功能介绍

注册登录

img

img

首页功能

img

搜索功能

img

视频功能

img

现在项目的基本功能介绍已经结束,如果您想要查看更详细的功能介绍可以直接查阅原作者开发文档:videoproject/doc/开发文档

部署项目

本章节将会实现快速搭建部署项目(Linux),博主 fork 原作者的仓库之后做了一些修改,以适配个人搭建部署需求,同时原作者很多文件不全,除此之外也修复了一些问题

原作者仓库地址:geeeeeeeek/videoproject

博主仓库地址:ReturnTmp/videoproject

拉取项目

可以自行配置 SSH,或是直接下载压缩包再上传

git clone https://github.com/ReturnTmp/videoproject.git

依赖安装

创建环境

# 创建环境
conda create -n videoweb python=3.7
# 激活环境
conda activate videoweb

安装依赖

cd videoproject/
pip install -r requirements.txt

数据库导入

运行容器

docker run -d -p 3306:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=111111 -v ~/sql:/sql mysql:5.7

创建数据库

# 进入容器
docker exec -it mysql-container bash
mysql -uroot -p111111
CREATE DATABASE video CHARACTER SET utf8;

然后项目根目录下执行如下命令

python manage.py makemigrations users video myadmin comment
python manage.py migrate

再复制项目根目录的 video.sql~/sql 文件夹下(本步骤仅作记录,实际部署请跳过)

cp video.sql  ~/sql/
docker exec -it mysql-container bash
mysql -uroot -p video < /sql/video.sql 

但是执行时可能出现问题 Cannot delete or update a parent row: a foreign key constraint fails,快速方法如下

先禁用外键约束检查,执行 sql 文件之后再开启外键约束检查

# 禁用
SET FOREIGN_KEY_CHECKS=0;
# 开启
SET FOREIGN_KEY_CHECKS=1;

但是其实这并不规范,应该按照约束规范执行

运行项目

python manage.py runserver 0.0.0.0:8000

注意:一定要是配置 0.0.0.0 ,因为默认启动是使用回环地址 127.0.0.1,只能本机访问,导致外部无法访问

配置端口

但是只配置上述后会出现问题 Invalid HTTP_HOST header: '114.116.230.29:8000'. You may need to add '114.116.230.29' to ALLOWED_HOSTS.

我们需要做如下操作,打开 videoproject/settings.py 文件,然后添加如下内容

注意:我已经默认配置通过所有 IP,有需求的可以自行更改

# 需要配置本机IP
ALLOWED_HOSTS = ['45.112.123.59',]
# 或是直接通过所有IP
ALLOWED_HOSTS = ['*',]

访问应用

最后访问视频首页:localhost:8000 (localhost 换成自己的服务器 IP,后文不再赘述)

然后我们点击右上角的登录,然后再点击注册用户,最后注册用户,即可使用(用户名:admin,密码:admin123456)

首页界面

image-20230924101702640

然后访问后台管理页面:localhost:8000/myadmin

首先需要手动把 v_user表中上面我们注册的 amin 用户 is_staff 和 is_superuser 字段修改为 1

注意:我们提升为 admin 权限之后,可以查看数据、搜索数据。但是暂无编辑和删除数据权限

然后配置 settings.py,添加如下

CSRF_TRUSTED_ORIGINS = [
    'http://localhost:8000',
    'http://<your_ip>:8000',   
    ]

CORS_ORIGIN_WHITELIST = [
    'http://localhost:8000',
    'http://<your_ip>:8000',
    ]
后台总览

image-20230924104520690

添加视频

首先我们需要添加分类(分类名称为中文会出现问题)

image-20230924105336732

然后上传视频,填写相关信息(这里也是填写中文有问题)

image-20230924104558620

发布成功

image-20230924110032232

image-20230924110049907

其他功能不在此演示,留待各位自行探索

技术解析

其实搭建 视频网站和普通网站,在技术实现方案上有很大的差别,上面这种只是给出的非常简易的实现方式,不能用于生产环境,下面将要详细讲解

注:当然我也只是从自身的角度阐发观点,可能有失偏颇,有熟悉视频网站开发的小伙伴也可以在评论区留言纠正

区别对比

视频网站与普通网站相比具有如下不同:

  • 存储数据量不同。用于视频存储、缓存的数据量,一般是 TB 级,需要用合适的技术方法做大数据存储管理,需要有合适的技术方法做好存储设备的高速读写优化。
  • 网站带宽使用不同。普通网站有 2Mbp 的出口就可以很好地运行,视频网站一般需要上百兆的出口,当并发量较大时,如超过 1000,则需要千兆的出口。
  • 专业视频技术支撑不同。视频技术包括视频转码、切片、截图、元数据提取、流化的技术,存储缓存和读写复用技术,视频播放技术,视频加速技术,多终端适配技术等。
  • 网络资源使用优化技术不同。在同样的硬件和网络条件下,如果使用普通网站的技术,通常几十个并发就很卡顿缓慢,而试用专业的流媒体播出技术,可以在数千并发时依然稳定顺畅。
  • 技术团队不同。普通网站需要网页设计和前后端开发人员,视频网站则同时需要视频技术开发人员。

搭建细节

主机配置

视频网站的主机,可以使用云主机,也可以使用物理机或虚拟主机。如果是在 互联网运营,则建议使用 云主机。如果在 局域网或专网运行,则使用 物理机

主机的配置根据实际的 并发需求 来做,可以按照如下配置:

100 并发: 2 核 CPU,4GB 内存,百兆出口
500 并发: 4 核 CPU,8GB 内存,千兆出口
1000 并发:8 核 CPU,16GB 内存,千兆出口及更大

网络配置

运行在局域网或政务网内的视频服务器,可用的带宽取决于既有的网路方案,例如新的校园网或政务网通常是千兆网络,则可以支撑 1000 以上的并发。

如果是运行在开放的互联网上,采用的是云主机,在选用云主机网络带宽时,不要选用按固定带宽付费,要选择按流量付费,这样会更经济

在并发量很大时,如超过 500,通常要使用集群或 CDN 技术方案,华为云、阿里云都有视频 CDN 加速技术,可以通过购买流量包来提高并发能力,降低使用费用。

流媒体服务配置

流媒体服务器软件是搭建视频网站平台和各类在线视频应用系统的基础支撑系统,实现将视频存储、视频转码、视频播出、协议复用、终端适配、大并发播出等的工作集中处理,这样您在搭建视频网站时就可以只关注业务细节而不用再去处理与视频相关的诸多技术细节,从而实现提高项目实施效率、降低项目实施风险的目标。

播放器配置

播放器要根据播放终端来选用,对于标准的 H5 网页,如微信页面、公众号内嵌页面、开放互联网上的网站,可使用标准的 video 标签来播放视频。视频文件放到流媒体服务器上后,经转码后输出播出地址,将视频地址赋值给 video 标签即可。

video 标签的布局、控制等细节,参考相关教程就可以,前端工程师和网页美工可以搞定。

尽管 Flash 播放器在很多主流浏览器上已经不再支持使用,但对于一些传统单位,内网的办公机器依然在使用 IE 浏览器,这时候依然需要使用 Flash 播放器,因此在有些情况下还是需要兼容之前版本 IE 的。NTV Media Server G3 提供的集成代码可以做到这一点,实现对各种浏览器的自动兼容,在新型支持 H5 的浏览器上使用 video 标签,在老旧 IE 上依然加载 Flash。

对于 APP 开发,无论是 iOS 还是 Android,都有丰富的播放流媒体视频的组件,可以方便的播放 hls,http-flv 和 rtmp 视频流。

集成对接

如果视频资源量很少,增量也不多,譬如只有几十个资源,则不需要与流媒体服务器做开发集成,只要把流媒体服务器提供过的视频播放地址交给网页制作人员使用即可。

对于业务较为丰富的应用,如视频资源较多,且经常动态增减,则需要有完整的业务平台支撑,需要实现视频资源自动化发布,这个时候需要网站业务平台与流媒体服务器做集成对接。集成过程一般使用流媒体服务器的如下接口:
视频上传接口 -->视频转码接口 -->视频查询接口 -->视频播放接口等。需要实现整个功能自动对接

技术路线

对于运营视频网站,除了需要上述视频技术,还需要其他技术,包括以下:

1)后端技术,即开发业务后台,可使用 Java、PHP 等语言;

2)数据库技术,可以选用 MySQL,MariaDB,MongoDB 等等;

3)前端技术,开发视频展现的网站,需要使用成熟的前端框架来简化开发工作,同时需要美术设计人员来设计漂亮的呈现

4)视频拍摄和编辑,对于要求较高的宣传类、教育类、科研类视频应用,则需要有专业的摄影和视频编辑

参考文章

搭建视频网站的技术实现 - 知乎 (zhihu.com)

基于NodeJS Express框架开发的VIP视频网站项目及源码分享 - 知乎 (zhihu.com)

搭建在线视频网站,怎么弄? - 知乎 (zhihu.com)

python - You may need to add u’127.0.0.1’ to ALLOWED_HOSTS - Stack Overflow

本文由博客一文多发平台 OpenWrite 发布!

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

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

相关文章

PostgreSQL 16 发布,更可靠更稳健

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

【LeetCode-简单题】513. 找树左下角的值

文章目录 题目方法一&#xff1a;DFS递归 前序遍历方法二&#xff1a;BFS层序双队列 题目 方法一&#xff1a;DFS递归 前序遍历 递归三部曲 确定递归函数参数和返回值确定递归结束条件编写常规递归体 本题只会在叶子结点才会去统计结果 也就是 root.leftnull&&root.r…

Flink DataStream API

DataStream API是Flink的核心层API。一个Flink程序&#xff0c;其实就是对DataStream的各种转换。具体来说&#xff0c;代码基本上都由以下几部分构成&#xff1a; package com.atguigu.env;import org.apache.flink.api.common.JobExecutionResult; import org.apache.flink.a…

AIGC百模大战

AIGC Artificial Intelligence Generated Content&#xff0c; 或者Generative Artificial Intelligence&#xff0c;它能够生成新的数据、图像、语音、视频、音乐等内容&#xff0c;从而扩展人工智能系统的应用范围。 生成式人工智能有可能给全球经济带来彻底的变化。根据高盛…

在树莓派上实现numpy的conv2d卷积神经网络做图像分类,加载pytorch的模型参数,推理mnist手写数字识别,并使用多进程加速

这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是卷积识别mnist手写数字识别 训练代码在电脑上,cpu就能训练,很快的: import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, tra…

spring-cloud-stream版本升级,告别旧注解@EnableBinding,拥抱函数式编程

spring-cloud-stream中&#xff0c;EnableBinding从3.1开始就被弃用&#xff0c;取而代之的是函数式编程模型 同期被废弃的注解还有下面这些注解 Input Output EnableBinding StreamListener 官方例子&#xff1a;GitHub - spring-cloud/spring-cloud-stream-samples: Sample…

电视访问群晖共享文件失败的设置方式,降低协议版本

控制面板-文件服务-SMB-高级设置&#xff0c;常规及其他里面配置即可。

微信公众号小说系统源码 漫画系统源码 可对接微信公众号 APP打包 对接个人微信收款

源码描述&#xff1a;修复版掌上阅读小说源码_公众号漫画源码可以打包漫画app ■产品介绍 掌上阅读小说源码支持公众号、代理分站支付功能完善强大的小说源码&#xff0c;公众号乙帅读者&#xff0c; 可以对接微信公众号、APP打包。支持对接个人微信收款。 ■产品优势 1新增…

免费好用的Mac电脑磁盘清理工具CleanMyMac

许多刚从Windows系统转向Mac系统怀抱的用户&#xff0c;一开始难免不习惯&#xff0c;因为Mac系统没有像Windows一样的C盘、D盘&#xff0c;分盘分区明显。因此这也带来了一些问题&#xff0c;关于Mac的磁盘的清理问题&#xff0c;怎么进行清理&#xff1f;怎么确保清理的干净&…

3+氧化应激+分型+预后模型

今天给同学们分享一篇3氧化应激分型预后模型的生信文章“An oxidative stress-related signature for predicting the prognosis of liver cancer”&#xff0c;这篇文章于2023年月4日发表在Front Genet 期刊上&#xff0c;影响因子为3.7。 越来越多的证据表明&#xff0c;肿瘤…

【MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制】

文章目录 MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制ACID及如何实现事务隔离级别&#xff1a;MVCC 多版本并发控制MySQL数据库主从复制主从同步延迟怎么处理Redis 读写分离1.什么是主从复制2.读写分离的优点 Redis为什么快呢&#xff1f; MySQL数…

【完美世界】天仙书院偷食也就算了,竟然还偷院长的孙女,美滋滋

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析完美世界系列。 齐道临从天仙书院劫走石昊&#xff0c;为何天仙书院不仅没去找他麻烦&#xff0c;反而给他一块随意进入渡劫神莲池的令牌&#xff1f;石昊来到上界也是闹出不小的动静&#xff0c;先是在恶魔岛的神碑留名&…

C语言数组和指针笔试题(四)(一定要看)

目录 二维数组例题一例题二例题三例题四例题五例题六例题七例题八例题九例题十例题十一 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412;个人主页 &#x1f978;&#x1f978;&#x1f978;C语言 &#x1f43f;️…

算法通关村第16关【青铜】| 滑动窗口思想

1. 滑动窗口的基本思想 一句话概括就是两个快慢指针维护的一个会移动的区间 固定大小窗口&#xff1a;求哪个窗口元素最大、最小、平均值、和最大、和最小 可变大小窗口&#xff1a;求一个序列里最大、最小窗口是什么 2. 两个入门题 &#xff08;1&#xff09;子数组最大平…

#倍增 #国旗计划

文章目录 题目&#xff1a;题解代码 题目&#xff1a; 国旗计划 题解 三个技巧&#xff1a; 断环成链&#xff1a; 具体而言就是&#xff1a; if(w[i].R < w[i].L) w[i].R m; m是环的长度&#xff1b; 贪心&#xff1a; 选择一个区间i后&#xff0c;下一个区间只能从左端…

(c++)类和对象中篇

目录 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 1. 类的 6 个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并…

线性绘制在NSDT 3D场布中的应用

什么是线性摆放&#xff1f; 线性摆放是指将一系列对象按照直线或者曲线进行排列&#xff0c;形成一条线或者弧线状的布局方式。在3D场布中&#xff0c;线性摆放可以应用于多个领域和场景&#xff0c;如展览设计、景观规划、商业空间布置等。 线性绘制在3D场布中的应用 展览设…

Postman全局配置变量token

Postman全局配置变量token 这里主要是介绍在 Postman 中全局配置token&#xff0c;以及方便以后查阅&#xff01;&#xff01;&#xff01; 一、简介 用户在开发或调试网络程序和网页B/S模式的程序时需要一些方法来跟踪网页请求&#xff0c;可使用一些网络的监视工具如Firebu…

多线程详解(下)

文章目录 常见锁策略乐观锁 vs 悲观锁重量级锁 vs 轻量级锁自旋锁 vs 挂起等待锁读写锁可重入锁 vs 不可重入锁公平锁 vs 非公平锁面试相关题 CAS什么是CASCAS 是怎么实现的CAS 有哪些应用1)实现原子类2)实现自旋锁 CAS的ABA问提什么是ABA问提ABA问提引来的BUG解决方法 相关面试…

基于LLMs构建产业多智能体

前言 随着信息技术的发展以及产业数字化的发展&#xff0c;在产业端&#xff0c;信息系统的建设和应用场景的搭建日渐完善&#xff0c;如何从完备的业务系统中挖掘数据价值以及如何从业务互联走向数据驱动决策成为产业数字化的新发展阶段。目前主要由数据中台承担数据汇聚、数…