در مطالب قبلی در وبلاگ آموزش چگونگی راه اندازی یک RTMP و HLS سرور با استفاده از Nginx و ماژول nginx-rtmp را آموزش دادیم و در این مطلب به نحوه ی احراز هویت برای ارسال استریم به این سرویس، میپردازیم.
همان طور که در مطالب قبل عنوان کردیم برای ارسال و تماشای پخش زنده یا جریان زنده در اینترنت، شما نیاز به راه اندازی یک استریم سرور دارید. پروتکل های زیادی برای استریم وجود دارد که اکنون رایج ترین آنها RTMP و HLS میباشند که در اکثر دستگاه ها قابل نمایش هستند. پروتکل RTMP ساخته شرکت Macromedia که هم اکنون در انحصار Adobe میباشد و پروتکل HLS نیز تولید شده Apple میباشد.
شما میتوانید آموزش کامل راه اندازی یک استریم سرور را در لینوکس و ویندوز در مطالب قبلی وبلاگ مطالعه نمایید.
اگر امتحان کرده باشید، هر شخصی که IP سرور شما را داشته باشید میتواند استریم خود را بدون هیچ محدودیتی به سرور شما ارسال کند. در پلتفرم ها و نرم افزار هایی مانند Wowza، AdobeMedia Flash Server، Red و دیگر استریم سرور های RTMP شما میتوانید با قرارداد یوزر و پسور بصورت بسیار ساده از ارسال استریم ناشناس جلوگیری کنید. در ماژول Nginx-RTMP قابلیت قراردادن یوزر و پسور برای ارسال و دریافت استریم وجود ندارد ولی میتوان از راه حل جایگذین استفاده کرد.
استفاده از قابلیت Notify برای احراز هویت
در ماژول nginx-rtmp یک قالبیتی به نام Notify وجود دارد که برای اعلام هشدار و callback به وب سرويس ها و آنالیزر ها در حالت های مختلف استفاده میشود. این حالت ها عبارت اند از زمان اتصال on_connect، زمان پخش on_play، زمان انتشار on_publish، زمان پایان استریم on_done، زمان پایان یک پخش on_play_done، زمان پایان یک انتشار on_publish_done، زمان اتمام ضبط on_record_done و زمان بروز یک رخدادی on_update.
شما میتوانید با استفاده از حالت در زمان اتصال on_publish هویت ارسال کننده را بررسی و احراز کنید. بدین صورت که زمانی که کاربران اتصال را برقرار میکنند درخواستی به آدرس HTTP اعلام شده ارسال میشود و تا زمان دریافت پاسخ، استریم دریافت نمیگردد. در صورتی که پاسخ کد HTTP 2xx باشد استریم دریافت میگردد و جلسه RTMP برقرار میگردد و درصورتی که پاسخ کد 3xx باشد جلسه RTMP به یک اپلیکیشن با نام پارامتر Location اعلام شده در پاسخ ریدایرکت و منتقل میشود. در غیر این صورت و یا در صورتی که پاسخ کد 4xx یا 5xx باشد اتصال قطع میشود.
در زمان ارسال درخواست HTTP چند arguments با متد POST و استاندارد MIME از نوع application/x-www-form-urlencoded ارسال میشود که به شرح زیر میباشد:
- call - در این حالت publish برگرداده میشود
- addr - آدرس IP ارسال کننده
- clientid - کدد یونیک و واحد در nginx (برای نمایش در log و stat)
- app - نام اپلیکیشن
- name - نام استریم یا کی استریم
به جز موارد بالا، شما میتوانید مواردی را به استریم نیم یا استریم کی اضافه کنید با این تفاوت که nginx آن را بصورت POST همراه arguments های بالا به ادرسی که اعلام کردید ارسال میکند. در این حالت شما متغییر هایی را برای احراز هویت ارسال کننده در نظر میگیرید. شما این متغییرها را با مقدار خواص در زمان ارسال به استریم کی یا استریم نیم اضافه میکنید و با وب سرویس، صحیح بودن آن را بررسی میکنید و در صورتی که درست بود پاسخ 2xx ارسال میکنید و استریم دریافت میشود و درغیر این صورت پاسخ 4xx یا 5xx ارسال میکنید و اتصال کاربر قطع میشود. در ضمن متغییر ها در زمان ارسال به هیچ وجه برای کاربر بیینده استریم ارسال نمیشود. نمونه اطلاعات ارسالی به سمت وب سرویس بصورت زیر است:
{ "app":"hls", "flashver":"FMLE\/3.0 (compatible; FMSc\/1.0)", "swfurl":"rtmp:\/\/localhost:1935\/hls", "tcurl":"rtmp:\/\/localhost:1935\/hls", "pageurl":"", "addr":"127.0.0.1", "clientid":"18", "call":"publish", "name":"event21", "type":"live", "pass":"ali" }
برای مثال استریم نیم من event21 است و میخواهم برای سرور خودم استریم ارسال کنم. در فایل php یک شرط گذاشتم که اگر متغیر pass در متد Post برابر ali نبود خطای 403 نمایش دهد. با این حالت استریم نیم من به event21?pass=ali تغییر میکند. اگر شخصی دیگر هر استریم نیمی را وارد کند بدون پسوند ?pass=ali استریم در سرور برقرار نمیگردد.
اجرای تنظیمات مربوط به احراز هویت در Nginx
برای این کار شما نیاز به یک وب سرویس با قابلیت ساپورت از زبان برنامه نویسی تحت وب، برای بررسی احراز هویت کاربران دارید. من در این آموزش زبان برنامه نویسی php را انتخاب کردم. در صورتی که بخواهید از خود Nginx برای وب سرویس استفاده کنید لازم است که کمپایلر php را داخل سیستم عامل خود نصب کرده و تنظیمات لازم را در Nginx انجام دهید.
با فرض اینکه nginx روی سیستم عامل شما نصب میباشد ادامه این آموزش را مطالعه فرمایید. (درصورتی که nignx را نصب نکردید از این آموزش ها برای ویندوز و لینوکس استفاده کنید.)
آموزش نصب php در nginx روی سیستم عامل ویندوز
برای نصب php ابتدا فایل zip موجود در سایت رسمی php را دانلود و آن را در ریشه nginx قرار دهید. بهتر است نسخه x64 Non Thread Safe را دانلود کنید. سپس در پایان فایل زیپ را استخراج کرده و نام فولدر را php قرار دهید.
برای اجرای php در nginx باید برنامه php-cgi را با تنظیمات b 127.0.0.1:9000- اجرا کنید. اگر ماییلید بصورت دائمی php اجرا شود آن را با nssm بصورت سرویس همانند nginx نصب کنید. برای دانلود nssm به سایت اصلی آن مراجعه کرده، آن را دانلود و فایل nssm.exe را در ریشه nginx قرار دهید و سپس در cmd ویندوز دستورات زیر را اجرا نمایید:
ali@windows$ cd c:\nginx
ali@windows$ nssm install php
دقت داشته باشید که cmd با دسترسی Administrator اجرا شده باشد. همچنین در دستور بالا ریشه اصلی سرویس nginx در c:\nginx قرار دارد که درصورت نیاز میتوانید آن را تغییر دهید. بعد از اجرای دستورات بالا پنجره زیر باز میگردد که مقادیر Arguments را داخل آن به همراه انتخاب محل اجرا، قرار دهید:
Arguments: -b 127.0.0.1:9000
در پایان روی Install Service کلیک کنید. هم اکنون php شما بصورت سرویس نصب شده است و هر وقت ویندوز اجرا شود این برنامه نیز اجرا خواهد شد. سپس در مرحله بعد فایل nginx.conf را که در فولدر conf شاخه اصلی nginx قرار دارد را با نرم افزار های ویرایش متن نظیر Notepad یا Visual Studio Code باز کرده و تنظیمات زیر را بین گروشه های {} server قرار دهید:
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
همچنین درصورتی که پورت 80 شما آزاد باشد، میتوانید آن را برای nginx قرار دهید، کافی است در {} server مقدار listen را از 8080 به 80 تغییر دهید. بعد از ذخیره سازی فایل باید سرویس nginx را restart کنید. برای ریستارت به Task Manager ویندوز رفته و در تب Services سرویس nginx را پیدا کرده و ریستارت کنید.
هم اکنون شما یک nginx با php و nginx-rtmp در ویندوز خود نصب دارید.
آموزش نصب php در nginx روی سیستم لینوکس Ubuntu 18.04
برای نصب php روی nginx باید از نسخه fastCGI process manager استفاده کنید. برای نصب این نسخه از دستور زیر استفاده کنید:
ali@linux$ sudo apt-get install php7.2-fpm
کمپایلر php نصب شده است ولی برای امنیت بیشتر بهتر است یک تغییر در تنظیمات php.ini انجام دهید. فایل php.ini را باز کرده و مقدار cgi.fix_pathinfo را 0 قرار دهید. برای باز کردن فایل از دستور زیر استفاده کنید:ali@linux$ sudo nano /etc/php/7.2/fpm/php.ini
برای تغییر مقدار عبارت cgi.fix_pathinfo به خط 778 بروید. برای رفتن به خط خاصی در nano میتوانید از کلید میانبر ctrl + shift + - استفاده کنید. حتما عبارت ; را از ابتدای خط حذف کنید.
cgi.fix_pathinfo=0
سپس سرویس php-fpm را با دستور زیر ریستارت نمایید.
ali@linux$ sudo service php7.2-fpm restart
اکنون سراغ تنظیمات nginx رفته و کمپایلر php را به آن معرفی نمایید. برای انجام تغییرات فایل nignx.conf را با دستور زیر باز کنید:
ali@linux$ sudo nano /usr/local/nginx/conf/nginx.conf
سپس تنظیمات زیر را در فایل بین گروشه های server {} از زیر مجموعه کروشه http {} قرار دهید:
location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; include fastcgi_params; }
قبل بستن فایل دو تغییرات دیگر انجام دهید. یکی nginx را با یوزر www-data اجرا کنید و دیگری تنظیمات فایل index را برای php در کل وب سرویس ست کنید.
برای اجرا nginx با یوزر www-data در ابتدای فایل عبارت #user nobody; را به user www-data; تغییر دهید:
user www-data;
دقت کنید # را از ابتدای آن حذف کنید. سپس در همان کروشه های server {} زیر عبارت server_name عبارت زیر را قرار دهید:
index index.php index.html index.htm;
سپس فایل را بسته و ذخیره نمایید و سرویس nginx را ریستارت نمایید:
ali@linux$ sudo service nginx restart
تست php نصب شده
برای تست php در وب سرویس، کافی است فایلی با نام info.php در فولدر html در شاخه اصلی nginx ساخته و تابع phpinfo() را قرار دهید. بصورت زیر:
<?php phpinfo();
و با آدرس http://localhost/info.php آن را باز کنید. در صورتی که تنظیمات و مشخصات php نمایش داده شد، کمپایلر به درستی نصب شده است.
برای ساخت این فایل در لینوکس میتوانید از دستور زیر استفاده کنید:
ali@linux$ sudo nano /usr/local/nginx/html/info.php
ساخت فایل احراز هویت با php برای nginx-rtmp
همانطور که بالا گفته شد برای احراز هویت کافی است یک آدرس به nginx ارائه داد. اسکریپت آن برنامه عمیات بررسی اتصال را بر عهده گرفته و درصورت عدم احراز کد خطایی مانند 403 برگرداند. برای ساخت این آدرس کافی است فایلی با نام rtmp_authentication.php در فولدر html در شاخه اصلی nginx ساخته و داخل آن کد زیر را قرار دهید:
<?php if ($_POST['pass'] !== 'ali') { header('HTTP/1.0 403 Forbidden'); }
طبق این فایل اگر عبارت pass برابر مقدار ali نباشد، کد خطای 403 به وبسرویس برگرداده میشود.
برای ساخت این فایل در لینوکس از دستور زیر استفاده کنید:
ali@linux$ sudo nano /usr/local/nginx/html/rtmp_authentication.php
تنظیمات نهایی احراز هویت دریافت استریم rtmp در nginx
در این مرحله باید آدرس فایل php ایجاد شده را به nginx داد که بتواند با آن احراز هویت را انجام دهد. فایل nginx.conf موجود در فولدر conf در شاخه اصلی nginx را باز کرده و در قسمت rtmp داخل کروشه ی server اپلیکیشن hls به به صورت زیر تغییر دهید:
application hls { live on; hls on; hls_path temp/hls; hls_fragment 8s; on_publish http://localhost/rtmp_authentication.php; }
ما در این تنظیمات در اپلیکیشن hls، مقدار آپشن on_publish را آدرس آن اسکریپت php یعنی http://localhost/rtmp_authentication.php قرار دادیم. در هنگام ارسال استریم ، nginx تمامی اطلاعات به همراه اطلاعات اضافی در استریم نیم را بصورت متد Post به این آدرس ارسال خواهد کرد و پاسخ را از آن دریافت خواهد کرد.
امیدوارم این مطلب براتون مفید بوده باشه.
سلام
چطوری مثل آپارات لیست لایو ها رو نمایش بدیم؟
منظورتون از ليست لايو ها چيه؟
قطعا این مطالب جزو مطالب بسیار کم یاب هستند و بسیار باعث خوشحالیه که جناب قائمی عزیز در حال انتشار این گونه مطالب هستند
وقتی شخصی همانند ایشون بی منت و بدون درخواستی تجربیات خودشون رو با ذوق به کاربران انتقال میدند و مهمتر اینکه پاسخگوی کاربران هستند وظیفه میدونیم که از ایشون نهایت تشکر رو داشته باشیم و ما رو مدیون میکنند
پس از راه اندازی این سایت و انتشار دو مطلب اول هر هفته حد اقل دو بار این سایت رو چک میکنم تا مطلب جدید رو بخونم
این یعنی موفقیت در گام اول
جناب قائمی قبل از اینکه این مطلب رو منتشر کنید من رفته بودم سراغ انجینکس که باهاش اشنا بشم و خواستم php رو نصب کنم اما وقتی کد
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
رو در هر جای فایل کانفیک میزاشتم و میزارم باعث میشه انجینکس از کار بیفته و دیگه ران نمیشه
از ماژول کمپایل شده ی rtmp شما هم که الان استفاده میکنم همین مشکل هست
هر جا این کد بره در هر قسمت باعث توقف و ایراد میشه
برای ویندوز سرور استفاده میکنم محبت کنید راهنمایی کنید ممنون میشم
سلام علیکم
ممنون از آموزش های بسیار بسیار عالی و ارزنده شما
واقعا جای خالی این جور مباحث در منابع فارسی خالی بود
فقط یه چیزی
من php را جدا که نصب می کنم درست هست
nginx هم درست هست
اما با هم نه
حتی با کد های شما
حالا مشکل از کجا می تونه باشه؟
ممنون
باسلام دوست عزیز
شما لطف دارید، اگر مطالب براتون مفید بود حتما برای دوستانتان منتشر کنید.
اطلاعاتی که فرمودید خیلی کلی هست، لطفا log قراردهید که ببینم مشکل چیه.
درضمن حتما ورژن ها، ورژن های گفته شده در آموزش باشه
سلام علیکم
اول تشکر می کنم به خاطر اینکه وقت می گذارید خدا خیرتون بده
در ابتدای کار ایراد گرفت از location ~ \.php$ { گه چرا \ هست، من هم تغییر دادم به / بعد یه بار اجرا شد و بعد دوباره که اجرا کردم نشد
تمام خطا ها را ارسال کردم
2019/07/11 12:54:46 [emerg] 4128#3764: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 12:55:10 [emerg] 2400#3204: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 12:55:34 [emerg] 1936#3992: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 12:56:40 [emerg] 5464#4588: "location" directive is not allowed here in C:\nginx/conf/nginx.conf:12
2019/07/11 12:57:18 [emerg] 5836#2524: "location" directive is not allowed here in C:\nginx/conf/nginx.conf:12
2019/07/11 12:57:54 [notice] 3856#960: using the "select" event method
2019/07/11 12:57:54 [notice] 3856#960: nginx/1.14.1
2019/07/11 12:57:54 [info] 3856#960: OS: 260200 build:9200, "", suite:110, type:3
2019/07/11 12:57:54 [notice] 3856#960: start worker processes
2019/07/11 12:57:54 [notice] 3856#960: start worker process 5500
2019/07/11 12:57:54 [notice] 5500#5496: nginx/1.14.1
2019/07/11 12:57:54 [info] 5500#5496: OS: 260200 build:9200, "", suite:110, type:3
2019/07/11 12:57:54 [notice] 5500#5496: create thread 3992
2019/07/11 12:57:54 [notice] 5500#5496: create thread 1288
2019/07/11 12:57:54 [notice] 5500#5496: create thread 1936
2019/07/11 12:58:20 [notice] 4400#2356: using the "select" event method
2019/07/11 12:58:20 [notice] 4400#2356: nginx/1.14.1
2019/07/11 12:58:20 [info] 4400#2356: OS: 260200 build:9200, "", suite:110, type:3
2019/07/11 12:58:20 [notice] 4400#2356: start worker processes
2019/07/11 12:58:20 [notice] 4400#2356: start worker process 5844
2019/07/11 12:58:20 [notice] 5844#5264: nginx/1.14.1
2019/07/11 12:58:20 [info] 5844#5264: OS: 260200 build:9200, "", suite:110, type:3
2019/07/11 12:58:20 [notice] 5844#5264: create thread 1284
2019/07/11 12:58:20 [notice] 5844#5264: create thread 5124
2019/07/11 12:58:20 [notice] 5844#5264: create thread 6128
2019/07/11 12:58:21 [notice] 4204#5936: using the "select" event method
2019/07/11 12:58:21 [notice] 4204#5936: nginx/1.14.1
2019/07/11 12:58:21 [info] 4204#5936: OS: 260200 build:9200, "", suite:110, type:3
2019/07/11 12:58:21 [notice] 4204#5936: start worker processes
2019/07/11 12:58:21 [notice] 4204#5936: start worker process 4940
2019/07/11 12:58:21 [notice] 4940#5584: nginx/1.14.1
2019/07/11 12:58:21 [info] 4940#5584: OS: 260200 build:9200, "", suite:110, type:3
2019/07/11 12:58:21 [notice] 4940#5584: create thread 3488
2019/07/11 12:58:21 [notice] 4940#5584: create thread 4436
2019/07/11 12:58:21 [notice] 4940#5584: create thread 5244
2019/07/11 12:58:23 [notice] 896#4956: using the "select" event method
2019/07/11 12:58:23 [notice] 896#4956: nginx/1.14.1
2019/07/11 12:58:23 [info] 896#4956: OS: 260200 build:9200, "", suite:110, type:3
2019/07/11 12:58:23 [notice] 896#4956: start worker processes
2019/07/11 12:58:23 [notice] 896#4956: start worker process 3684
2019/07/11 12:58:23 [notice] 3684#5268: nginx/1.14.1
2019/07/11 12:58:23 [info] 3684#5268: OS: 260200 build:9200, "", suite:110, type:3
2019/07/11 12:58:23 [notice] 3684#5268: create thread 5720
2019/07/11 12:58:23 [notice] 3684#5268: create thread 4100
2019/07/11 12:58:23 [notice] 3684#5268: create thread 5872
2019/07/11 13:00:22 [emerg] 4272#3048: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:00:49 [emerg] 4552#3588: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:00:58 [emerg] 5212#4288: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:01:02 [emerg] 5484#5428: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:01:35 [emerg] 2964#2968: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:01:36 [emerg] 6100#5420: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:01:38 [emerg] 4272#4728: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:03:47 [emerg] 3996#4316: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:15 [emerg] 5652#5812: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:33 [emerg] 4636#5936: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:36 [emerg] 5520#5508: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:37 [emerg] 6128#1284: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:37 [emerg] 5448#4336: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:38 [emerg] 3012#4724: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:38 [emerg] 596#5860: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:38 [emerg] 3068#5128: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:39 [emerg] 5872#368: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:39 [emerg] 216#3124: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:39 [emerg] 5836#4408: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:40 [emerg] 4612#5212: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:40 [emerg] 5668#3928: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
2019/07/11 13:04:41 [emerg] 5248#4876: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:35
شما php را بصورت سرویس نصب کردید؟
چه به صورت سرویس چه غیر سرویس اجرا نشد
مجبور شدم از xampp استفاده کنم
چطور می تونم استریمم را ضبط کنم
بزودی آموزشی را در این مورد قرار میدهم.
سلام
منم مشکل اقای احمد فر رو دارم به php به صورت سرویس نصبه
ولی کار نمیکنه
این هم خطا
2019/07/30 16:45:57 [emerg] 5960#9644: CreateFile() "C:\nginx/conf/fastcgi_params" failed (2: The system cannot find the file specified) in C:\nginx/conf/nginx.conf:54
لطفا محتویات فایل nginx.conf را قرار دهید.
worker_processes 1;
error_log logs/error.log info;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
application live {
live on;
}
application hls {
live on;
hls on;
hls_path temp/hls;
hls_fragment 8s;
}
}
}
http {
server {
listen 8080;
location / {
root html;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root html;
}
location /hls {
#server hls fragments
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias temp/hls;
expires -1;
}
}
}
اثری از تنظیمات php در این فایل نیست، لطفا طبق آموزش تنظیمات php را در این فایل قرار دهید.
بله من فکر کردم که به فایل خام کانفیک شک کردید برای همین این رو دادم
این هم فایل با تنظیمات
worker_processes 1;
error_log logs/error.log info;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
application live {
live on;
}
application hls {
live on;
hls on;
hls_path temp/hls;
hls_fragment 8s;
}
}
}
http {
server {
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
listen 5080;
location / {
root html;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root html;
}
location /hls {
#server hls fragments
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias temp/hls;
expires -1;
add_header 'Access-Control-Allow-Origin' '*';
}
}
}
باید اضافه کنم که فقط بر روی این انجنیکس php فعال نمیشه
انجنیکسی که نسخه rtmp نیست و از اینجا دانلود کردم
http://nginx.org/download/nginx-1.17.2.zip
به راحتی تونستم php رو فعال کنم
ولی این نمیشه و خطا میده که خطا رو خدمتتون دادم
نکته ی دیگه این هست که کد
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
رو هر جایی از گروشه های {} server قرار میدم کار نمیکنه حدود دو سه هفته کارم اینه اصلا موفق نشدم
نسخه ی php رو که نصب کردید بفرمایید که چی هست؟