在Debian 10 Buster上使用YouPHPTube运行自己的视频共享网站

本教程将向您展示如何在Debian 10 Buster上使用YouPHPTube运行自己的视频共享网站。YouPHPTube是一种自托管的开源替代视频共享网站(如YouTube,Vimeo等)的网站。可以将视频上传到您自己的服务器并与Internet共享。

YouPHPTube功能

  • 无限和同步的实时流,您可以将无限的用户连接到每个实时流。
  • 直接从Internet导入和编码其他站点的视频
  • 来自本地视频目录的批量编码
  • 制作私人视频
  • 与YouTube完全集成的功能,可让您与YouTube同步视频
  • 将多种格式的多媒体文件转码为MP4,WebM和MP3文件
  • 支持Amazone S3(简单存储服务)
  • 自适应的网站布局。YouPHPTube在任何设备上看起来都很棒(您可以选择YouTube或Netfilx样式的布局。)
  • 用户频道和用户播放列表
  • 订阅您喜欢的频道
  • 您可以使用YouPHPTube Statistics中的最新指标和报告来监视视频的效果。
  • 使用插件扩展站点功能。

  • 搜索引擎优化
  • 提供iOS和Android应用

在Debian 10 Buster上安装YouPHPTube的前提条件

首先,您需要一台至少具有2个CPU核心和4GB RAM的Debian服务器作为起点。单核CPU不可行,因为编码过程会占用大量CPU资源。显然,如果您的视频站点有更多资源用户,还需要升级硬件。如果您正在寻找VPS(虚拟专用服务器),则可以单击此特殊链接在Vultr上创建一个帐户,以获取50美元的免费信用(仅适用于新用户)。如果您想走这条路线,它还会提供专用服务器。一旦在Vultr拥有了一个帐户,请在服务器上安装Debian 10 Buster,然后按照以下说明进行操作。

YouPHPTube需要PHP和MySQL / MariaDB。要遵循本教程,您应该已经设置了LAMP堆栈或LEMP堆栈。如果您喜欢使用Apache Web服务器,请安装LAMP堆栈。

  • 如何在Debian 10 Buster上安装LAMP(Apache,MariaDB,PHP)堆栈

如果您更喜欢使用Nginx Web服务器,请安装LEMP堆栈。

  • 如何在Debian 10 Buster上安装LEMP(Nginx,MariaDB,PHP)堆栈

注意事项:Nginx对YouPHPTube的支持仅是实验性的,如果您使用Nginx,则可能会遇到问题。

您还需要一个域名。我在NameCheap注册了我的域名,因为价格低廉,并且终身免费提供whois隐私保护。

YouPHPTube由两部分组成。

  • 主要部分是前端流媒体服务器,它允许用户观看现有视频。
  • 另一部分是编码器,它允许用户上传他们的视频。

公共编码器使用域名 encoder.youphptube.com如果您不希望用户在上传视频时离开您的网站,则需要设置您的私人编码器。我将在本文中向您展示如何进行编码。不费吹灰之力,让我们开始吧。

第1步:在Debian 10 Buster Server上下载YouPHPTube

通过SSH登录到您的Debian 10 Buster服务器,然后转到Web根目录。

cd /var/www/

从Github克隆YouPHPTube流媒体存储库。

sudo apt install git
sudo git clone https://github.com/YouPHPTube/YouPHPTube.git

然后进入目录。

cd YouPHPTube/

从Github克隆YouPHPTube编码器存储库。

sudo git clone https://github.com/YouPHPTube/YouPHPTube-Encoder.git

它将另存为 YouPHPTube-Encoder我们将其重命名为 upload,因此用户可以更好地了解上传视频时该URL的含义。

sudo mv YouPHPTube-Encoder upload

接下来,我们需要使www-data(Web服务器用户)成为Web根目录的所有者。

sudo chown www-data:www-data /var/www/YouPHPTube/ -R

步骤2:安装依赖项

YouPHPTube使用 FFmpeg 编码视频。我们可以轻松地从默认Debian存储库安装FFmpeg。

sudo apt install ffmpeg

要在多媒体文件中读写元信息,我们需要安装 libimage-exiftool-perl 包装。

sudo apt install libimage-exiftool-perl

要从其他站点获取视频,我们需要安装YouTube-DL。尽管它已包含在Debian存储库中,但已经过时了。我们将从Python软件包索引中安装YouTube-DL,该软件包始终包含最新版本的YouTube-DL。

sudo apt install python3-pip
sudo -H pip3 install youtube-dl

使用最新版本非常重要,否则您可能无法从其他站点下载视频。我们可以创建Cron作业来自动检查并安装最新版本。

sudo crontab -e

在Crontab文件的末尾添加以下行,以尝试每天升级YouTube-DL。

@daily sudo -H pip3 install --upgrade youtube-dl > /dev/null

步骤3:在MariaDB中创建数据库和用户

使用以下命令登录MariaDB数据库服务器:由于MariaDB现在正在使用 unix_socket 验证用户登录的插件,无需输入MariaDB根密码。我们只需在 mysql 用命令 sudo

sudo mysql

然后为YouPHPTube创建一个数据库。本教程为数据库命名 YouPHPTube您可以使用任何喜欢的名称。

create database YouPHPTube;

创建数据库用户,再次,您可以使用该用户的首选名称。 your-password 使用您的首选密码。

create user [email protected] identified by 'your-password';

授予该用户所有的权限 youphptube 数据库。

grant all privileges on YouPHPTube.* to [email protected];

我们还需要为编码器创建一个单独的数据库。

create database YouPHPTubeEncoder;

为此数据库创建一个用户。

create user [email protected] identified by 'your-password';

授予特权。

grant all privileges on YouPHPTubeEncoder.* to [email protected];

刷新特权表并退出。

flush privileges;

exit;

步骤4:设置Web服务器

我们可以使用Apache或Nginx Web服务器。

阿帕奇

如果您喜欢Apache,请使用命令行文本编辑器(例如Nano)为YouPHPTube创建虚拟主机文件。

sudo nano /etc/apache2/sites-available/youphptube.conf

将以下文本放入文件中,将红色文本替换为实际数据。本教程中我使用一个子域。如果愿意,可以使用主域名。不要忘记为该域设置DNS A记录DNS记录管理器中的名称。还要注意,文档根目录区分大小写,并且不应在末尾添加正斜杠。


    ServerName tube.yourdomain.com
    DocumentRoot /var/www/YouPHPTube

    /var/www/YouPHPTube>
       DirectoryIndex index.php
       Options +FollowSymLinks
       AllowOverride All
       Require all granted
    

    ErrorLog ${APACHE_LOG_DIR}/youphptube.error.log
    CustomLog ${APACHE_LOG_DIR}/youphptube.access.log combined

保存并关闭文件,然后启用该虚拟主机。

sudo a2ensite youphptube.conf

我们需要启用重写模块。

sudo a2enmod rewrite

重新启动Apache,以使更改生效。

sudo systemctl restart apache2

现在访问 tube.yourdomain.com 您将被重定向到设置向导页面(tube.yourdomain.com/install/index.php)。如果您看到默认的Apache页面而不是设置向导,则需要禁用默认的虚拟主机。

sudo a2dissite 000-default.conf

并重新启动Apache。

在设置向导中输入任何信息之前,我们需要启用HTTPS。

Nginx的

如果您喜欢Nginx,请创建一个 youphptube.conf 归档在 /etc/nginx/conf.d/ 目录。

sudo nano /etc/nginx/conf.d/youphptube.conf

将以下文本放入文件中,将红色文本替换为实际数据。本教程中我使用一个子域。如果愿意,可以使用主域名。不要忘记为该域设置DNS A记录DNS记录管理器中的名称。还要注意,文档根目录区分大小写。

server {
    listen      80;
    server_name tube.yourdomain.com;

    root /var/www/YouPHPTube;
    index index.php index.html index.htm;
    charset utf-8;
    client_max_body_size 2G;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    access_log  /var/log/nginx/youphptube.access.log;
    error_log   /var/log/nginx/youphptube.error.log;

    location ~ .php$ {
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location = /upload/index.php {
       rewrite ^(.*)$ /upload/view/index.php last;
    }

    location = /upload/isAdmin {
      rewrite ^(.*)$ /upload/view/isAdmin.php last;
   }

   location = /upload/removeStreamer {
     rewrite ^(.*)$ /upload/view/removeStreamer.php last;
   }

  location = /upload/priority {
     rewrite ^(.*)$ /upload/view/priority.php last;
  }

  location = /upload/status {
     rewrite ^(.*)$ /upload/view/status.php last;
  }

  location = /upload/serverStatus {
    rewrite ^(.*)$ /upload/view/status.php?serverStatus=1 last;
  }

  location = /upload/upload {
    rewrite ^(.*)$ /upload/view/upload.php last;
  }

  location = /upload/listFiles.json {
   rewrite ^(.*)$ /upload/view/listFiles.json.php last;
  }

  location = /upload/deleteQueue {
    rewrite ^(.*)$ /upload/view/deleteQueue.php last;
  }

  location = /upload/saveConfig {
    rewrite ^(.*)$ /upload/view/saveConfig.php last;
  }

  location = /upload/youtubeDl.json {
    rewrite ^(.*)$ /upload/view/youtubeDl.json.php last;
  }

  location = /upload/send.json {
    rewrite ^(.*)$ /upload/view/send.json.php last;
  }

  location = /upload/streamers.json {
    rewrite ^(.*)$ /upload/view/streamers.json.php last;
  }

  location = /upload/queue.json {
    rewrite ^(.*)$ /upload/view/queue.json.php last;
  }

  location = /upload/queue {
    rewrite ^(.*)$ /upload/view/queue.php last;
  }

  location = /upload/login {
    rewrite ^(.*)$ /upload/objects/login.json.php last;
  }

  location = /upload/logoff {
    rewrite ^(.*)$ /upload/objects/logoff.json.php last;
  }

  location /upload/ {
    rewrite "^/getImage/((A-Za-z0-9=/)+)/((A-Za-z0-9){3})$" /upload/objects/getImage.php?base64Url=$1&format=$2 last;
    rewrite "^/getImageMP4/((A-Za-z0-9=/)+)/((A-Za-z0-9){3})/((0-9.)+)$" /upload/objects/getImageMP4.php?base64Url=$1&format=$2&time=$3 last;
  }

  location /upload/getSpiritsFromVideo {
    rewrite ^/getSpiritsFromVideo/((A-Za-z0-9=/)+)/((0-9)+)/((0-9)+)$ /upload/objects/getSpiritsFromVideo.php?base64Url=$1&tileWidth=$2&totalClips=$3 last;
  }

  location /upload/getLinkInfo {
    rewrite ^/getLinkInfo/((A-Za-z0-9=/)+)$ /upload/objects/getLinkInfo.json.php?base64Url=$1 last;
  }

}

保存并关闭文件,然后测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效。

sudo systemctl reload nginx

现在访问 tube.yourdomain.com 您将被重定向到设置向导页面(tube.yourdomain.com/install/index.php)。在设置向导中输入任何信息之前,我们需要启用HTTPS。

步骤5:启用HTTPS

要加密HTTP流量,我们可以通过安装由Let’s Encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令以在Debian 10 Buster服务器上安装Let’s Encrypt客户端(certbot)。

sudo apt install certbot

如果使用Apache,则还需要安装Certbot Apache插件。

sudo apt install python3-certbot-apache

并运行此命令获取并安装TLS证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email (email protected) -d tube.yourdomain.com

如果您使用Nginx,请安装Certbot Nginx插件。

sudo apt install python3-certbot-nginx

接下来,运行以下命令以获取并安装TLS证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email (email protected) -d tube.yourdomain.com

哪里

  • --nginx:使用nginx插件。
  • --apache:使用Apache插件。
  • --agree-tos:同意服务条款。
  • --redirect:通过301重定向强制HTTPS。
  • --hsts:在每个HTTP响应中添加Strict-Transport-Security标头。强制浏览器始终对域使用TLS。防止SSL / TLS剥离。
  • --staple-ocsp:启用OCSP装订。有效的OCSP响应将装订到服务器在TLS期间提供的证书中。

现在应该获得证书并自动安装。

在Debian 10 Buster上安装youphptube

步骤6:使用安装向导完成安装

现在去 tube.yourdomain.com 然后将显示安装向导。在左侧,您可以查看服务器是否满足要求。

youphptube要求

如果使用Nginx,则可以忽略以下消息。

Your server is nginx/1.14.2, you must install Apache.

如您所见,PHP post_max_size 至少应为100M, upload_max_filesize 应该至少为100M。我们需要编辑 php.ini 文件来更改两个值。如果您使用的是Apache Web服务器,则

sudo nano /etc/php/7.3/apache2/php.ini

如果您将Nginx与PHP-FPM一起使用,则需要编辑FPM版本的php.ini文件。

sudo nano /etc/php/7.3/fpm/php.ini

找到以下两行。

post_max_size = 8M
upload_max_filesize = 2M

根据要上传的视频文件大小更改示例值。例如,如果允许上传1G视频文件,则

post_max_size = 1024M
upload_max_filesize = 1024M

保存并关闭文件。重新启动Apache以使更改生效。

sudo systemctl restart apache2

如果您将Nginx与PHP-FPM一起使用,请重新启动PHP-FPM。

sudo systemctl restart php7.3-fpm

现在刷新YouPHPTube安装向导页面,您的服务器应该满足所有要求。现在,在右侧,您可以输入视频站点的标题。输入您先前创建的YouPHPTube数据库名称,用户名和密码。(注意:您应该使用主数据库,而不是编码器数据库。请注意区分大小写。)并设置系统管理员密码。

youphptube创建数据库和表

点击 Install now 按钮,YouPHPTube应该已成功安装。

youphptube安装目录

现在我们需要删除 /var/www/YouPHPTube/install/ 目录。

sudo rm /var/www/YouPHPTube/install/ -r

点击 Go to the main page 按钮,您将看到YouPHPTube主页。

youphptube主页

您可以点击左侧的下拉菜单,然后以 admin 用户和您刚才设置的密码。

youphptube管理员登录

步骤7:设定编码器

前往 https://tube.yourdomain.com/upload/您将被重定向到编码器设置向导。如果您没有自动重定向,则可以手动输入设置向导URL。

https://tube.yourdomain.com/upload/install/index.php/

左侧将显示您的服务器是否满足YouPHPTube Encoder的要求。

youphptube编码器要求

如果使用Nginx,则可以忽略以下消息。

Your server is nginx/1.14.2, you must install Apache.

如您所见,PHP max_execution_time 应该至少是7200和PHP memory_limit 应该至少为512M。我们需要编辑 php.ini 文件来更改两个值。如果您使用的是Apache Web服务器,则

sudo nano /etc/php/7.3/apache2/php.ini

如果您将Nginx与PHP-FPM一起使用,则需要编辑FPM版本的php.ini文件。

sudo nano /etc/php/7.3/fpm/php.ini

找到以下两行。

max_execution_time = 30
memory_limit = 128M

更改值。

max_execution_time = 7200
memory_limit = 512M

请注意,如果以后的视频编码停止了一半,则需要增加 max_execution_time,或升级您的CPU。

保存并关闭文件。重新启动Apache以使更改生效。

sudo systemctl restart apache2

如果您将Nginx与PHP-FPM一起使用,请重新启动PHP-FPM。

sudo systemctl restart php7.3-fpm

现在刷新YouPHPTube Encoder安装向导页面,您的服务器应该满足所有要求。现在,在右侧,您需要输入您之前创建的YouPHPTubeEncoder数据库名称,用户名和密码。注意区分大小写并输入Streamer网站的管理员密码

youphptube编码器设置向导数据库

单击立即安装按钮,将安装YouPHPTube编码器。

安装youphptube编码器debian 10 buster

删除安装目录。

sudo rm /var/www/YouPHPTube/upload/install/ -r

并转到主页。

youphptube编码器管理员登录

步骤8:更改编码器网址

默认情况下,YouPHPTube使用公共编码器上传视频。要使用您自己的编码器,请以管理员身份在YouPHPTube(不是YouPHPTube编码器)中登录,然后从左侧管理面板转到管理面板。

youphptube管理面板

前往 settings -> site settings -> advanced configuration将编码器URL更改为 https://tube.yourdomain.com/upload/保存设置,清除缓存目录并生成新的站点地图。

youphptube私人编码器网址

现在注销并重新登录。如果您单击 encode video and audio 右上角的按钮,您将被带到自己的编码器上载视频。请注意,编码速度取决于服务器的CPU能力。

步骤9:配置SMTP

要发送电子邮件(例如帐户注册,密码重置等),您需要配置SMTP服务器。如果您想使用自己的邮件服务器向客户端发送电子邮件,请查看以下文章以进行设置自己的邮件服务器。

  • 如何使用Modoboa在Debian 9上快速设置电子邮件服务器

如果您想使用SMTP中继服务,建议您使用Mailjet。您可以按照以下教程在YouPHPTube服务器上设置SMTP中继。

  • 如何使用Mailjet在Debian上设置Postfix SMTP中继

启用TCP BBR

对于视频流服务器,建议按照以下文章中的说明在Linux内核中启用TCP BBR拥塞控制算法(它是为Ubuntu编写的,但也可以在Debian 10 Buster上使用。)

  • 如何通过启用TCP BBR轻松提升Ubuntu 16.04 / 18.04网络性能

行动应用程式

您可以通过搜索来下载免费的android应用或iOS应用 YouPHPTube 在Google Play商店或 YPT Mobile 在Apple Store中。带有白色标签的移动应用需要付费许可证。

故障排除

如果您的YouPHPTube主页无法加载某些CSS和JavaScript资源,

youphptube无法加载资源

您可能已在Apache或Nginx虚拟主机文件中为Web根目录添加了额外的正斜杠。

DocumentRoot /var/www/YouPHPTube/

你应该用

DocumentRoot /var/www/YouPHPTube

其他花絮

对视频进行编码时,可以选择分辨率(低,标清,高清)。如果您将YouPHPTube用作个人视频流站点,建议您仅选择HD分辨率以减少编码时间并节省磁盘空间。如果您已经对所有视频进行了编码3种分辨率,您可以转到YouPHPTube视频目录(/ var / www / YouPHPTube / videos)并删除低分辨率和SD分辨率的视频。

cd /var/www/YouPHPTube/videos/
sudo rm *Low.mp4
sudo rm *SD.mp4

总结

我希望本教程可以帮助您在Debian 10 Buster服务器上安装YouPHPTube。与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。