Ce didacticiel va vous montrer comment exécuter votre propre site Web de partage de vidéos avec AVideo (anciennement connu sous le nom de YouPHPTube) sur CentOS 8. AVideo est une alternative open source et auto-hébergée aux sites de partage de vidéos comme YouTube, Vimeo, etc. . Avec AVideo, les utilisateurs peuvent télécharger des vidéos sur votre serveur et les partager sur Internet.
Fonctionnalités vidéo
- Diffusions en direct illimitées et simultanées et vous pouvez avoir un nombre illimité d'utilisateurs connectés à chaque diffusion en direct.
- Importer et encoder des vidéos d'autres sites directement depuis Internet
- Encodage en masse à partir du répertoire vidéo local
- Créer des vidéos privées
- Fonction totalement intégrée avec Youtube, synchronisation de vos vidéos avec Youtube
- Transcoder plusieurs formats de fichiers multimédias en fichiers MP4, WebM et MP3
- Prise en charge d'Amazon S3 (service de stockage simple)
- Mise en page réactive du site. Une vidéo est incroyable sur n'importe quel appareil. (Vous pouvez choisir une mise en page de style YouTube ou Netfilx.)
- Chaînes d'utilisateurs et playlists d'utilisateurs
- Abonnez-vous aux chaînes que vous aimez
- Vous pouvez surveiller les performances de vos vidéos grâce à des statistiques et des rapports à jour dans AVideo Statistics.
- Étendre les fonctionnalités du site avec des plugins.
- Optimisé pour le référencement
- Applications iOS et Android disponibles
AConfiguration requise pour le serveur vidéo
Tout d'abord, vous devez savoir qu'un processeur monocœur n'est pas viable pour un site Web de partage de vidéos, car le processus d'encodage utilisera beaucoup de ressources processeur.
Choisissez ensuite les spécifications du serveur en fonction du nombre d'utilisateurs de votre site.
- Si vous souhaitez simplement l'utiliser pour partager vos propres vidéos, vous avez besoin d'un serveur avec au moins 2 cœurs de processeur et 4 Go de RAM. Vous pouvez acheter un puissant VPS (serveur privé virtuel) auprès de Contabo à très peu de frais.
- Si vous vous attendez à ce que votre site ait des dizaines d'utilisateurs, vous pouvez envisager le très grand VPS Contabo, qui dispose de 10 cœurs de processeur, de 60 Go de RAM, d'une vitesse de port de 1 Gbit/s, d'un espace disque de 1,6 To, d'un trafic illimité mais ne coûte que 26,99 €. Euros/mois.
- Lorsque votre site se développe au-delà de cela, vous devez acheter un serveur dédié.
Configuration logicielle requise pour l'installation d'AVideo sur CentOS 8
AVideo nécessite PHP et MySQL/MariaDB. Pour suivre ce tutoriel, vous devez déjà avoir configuré une pile LAMP ou LEMP. Si vous préférez utiliser le serveur Web Apache, installez la pile LAMP.
- Comment installer la pile LAMP (Apache, MariaDB, PHP) sur CentOS 8
Si vous préférez utiliser le serveur Web Nginx, installez la pile LEMP.
- Comment installer la pile LEMP (Nginx, MariaDB, PHP) sur CentOS 8
Remarque :La prise en charge d'AVideo avec Nginx n'est qu'expérimentale. Votre site peut rencontrer des problèmes si vous utilisez Nginx .
Vous avez également besoin d'un nom de domaine. J'ai enregistré mon nom de domaine chez NameCheap car le prix est bas et ils offrent une protection de confidentialité whois gratuite à vie.
Une vidéo est composée de deux parties.
- La partie principale est le serveur de flux frontal, qui permet aux utilisateurs de regarder des vidéos existantes.
- L'autre partie est l'encodeur, qui permet aux utilisateurs de mettre en ligne leurs vidéos.
L'encodeur public utilise le nom de domaine https://encoder1.avideo.com
. Si vous ne voulez pas que les utilisateurs quittent votre site lors du téléchargement de vidéos, vous devez configurer votre encodeur privé. Je vais vous montrer comment dans cet article. Sans plus tarder, commençons.
Étape 1 :Téléchargez une vidéo sur le serveur CentOS 8
Connectez-vous à votre serveur CentOS 8 via SSH. Accédez ensuite au répertoire racine du site Web.
cd /var/www/
Clonez le référentiel de streamer AVideo à partir de Github.
sudo dnf install gitsudo git clone https://github.com/WWBN/AVideo.git
Allez ensuite dans le répertoire.
cd AVidéo/
Clonez le dépôt de l'encodeur AVideo à partir de Github.
sudo git clone https://github.com/WWBN/AVideo-Encoder.git
Il sera enregistré sous AVideo-Encoder
. Nous le renommons en upload
, afin que les utilisateurs puissent avoir une meilleure idée de ce à quoi sert cette URL lorsqu'ils mettent en ligne des vidéos.
sudo mv AVideo-Encoder upload
Ensuite, nous devons faire de l'utilisateur du serveur Web le propriétaire de la racine Web.
Apache
sudo chown apache:apache /var/www/AVideo/ -R
Nginx
sudo chown nginx:nginx /var/www/AVideo/ -R
Nous devons également modifier le contexte SELinux afin que le serveur Web puisse écrire dans ce répertoire.
sudo chcon -t httpd_sys_rw_content_t /var/www/AVideo/ -R
Étape 2 :Installer les dépendances
AVideo utilise FFmpeg
pour encoder des vidéos. Nous pouvons facilement installer FFmpeg à partir du référentiel RPMFusion.
sudo dnf install epel-releasesudo dnf config-manager --enable PowerToolssudo 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.rpmsudo dnf installer ffmpeg -y
Pour lire et écrire des méta-informations dans des fichiers multimédia, nous devons installer le perl-Image-ExifTool
paquet.
sudo dnf installer perl-Image-ExifTool
Vous devez également installer certaines extensions PHP courantes.
sudo dnf installer php-cli php-fpm php-mysqlnd php-common php-json php-opcache php-readline php-curl php-gd php-xml
Pour récupérer des vidéos d'autres sites, nous devons installer YouTube-DL. Bien qu'il soit inclus dans le référentiel CentOS, mais il est obsolète. Nous allons installer YouTube-DL à partir du Python Package Index, qui contient toujours la dernière version de YouTube-DL.
sudo dnf installer python3-pipsudo -H pip3 installer youtube-dl
Il est très important que vous utilisiez la dernière version, sinon vous ne pourrez peut-être pas télécharger de vidéos à partir d'autres sites. Nous pouvons créer une tâche Cron pour vérifier et installer automatiquement la dernière version.
sudo crontab -e
Ajoutez la ligne suivante à la fin du fichier Crontab pour essayer de mettre à jour quotidiennement YouTube-DL.
@daily sudo -H pip3 install --upgrade youtube-dl> /dev/null
Étape 3 :Créer une base de données et un utilisateur dans MariaDB
Connectez-vous au shell MySQL/MariaDB en tant que root avec la commande suivante. Vous devrez entrer le mot de passe root MySQL/MariaDB.
mysql -u root -p
Créez ensuite une base de données pour AVideo. Ce tutoriel nomme la base de données AVideo
. Vous pouvez utiliser le nom de votre choix.
créer une base de données AVideo ;
Créez l'utilisateur de la base de données. Encore une fois, vous pouvez utiliser votre nom préféré pour cet utilisateur. Remplacez your-password
avec votre mot de passe préféré.
créer un utilisateur AVideo@localhost identifié par 'votre-mot de passe' ;
Accordez à cet utilisateur tous les privilèges sur la AVideo
base de données.
accorder tous les privilèges sur AVideo.* à AVideo@localhost ;
Nous devons également créer une base de données distincte pour l'encodeur.
créer la base de données AVideoEncoder ;
Créez un utilisateur pour cette base de données.
créer un utilisateur AVideoEncoder@localhost identifié par 'votre-mot de passe' ;
Accorder des privilèges.
accorder tous les privilèges sur AVideoEncoder.* à AVideoEncoder@localhost ;
Videz la table des privilèges et quittez.
vider les privilèges ;quitter ;
Étape 4 :Configuration du serveur Web
Nous pouvons utiliser le serveur Web Apache ou Nginx.
Apache
Si vous préférez Apache, créez un fichier d'hôte virtuel pour AVideo avec un éditeur de texte en ligne de commande comme Nano.
sudo nano /etc/httpd/conf.d/avideo.conf
Mettez le texte suivant dans le fichier. Remplacez le texte de couleur rouge par vos données réelles. J'utilise un sous-domaine dans ce tutoriel. Vous pouvez utiliser votre nom de domaine principal si vous préférez. N'oubliez pas de définir un enregistrement DNS A pour le nom de domaine dans votre gestionnaire d'enregistrements DNS. Notez également que le répertoire racine du document est sensible à la casse et que vous ne devez pas ajouter de barre oblique à la fin.
ServerName tube.votredomaine.com DocumentRoot /var/www/AVideo /var/www/AVideo> DirectoryIndex index.php Options +FollowSymLinks AllowOverride All Requiert tous accordés ErrorLog /var/log/httpd/avideo.error.log CustomLog /var/log/httpd/avideo.access.log combiné Enregistrez et fermez le fichier. Redémarrez Apache pour que les modifications prennent effet.
sudo systemctl redémarrer httpdVisitez maintenant
tube.yourdomain.com
et vous serez redirigé vers la page de l'assistant d'installation (tube.yourdomain.com/install/index.php
).Avant de saisir des informations dans l'assistant de configuration, nous devons activer HTTPS.
Nginx
Si vous préférez Nginx, créez un
avideo.conf
fichier dans/etc/nginx/conf.d/
répertoire.sudo nano /etc/nginx/conf.d/avideo.confMettez le texte suivant dans le fichier. Remplacez le texte de couleur rouge par vos données réelles. J'utilise un sous-domaine dans ce tutoriel. Vous pouvez utiliser votre nom de domaine principal si vous préférez. N'oubliez pas de définir un enregistrement DNS A pour le nom de domaine dans votre gestionnaire d'enregistrements DNS. Notez également que le répertoire racine du document est sensible à la casse.
serveur { écoute 80 ; écouter [::]:80 ; nom_serveur tube.votredomaine.com ; racine /var/www/AVideo ; index index.php index.html index.htm; jeu de caractères utf-8 ; client_max_body_size 2G ; access_log /var/log/nginx/avideo.access.log ; error_log /var/log/nginx/avideo.error.log; emplacement ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php ; inclure fastcgi_params ; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ; } # traduction des règles de réécriture Apache dans le fichier .htaccess vers l'emplacement des règles de réécriture Nginx / { rewrite ^/$ /view/ last; } emplacement /bootstrap { réécrire ^/bootstrap/(.+)$ /view/bootstrap/$1 dernier ; } emplacement /js { réécrire ^/js/(.+)$ /view/js/$1 dernier ; } emplacement /css { réécrire ^/css/(.+)$ /view/css/$1 dernier ; } emplacement /img { réécrire ^/img/(.+)$ /view/img/$1 dernier ; } emplacement /page { réécrire ^/page/([0-9]+)/?$ /view/?page=$1 dernier ; } location /videoOnly { réécrire ^/videoOnly/?$ /view/?type=video last; } location /audioOnly { réécrire ^/audioOnly/?$ /view/?type=audio last; } location =/download { réécrire ^(.*)$ /view/downloadExternalVideo.php dernier ; } location =/downloadNow { réécrire ^(.*)$ /objects/downloadVideo.php dernier ; } location =/getDownloadProgress { réécrire ^(.*)$ /objects/downloadVideoProgress.php dernier ; } location =/about { réécrire ^(.*)$ /view/about.php last; } location =/contact { réécrire ^(.*)$ /view/contact.php last; } location =/sendEmail { réécrire ^(.*)$ /objects/sendEmail.json.php dernier ; } location =/captcha { réécrire ^(.*)$ /objects/getCaptcha.php dernier ; } location /monitor { réécrire ^/monitor/(.+)$ /objects/ServerMonitor/$1 last; } emplacement /cat { réécrire ^/cat/([A-Za-z0-9-]+)/?$ /view/?catName=$1 dernier ; } emplacement /vidéo { réécrire ^/vidéo/([A-Za-z0-9-_.]+)/?$ /view/?videoName=$1 dernier ; } location /videoEmbeded { réécrire ^/videoEmbeded/([A-Za-z0-9-_.]+)/?$ /view/videoEmbeded.php?videoName=$1 dernier ; } location =/upload { réécrire ^(.*)$ /view/mini-upload-form/ last; } location =/fileUpload { réécrire ^(.*)$ /view/mini-upload-form/upload.php last; } location /uploadStatu { réécrire ^/uploadStatus /view/mini-upload-form/videoConversionStatus.php dernier ; } location =/user { réécrire ^(.*)$ /view/user.php last; } location =/users { réécrire ^(.*)$ /view/managerUsers.php dernier ; } location =/users.json { réécrire ^(.*)$ /objects/users.json.php dernier ; } location =/updateUser { réécrire ^(.*)$ /objects/userUpdate.json.php dernier ; } location =/savePhoto { réécrire ^(.*)$ /objects/userSavePhoto.php last; } location =/addNewUser { réécrire ^(.*)$ /objects/userAddNew.json.php dernier ; } location =/deleteUser { réécrire ^(.*)$ /objects/userDelete.json.php dernier ; } location =/recoverPass { réécrire ^(.*)$ /objects/userRecoverPass.php dernier ; } location =/saveRecoverPassword { réécrire ^(.*)$ /objects/userRecoverPassSave.json.php dernier ; } location =/signUp { réécrire ^(.*)$ /view/signUp.php last; } location =/createUser { réécrire ^(.*)$ /objects/userCreate.json.php dernier ; } location =/usersGroups { réécrire ^(.*)$ /view/managerUsersGroups.php dernier ; } location =/usersGroups.json { réécrire ^(.*)$ /objects/usersGroups.json.php dernier ; } location =/addNewUserGroups { réécrire ^(.*)$ /objects/userGroupsAddNew.json.php dernier ; } location =/deleteUserGroups { réécrire ^(.*)$ /objects/userGroupsDelete.json.php dernier ; } location =/ads { réécrire ^(.*)$ /view/managerAds.php last ; } location =/addNewAd { réécrire ^(.*)$ /objects/video_adsAddNew.json.php dernier ; } location =/ads.json { réécrire ^(.*)$ /objects/video_ads.json.php last ; } location =/deleteVideoAd { réécrire ^(.*)$ /objects/video_adDelete.json.php dernier ; } location /adClickLo { réécrire ^/adClickLog /objects/video_adClickLog.php dernier ; } location =/categories { réécrire ^(.*)$ /view/managerCategories.php last; } location =/categories.json { réécrire ^(.*)$ /objects/categories.json.php last; } location =/addNewCategory { réécrire ^(.*)$ /objects/categoryAddNew.json.php dernier ; } location =/deleteCategory { réécrire ^(.*)$ /objects/categoryDelete.json.php dernier ; } location =/orphanFiles { réécrire ^(.*)$ /view/orphanFiles.php last; } location =/mvideos { réécrire ^(.*)$ /view/managerVideos.php dernier ; } location =/videos.json { réécrire ^(.*)$ /objects/videos.json.php dernier ; } location =/deleteVideo { réécrire ^(.*)$ /objects/videoDelete.json.php dernier ; } location =/addNewVideo { réécrire ^(.*)$ /objects/videoAddNew.json.php dernier ; } location =/refreshVideo { réécrire ^(.*)$ /objects/videoRefresh.json.php dernier ; } location =/setStatusVideo { réécrire ^(.*)$ /objects/videoStatus.json.php dernier ; } location =/reencodeVideo { réécrire ^(.*)$ /objects/videoReencode.json.php last; } location =/addViewCountVideo { réécrire ^(.*)$ /objects/videoAddViewCount.json.php dernier ; } location =/saveComment { réécrire ^(.*)$ /objects/commentAddNew.json.php last; } location /comments { réécrire ^/comments.json/([0-9]+)$ /objects/comments.json.php?video_id=$1 last; } location =/login { réécrire ^(.*)$ /objects/login.json.php dernier ; } location =/logoff { réécrire ^(.*)$ /objects/logoff.php last; } location =/like { réécrire ^(.*)$ /objects/like.json.php?like=1 last; } location =/dislike { réécrire ^(.*)$ /objects/like.json.php?like=-1 last; } emplacement /update { réécrire ^/update/?$ /update/update.php dernier ; } location =/siteConfigurations { réécrire ^(.*)$ /view/configurations.php last; } location =/updateConfig { réécrire ^(.*)$ /objects/configurationUpdate.json.php dernier ; } location =/charts { réécrire ^(.*)$ /view/charts.php dernier ; } location =/upload/index.php { réécrire ^(.*)$ /upload/view/index.php dernier ; } location =/upload/isAdmin { réécrire ^(.*)$ /upload/view/isAdmin.php dernier ; } location =/upload/removeStreamer { réécrire ^(.*)$ /upload/view/removeStreamer.php dernier ; } location =/upload/priority { réécrire ^(.*)$ /upload/view/priority.php dernier ; } location =/upload/status { réécrire ^(.*)$ /upload/view/status.php dernier ; } location =/upload/serverStatus { réécrire ^(.*)$ /upload/view/status.php?serverStatus=1 dernier ; } location =/upload/upload { réécrire ^(.*)$ /upload/view/upload.php dernier ; } location =/upload/listFiles.json { réécrire ^(.*)$ /upload/view/listFiles.json.php dernier ; } location =/upload/deleteQueue { réécrire ^(.*)$ /upload/view/deleteQueue.php dernier ; } location =/upload/saveConfig { réécrire ^(.*)$ /upload/view/saveConfig.php dernier ; } location =/upload/youtubeDl.json { réécrire ^(.*)$ /upload/view/youtubeDl.json.php dernier ; } location =/upload/send.json { réécrire ^(.*)$ /upload/view/send.json.php dernier ; } location =/upload/streamers.json { réécrire ^(.*)$ /upload/view/streamers.json.php dernier ; } location =/upload/queue.json { réécrire ^(.*)$ /upload/view/queue.json.php dernier ; } location =/upload/queue { réécrire ^(.*)$ /upload/view/queue.php dernier ; } location =/upload/login { réécrire ^(.*)$ /upload/objects/login.json.php dernier ; } location =/upload/logoff { réécrire ^(.*)$ /upload/objects/logoff.json.php dernier ; } emplacement /upload/ { réécrire "^/getImage/([A-Za-z0-9=/]+)/([A-Za-z0-9]{3})$" /upload/objects/getImage. php?base64Url=$1&format=$2 dernier ; réécrire "^/getImageMP4/([A-Za-z0-9=/]+)/([A-Za-z0-9]{3})/([0-9.]+)$" /upload/ objets/getImageMP4.php?base64Url=$1&format=$2&time=$3 dernier ; } emplacement /upload/getSpiritsFromVideo { réécrire ^/getSpiritsFromVideo/([A-Za-z0-9=/]+)/([0-9]+)/([0-9]+)$ /upload/objects/ getSpiritsFromVideo.php?base64Url=$1&tileWidth=$2&totalClips=$3 dernier ; } emplacement /upload/getLinkInfo { réécrire ^/getLinkInfo/([A-Za-z0-9=/]+)$ /upload/objects/getLinkInfo.json.php?base64Url=$1 dernier ; }}Enregistrez et fermez le fichier. Testez ensuite la configuration de Nginx.
sudo nginx -tSi le test réussit, rechargez Nginx pour que les modifications prennent effet.
sudo systemctl recharger nginxVisitez maintenant
tube.yourdomain.com
et vous serez redirigé vers la page de l'assistant d'installation (tube.yourdomain.com/install/index.php
). Avant de saisir des informations dans l'assistant de configuration, nous devons activer HTTPS.Étape 5 :Activer HTTPS
Pour chiffrer le trafic HTTP, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let's Encrypt. Exécutez la commande suivante pour installer le client Let's Encrypt (certbot) sur le serveur CentOS 8.
sudo dnf install certbotSi vous utilisez Apache, vous devez également installer le plugin Certbot Apache.
sudo dnf installer python3-certbot-apacheEt exécutez cette commande pour obtenir et installer le certificat TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d tube.votredomaine.comSi vous utilisez Nginx, installez le plugin Certbot Nginx.
sudo dnf installer python3-certbot-nginxEnsuite, exécutez la commande suivante pour obtenir et installer le certificat TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d tube.votredomaine.comOù
--nginx
:Utilisez le plug-in nginx.--apache
:Utilisez le plug-in Apache.--agree-tos
:acceptez les conditions d'utilisation.--redirect
:Forcer HTTPS par redirection 301.--hsts
:Ajoutez l'en-tête Strict-Transport-Security à chaque réponse HTTP. Forcer le navigateur à toujours utiliser TLS pour le domaine. Protège contre le SSL/TLS Stripping.--staple-ocsp
:active l'agrafage OCSP. Une réponse OCSP valide est agrafée au certificat que le serveur propose pendant TLS.
Le certificat devrait maintenant être obtenu et installé automatiquement.
Par défaut, SELinux interdit à Apache/Nginx de faire des requêtes réseau à d'autres serveurs, mais plus tard, Apache/Nginx doit demander l'état du certificat TLS au serveur Let's Encrypt CA pour l'agrafage OCSP, nous devons donc dire à SELinux d'autoriser Apache/Nginx avec ce qui suit commande.
sudo setsebool -P httpd_can_network_connect 1
Étape 6 :Terminez l'installation avec l'assistant de configuration
Allez maintenant sur tube.yourdomain.com
et l'assistant de configuration apparaîtra. Sur le côté gauche, vous pouvez voir si votre serveur répond aux exigences.
Si vous utilisez Nginx, vous pouvez ignorer le message suivant.
Votre serveur est nginx/1.14.2, vous devez installer Apache.
Comme vous pouvez le voir, le PHP post_max_size
doit être d'au moins 100 Mo et upload_max_filesize
doit être d'au moins 100M. Nous devons éditer le php.ini
fichier pour modifier les deux valeurs.
sudo nano /etc/php.ini
Trouvez les deux lignes suivantes.
post_max_size =8Mupload_max_filesize =2M
Modifiez les valeurs en fonction de la taille du fichier vidéo que vous allez télécharger. Par exemple, si vous autorisez le téléchargement d'un fichier vidéo 1G, alors
post_max_size =1024Mupload_max_filesize =1024M
Enregistrez et fermez le fichier. Redémarrez PHP-FPM pour que les modifications prennent effet.
sudo systemctl redémarrer php-fpm
Actualisez maintenant la page de l'assistant d'installation d'AVideo. Votre serveur doit répondre à toutes les exigences. Maintenant, sur le côté droit, vous pouvez entrer un titre pour votre site vidéo et définir un mot de passe administrateur système. Entrez le nom, l'utilisateur et le mot de passe de la base de données AVideo que vous avez créés précédemment. (Remarque :vous devez utiliser la base de données principale, pas la base de données de l'encodeur. Faites également attention à la casse.)
Cliquez sur Install now
et AVideo devrait être installé avec succès.
Maintenant, nous devons supprimer le /var/www/AVideo/install/
répertoire.
sudo rm /var/www/AVideo/install/ -r
Cliquez sur Go to the main page
et vous verrez la page principale d'AVideo.
Vous pouvez cliquer sur le menu déroulant à gauche et vous connecter en tant que admin
utilisateur et avec le mot de passe que vous avez défini il y a quelques instants.
Étape 7 :Configurer l'encodeur
Allez sur https://tube.yourdomain.com/upload/
. Vous serez redirigé vers l'assistant de configuration de l'encodeur. Si vous n'êtes pas automatiquement redirigé, vous pouvez saisir manuellement l'URL de l'assistant de configuration.
https://tube.votredomaine.com/upload/install/index.php/
Le côté gauche vous montrera si votre serveur répond aux exigences d'AVideo Encoder.
Si vous utilisez Nginx, vous pouvez ignorer le message suivant.
Votre serveur est nginx/1.14.2, vous devez installer Apache.
Nous avons installé exiftool, FFmpeg et youtube-dl à l'étape 2, mais PHP-FPM ne trouve pas les binaires. C'est parce que nous n'avons pas activé le PATH
variables en PHP. Modifier le fichier de configuration PHP-FPM.
sudo nano /etc/php-fpm.d/www.conf
Trouvez la ligne suivante et supprimez le point-virgule (;) au début.
;env[CHEMIN] =/usr/local/bin:/usr/bin:/bin
Enregistrez et fermez le fichier. Redémarrez ensuite PHP-FPM.
sudo systemctl redémarrer php-fpm
Actualisez la page d'installation de l'encodeur. L'assistant d'installation devrait pouvoir trouver les binaires exiftool, FFmpeg et youtube-dl. Si le répertoire vidéo n'est pas accessible en écriture, exécutez la commande suivante.
sudo chcon -t httpd_sys_rw_content_t /var/www/AVideo/ -R
Comme vous pouvez le voir le PHP max_execution_time
doit être au moins 7200 et PHP memory_limit
doit être d'au moins 512M. Nous devons éditer le php.ini
fichier pour modifier les deux valeurs.
sudo nano /etc/php.ini
Trouvez les deux lignes suivantes.
max_execution_time =30memory_limit =128M
Modifiez les valeurs.
max_execution_time =7200memory_limit =512M
Notez que si l'encodage vidéo ultérieur s'arrête à mi-parcours, vous devez augmenter le max_execution_time
, ou mettez à niveau votre CPU.
Enregistrez et fermez le fichier. Redémarrez ensuite PHP-FPM.
sudo systemctl redémarrer php-fpm
Actualisez maintenant la page de l'assistant d'installation d'AVideo Encoder. Votre serveur doit répondre à toutes les exigences. Maintenant, sur le côté droit, vous devez entrer le nom de la base de données AVideoEncoder, l'utilisateur et le mot de passe que vous avez créés précédemment. Faites attention à la casse et saisissez le mot de passe administrateur du site de streamer.
Cliquez sur le bouton Installer maintenant et AVideo Encoder sera installé.
Supprimez le répertoire d'installation.
sudo rm /var/www/AVideo/upload/install/ -r
Allez à la page principale. Vous pourrez vous connecter à un encodeur vidéo.
Étape 8 :Modifier l'URL de l'encodeur
Par défaut, AVideo utilise un encodeur public pour télécharger des vidéos. Pour utiliser votre propre encodeur, connectez-vous en tant qu'administrateur dans AVideo (et non AVideo Encoder) et accédez au panneau d'administration dans la barre latérale gauche.
Accédez aux settings
-> site settings
-> advanced configuration
. Changez l'URL de l'encodeur en https://tube.yourdomain.com/upload/
. Enregistrez les paramètres, effacez le répertoire de cache et générez un nouveau sitemap.
Maintenant, déconnectez-vous et reconnectez-vous. Si vous cliquez sur encode video and audio
dans le coin supérieur droit, vous serez redirigé vers votre propre encodeur pour télécharger des vidéos. Il convient de noter que la vitesse d'encodage dépend de la puissance CPU de votre serveur. Il ne nécessite pas beaucoup de RAM car l'encodeur copiera la vidéo dans un fichier temporaire dans le répertoire de téléchargement (/var/www/AVideo/upload/videos
).
Étape 9 :Configurer SMTP
Pour envoyer des e-mails (tels que l'enregistrement d'un compte, la réinitialisation du mot de passe, etc.), vous devez configurer un serveur SMTP. Si vous souhaitez utiliser votre propre serveur de messagerie pour envoyer des e-mails aux clients, veuillez consulter l'article suivant pour configurer votre propre serveur de messagerie. Remarque que je recommande fortement d'exécuter le serveur de messagerie iRedMail sur un nouveau système d'exploitation propre. L'installation d'iRedMail sur un système d'exploitation doté d'autres applications Web peut échouer et probablement casser les applications existantes.
- Comment configurer facilement un serveur de messagerie sur CentOS 8 avec iRedMail
Si vous souhaitez utiliser un service de relais SMTP, je vous recommande Mailjet. Vous pouvez suivre le tutoriel ci-dessous pour configurer le relais SMTP sur votre serveur AVideo.
- Comment configurer le relais SMTP Postfix sur CentOS avec Mailjet
Vous pouvez tester l'envoi d'e-mails en vous rendant dans le admin panel
-> Setttings
-> Site Settings
-> Advanced Configuration
, vous pouvez trouver la configuration SMTP. Utilisez les paramètres suivants.
- Activer SMTP.
- Activer l'authentification SMTP
- Utilisez
tls
dans SMTP sécurisé. - Utilisez
587
comme port SMTP. - Entrez le nom d'hôte de votre serveur de messagerie.
- Entrez un nom d'utilisateur et un mot de passe SMTP.
Cliquez sur Save
pour enregistrer les paramètres, puis cliquez sur Test Email
pour voir si cela fonctionne.
Activer TCP BBR
Pour un serveur de streaming vidéo, il est recommandé d'activer l'algorithme de contrôle de congestion TCP BBR dans le noyau Linux. Modifiez le fichier sysctl.conf.
sudo nano /etc/sysctl.conf
Ajoutez les deux lignes suivantes à la fin du fichier.
net.core.default_qdisc=fqnet.ipv4.tcp_congestion_control=bbr
Enregistrez et fermez le fichier. Rechargez ensuite les configurations sysctl.
sudo sysctl -p
Vérifiez maintenant l'algorithme de contrôle de congestion utilisé.
sysctl net.ipv4.tcp_congestion_control
Sortie :
net.ipv4.tcp_congestion_control =bbr
Applications mobiles
Vous pouvez télécharger l'application Android gratuite ou l'application iOS en effectuant une recherche sur AVideo
sur Google Play Store ou YPT Mobile
dans l'Apple Store. L'application mobile en marque blanche nécessite une licence payante.
Dépannage
Si votre page principale AVideo n'a pas réussi à charger certaines ressources CSS et JavaScript,
Il est probable que vous ayez ajouté une barre oblique supplémentaire dans le fichier d'hôte virtuel Apache ou Nginx pour le répertoire racine Web. Au lieu d'utiliser
DocumentRoot /var/www/AVideo/
Vous devez utiliser
DocumentRoot /var/www/AVideo
Si le site Web principal ne fonctionne pas correctement, vous pouvez consulter le fichier journal sur /var/www/AVideo/videos/avideo.log
. Si votre encodeur ne fonctionne pas correctement, vous pouvez consulter le fichier journal sur /var/www/AVideo/upload/videos/avideo.log
.
Autres informations
Lors de l'encodage des vidéos, vous pouvez choisir des résolutions (basse, SD, HD). Si vous utilisez AVideo comme site de streaming vidéo personnel, je vous recommande de choisir la résolution HD uniquement pour réduire le temps d'encodage et économiser de l'espace disque. Si vous avez déjà encodé des vidéos dans les 3 résolutions, vous pouvez accéder au répertoire vidéo AVideo (/var/www/AVideo/videos) et supprimer les vidéos basse résolution et résolution SD.
cd /var/www/AVideo/videos/sudo rm *Low.mp4sudo rm *SD.mp4
Comment télécharger toutes les vidéos de votre site vidéo
Vous pouvez utiliser le youtube-dl
utilitaire de ligne de commande pour télécharger toutes les vidéos. Tout d'abord, vous devez accéder au tableau de bord AVideo, puis accéder à la page de la liste des vidéos et faire défiler vers le bas, cliquez sur télécharger votre liste de vidéos (fichier permalien .txt) bouton. Vous verrez une liste d'URL pour toutes les vidéos.
Ensuite, ouvrez un terminal et créez un fichier txt avec un éditeur de texte, copiez les URL de la page Web et collez-les dans le fichier. Ensuite, vous pouvez exécuter la commande suivante pour télécharger les vidéos. Remplacez video-list.txt
avec votre propre nom de fichier.
youtube-dl -a video-list.txt