自己做博客站太难了,SEO太差自己都搜不到,原文地址求你点进去看:https://typecho.hanzhe.site/archives/88

说在前面

很早之前还没参加工作的时候,手头没钱,想要看一些电影什么的充不了会员,一般都会在网上搜VIP影视这类的盗版网站,参加工作后对这些网站仍然很好奇,没有收入来源这些站是怎么搭起来的?电影,电视剧,动漫,那么多的剧得消耗多大的服务器存储带宽和流量?

抱着这些疑问,我腾出一段时间研究了一下影视站,终于找到了门道,也成功搭建了自己的影视站(懒得维护已关闭),这里分享一下我搭建的过程希望可以帮到别人,最后着重说明:本文仅作技术交流,解答我之前内心的疑惑,请不要私自建站放到公网,从而造成法律纠纷,针对看本文搭建成功而造成法律纠纷的与作者无关,请尊重版权观看正版

解释一下:网络上对于部署Maccms影视站有很多基于宝塔面板的教程,操作方便简单快捷,本文部署的方式比较繁琐复杂,因为作者是Java程序员,对宝塔不感兴趣甚至可以说讨厌宝塔,所以本文是使用Docker部署,相信Java开发对Docker都很亲切,如果你想继续看下去的话,对Docker不熟悉问题也不大,我会尽量不漏下任何一个命令,可以照着复制就可以搭建

本次部署基于Ubuntu20.04-live-server虚拟机,文章中使用到的文件资源会在结尾提供下载地址,如果没有下载地址或下载地址失效请联系我补链接

搭建基础环境

搭建MySQL数据库

第一步先来搭建MySQL数据库,影视信息以及用户信息等等都会存到MySQL库中

  1. # 下载MySQL镜像
  2. $ docker pull mysql:5.7.41
  3. # 初始化目录,后续MySQL的文件都会放在这里
  4. $ mkdir -p /opt/docker/mysql
  5. $ cd /opt/docker/mysql
  6. # 运行空的MySQL容器,注意MySQL密码需要自己设置一下MYSQL_ROOT_PASSWORD
  7. $ docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.41
  8. # 将容器内的文件拷贝出来,防止运行容器后文件被覆盖的问题
  9. $ docker cp mysql:/etc/mysql /opt/docker/mysql/
  10. $ mv mysql conf
  11. $ docker cp mysql:/var/lib/mysql /opt/docker/mysql/
  12. $ mv mysql data
  13. # 删除后重新启动一个容器
  14. $ docker rm -f mysql
  15. $ docker run --name mysql \
  16. -e TZ=Asia/Shanghai \
  17. -p 3306:3306 \
  18. --restart always \
  19. -v /opt/docker/mysql/data:/var/lib/mysql \
  20. -v /opt/docker/mysql/logs:/var/log/mysql \
  21. -v /opt/docker/mysql/conf:/etc/mysql \
  22. -e MYSQL_ROOT_PASSWORD=123456 \
  23. -d mysql:5.7.41

MySQL这样就算完成了,可以用数据库连接工具试一下效果:

搭建WEB服务器

网站的所有请求都是经过WEB服务器处理的,这里使用Nginx作为WEB服务器,注释我在MySQL那里已经说的很详细了,这里我就不在介绍了,直接照着命令复制也是可以运行的

  1. # 下载Nginx镜像
  2. $ docker pull nginx:1.22.0
  3. # 初始化目录
  4. $ mkdir -p /opt/docker/nginx/ssl
  5. $ cd /opt/docker/nginx
  6. # 裸启动
  7. $ docker run -d --name nginx nginx:1.22.0
  8. # 拷贝文件
  9. $ docker cp nginx:/etc/nginx /opt/docker/nginx
  10. $ mv nginx conf
  11. $ docker cp nginx:/usr/share/nginx /opt/docker/nginx
  12. $ mv nginx webs
  13. # 删除裸启的容器
  14. $ docker rm -f nginx
  15. # 正式启动容器
  16. $ docker run --name nginx \
  17. -e TZ=Asia/Shanghai \
  18. -p 80:80 \
  19. -p 443:443 \
  20. --restart always \
  21. -v /opt/docker/nginx/conf/:/etc/nginx \
  22. -v /opt/docker/nginx/webs/:/usr/share/nginx \
  23. -v /opt/docker/nginx/logs/:/var/log/nginx \
  24. -v /opt/docker/nginx/ssl/:/ssl \
  25. -d nginx:1.22.0

到这里Nginx的WEB容器也搭建完成了,可以浏览器访问服务器IP地址看看效果

搭建PHP服务

Nginx是用来处理WEB请求的,不过他无法处理PHP的动态请求,所以需要搭建PHP服务

  1. # 下载镜像
  2. $ docker pull php:7.2-fpm
  3. # 初始化目录
  4. $ mkdir -p /opt/docker/php
  5. # 裸启容器
  6. $ docker run -d --name php php:7.2-fpm
  7. # 拷贝配置文件
  8. $ docker cp php:/usr/local/etc/php /opt/docker/php/
  9. $ mv /opt/docker/php/php/ /opt/docker/php/conf
  10. # 删除裸启的容器
  11. $ docker rm -f php
  12. # 正式启动容器
  13. $ docker run -d --name php \
  14. -e TZ=Asia/Shanghai \
  15. --restart always \
  16. -p 9000:9000 \
  17. -v /opt/docker/nginx/webs:/var/www/html \
  18. -v /opt/docker/php/conf:/usr/local/etc/php \
  19. php:7.2-fpm

PHP服务相对其他服务要稍微麻烦一些,需要进入到容器中启动一些扩展,否则网站会报错无法运行,上面已经把最基本的PHP容器运行起来了,接下来就进入容器启动扩展

  1. # 进入容器
  2. $ docker exec -it php /bin/bash
  3. # 首次进入容器,先更新一下源,防止接下来下载时找不到依赖
  4. $ apt update
  5. # PHP镜像的制作者已经将扩展都继承到镜像中了,这里执行命令解压扩展包
  6. $ docker-php-source extract
  7. # 首先安装zip扩展,先将ZIP需要的依赖库安装一下
  8. $ apt install -y --no-install-recommends zlib1g-dev && apt-get install -y --no-install-recommends libzip-dev
  9. # 安装zip扩展,这个扩展不安装无法安装程序
  10. $ docker-php-ext-install zip
  11. # 接下来安装GD扩展,先将GD需要的依赖库安装一下
  12. $ apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev
  13. # 移动到GD源码目录
  14. $ cd /usr/src/php/ext/gd
  15. # 编译GD源码
  16. $ docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2
  17. # 安装GD扩展,这个扩展不安装图形验证码无法加载
  18. $ docker-php-ext-install gd
  19. # 最后安装pdo_mysql扩展,这个扩展直接安装即可,不安装该扩展将无法访问数据库
  20. $ docker-php-ext-install pdo_mysql
  21. # 到此为止需要的扩展都已经安装完毕,进行一下善后工作即可
  22. # 收起解压好的扩展文件
  23. $ docker-php-source delete
  24. # 退出容器,并重启PHP容器
  25. $ exit
  26. $ docker restart php

好了,我们需要用到的三个Docker容器都已经运行完成了,可以通过docker ps查看运行状态

部署Maccms主站

上传程序文件

接下来把Maccms程序文件上传到服务器的/opt/docker/nginx/webs目录

文件上传完成后解压文件,并做一些处理

  1. # 作者提供的压缩文件为.zip格式,如果你的服务器没有安装对应的依赖需要安装一下
  2. $ apt install -y unzip
  3. # 移动到目标目录(/opt/docker/nginx/webs),并解压文件到该目录
  4. $ cd /opt/docker/nginx/webs
  5. $ unzip maccms10.zip
  6. # 解压后会有111开头的文件夹,不用理会直接删除就行
  7. $ rm -rf 111*
  8. # PHP需要放开文件权限,这里权限直接给到777
  9. $ chmod -R 777 maccms
  10. # 最终看到的目录结构应该是这个效果(maccms10.zip也可以删掉,没用了)
  11. $ ll
  12. total 4712
  13. drwxr-xr-x 4 root root 4096 Jul 9 10:19 ./
  14. drwxr-xr-x 6 root root 4096 Jul 9 09:56 ../
  15. drwxr-xr-x 2 root root 4096 Oct 5 2022 html/
  16. drwxrwxrwx 11 root root 4096 Apr 26 19:55 maccms/
  17. -rw-r--r-- 1 root root 4807054 Jul 9 10:13 maccms10.zip

配置Nginx

程序文件准备好了,而且放在了/opt/docker/nginx/webs目录,nginx和php都可以访问到,接下来修改一下Nginx的配置文件

  1. # 移动到Nginx配置文件目录下
  2. $ cd /opt/docker/nginx/conf/conf.d
  3. # 我个人习惯每个项目都单独写个配置文件,这里创建maccms.conf,将配置写道该文件中,如下图所示
  4. $ vim maccms.conf
  5. # 由于我们没有配置域名访问(那样比较麻烦),为了不影响我们效果把Nginx自带的配置文件先关闭
  6. $ mv default.conf default.conf.bak
  7. # 最终的目录结构是这样的
  8. $ ll
  9. total 16
  10. drwxr-xr-x 2 root root 4096 Jul 9 10:36 ./
  11. drwxr-xr-x 3 root root 4096 Oct 5 2022 ../
  12. -rw-r--r-- 1 root root 1093 Jul 9 09:56 default.conf.bak
  13. -rw-r--r-- 1 root root 746 Jul 9 10:36 maccms.conf

因配置文件内容过多,我会把该文件一同放在资源里,只需要把文件上传后修改一下即可

按照向导安装Maccms

上述步骤执行成功后,浏览器访问服务器IP就可以直接看到Maccms页面了,如果访问后仍然是nginx欢迎页可能是浏览器缓存的问题,Ctrl+F5深度刷新一下就好了,打开后的页面如图所示

点击开始安装进入向导,第一步会检查环境是否符合要求,环境刚刚已经配置好了这里直接点击下一步即可

接下来配置数据库连接信息即可,可以使用绿色的按钮测试连接是否成功,配置完成后就点击安装

不出意外的话这一步就直接安装成功了,显示了短暂几秒的安装成功提示后会跳转到管理页面,由于安全原因管理页面会拒绝访问,如下图所示

这是因为admin.php路径太好猜了,容易被黑客攻击,这里我们回到Maccms程序文件目录,将admin.php随便改成其他的名字即可

  1. # 移动到Maccms程序目录
  2. $ cd /opt/docker/nginx/webs/maccms
  3. # 给admin.php重命名为yyds.php
  4. $ mv admin.php yyds.php
  5. # 编辑Nginx配置文件,将配置文件中的admin.php修改为刚刚设置的yyds.php
  6. # 一共有两处需要修改,两处都在同一行,我文字说明一下这里就不截图了
  7. $ vim /opt/docker/nginx/conf/conf.d/maccms.conf
  8. # 重启Nginx容器使配置生效
  9. $ docker restart nginx

这里我将文件名修改为yyds.php,然后修改URL路径成功访问到了管理地址

配置海螺模板

现在的Maccms已经不提供前端页面了,如下图所示,所以我们需要自己找模板文件上传到服务器上使用

将准备好的海螺模板上传到服务器的/opt/docker/nginx/webs/maccms/template目录中并进行解压

  1. # 移动到Maccms模板目录
  2. $ cd /opt/docker/nginx/webs/maccms/template
  3. # 执行解压,然后删除多余文件
  4. $ unzip conch.zip
  5. $ rm -rf __MACOSX
  6. $ rm conch.zip

模板准备完成后,打开maccms后台管理页面,在【系统】【网站参数配置】中修改模板为海螺模板,如图所示

然后在【首页】【自定义菜单配置】中添加海螺模板的管理地址,然后下滑点击保存(不知道为什么我的保存按钮一直被藏在页面底部,需要下滑才能看见),刷新页面后就可以看到左侧多了个菜单,点进去后就可以管理模板了

  1. 分隔符,###
  2. 海螺模板,/yyds.php/admin/conch/theme

上面是自定义菜单的内容,配置完成后效果应该如下图所示,如果点开报错也不要着急,我这也报过错可能是因为缓存问题,刷新页面或者关浏览器重新打开就好了

基础参数简单介绍

分类管理

首先需要编辑一下分类信息,在【基础】【分类管理】位置可以修改分类,创建分类的过程比较麻烦,数据库中分类表名为mac_type,这里我直接把能想到的分类创建好后导出SQL上传到资源文件中,各位拿到自己的库中执行一下就好,最终效果如图所示

会员组管理

上面已经将分类都建出来了,但是新建出来的分类用户是没有权限看的,这里演示一下如何分配权限,在【用户】【会员组】菜单中编辑VIP会员信息,在编辑页面滑动到最底下依次点击全选和保存按钮,如下图所示

这样一来只要【用户】【会员】菜单下的用户属于VIP会员会员组的话,那么他就可以观看所有内容

视频采集与播放

现在问题回到了一开始,我之前曾疑问那么多的剧得消耗多大的服务器存储带宽和流量,而真实情况是我们根本不用存影视资源,我们只需要采集他人提供的资源,将播放地址入库,这样别人访问本站看剧时走的就是他人的播放地址了

所以我们需要配置采集站,这里以红牛资源为例,打开后台点击【采集】【自定义接口】菜单,按照红牛资源文档的描述添加采集站信息,然后下滑点击保存,如下图所示

到此采集站的创建就完成了,但是现在先别采集,在红牛帮助文档MaccmsV10页面下滑,点击下载播放器组件,下载解压后得到两个txt文件,如下图所示

依次点击【视频】【播放器】【导入】【上传】,分别将刚刚下载的两个txt文件导入进去,如下图所示

导入完成后在回到之前采集页面,在红牛资源这里行中有采集选项,这里我选择只采集当天,点击采集当天按钮后就会出现采集页面

虽然提示绑定失败但是不要担心,耐心等待采集完成后会出现绑定页面,在这个页面将分类进行绑定

绑定分类后下滑点击采集全部,就可以看到采集效果了

采集完成后回到网站首页刷新页面,就可以看到页面已经有数据了

随便点个影视进去,测试播放成功,Maccms影视站搭建完成!!!!

本文内容到此结束,写了我四个多小时才写完妈的累死我了,浪费了我打游戏的时间,希望这篇文章能被收录更希望能帮助到各位,其实还有很多东西可以讲,例如maccns插件,对接APP以及定时采集等等,但是我今天只想说这么多(我也没弄过),研究了这么多对我来说已经够了,我又不打算建站赚钱(主要为了解惑和装杯),其他需求请各位自行查阅资料,也希望你实现了某些功能的时候能回来留个评论能帮到他人,分享是很快乐的一件事

注:就在该文章发布当天,我突然发现自己的服务器不知道什么时候被人植入了挖矿病毒,疯狂跑满我的CPU时间长达四天,怪不得写文章的时候有卡顿感,经过排查发现是在启动php-fpm容器的时候将9000端口暴露在公网导致的,这里给各位提个醒,自己虚拟机可以随便测试,如果想部署到外网请不要暴露端口号,使用Docker网桥可以实现容器互相访问功能

资源地址

请在原文查看:https://typecho.hanzhe.site/archives/88

使用Docker+PHP搭建苹果Maccms的影视站详细教程的更多相关文章

  1. Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程

    Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程 看了好多人的博客,有的不全 or 有问题,整理了一下,适合小白 新手先整理几个小问题 1.为啥使用 Linux 搭建服务器? ...

  2. 苹果cms安装及配置详细教程

    听说这个好!php+mysql的 下载 http://www.maccms.com/down.html 下载之后解压到你的网站跟目录中,就像这个样子的   后台目录 然后重要的一步来了,在ftp工具上 ...

  3. idea搭建简单ssm框架的最详细教程(新)

    为开发一个测试程序,特搭建一个简单的ssm框架,因为网上看到很多都是比较老旧的教程,很多包都不能用了,eclipes搭建并且其中还附带了很多的其他东西,所以特此记录一下mac中idea搭建过程. 另: ...

  4. 自学Python1.2-环境的搭建:Pycharm及python安装详细教程

    Python几乎可以在任何平台下运行,如我们所熟悉的:Windows/Unix/Linux/Macintosh 一.windows下安装Python 1. 从python官方网站:http://www ...

  5. Windows搭建Linux子系统(WSL)详细教程

    介绍 WSL(windows下的Linux子系统) Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式 ...

  6. 【架构】docker环境搭建mysql主从

    序 本文主要研究怎么在docker上搭建mysql的主从.因为在单机搭建mysql多实例然后再配主从,感觉太痛苦了,环境各有不同,配置各不大相 同,从网上找搭建方法,试了半天也没成功,最后也没耐心调试 ...

  7. docker中搭建jenkins环境

    想在docker中搭建一个jenkins环境.开始的时候我想在先pull centos,然后在里面自己搭建环境,搭建后的环境可以运行,但是不知道挂载哪的数据,这也是我不熟悉jenkins的原因. 同事 ...

  8. spring boot / cloud (十八) 使用docker快速搭建本地环境

    spring boot / cloud (十八) 使用docker快速搭建本地环境 在平时的开发中工作中,环境的搭建其实一直都是一个很麻烦的事情 特别是现在,系统越来越复杂,所需要连接的一些中间件也越 ...

  9. docker快速搭建几个常用的第三方服务

    本次和大家分享的内容是使用docker快速搭建工作中常用的第三方的服务,对于有一些互联网背景的公司来说,以下几个服务都是很需要的:redis,rabbit,elasticsearch: 本篇涉及内容深 ...

  10. Docker Machine搭建并加入节点

    对于集群服务器来讲,要在每台机器上手动安装Docker是一件及其痛苦的事情,还好有Docker Machine这一工具,Docker三剑客中的一角. 一.Docker Machine介绍 这个工具已经 ...

随机推荐

  1. 笔记:C++学习之旅---try语句和异常处理

        异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持,在C++语言中,异常处理包括:     *throw表达式(throw expression),异常检测部分使用throw表带是来 ...

  2. Redis篇一之基础数据结构

    文章目录 Redis的数据结构 String类型**** Hash类型 List类型 Set类型 SortedSet类型 BitMap类型 HyperLogLog 总结 Redis诞生于2009年全称 ...

  3. [SWPUCTF 2021 新生赛]简简单单的逻辑

    得到一个.py文件,一般是没壳的,不过还是要养成习惯,查个壳: 意料之中,啥也没有,打开文件: 给了我们一个加密逻辑,然后最后一行给了一个结果:那么就是根据上述的逻辑,反解密出flag就好了 分析一下 ...

  4. HTAP for MySQL 在腾讯云数据库的演进

    摘要:MySQL在充分利用多核计算资源方面比较欠缺,无法同时满足在线业务和分析型业务的客户需求,而单独部署一套专用的分析型数据库意味着额外的成本和复杂的数据链路.本次主题将介绍腾讯云数据库为满足此类场 ...

  5. 2022-11-09:给定怪兽的血量为hp 第i回合如果用刀砍,怪兽在这回合会直接掉血,没有后续效果 第i回合如果用毒,怪兽在这回合不会掉血, 但是之后每回合都会掉血,并且所有中毒的后续效果会叠加 给

    2022-11-09:给定怪兽的血量为hp 第i回合如果用刀砍,怪兽在这回合会直接掉血,没有后续效果 第i回合如果用毒,怪兽在这回合不会掉血, 但是之后每回合都会掉血,并且所有中毒的后续效果会叠加 给 ...

  6. Vue根据时间戳制作倒计时15分钟

    废话不多说直接上代码 <script> export default { data() { return { downTimeShow: true, timer: null, downTi ...

  7. GitHub上SSH keys和Deploy keys的区别

    平时安装一个git然后去GitHub进行SSH keys 配置最后就开始使用,然后换一台电脑再使用$ ssh-keygen -t rsa -C "your email"生成一个ss ...

  8. centos安装Vue

    一直以来,有关LINUX的系统安装包,都是比较随意,直接使用yum进行或者apt-get 安装 标准安装流程是什么的呢.我们通过centos安装Vue进行展示 1 首先下载安装nodejs , htt ...

  9. 驱动开发:内核解析PE结构节表

    在笔者上一篇文章<驱动开发:内核解析PE结构导出表>介绍了如何解析内存导出表结构,本章将继续延申实现解析PE结构的PE头,PE节表等数据,总体而言内核中解析PE结构与应用层没什么不同,在上 ...

  10. Anaconda入门使用指南(二)

    Anaconda 安装完成,在 bin 子目录下( $PREFIX/bin )可以看到该发行版本预装好的 conda.python.pip.jupyter,以及一些常用的工具. Python环境管理 ...