GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare AVideo/YouPHPTube sul server CentOS 8

Questo tutorial ti mostrerà come eseguire il tuo sito Web di condivisione video con AVideo (precedentemente noto come YouPHPTube) su CentOS 8. AVideo è un'alternativa open source e self-hosted ai siti Web di condivisione video come YouTube, Vimeo, ecc. .Con AVideo, gli utenti possono caricare video sul tuo server e condividerli con Internet.

Caratteristiche video

  • Live streaming illimitati e simultanei e puoi avere utenti illimitati connessi a ogni live streaming.
  • Importa e codifica video da altri siti direttamente da Internet
  • Codifica in blocco dalla directory video locale
  • Crea video privati
  • Funzione totalmente integrata con Youtube, sincronizzando i tuoi video con Youtube
  • Transcodifica più formati di file multimediali in file MP4, WebM e MP3
  • Supporta Amazon S3 (servizio di archiviazione semplice)
  • Layout del sito reattivo. AVideo sembra incredibile su qualsiasi dispositivo. (Puoi scegliere il layout in stile YouTube o Netfilx.)
  • Canali utente e playlist utente
  • Iscriviti ai canali che ti piacciono
  • Puoi monitorare il rendimento dei tuoi video con metriche e rapporti aggiornati in AVideo Statistics.
  • Estendi le funzionalità del sito con i plug-in.
  • Ottimizzato SEO
  • App iOS e Android disponibili

Requisiti del server video

Innanzitutto, dovresti sapere che una CPU single-core non è praticabile per un sito Web di condivisione video, perché il processo di codifica utilizzerà molte risorse della CPU.

Quindi scegli le specifiche del server in base al numero di utenti del tuo sito.

  • Se vuoi usarlo solo per condividere i tuoi video, hai bisogno di un server con almeno 2 core CPU e 4 GB di RAM. Puoi acquistare un potente VPS (virtual private server) da Contabo con costi molto contenuti.
  • Se ti aspetti che il tuo sito abbia dozzine di utenti, puoi prendere in considerazione il VPS extra large di Contabo, che ha 10 core CPU, 60 GB di RAM, velocità della porta 1 Gbit/s, 1,6 TB di spazio su disco, traffico illimitato ma costa solo 26,99 Euro/mese.
  • Quando il tuo sito cresce oltre, dovresti acquistare un server dedicato.

Requisiti software per l'installazione di AVideo su CentOS 8

AVideo richiede PHP e MySQL/MariaDB. Per seguire questo tutorial, dovresti aver già impostato uno stack LAMP o uno stack LEMP. Se preferisci utilizzare il server Web Apache, installa lo stack LAMP.

  • Come installare lo stack LAMP (Apache, MariaDB, PHP) su CentOS 8

Se preferisci utilizzare il server web Nginx, installa lo stack LEMP.

  • Come installare lo stack LEMP (Nginx, MariaDB, PHP) su CentOS 8

Nota :Il supporto video con Nginx è solo sperimentale. Il tuo sito potrebbe avere problemi se usi Nginx .

Hai anche bisogno di un nome di dominio. Ho registrato il mio nome di dominio su NameCheap perché il prezzo è basso e offrono protezione della privacy a Whois gratuita per tutta la vita.

Il video è composto da due parti.

  • La parte principale è il server di streaming front-end, che consente agli utenti di guardare i video esistenti.
  • L'altra parte è il codificatore, che consente agli utenti di caricare i propri video.

Il codificatore pubblico utilizza il nome di dominio https://encoder1.avideo.com . Se non desideri che gli utenti lascino il tuo sito durante il caricamento di video, devi configurare il tuo codificatore privato. Ti mostrerò come in questo articolo. Senza ulteriori indugi, iniziamo.

Passaggio 1:scarica un video sul server CentOS 8

Accedi al tuo server CentOS 8 tramite SSH. Quindi vai alla directory principale del Web.

cd /var/www/

Clona il repository di streamer AVideo da Github.

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

Quindi vai nella directory.

cd AVideo/

Clona il repository di codificatore AVideo da Github.

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

Verrà salvato come AVideo-Encoder . Lo rinominiamo in upload , in modo che gli utenti possano avere un'idea migliore dell'utilità di questo URL durante il caricamento dei video.

sudo mv AVideo-Encoder upload

Successivamente, dobbiamo rendere l'utente del server Web come proprietario della radice Web.

Apache

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

Nginx

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

Abbiamo anche bisogno di cambiare il contesto di SELinux in modo che il server web possa scrivere in questa directory.

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

Passaggio 2:installa le dipendenze

AVideo usa FFmpeg per codificare i video. Possiamo facilmente installare FFmpeg dal repository 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

Per leggere e scrivere metainformazioni nei file multimediali, dobbiamo installare il perl-Image-ExifTool pacchetto.

sudo dnf install perl-Image-ExifTool

Devi anche installare alcune estensioni PHP comuni.

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

Per recuperare video da altri siti, dobbiamo installare YouTube-DL. Sebbene sia incluso nel repository CentOS, ma è obsoleto. Installeremo YouTube-DL dall'indice dei pacchetti Python, che contiene sempre l'ultima versione di YouTube-DL.

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

È molto importante utilizzare la versione più recente, altrimenti potresti non essere in grado di scaricare video da altri siti. Possiamo creare un processo Cron per controllare e installare automaticamente l'ultima versione.

sudo crontab -e

Aggiungi la riga seguente alla fine del file Crontab per provare ad aggiornare YouTube-DL ogni giorno.

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

Fase 3:crea database e utente in MariaDB

Accedi alla shell MySQL/MariaDB come root con il comando seguente. Dovrai inserire la password di root MySQL/MariaDB.

mysql -u root -p

Quindi crea un database per AVideo. Questo tutorial nomina il database AVideo . Puoi usare il nome che preferisci.

create database AVideo;

Crea l'utente del database. Anche in questo caso, puoi utilizzare il tuo nome preferito per questo utente. Sostituisci your-password con la tua password preferita.

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

Concedi a questo utente tutti i privilegi su AVideo banca dati.

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

Dobbiamo anche creare un database separato per il codificatore.

create database AVideoEncoder;

Crea un utente per questo database.

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

Concedi privilegi.

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

Svuota la tabella dei privilegi ed esci.

flush privileges;

exit;

Fase 4:configurazione del server Web

Possiamo usare il web server Apache o Nginx.

Apache

Se preferisci Apache, crea un file host virtuale per AVideo con un editor di testo a riga di comando come Nano.

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

Inserisci il seguente testo nel file. Sostituisci il testo di colore rosso con i tuoi dati effettivi. Uso un sottodominio in questo tutorial. Se preferisci, puoi utilizzare il tuo nome di dominio principale. Non dimenticare di impostare il record DNS A per il nome di dominio nel tuo gestore di record DNS. Inoltre, tieni presente che la directory radice del documento fa distinzione tra maiuscole e minuscole e non dovresti aggiungere una barra alla fine.

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

Salva e chiudi il file. Riavvia Apache per rendere effettive le modifiche.

sudo systemctl restart httpd

Ora visita tube.yourdomain.com e verrai reindirizzato alla pagina della procedura guidata di configurazione (tube.yourdomain.com/install/index.php ).

Prima di inserire qualsiasi informazione nella procedura guidata di configurazione, è necessario abilitare HTTPS.

Nginx

Se preferisci Nginx, crea un avideo.conf file in /etc/nginx/conf.d/ directory.

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

Inserisci il seguente testo nel file. Sostituisci il testo di colore rosso con i tuoi dati effettivi. Uso un sottodominio in questo tutorial. Se preferisci, puoi utilizzare il tuo nome di dominio principale. Non dimenticare di impostare il record DNS A per il nome di dominio nel tuo gestore di record DNS. Nota inoltre che la directory radice del documento fa distinzione tra maiuscole e minuscole.

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

}

Salva e chiudi il file. Quindi testa la configurazione di Nginx.

sudo nginx -t

Se il test ha esito positivo, ricarica Nginx per rendere effettive le modifiche.

sudo systemctl reload nginx

Ora visita tube.yourdomain.com e verrai reindirizzato alla pagina della procedura guidata di configurazione (tube.yourdomain.com/install/index.php ). Prima di inserire qualsiasi informazione nella procedura guidata di configurazione, è necessario abilitare HTTPS.

Fase 5:abilitazione di HTTPS

Per crittografare il traffico HTTP, possiamo abilitare HTTPS installando un certificato TLS gratuito emesso da Let's Encrypt. Esegui il comando seguente per installare il client Let's Encrypt (certbot) sul server CentOS 8.

sudo dnf install certbot

Se usi Apache, devi anche installare il plugin Certbot Apache.

sudo dnf install python3-certbot-apache

Ed esegui questo comando per ottenere e installare il certificato TLS.

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

Se usi Nginx, installa il plugin Certbot Nginx.

sudo dnf install python3-certbot-nginx

Quindi, esegui il comando seguente per ottenere e installare il certificato TLS.

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

Dove

  • --nginx :usa il plugin nginx.
  • --apache :usa il plugin Apache.
  • --agree-tos :Accetta i termini di servizio.
  • --redirect :Forza HTTPS tramite reindirizzamento 301.
  • --hsts :aggiungi l'intestazione Strict-Transport-Security a ogni risposta HTTP. Forzare il browser a utilizzare sempre TLS per il dominio. Difende dallo stripping SSL/TLS.
  • --staple-ocsp :Abilita la pinzatura OCSP. Una risposta OCSP valida viene pinzata al certificato offerto dal server durante TLS.

Il certificato dovrebbe ora essere ottenuto e installato automaticamente.

Per impostazione predefinita, SELinux vieta ad Apache/Nginx di effettuare richieste di rete ad altri server, ma in seguito Apache/Nginx deve richiedere lo stato del certificato TLS dal server Let's Encrypt CA per la pinzatura OCSP, quindi dobbiamo dire a SELinux di consentire ad Apache/Nginx con quanto segue comando.

sudo setsebool -P httpd_can_network_connect 1

Fase 6:termina l'installazione con l'installazione guidata

Ora vai su tube.yourdomain.com e apparirà la procedura guidata di configurazione. Sul lato sinistro puoi vedere se il tuo server soddisfa i requisiti.

Se usi Nginx, puoi ignorare il seguente messaggio.

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

Come puoi vedere, il PHP post_max_size dovrebbe essere almeno 100M e upload_max_filesize dovrebbe essere almeno 100M. Dobbiamo modificare il php.ini file per modificare i due valori.

sudo nano /etc/php.ini

Trova le due righe seguenti.

post_max_size = 8M
upload_max_filesize = 2M

Modifica i valori in base alla dimensione del file video che intendi caricare. Ad esempio, se consenti il ​​caricamento di file video 1G,

post_max_size = 1024M
upload_max_filesize = 1024M

Salva e chiudi il file. Riavvia PHP-FPM per rendere effettive le modifiche.

sudo systemctl restart php-fpm

Ora aggiorna la pagina della procedura guidata di installazione di AVideo. Il tuo server dovrebbe soddisfare tutti i requisiti. Ora sul lato destro, puoi inserire un titolo nel tuo sito di video e impostare una password di amministratore di sistema. Inserisci il nome del database AVideo, l'utente e la password che hai creato in precedenza. (Nota:dovresti usare il database principale, non il database del codificatore. Tieni anche presente la distinzione tra maiuscole e minuscole.)

Fai clic su Install now pulsante e AVideo dovrebbero essere installati correttamente.

Ora dobbiamo rimuovere il /var/www/AVideo/install/ directory.

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

Fai clic su Go to the main page e vedrai la pagina principale di AVideo.

Puoi fare clic sul menu a discesa a sinistra e accedere come admin utente e con la password che hai impostato pochi istanti fa.

Fase 7:imposta l'encoder

Vai a https://tube.yourdomain.com/upload/ . Verrai reindirizzato alla procedura guidata di configurazione dell'encoder. Se non vieni reindirizzato automaticamente, puoi inserire manualmente l'URL della procedura guidata di configurazione.

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

Il lato sinistro ti mostrerà se il tuo server soddisfa i requisiti di AVideo Encoder.

Se usi Nginx, puoi ignorare il seguente messaggio.

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

Abbiamo installato exiftool, FFmpeg e youtube-dl nel passaggio 2, ma PHP-FPM non riesce a trovare i binari. Questo perché non abbiamo abilitato il PATH variabile in PHP. Modifica il file di configurazione PHP-FPM.

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

Trova la riga seguente e rimuovi il punto e virgola (;) all'inizio.

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

Salva e chiudi il file. Quindi riavvia PHP-FPM.

sudo systemctl restart php-fpm

Aggiorna la pagina di installazione dell'encoder. La procedura guidata di configurazione dovrebbe essere in grado di trovare i binari exiftool, FFmpeg e youtube-dl. Se la directory video non è scrivibile, esegui il comando seguente.

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

Come puoi vedere il PHP max_execution_time dovrebbe essere almeno 7200 e PHP memory_limit dovrebbe essere almeno 512M. Dobbiamo modificare il php.ini file per modificare i due valori.

sudo nano /etc/php.ini

Trova le due righe seguenti.

max_execution_time = 30
memory_limit = 128M

Modifica i valori.

max_execution_time = 7200
memory_limit = 512M

Nota che se la codifica video successiva si interrompe a metà, devi aumentare il max_execution_time o aggiorna la tua CPU.

Salva e chiudi il file. Quindi riavvia PHP-FPM.

sudo systemctl restart php-fpm

Ora aggiorna la pagina della procedura guidata di installazione di AVideo Encoder. Il tuo server dovrebbe soddisfare tutti i requisiti. Ora sul lato destro, devi inserire il nome del database di AVideoEncoder, l'utente e la password che hai creato in precedenza. Fai attenzione alla distinzione tra maiuscole e minuscole e inserisci la password di amministratore del sito streamer.

Fare clic sul pulsante Installa ora e verrà installato AVideo Encoder.

Rimuovere la directory di installazione.

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

Vai alla pagina principale. Potrai accedere a AVideocodificatore.

Passaggio 8:modifica l'URL dell'encoder

Per impostazione predefinita, AVideo utilizza un codificatore pubblico per caricare i video. Per utilizzare il tuo codificatore, accedi come amministratore in AVideo (non in AVideo Encoder) e vai al pannello di amministrazione dalla barra laterale sinistra.

Vai a settings -> site settings -> advanced configuration . Modifica l'URL del codificatore in https://tube.yourdomain.com/upload/ . Salva le impostazioni, svuota la directory della cache e genera una nuova mappa del sito.

Ora esci e accedi nuovamente. Se fai clic su encode video and audio pulsante nell'angolo in alto a destra, verrai indirizzato al tuo codificatore per caricare i video. Va notato che la velocità di codifica dipende dalla potenza della CPU del server. Non richiede molta RAM perché il codificatore copierà il video in un file temporaneo nella directory di caricamento (/var/www/AVideo/upload/videos ).

Fase 9:Configura SMTP

Per inviare e-mail (come la registrazione dell'account, la reimpostazione della password, ecc.), è necessario configurare un server SMTP. Se desideri utilizzare il tuo server di posta per inviare e-mail ai client, consulta il seguente articolo per configurare il tuo server di posta. Nota che consiglio vivamente di eseguire il server di posta iRedMail su un nuovo sistema operativo pulito. L'installazione di iRedMail su un sistema operativo che dispone di altre applicazioni Web può non riuscire e probabilmente interrompere le applicazioni esistenti.

  • Come configurare facilmente un server di posta elettronica su CentOS 8 con iRedMail

Se desideri utilizzare un servizio di inoltro SMTP, ti consiglio Mailjet. Puoi seguire il tutorial qui sotto per configurare l'inoltro SMTP sul tuo server AVideo.

  • Come configurare l'inoltro SMTP di Postfix su CentOS con Mailjet

Puoi testare l'invio di e-mail andando al admin panel -> Setttings -> Site Settings -> Advanced Configuration , puoi trovare la configurazione SMTP. Usa le seguenti impostazioni.

  • Abilita SMTP.
  • Abilita autenticazione SMTP.
  • Usa tls in SMTP sicuro.
  • Usa 587 come porta SMTP.
  • Inserisci il nome host del tuo server di posta.
  • Inserisci un nome utente e una password SMTP.

Fai clic su Save per salvare le impostazioni, quindi fare clic su Test Email per vedere se funziona.

Abilita TCP BBR

Per un server di streaming video, si consiglia di abilitare l'algoritmo di controllo della congestione TCP BBR nel kernel Linux. Modifica il file sysctl.conf.

sudo nano /etc/sysctl.conf

Aggiungi le seguenti due righe alla fine del file.

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

Salva e chiudi il file. Quindi ricarica le configurazioni di sysctl.

sudo sysctl -p

Ora controlla l'algoritmo di controllo della congestione in uso.

sysctl net.ipv4.tcp_congestion_control

Uscita:

net.ipv4.tcp_congestion_control = bbr

App mobili

Puoi scaricare l'app Android gratuita o l'app iOS cercando AVideo su Google Play Store o YPT Mobile nell'Apple Store. L'app mobile white label richiede una licenza a pagamento.

Risoluzione dei problemi

Se la tua pagina principale di AVideo non riesce a caricare alcune risorse CSS e JavaScript,

È probabile che tu abbia aggiunto una barra in avanti aggiuntiva nel file dell'host virtuale Apache o Nginx per la directory principale del Web. Invece di usare

DocumentRoot /var/www/AVideo/

Dovresti usare

DocumentRoot /var/www/AVideo

Se il sito Web principale non funziona correttamente, puoi controllare il file di registro in /var/www/AVideo/videos/avideo.log . Se il tuo codificatore non funziona correttamente, puoi controllare il file di registro su /var/www/AVideo/upload/videos/avideo.log .

Altre curiosità

Durante la codifica dei video, puoi scegliere le risoluzioni (bassa, SD, HD). Se utilizzi AVideo come sito di streaming video personale, ti consiglio di scegliere la risoluzione HD solo per ridurre il tempo di codifica e risparmiare spazio su disco. Se hai già codificato i video in tutte e 3 le risoluzioni, puoi andare nella directory dei video AVideo (/var/www/AVideo/videos) ed eliminare i video a bassa risoluzione e SD.

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

Come scaricare tutti i video dal tuo sito di video

Puoi usare il youtube-dl utilità da riga di comando per scaricare tutti i video. Innanzitutto, devi andare alla dashboard di AVideo, quindi andare alla pagina dell'elenco dei video e scorrere fino in fondo, fare clic su scarica l'elenco dei video (file permalink .txt) pulsante. Vedrai un elenco di URL per tutti i video.

Quindi, apri un terminale e crea un file txt con un editor di testo, copia gli URL dalla pagina Web e incollali nel file. Quindi puoi eseguire il seguente comando per scaricare i video. Sostituisci video-list.txt con il tuo nome file.

youtube-dl -a video-list.txt

Cent OS
  1. Come installare il server Minecraft su CentOS 7

  2. Come installare Nginx su CentOS 8

  3. Come installare PostgreSQL su CentOS 8

  4. Come installare Teamspeak 3 Server su CentOS 8

  5. Come installare ProFTPD su CentOS 7

Come installare AVideo/YouPHPTube sul server Ubuntu 20.04

Come installare Shoutcast Server su CentOS 8

Come installare Lighttpd su CentOS

Come installare VestaCP su CentOS 6

Come installare il server VNC su CentOS 7

Come installare il server Minecraft su CentOS 6