Fcgiwrap là một server đơn giản dùng để chạy các ứng dụng CGI qua FastCGI. Chúng ta có thể sử dụng nó để cung cấp hỗ trợ CGI sạch cho webserver nginx. Nó là một máy chủ nhẹ với các tùy chọn cấu hình bằng không, cho phép sử dụng cùng một nhóm để chạy các trang web khác nhau. Dưới đây là cách cài đặt fcgiwrap trên Ubuntu 20.04.
CGI (Common Gateway Interface) là phương pháp ban đầu để tạo các trang web động. Hướng dẫn dưới đây giả định rằng bạn đã cài đặt và có cấu hình máy chủ Nginx trên Ubuntu Linux 20.04 LTS.
Cài đặt fcgiwrap trên Ubuntu 20.04
Mở terminal và nhập các lệnh sau để cập nhật các gói đã cài đặt bảo mật trên Ubuntu 20.04:
$ sudo apt update
$ sudo apt upgrade
Để cài đặt các gói fcgiwrap cho Nginx, hãy chạy lệnh sau với tư cách root user với sự trợ giúp của [nixmcd name=”apt”]:
$ sudo apt install fcgiwrap
Bật dịch vụ fcgiwrap trên Ubuntu 20.04
Sử dụng lệnh systemctl như sau:
$ sudo systemctl enable fcgiwrap
$ sudo systemctl start fcgiwrap
$ sudo systemctl status fcgiwrap
Cấu hình fcgiwrap cho Nginx
Bây giờ, chúng ta đã cài đặt fcgiwrap, tiếp theo là tạo cấu hình mới cho tệp FastCGI:
sudo nano /etc/nginx/fcgiwrap.conf
Nối các cấu hình sau:
location /cgi-bin/ {
# Disable gzip (it makes scripts feel slower since they have to complete
# before getting gzipped)
gzip off;
# Set the root to /usr/lib (inside this location this means that we are
# giving access to the files under /usr/lib/cgi-bin)
root /usr/lib;
# Fastcgi socket
fastcgi_pass unix:/var/run/fcgiwrap.socket;
# Fastcgi parameters, include the standard ones
include /etc/nginx/fastcgi_params;
# Adjust non standard parameters (SCRIPT_FILENAME)
fastcgi_param SCRIPT_FILENAME /usr/lib$fastcgi_script_name;
}
Chỉnh sửa nginx.conf hoặc file domain ảo. Ví dụ:
sudo nano /etc/nginx/nginx.conf
## OR ##
sudo nano /etc/nginx/sites-enabled/default
Tiếp theo, xác định vị trí server và thêm chỉ thị sau:
## Trun on /cgi-bin/ support to run CGI apps ##
include /etc/nginx/fcgiwrap.conf;
Lưu và đóng file. Tải lại hoặc khởi động lại server Nginx:
$ sudo nginx -t
$ sudo nginx -s reload
Viết script CGI cơ bản
Viết một script CGI cơ bản bằng FastCGI khá đơn giản. Trước tiên, chúng ta phải tạo một thư mục cgi-bin trong /usr/lib/ bằng cách sử dụng lệnh mkdir:
$ sudo mkdir -vp /usr/lib/cgi-bin/
mkdir: created directory '/usr/lib/cgi-bin/'
Script Hello World CGI trong Bash
Mở trình soạn thảo văn bản và tạo tệp sau:
sudo vi /usr/lib/cgi-bin/hello.cgi
Nối mã bash sau:
#!/usr/bin/env bash
echo "Content-type: text/html"
echo ""
now="22/12/2024"
echo '<html><head><title>Hello World - CGI app</title></head>'
echo '<body>'
echo '<h2>Hello World!</h2>'
echo "Computer name : $HOSTNAME<br/>"
echo "The current date and time : ${now}<br/>"
echo '</body>'
echo '</html>'
Đặt quyền thực thi trên /usr/lib/cgi-bin/hello.cgi bằng lệnh chmod và lệnh chown:
$ sudo chmod +x -v /usr/lib/cgi-bin/hello.cgi
mode of '/usr/lib/cgi-bin/hello.cgi' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
Kiểm tra bằng cách mở trình duyệt web và nhập url:
https://your-domain-here/cgi-bin/hello.cgi
## For instance ##
https://www.cyberciti.biz/cgi-bin/hello.cgi
Bạn có thể viết các ứng dụng hoặc script CGI bằng bất kỳ ngôn ngữ lập trình nào. CGI cho các app/script có thể xuất hiện đơn giản và dễ dàng, nhưng để viết được các ứng dụng đó lại không hề đơn giản.