آموزش نصب FcgiWrap و فعال‌سازی Perl، Ruby و Bash در محیط LEMP روی Gentoo پرینت


# 🧬 آموزش نصب 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، یا ابزارهای اسکریپتی بسیار کاربرد دارد.

 


آیا این پاسخ به شما کمک کرد؟

  • 0
« برگشت