GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar AVideo/YouPHPTube en el servidor CentOS 8

Este tutorial le mostrará cómo ejecutar su propio sitio web para compartir videos con AVideo (anteriormente conocido como YouPHPTube) en CentOS 8. AVideo es una alternativa de código abierto y autohospedado a los sitios web para compartir videos como YouTube, Vimeo, etc. Con AVideo, los usuarios pueden subir videos a su servidor y compartirlos con Internet.

Funciones de vídeo

  • Transmisiones en vivo ilimitadas y simultáneas y puede tener usuarios ilimitados conectados a cada transmisión en vivo.
  • Importe y codifique videos de otros sitios directamente desde Internet
  • Codificación masiva desde el directorio de videos local
  • Hacer videos privados
  • Función totalmente integrada con Youtube, sincronizando tus videos con Youtube
  • Transcodifique múltiples formatos de archivos multimedia a archivos MP4, WebM y MP3
  • Admite Amazon S3 (servicio de almacenamiento simple)
  • Diseño de sitio receptivo. AVideo se ve increíble en cualquier dispositivo. (Puede elegir el diseño de estilo de YouTube o Netfilx).
  • Canales de usuario y listas de reproducción de usuario
  • Suscríbete a los canales que te gustan
  • Puede monitorear el rendimiento de sus videos con métricas e informes actualizados en Estadísticas de AVideo.
  • Amplíe las funcionalidades del sitio con complementos.
  • Optimizado para SEO
  • Aplicaciones iOS y Android disponibles

ARequisitos del servidor de video

Primero, debe saber que una CPU de un solo núcleo no es viable para un sitio web para compartir videos, porque el proceso de codificación usará una gran cantidad de recursos de la CPU.

Luego elija las especificaciones del servidor de acuerdo con la cantidad de usuarios que tiene su sitio.

  • Si solo desea usarlo para compartir sus propios videos, necesita un servidor con al menos 2 núcleos de CPU y 4 GB de RAM. Puede comprar un poderoso VPS (servidor privado virtual) de Contabo a muy bajo costo.
  • Si espera que su sitio tenga docenas de usuarios, entonces puede considerar el VPS extra grande de Contabo, que tiene 10 núcleos de CPU, 60 GB de RAM, velocidad de puerto de 1 Gbit/s, espacio en disco de 1,6 TB, tráfico ilimitado pero cuesta solo 26,99 euros/mes.
  • Cuando su sitio crece más allá de eso, debe comprar un servidor dedicado.

Requisitos de software para instalar AVideo en CentOS 8

AVideo requiere PHP y MySQL/MariaDB. Para seguir este tutorial, ya debería haber configurado una pila LAMP o una pila LEMP. Si prefiere usar el servidor web Apache, instale la pila LAMP.

  • Cómo instalar la pila LAMP (Apache, MariaDB, PHP) en CentOS 8

Si prefiere usar el servidor web Nginx, instale la pila LEMP.

  • Cómo instalar la pila LEMP (Nginx, MariaDB, PHP) en CentOS 8

Nota :La compatibilidad con AVideo con Nginx es solo experimental. Tu sitio puede tener problemas si usas Nginx .

También necesita un nombre de dominio. Registré mi nombre de dominio en NameCheap porque el precio es bajo y ofrecen protección de privacidad whois gratis de por vida.

Un video se compone de dos partes.

  • La parte principal es el servidor de transmisión frontal, que permite a los usuarios ver videos existentes.
  • La otra parte es el codificador, que permite a los usuarios subir sus videos.

El codificador público usa el nombre de dominio https://encoder1.avideo.com . Si no desea que los usuarios abandonen su sitio cuando suban videos, debe configurar su codificador privado. Te mostraré cómo en este artículo. Sin más preámbulos, comencemos.

Paso 1:Descarga AVideo en el servidor CentOS 8

Inicie sesión en su servidor CentOS 8 a través de SSH. Luego vaya al directorio raíz web.

cd /var/www/

Clone el repositorio de transmisión de AVideo de Github.

sudo dnf install git
sudo git clone https://github.com/WWBN/AVideo.git

Luego ve al directorio.

cd AVideo/

Clone el repositorio del codificador AVideo de Github.

sudo git clone https://github.com/WWBN/AVideo-Encoder.git

Se guardará como AVideo-Encoder . Le cambiamos el nombre a upload , para que los usuarios puedan tener una mejor idea de para qué sirve esta URL al cargar videos.

sudo mv AVideo-Encoder upload

A continuación, debemos hacer que el usuario del servidor web sea el propietario de la raíz web.

apache

sudo chown apache:apache /var/www/AVideo/ -R

Nginx

sudo chown nginx:nginx /var/www/AVideo/ -R

También necesitamos cambiar el contexto de SELinux para que el servidor web pueda escribir en este directorio.

sudo chcon -t httpd_sys_rw_content_t /var/www/AVideo/ -R

Paso 2:Instalar dependencias

AVideo usa FFmpeg para codificar videos. Podemos instalar fácilmente FFmpeg desde el repositorio de RPMFusion.

sudo dnf install epel-release

sudo dnf config-manager --enable PowerTools

sudo dnf install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm

sudo dnf install ffmpeg -y

Para leer y escribir metainformación en archivos multimedia, necesitamos instalar perl-Image-ExifTool paquete.

sudo dnf install perl-Image-ExifTool

También necesita instalar algunas extensiones PHP comunes.

sudo dnf install php-cli php-fpm php-mysqlnd php-common php-json php-opcache php-readline php-curl php-gd php-xml

Para obtener videos de otros sitios, necesitamos instalar YouTube-DL. Aunque está incluido en el repositorio de CentOS, está desactualizado. Instalaremos YouTube-DL desde Python Package Index, que siempre contiene la última versión de YouTube-DL.

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

Es muy importante que use la última versión, o es posible que no pueda descargar videos de otros sitios. Podemos crear un trabajo Cron para verificar e instalar automáticamente la última versión.

sudo crontab -e

Agregue la siguiente línea al final del archivo Crontab para intentar actualizar YouTube-DL diariamente.

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

Paso 3:Crear base de datos y usuario en MariaDB

Inicie sesión en MySQL/MariaDB shell como root con el siguiente comando. Deberá ingresar la contraseña raíz de MySQL/MariaDB.

mysql -u root -p

Luego crea una base de datos para AVideo. Este tutorial nombra la base de datos AVideo . Puedes usar el nombre que quieras.

create database AVideo;

Cree el usuario de la base de datos. Nuevamente, puede usar su nombre preferido para este usuario. Reemplace your-password con su contraseña preferida.

create user AVideo@localhost identified by 'your-password';

Otorgue a este usuario todos los privilegios en el AVideo base de datos.

grant all privileges on AVideo.* to AVideo@localhost;

También necesitamos crear una base de datos separada para el codificador.

create database AVideoEncoder;

Cree un usuario para esta base de datos.

create user AVideoEncoder@localhost identified by 'your-password';

Otorgar privilegios.

grant all privileges on AVideoEncoder.* to AVideoEncoder@localhost;

Vacíe la tabla de privilegios y salga.

flush privileges;

exit;

Paso 4:Configuración del servidor web

Podemos usar el servidor web Apache o Nginx.

Apache

Si prefiere Apache, cree un archivo de host virtual para AVideo con un editor de texto de línea de comandos como Nano.

sudo nano /etc/httpd/conf.d/avideo.conf

Coloque el siguiente texto en el archivo. Reemplace el texto de color rojo con sus datos reales. Yo uso un subdominio en este tutorial. Puede utilizar su nombre de dominio principal si lo prefiere. No olvide establecer un registro DNS A para el nombre de dominio en su administrador de registros DNS. Además, tenga en cuenta que el directorio raíz del documento distingue entre mayúsculas y minúsculas y no debe agregar una barra inclinada al final.

<VirtualHost *:80>
    ServerName tube.yourdomain.com
    DocumentRoot /var/www/AVideo

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

    ErrorLog /var/log/httpd/avideo.error.log
    CustomLog /var/log/httpd/avideo.access.log combined

</VirtualHost>

Guarde y cierre el archivo. Reinicie Apache para que los cambios surtan efecto.

sudo systemctl restart httpd

Ahora visita tube.yourdomain.com y será redirigido a la página del asistente de configuración (tube.yourdomain.com/install/index.php ).

Antes de ingresar cualquier información en el asistente de configuración, debemos habilitar HTTPS.

Nginx

Si prefiere Nginx, cree un avideo.conf archivo en /etc/nginx/conf.d/ directorio.

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

Coloque el siguiente texto en el archivo. Reemplace el texto de color rojo con sus datos reales. Yo uso un subdominio en este tutorial. Puede utilizar su nombre de dominio principal si lo prefiere. No olvide establecer un registro DNS A para el nombre de dominio en su administrador de registros DNS. También tenga en cuenta que el directorio raíz del documento distingue entre mayúsculas y minúsculas.

server {
    listen      80;
    listen [::]:80;
    server_name tube.yourdomain.com;

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

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

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
   
    # translating Apache rewrite rules in the .htaccess file to Nginx rewrite rules
    location / {
        rewrite ^/$ /view/ last;
    }
    location /bootstrap {
        rewrite ^/bootstrap/(.+)$ /view/bootstrap/$1 last;
    }
    location /js {
        rewrite ^/js/(.+)$ /view/js/$1 last;
    }
    location /css {
        rewrite ^/css/(.+)$ /view/css/$1 last;
    }
    location /img {
        rewrite ^/img/(.+)$ /view/img/$1 last;
    }
    location /page {
        rewrite ^/page/([0-9]+)/?$ /view/?page=$1 last;
    }
    location /videoOnly {
        rewrite ^/videoOnly/?$ /view/?type=video last;
    }
    location /audioOnly {
        rewrite ^/audioOnly/?$ /view/?type=audio last;
    }
    location = /download {
        rewrite ^(.*)$ /view/downloadExternalVideo.php last;
    }
    location = /downloadNow {
        rewrite ^(.*)$ /objects/downloadVideo.php last;
    }
    location = /getDownloadProgress {
        rewrite ^(.*)$ /objects/downloadVideoProgress.php last;
    }
    location = /about {
        rewrite ^(.*)$ /view/about.php last;
    }
    location = /contact {
        rewrite ^(.*)$ /view/contact.php last;
    }
    location = /sendEmail {
        rewrite ^(.*)$ /objects/sendEmail.json.php last;
    }
    location = /captcha {
        rewrite ^(.*)$ /objects/getCaptcha.php last;
    }
    location /monitor {
        rewrite ^/monitor/(.+)$ /objects/ServerMonitor/$1 last;
    }
    location /cat {
        rewrite ^/cat/([A-Za-z0-9-]+)/?$ /view/?catName=$1 last;
    }
    location /video {
        rewrite ^/video/([A-Za-z0-9-_.]+)/?$ /view/?videoName=$1 last;
    }
    location /videoEmbeded {
        rewrite ^/videoEmbeded/([A-Za-z0-9-_.]+)/?$ /view/videoEmbeded.php?videoName=$1 last;
    }
    location = /upload {
        rewrite ^(.*)$ /view/mini-upload-form/ last;
    }
    location = /fileUpload {
        rewrite ^(.*)$ /view/mini-upload-form/upload.php last;
    }
    location /uploadStatu {
        rewrite ^/uploadStatus /view/mini-upload-form/videoConversionStatus.php last;
    }
    location = /user {
        rewrite ^(.*)$ /view/user.php last;
    }
    location = /users {
        rewrite ^(.*)$ /view/managerUsers.php last;
    }
    location = /users.json {
        rewrite ^(.*)$ /objects/users.json.php last;
    }
    location = /updateUser {
        rewrite ^(.*)$ /objects/userUpdate.json.php last;
    }
    location = /savePhoto {
        rewrite ^(.*)$ /objects/userSavePhoto.php last;
    }
    location = /addNewUser {
        rewrite ^(.*)$ /objects/userAddNew.json.php last;
    }
    location = /deleteUser {
        rewrite ^(.*)$ /objects/userDelete.json.php last;
    }
    location = /recoverPass {
        rewrite ^(.*)$ /objects/userRecoverPass.php last;
    }
    location = /saveRecoverPassword {
        rewrite ^(.*)$ /objects/userRecoverPassSave.json.php last;
    }
    location = /signUp {
        rewrite ^(.*)$ /view/signUp.php last;
    }
    location = /createUser {
        rewrite ^(.*)$ /objects/userCreate.json.php last;
    }
    location = /usersGroups {
        rewrite ^(.*)$ /view/managerUsersGroups.php last;
    }
    location = /usersGroups.json {
        rewrite ^(.*)$ /objects/usersGroups.json.php last;
    }
    location = /addNewUserGroups {
        rewrite ^(.*)$ /objects/userGroupsAddNew.json.php last;
    }
    location = /deleteUserGroups {
        rewrite ^(.*)$ /objects/userGroupsDelete.json.php last;
    }
    location = /ads {
        rewrite ^(.*)$ /view/managerAds.php last;
    }
    location = /addNewAd {
        rewrite ^(.*)$ /objects/video_adsAddNew.json.php last;
    }
    location = /ads.json {
        rewrite ^(.*)$ /objects/video_ads.json.php last;
    }
    location = /deleteVideoAd {
        rewrite ^(.*)$ /objects/video_adDelete.json.php last;
    }
    location /adClickLo {
        rewrite ^/adClickLog /objects/video_adClickLog.php last;
    }
    location = /categories {
        rewrite ^(.*)$ /view/managerCategories.php last;
    }
    location = /categories.json {
        rewrite ^(.*)$ /objects/categories.json.php last;
    }
    location = /addNewCategory {
        rewrite ^(.*)$ /objects/categoryAddNew.json.php last;
    }
    location = /deleteCategory {
        rewrite ^(.*)$ /objects/categoryDelete.json.php last;
    }
    location = /orphanFiles {
        rewrite ^(.*)$ /view/orphanFiles.php last;
    }
    location = /mvideos {
         rewrite ^(.*)$ /view/managerVideos.php last;
    }
    location = /videos.json {
        rewrite ^(.*)$ /objects/videos.json.php last;
    }
    location = /deleteVideo {
        rewrite ^(.*)$ /objects/videoDelete.json.php last;
    }
    location = /addNewVideo {
        rewrite ^(.*)$ /objects/videoAddNew.json.php last;
    }
    location = /refreshVideo {
        rewrite ^(.*)$ /objects/videoRefresh.json.php last;
    }
    location = /setStatusVideo {
        rewrite ^(.*)$ /objects/videoStatus.json.php last;
    }
    location = /reencodeVideo {
        rewrite ^(.*)$ /objects/videoReencode.json.php last;
    }
    location = /addViewCountVideo {
        rewrite ^(.*)$ /objects/videoAddViewCount.json.php last;
    }
    location = /saveComment {
        rewrite ^(.*)$ /objects/commentAddNew.json.php last;
    }
    location /comments {
        rewrite ^/comments.json/([0-9]+)$ /objects/comments.json.php?video_id=$1 last;
    }
    location = /login {
        rewrite ^(.*)$ /objects/login.json.php last;
    }
    location = /logoff {
        rewrite ^(.*)$ /objects/logoff.php last;
    }
    location = /like {
        rewrite ^(.*)$ /objects/like.json.php?like=1 last;
    }
    location = /dislike {
        rewrite ^(.*)$ /objects/like.json.php?like=-1 last;
    }
    location /update {
        rewrite ^/update/?$ /update/update.php last;
    }
    location = /siteConfigurations {
        rewrite ^(.*)$ /view/configurations.php last;
    }
    location = /updateConfig {
        rewrite ^(.*)$ /objects/configurationUpdate.json.php last;
    }
    location = /charts {
        rewrite ^(.*)$ /view/charts.php last;
    }

    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;
  }

}

Guarde y cierre el archivo. Luego pruebe la configuración de Nginx.

sudo nginx -t

Si la prueba es exitosa, vuelva a cargar Nginx para que los cambios surtan efecto.

sudo systemctl reload nginx

Ahora visita tube.yourdomain.com y será redirigido a la página del asistente de configuración (tube.yourdomain.com/install/index.php ). Antes de ingresar cualquier información en el asistente de configuración, debemos habilitar HTTPS.

Paso 5:habilitar HTTPS

Para cifrar el tráfico HTTP, podemos habilitar HTTPS instalando un certificado TLS gratuito emitido por Let's Encrypt. Ejecute el siguiente comando para instalar el cliente Let's Encrypt (certbot) en el servidor CentOS 8.

sudo dnf install certbot

Si usa Apache, también necesita instalar el complemento Certbot Apache.

sudo dnf install python3-certbot-apache

Y ejecute este comando para obtener e instalar el certificado TLS.

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

Si usa Nginx, instale el complemento Certbot Nginx.

sudo dnf install python3-certbot-nginx

A continuación, ejecute el siguiente comando para obtener e instalar el certificado TLS.

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

donde

  • --nginx :use el complemento nginx.
  • --apache :Utilice el complemento de Apache.
  • --agree-tos :Acepto los términos del servicio.
  • --redirect :Forzar HTTPS por redirección 301.
  • --hsts :agregue el encabezado Strict-Transport-Security a cada respuesta HTTP. Obligar al navegador a usar siempre TLS para el dominio. Protege contra la eliminación de SSL/TLS.
  • --staple-ocsp :activa el grapado OCSP. Se grapa una respuesta OCSP válida al certificado que ofrece el servidor durante TLS.

Ahora se debe obtener el certificado e instalarlo automáticamente.

De manera predeterminada, SELinux prohíbe que Apache/Nginx realice solicitudes de red a otros servidores, pero luego Apache/Nginx debe solicitar el estado del certificado TLS del servidor Let's Encrypt CA para el engrapado OCSP, por lo que debemos decirle a SELinux que permita Apache/Nginx con lo siguiente comando.

sudo setsebool -P httpd_can_network_connect 1

Paso 6:finalice la instalación con el asistente de configuración

Ahora ve a tube.yourdomain.com y aparecerá el asistente de configuración. En el lado izquierdo, puede ver si su servidor cumple con los requisitos.

Si usa Nginx, puede ignorar el siguiente mensaje.

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

Como puede ver, PHP post_max_size debe ser de al menos 100M y upload_max_filesize debe ser al menos 100M. Necesitamos editar el php.ini para cambiar los dos valores.

sudo nano /etc/php.ini

Encuentra las siguientes dos líneas.

post_max_size = 8M
upload_max_filesize = 2M

Cambie los valores de acuerdo con el tamaño del archivo de video que va a cargar. Por ejemplo, si permite cargar un archivo de video de 1G, entonces

post_max_size = 1024M
upload_max_filesize = 1024M

Guarde y cierre el archivo. Reinicie PHP-FPM para que los cambios surtan efecto.

sudo systemctl restart php-fpm

Ahora actualice la página del asistente de instalación de AVideo. Su servidor debe pasar todos los requisitos. Ahora, en el lado derecho, puede ingresar un título para su sitio de videos y establecer una contraseña de administrador del sistema. Ingrese el nombre de la base de datos de AVideo, el usuario y la contraseña que creó anteriormente. (Nota:debe usar la base de datos principal, no la base de datos del codificador. También tenga en cuenta que distingue entre mayúsculas y minúsculas).

Haga clic en Install now y AVideo debe instalarse correctamente.

Ahora necesitamos eliminar el /var/www/AVideo/install/ directorio.

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

Haz clic en Go to the main page y verá la página principal de AVideo.

Puede hacer clic en el menú desplegable de la izquierda e iniciar sesión como admin usuario y con la contraseña que estableciste hace unos momentos.

Paso 7:configurar el codificador

Ve a https://tube.yourdomain.com/upload/ . Será redirigido al asistente de configuración del codificador. Si no se le redirige automáticamente, puede ingresar manualmente la URL del asistente de configuración.

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

El lado izquierdo le mostrará si su servidor cumple con los requisitos de AVideo Encoder.

Si usa Nginx, puede ignorar el siguiente mensaje.

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

Instalamos exiftool, FFmpeg y youtube-dl en el paso 2, pero PHP-FPM no puede encontrar los archivos binarios. Eso es porque no habilitamos el PATH variables en PHP. Edite el archivo de configuración de PHP-FPM.

sudo nano /etc/php-fpm.d/www.conf

Busque la siguiente línea y elimine el punto y coma (;) al principio.

;env[PATH] = /usr/local/bin:/usr/bin:/bin

Guarde y cierre el archivo. Luego reinicie PHP-FPM.

sudo systemctl restart php-fpm

Actualice la página de instalación del codificador. El asistente de configuración debería poder encontrar binarios exiftool, FFmpeg y youtube-dl. Si no se puede escribir en el directorio de videos, ejecute el siguiente comando.

sudo chcon -t httpd_sys_rw_content_t /var/www/AVideo/ -R

Como puede ver el PHP max_execution_time debe ser al menos 7200 y PHP memory_limit debe ser al menos 512M. Necesitamos editar el php.ini para cambiar los dos valores.

sudo nano /etc/php.ini

Encuentra las siguientes dos líneas.

max_execution_time = 30
memory_limit = 128M

Cambia los valores.

max_execution_time = 7200
memory_limit = 512M

Tenga en cuenta que si la codificación de video posterior se detiene a la mitad, debe aumentar el max_execution_time o actualice su CPU.

Guarde y cierre el archivo. Luego reinicie PHP-FPM.

sudo systemctl restart php-fpm

Ahora actualice la página del asistente de instalación de AVideo Encoder. Su servidor debe pasar todos los requisitos. Ahora, en el lado derecho, debe ingresar el nombre, el usuario y la contraseña de la base de datos de AVideoEncoder que creó anteriormente. Tenga en cuenta que distingue entre mayúsculas y minúsculas e ingrese la contraseña de administrador del sitio de transmisión.

Haga clic en el botón Instalar ahora y se instalará AVideo Encoder.

Elimina el directorio de instalación.

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

Ve a la página principal. Podrá iniciar sesión en el codificador AVideo.

Paso 8:cambie la URL del codificador

De forma predeterminada, AVideo usa un codificador público para cargar videos. Para usar su propio codificador, inicie sesión como administrador en AVideo (no en AVideo Encoder) y vaya al panel de administración desde la barra lateral izquierda.

Ve a settings -> site settings -> advanced configuration . Cambie la URL del codificador a https://tube.yourdomain.com/upload/ . Guarde la configuración, borre el directorio de caché y genere un nuevo mapa del sitio.

Ahora cierra la sesión y vuelve a iniciarla. Si haces clic en encode video and audio en la esquina superior derecha, accederá a su propio codificador para cargar videos. Cabe señalar que la velocidad de codificación depende de la potencia de la CPU de su servidor. No requiere mucha RAM porque el codificador copiará el video a un archivo temporal en el directorio de carga (/var/www/AVideo/upload/videos ).

Paso 9:Configurar SMTP

Para enviar correos electrónicos (como registro de cuenta, restablecimiento de contraseña, etc.), debe configurar un servidor SMTP. Si desea utilizar su propio servidor de correo para enviar correos electrónicos a los clientes, consulte el siguiente artículo para configurar su propio servidor de correo. Nota que recomiendo encarecidamente ejecutar el servidor de correo iRedMail en un sistema operativo nuevo y limpio. La instalación de iRedMail en un sistema operativo que tiene otras aplicaciones web puede fallar y es probable que rompa las aplicaciones existentes.

  • Cómo configurar fácilmente un servidor de correo electrónico en CentOS 8 con iRedMail

Si desea utilizar un servicio de retransmisión SMTP, le recomiendo Mailjet. Puede seguir el tutorial a continuación para configurar la retransmisión SMTP en su servidor AVideo.

  • Cómo configurar la retransmisión SMTP de Postfix en CentOS con Mailjet

Puede probar el envío de correo electrónico yendo al admin panel -> Setttings -> Site Settings -> Advanced Configuration , puede encontrar la configuración de SMTP. Utilice la siguiente configuración.

  • Habilitar SMTP.
  • Habilitar autenticación SMTP.
  • Usar tls en SMTP seguro.
  • Use 587 como puerto SMTP.
  • Ingrese el nombre de host de su servidor de correo.
  • Ingrese un nombre de usuario y contraseña SMTP.

Haz clic en Save para guardar la configuración, luego haga clic en Test Email para ver si funciona.

Habilitar TCP BBR

Para un servidor de transmisión de video, se recomienda habilitar el algoritmo de control de congestión TCP BBR en el kernel de Linux. Edite el archivo sysctl.conf.

sudo nano /etc/sysctl.conf

Agregue las siguientes dos líneas al final del archivo.

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

Guarde y cierre el archivo. Luego vuelva a cargar las configuraciones de sysctl.

sudo sysctl -p

Ahora compruebe el algoritmo de control de congestión en uso.

sysctl net.ipv4.tcp_congestion_control

Salida:

net.ipv4.tcp_congestion_control = bbr

Aplicaciones móviles

Puede descargar la aplicación gratuita para Android o iOS haciendo una búsqueda de AVideo en Google Play Store o YPT Mobile en la tienda de Apple. La aplicación móvil de marca blanca requiere una licencia paga.

Resolución de problemas

Si su página principal de AVideo no pudo cargar algunos recursos CSS y JavaScript,

Es probable que haya agregado una barra diagonal adicional en el archivo de host virtual de Apache o Nginx para el directorio raíz web. En lugar de usar

DocumentRoot /var/www/AVideo/

Deberías usar

DocumentRoot /var/www/AVideo

Si el sitio web principal no funciona correctamente, puede consultar el archivo de registro en /var/www/AVideo/videos/avideo.log . Si su codificador no funciona correctamente, puede consultar el archivo de registro en /var/www/AVideo/upload/videos/avideo.log .

Otras cositas

Al codificar videos, puede elegir resoluciones (baja, SD, HD). Si usa AVideo como un sitio de transmisión de video personal, le recomiendo elegir la resolución HD solo para reducir el tiempo de codificación y ahorrar espacio en disco. Si ya ha codificado videos en las 3 resoluciones, puede ir al directorio de videos de AVideo (/var/www/AVideo/videos) y eliminar videos de baja resolución y resolución SD.

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

Cómo descargar todos los videos de su sitio de videos

Puedes usar el youtube-dl utilidad de línea de comandos para descargar todos los videos. Primero, debe ir al panel de control de AVideo, luego ir a la página de la lista de videos y desplazarse hasta la parte inferior, hacer clic en descargar su lista de videos (archivo .txt de enlace permanente) botón. Verá una lista de URL para todos los videos.

A continuación, abra una terminal y cree un archivo txt con un editor de texto, copie las URL de la página web y péguelas en el archivo. Luego puede ejecutar el siguiente comando para descargar los videos. Reemplace video-list.txt con su propio nombre de archivo.

youtube-dl -a video-list.txt

Cent OS
  1. Cómo instalar el servidor de Minecraft en CentOS 7

  2. Cómo instalar Nginx en CentOS 8

  3. Cómo instalar PostgreSQL en CentOS 8

  4. Cómo instalar el servidor Teamspeak 3 en CentOS 8

  5. Cómo instalar ProFTPD en CentOS 7

Cómo instalar AVideo/YouPHPTube en el servidor Ubuntu 20.04

Cómo instalar Shoutcast Server en CentOS 8

Cómo instalar Lighttpd en CentOS

Cómo instalar VestaCP en CentOS 6

Cómo instalar el servidor VNC en CentOS 7

Cómo instalar el servidor de Minecraft en CentOS 6