# 🧬 آموزش نصب FcgiWrap و فعالسازی Perl، Ruby و Bash در محیط LEMP روی Gentoo
در محیط LEMP که بهطور معمول از Nginx و PHP-FPM استفاده میکند، اجرای اسکریپتهای غیر-PHP (مانند Perl، Bash و Ruby) نیازمند یک رابط FastCGI مانند **FcgiWrap** است.
---
## 🧱 پیشنیازها
* نصب **Gentoo Linux**
* پشتهی LEMP فعال (Nginx + MariaDB + PHP)
* کاربر با دسترسی `sudo`
* فعال بودن USE Flags مناسب در Portage
---
## ۱) نصب FcgiWrap روی Gentoo
ابتدا مطمئن شوید که پکیجها بهروز هستند:
```bash
sudo emerge --sync
```
### 🔹 نصب FcgiWrap:
```bash
sudo emerge --ask www-misc/fcgiwrap
```
در صورت نیاز، از این USE flag پشتیبانی کنید:
```bash
echo "www-misc/fcgiwrap systemd" >> /etc/portage/package.use/fcgiwrap
```
### 🔹 راهاندازی سرویس fcgiwrap با systemd:
```bash
sudo systemctl enable --now fcgiwrap.socket
```
بررسی وضعیت:
```bash
sudo systemctl status fcgiwrap.socket
```
---
## ۲) فعالسازی اجرای اسکریپتهای Perl، Bash و Ruby
برای اجرای اسکریپتهای غیر-PHP در Nginx باید از FcgiWrap استفاده کنید. ساختار کلی اجرای FastCGI بهصورت زیر است:
---
### 📁 نمونه مسیر اسکریپتها
فرض کنید اسکریپتها در مسیر زیر قرار دارند:
* `/var/www/cgi-bin/hello.pl`
* `/var/www/cgi-bin/hello.rb`
* `/var/www/cgi-bin/hello.sh`
---
## ۳) پیکربندی Nginx برای FastCGI و FcgiWrap
### 🔧 فایل Nginx Virtual Host:
```bash
sudo nano /etc/nginx/sites-enabled/default.conf
```
### 📄 نمونه پیکربندی:
```nginx
server {
listen 80;
server_name localhost;
root /var/www;
location /cgi-bin/ {
gzip off;
fastcgi_pass unix:/run/fcgiwrap.socket;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /var/www;
}
}
```
---
## ۴) نمونه اسکریپتهای اجرایی
### 🔸 Perl (`/var/www/cgi-bin/hello.pl`)
```perl
#!/usr/bin/env perl
print "Content-type: text/html\n\n";
print "<h1>Hello from Perl!</h1>";
```
### 🔸 Bash (`/var/www/cgi-bin/hello.sh`)
```bash
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<h1>Hello from Bash!</h1>"
```
### 🔸 Ruby (`/var/www/cgi-bin/hello.rb`)
```ruby
#!/usr/bin/env ruby
puts "Content-type: text/html\n\n"
puts "<h1>Hello from Ruby!</h1>"
```
⏺️ سپس مجوز اجرایی بدهید:
```bash
chmod +x /var/www/cgi-bin/hello.*
```
---
## ۵) نصب مفسر زبانها (در صورت نیاز)
```bash
sudo emerge --ask dev-lang/perl
sudo emerge --ask dev-lang/ruby
sudo emerge --ask app-shells/bash
```
---
## ۶) تست نهایی
مرورگر را باز کنید:
* [http://your-server-ip/cgi-bin/hello.pl](http://your-server-ip/cgi-bin/hello.pl)
* [http://your-server-ip/cgi-bin/hello.sh](http://your-server-ip/cgi-bin/hello.sh)
* [http://your-server-ip/cgi-bin/hello.rb](http://your-server-ip/cgi-bin/hello.rb)
اگر Nginx و FcgiWrap بهدرستی تنظیم شده باشند، خروجی HTML مشاهده خواهید کرد.
---
## 🔐 امنیت و بهینهسازی
* **دسترسی به مسیر `/cgi-bin/` را محدود کنید** در صورت عدم نیاز عمومی.
* **احراز هویت HTTP Basic** را میتوانید روی این مسیر فعال کنید.
* برای محیط تولید، پیشنهاد میشود اجرای Ruby/Bash از طریق CGI تنها در صورت نیاز واقعی انجام شود، وگرنه ممکن است مخاطرات امنیتی ایجاد کند.
---
## ✅ نتیجهگیری
با استفاده از **FcgiWrap** میتوانید اسکریپتهای Bash، Ruby و Perl را در کنار PHP در محیط LEMP روی **Gentoo Linux** اجرا کنید. این قابلیت مخصوصاً برای **سرورهای داخلی**، پروژههای DevOps، یا ابزارهای اسکریپتی بسیار کاربرد دارد.