CGI یا Common Gateway Interface یک رابط میان کلاینت وب و وب سرور است که وظیفه اجرای برنامه یا اسکریپت CGI را برعهده دارد. اگرچه CGI امروزه تا حد زیادی قدیمی شده و با زبان های برنامه نویسی مدرن تری مثل PHP جایگزین شده است، اما همچنان یک ابزار قدرتمند برای مدیران سرورهای لینوکسی جهت مانیتورینگ و مدیریت سرور از طریق مرورگر وب به حساب می آید.
در این آموزش قصد داریم قدم به قدم نحوه نوشتن اسکریپت های CGI با زبان های مختلف برنامه نویسی را در لینوکس بررسی کنیم.
نصب وب سرور برای اجرای CGI
برای اجرای برنامه های تحت وب نیاز به یک وب سرور دارید. در این آموزش از وب سرور Apache استفاده می کنیم.
نصب Apache در سرورهای اوبونتو و دبیان:
sudo apt-get install apache2
نصب Apache در سرورهای ردهت مثل سنت او اس و فدورا:
yum install httpd
اجرای سرویس Apache بدون نیاز به ریبوت:
sudo service httpd start
اجرای Apache در CentOS 7 و نسخه های جدیدتر:
systemctl start httpd
پس از نصب و راه اندازی، با وارد کردن آی پی سرور در مرورگر (یا در محیط لوکال از آدرس های http://localhost
یا 127.0.0.1
) باید صفحه پیش فرض آپاچی را مشاهده کنید.
ایجاد اولین اسکریپت CGI
اکنون باید اسکریپت خود را ایجاد کنیم. بسته به نوع توزیع لینوکس، محل ذخیره اسکریپت متفاوت است:
- در سیستم های دبیان و اوبونتو:
/usr/lib/cgi-bin/example-bash.sh
- در سیستم های ردهت و سنت او اس:
/var/www/cgi-bin/example-bash.sh
اطمینان حاصل کنید که فایل اسکریپت شما دارای مجوز اجرایی باشد:
sudo chmod +x /usr/lib/cgi-bin/example-bash.sh
یا
sudo chmod +x /var/www/cgi-bin/example-bash.sh
اگر در ایجاد اسکریپت و دادن مجوزها به مشکل برخوردید، از آموزش های ساده تر موجود در اینترنت استفاده کنید.
نمونه اسکریپت Bash برای CGI:
محتوای زیر را در فایل example-bash.sh
قرار دهید:
#!/bin/bash
echo "Content-type: text/html"
echo ''
echo 'CGI Bash example<br>'
df -h / | grep -v Filesystem
مشاهده نتیجه در مرورگر
با وارد کردن آدرس زیر در مرورگر (جایگزین کردن ipaddress
با آی پی واقعی سرور) می توانید نتیجه را مشاهده کنید:
http://ipaddress/cgi-bin/example-bash.sh
نوشتن CGI با زبان Perl
برای ایجاد یک اسکریپت CGI با Perl، فایلی با نام example-perl.pl
در مسیر cgi-bin
ایجاد کنید و کد زیر را در آن قرار دهید:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print <<htmlcode;
<html>
<head>
<title>CGI Perl Example</title>
</head>
<body>
<h1>CGI Perl Example</h1>
<p>CGI Perl Example</p>
</body>
htmlcode
مجوز اجرایی فایل را فراموش نکنید.
نوشتن CGI با زبان Python
فایلی به نام example-python.py
در مسیر cgi-bin
ایجاد کنید و کد زیر را در آن قرار دهید:
#!/usr/bin/python3
print("Content-type: text/html\n")
print("""
<html>
<head>
<title>CGI Python Example</title>
</head>
<body>
<h1>CGI Python Example</h1>
<p>CGI Python Example</p>
</body>
</html>
""")
نکته: اطمینان حاصل کنید که بالای فایل به درستی مسیر مفسر پایتون (#!/usr/bin/python3
) را تعریف کرده اید.
نوشتن CGI با زبان C و C++
برای این کار با زبان C یا C++ نیاز به نصب کامپایلر دارید.
نصب کامپایلر در سیستم های ردهت:
yum install gcc gcc-c++ kernel-devel
نصب کامپایلر در سیستم های دبیان و اوبونتو:
sudo apt-get install build-essential
نمونه کد C++ برای CGI:
یک فایل به نام example-cpp.c
در مسیر cgi-bin
ایجاد کنید و کد زیر را در آن بنویسید:
#include <iostream>
using namespace std;
int main()
{
cout << "Content-type: text/html" << endl << endl;
cout << "<h1>CGI C++ Example</h1>" << endl;
return 0;
}
کامپایل کد:
در اوبونتو:
sudo g++ -o /usr/lib/cgi-bin/example-cpp example-cpp.c
در CentOS:
sudo g++ -o /var/www/cgi-bin/example-cpp example-cpp.c
حالا با وارد کردن آدرس فایل در مرورگر می توانید خروجی برنامه خود را مشاهده کنید.
نوین هاست یار نوین شماست
با یادگیری اصول پایه CGI و استفاده از زبان های مختلف برنامه نویسی می توانید مدیریت و مانیتورینگ سرورهای لینوکسی خود را به راحتی و از طریق مرورگر انجام دهید. تقریبا هر کاری که در خط فرمان قابل انجام است را می توان با اسکریپت های CGI نیز پیاده سازی کرد. تنها محدودیت شما خلاقیت شماست!