PDA

View Full Version : توضیح در مورد cgi و دایرکتوری cgi-bin



2xx2xx
دوشنبه 16 تیر 1393, 10:23 صبح
با سلام
لطفا در مورد اینکه cgi چی هستش و چه ارتباطی با وب سرور apache داره و دایرکتوری cgi-bin که ایجاد میشه کاربردش چیه ؛ منو راهنمایی کنید.
من lpic 2 دارم و الان یه کتابی دارم میخونم که مختص امنیت لینوکس و یونیکس هستش و همه ی زیر و بم وب سرور آپاچی رو میدونم (حداقل اون چیزایی رو که توی کتاب های رسمی lpi هستش!!)
منتها این cgi رو نمیدونم اصلا یعنی چی!!!
اون کتاب هم اصلا هیچ توضیحی در موردش نداده
ممنون از راهنمایی هاتون

eshpilen
دوشنبه 16 تیر 1393, 10:35 صبح
قدیم که زبانهای اختصاصی وب که با آپاچی مجتمع میشن وجود نداشتن یا خیلی کم و غیرمتداول بودن، از cgi برای برنامه نویس دینامیک و دیتابیس و اینها سمت سرور استفاده میشد.
cgi درواقع یعنی یک برنامهء خارجی که روی سرور اجرا میشه و به این صورت از طریق وب قابل دسترسی است که آپاچی درخواست دریافت شده رو بهش پاس میکنه و اون برنامه بعد هدرها و خروجی HTTP (کدهای HTML) رو باید تولید کنه که توسط آپاچی دریافت شده و به کاربر ارسال میشه.
در دایرکتوری cgi-bin هم میتونید انواع برنامه هایی رو که روی سیستم عامل سرور قابل اجرا هستن بذارید به هر زبانی که باشه. مثلا برنامه به زبان سی (البته فایل کامپایل شده اجراییش رو)، سی++، پرل، حتی شل (مثلا bash) و غیره. البته این برنامه ها باید انتظار ورودی به فرمت درخواستهای وب ارسال شده از نرم افزار وب سرور رو داشته باشن و خروجی به فرمت مناسب برای ارسال به مرورگر رو در پاسخ تولید کنن. ورودی این برنامه ها از همون ورودی استاندارد خط فرمان (stdin) دریافت میشه و خروجی هم با همون دستوراتی مثل printf در سی که به stdout ارسال میشه تولید میشه که این خروجی توسط آپاچی دریافت شده و به مرورگر کاربر ارسال میشه.
البته طبیعتا یخورده کانفیگ و نکات ظریف فنی و دردسرهایی داره برای آماده سازی و اجرا.
پس یک برنامهء cgi درواقع یک برنامهء عادی است که روی سیستم عامل اجرا میشه و برای اجرا به آپاچی نیازی نداره، اما برای اینکه بشه از طریق وب باهاش کار کرد، با استاندارد و فرمت ورودی و خروجی خاص وب تنظیم شده و نرم افزار وب سرور بعنوان واسطه ای برای ارسال درخواست کاربر به اون برنامه و ارسال خروجی استاندارد برنامه به کلاینت استفاده میشه.