ການຕິດຕັ້ງ FcgiWrap ແລະເປີດໃຊ້ Perl, Ruby ແລະ Bash ພາສາທີ່ມີຄວາມຄ່ອງແຄ້ວໃນ Gentoo LEMP


ບົດແນະ ນຳ ນີ້ກ່ຽວຂ້ອງຢ່າງເຄັ່ງຄັດກັບອະດີດການຕິດຕັ້ງ LEMP ຕິດຕັ້ງເທິງ Gentoo ແລະປະຕິບັດຕໍ່ບັນຫາທີ່ຂະຫຍາຍຂອງເຊີຟເວີອື່ນເຊັ່ນ: ເປີດໃຊ້ພາສາຂຽນແບບເຄື່ອນໄຫວເຊັ່ນ Perl ຫຼື Bash ຫຼື Ruby ຜ່ານ Fcgiwrap Gateway, ແລະແກ້ໄຂເອກະສານການຕັ້ງຄ່າ Nginx Virtual Hosts ເພື່ອຮັບໃຊ້ເນື້ອຫາແບບເຄື່ອນໄຫວໂດຍໃຊ້ .pl , .rb ແລະອັກສອນ .cgi .

<

  • LEMP stack ຕິດຕັ້ງໃສ່ Gentoo - https://linux-console.net/install-lemp-in-gentoo-linux/
  • ຂັ້ນຕອນທີ 1: ເປີດໃຊ້ FCGIWRAP ໃນ Gentoo LEMP

    Fcgiwrap ແມ່ນສ່ວນ ໜຶ່ງ ຂອງ Nginx FastCGI Common Gateway Interface ທີ່ປະມວນຜົນພາສາອັກສອນແບບເຄື່ອນໄຫວອື່ນໆ, ເຊັ່ນອັກສອນ Perl ຫຼື Bash ຫຼື Ruby, ເຮັດວຽກໂດຍການປະມວນຜົນ ຄຳ ຮ້ອງຂໍທີ່ໄດ້ຮັບຈາກ Nginx, ຜ່ານ TCP ຫຼື Unix Sockets, ໃນລັກສະນະທີ່ເປັນເອກະລາດແລະສົ່ງຜົນໄດ້ຮັບທີ່ຜະລິດຄືນສູ່ Nginx, ເຊິ່ງໃນໄລຍະຈະສົ່ງ ຄຳ ຕອບຄືນໃຫ້ກັບລູກຄ້າສຸດທ້າຍ.

    1. ໃຫ້ເລີ່ມຕົ້ນກ່ອນໂດຍການຕິດຕັ້ງ FCcgiwrap ຂະບວນການໃນ Gentoo Linux ໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

    # emerge --ask www-misc/fcgiwrap

    2. ໂດຍປົກກະຕິແລ້ວແພັກເກັດ Fcgiwrap ບໍ່ໄດ້ໃຫ້ຂໍ້ມູນໃດໆກ່ຽວກັບ Gentoo ເພື່ອຈັດການຂັ້ນຕອນ. ຫຼັງຈາກແພັກເກດໄດ້ຖືກລວບລວມແລະຕິດຕັ້ງສ້າງຕົວອັກສອນ init ຕໍ່ໄປນີ້ເຊິ່ງຊ່ວຍໃຫ້ທ່ານສາມາດຈັດການກັບຂະບວນການ Fcgiwrap ໂດຍໃຊ້ສາມວິທີຄື: ການເປີດຕົວຂັ້ນຕອນໂດຍໃຊ້ Unix Domain Sockets ຫຼືໃຊ້ <ທ້ອງຖິ່ນ b> TCP Sockets ຫຼືໃຊ້ທັງສອງໃນເວລາດຽວກັນ.

    ສ້າງໄຟລ໌ init ໃນເສັ້ນທາງ /etc/init.d/ ທີ່ມີເນື້ອຫາເອກະສານຕໍ່ໄປນີ້.

    # nano /etc/init.d/fcgiwrap

    ຕື່ມເນື້ອໃນເອກະສານຕໍ່ໄປນີ້.

    #!/sbin/runscript
    
    ip="0.0.0.0"
    port="12345"
    
    start() {
    ebegin "Starting fcgiwrap process..."
           /usr/sbin/fcgiwrap -s tcp:$ip:$port &
            tcp_sock=`netstat -tulpn | grep fcgiwrap`
            echo "Socket details: $tcp_sock"
    eend $? "Errors were encountered while starting fcgiwrap process"
    }
    
    stop() {
    ebegin "Stopping fcgiwrap process..."
                    pid=`ps a | grep fcgiwrap | grep tcp | cut -d" " -f1`
    kill -s 1 $pid
                    tcp_sock=`netstat -tulpn | grep fcgiwrap`
                     if test $tcp_sock =  2> /dev/null ; then
                     echo "Fcgiwrap process successfully stoped"
                    tcp_sock=`netstat -atulpn | grep $port`
                    if test $tcp_sock =  2> /dev/null ; then
                    echo "No open fcgiwrap connection found..."
                    else
                    echo "Wait to close fcgiwrap open connections...please verify with 'status'"
                    echo -e "Socket details: \n$tcp_sock"
                     fi
                    else
                    echo "Fcgiwarp process is still running!"
            echo "Socket details: $tcp_sock"
            fi
    eend $? "Errors were encountered while stopping fcgiwrap process..."
    }
    
    status() {
    ebegin "Status fcgiwrap process..."
          tcp_sock=`netstat -atulpn | grep $port`
        if test $tcp_sock =  2> /dev/null ; then
                           echo "Fcgiwrap process not running"
                         else
                    echo "Fcgiwarp process is running!"
                     echo -e "Socket details: \n$tcp_sock"
                    fi
    eend $? "Errors were encountered while stopping fcgiwrap process..."
    }

    ຂະນະທີ່ທ່ານສາມາດເຫັນເອກະສານສະຄິບຖືສອງຕົວແປໃນຕອນເລີ່ມຕົ້ນ, ລຳ ດັບ ip ແລະ port . ປ່ຽນຕົວແປນີ້ຕາມຄວາມຕ້ອງການຂອງທ່ານເອງແລະຮັບປະກັນວ່າພວກມັນບໍ່ຄວນຊໍ້າຊ້ອນກັບການບໍລິການອື່ນໆໃນລະບົບຂອງທ່ານ, ໂດຍສະເພາະການປ່ຽນພອດ - ຄ່າເລີ່ມຕົ້ນທີ່ນີ້ແມ່ນ 12345 - ປ່ຽນຕາມຄວາມ ເໝາະ ສົມ.

    ການໃຊ້ 0.0.0.0 ກ່ຽວກັບຕົວແປ IP ຊ່ວຍໃຫ້ຂະບວນການຜູກແລະຟັງໃນ IP ໃດໆ (ຢູ່ນອກສາມາດເຂົ້າເຖິງໄດ້ຖ້າທ່ານບໍ່ມີໄຟວໍ), ແຕ່ ສຳ ລັບເຫດຜົນດ້ານຄວາມປອດໄພທ່ານຄວນປ່ຽນມັນເພື່ອຟັງຢູ່ໃນທ້ອງຖິ່ນເທົ່ານັ້ນ, ໃນ 127.0.0.1 ຍົກເວັ້ນທ່ານມີເຫດຜົນອື່ນໆເຊັ່ນການຕັ້ງຄ່າປະຕູ Fcgiwrap ຫ່າງໄກສອກຫຼີກຢູ່ໃນຂໍ້ທີ່ແຕກຕ່າງກັນ ສຳ ລັບການປະຕິບັດງານຫຼືການດຸ່ນດ່ຽງການໂຫຼດ.

    3. ຫຼັງຈາກທີ່ເອກະສານຖືກສ້າງຂື້ນ, ເພີ່ມເຕີມການອະນຸຍາດການປະຕິບັດແລະຈັດການກັບຂະບວນການ daemon ໂດຍໃຊ້ການເລີ່ມຕົ້ນ, ຢຸດຫຼືປ່ຽນສະຖານະພາບ. ປຸ່ມປ່ຽນສະຖານະພາບຈະສະແດງຂໍ້ມູນກ່ຽວກັບເຕົ້າຮັບທີ່ກ່ຽວຂ້ອງເຊັ່ນ ຄູ່ IP-PORT ທີ່ມັນຟັງແລະຖ້າມີການເຊື່ອມຕໍ່ທີ່ໃຊ້ງານຢູ່ບ່ອນທີ່ເລີ່ມຕົ້ນ. ເຊັ່ນດຽວກັນ, ຖ້າຂະບວນການດັ່ງກ່າວມີການເຊື່ອມຕໍ່ທີ່ມີການເຄື່ອນໄຫວຢູ່ໃນສະພາບ TIME_WAIT ທ່ານບໍ່ສາມາດເລີ່ມຕົ້ນ ໃໝ່ ໄດ້ຈົນກວ່າທຸກການເຊື່ອມຕໍ່ TCP ຈະປິດ.

    # chmod +x /etc/init.d/fcgiwrap
    # service start fcgiwrap
    # /etc/init.d/fcgiwrap status

    ດັ່ງທີ່ໄດ້ ນຳ ສະ ເໜີ ກ່ອນ ໜ້າ ນີ້ Fcgiwrap ສາມາດເຮັດວຽກພ້ອມກັນໂດຍໃຊ້ເຕົ້າສຽບທັງສອງ, ດັ່ງນັ້ນຈະປ່ຽນຊື່ຂອງອັກສອນທີສອງໃຫ້ fcgiwrap-unix-socket ເພື່ອຮັບປະກັນວ່າທັງສອງສາມາດເລີ່ມຕົ້ນແລະໃຊ້ເວລາດຽວກັນ.

    # nano /etc/init.d/fcgiwrap-unix-socket

    ໃຊ້ເນື້ອຫາເອກະສານຕໍ່ໄປນີ້ ສຳ ລັບເຕົ້າຮັບ UNIX.

    #!/sbin/runscript
    sock_detail=`ps a | grep fcgiwrap-unix | head -1`
    
    start() {
    ebegin "Starting fcgiwrap-unix-socket process..."
            /usr/sbin/fcgiwrap -s unix:/run/fcgiwrap-unix.sock &
            sleep 2
            /bin/chown nginx:nginx /run/fcgiwrap-unix.sock
            sleep 1
            sock=`ls -al /run/fcgiwrap-unix.sock`
            echo "Socket details: $sock"
    eend $? "Errors were encountered while starting fcgiwrap process"
    }
    
    stop() {
    ebegin "Stopping fcgiwrap-unix-socket process..."
                    pid=`ps a | grep fcgiwrap | grep unix | cut -d" " -f1`
                    rm -f /run/fcgiwrap-unix.sock                 
                    kill -s 1 $pid
                    echo "Fcgiwrap process successfully stoped"
                    #killall /usr/sbin/fcgiwrap
            sleep 1
            echo "Socket details: $sock"
    eend $? "Errors were encountered while stopping fcgiwrap process..."
    }
    
    status() {
    ebegin "Status fcgiwrap-unix-socket process..."
      if test -S /run/fcgiwrap-unix.sock; then
           echo "Process is started with socket: $sock_detail"
            else
            echo "Fcgiwrap process not running!"
            fi
    eend $? "Errors were encountered while stopping fcgiwrap process..."
    }

    4. ຮັບປະກັນອີກຄັ້ງ ໜຶ່ງ ວ່າແຟ້ມເອກະສານນີ້ສາມາດປະຕິບັດໄດ້ແລະໃຊ້ສະຫຼັບບໍລິການດຽວກັນ: ເລີ່ມ , ຢຸດ ຫຼື ສະຖານະພາບ ຂ້ອຍໄດ້ ກຳ ນົດເສັ້ນທາງເລີ່ມຕົ້ນ ສຳ ລັບຊັອກເກັດນີ້ຢູ່ໃນ /run/fcgiwrap-unix.sock ເສັ້ນທາງລະບົບ. ເລີ່ມຕົ້ນຂັ້ນຕອນແລະກວດສອບມັນໂດຍໃຊ້ ສະຖານະພາບ ສັບປ່ຽນຫລືບອກ /ແລ່ນ ເນື້ອຫາໄດເລກະທໍລີແລະຊອກຫາຊ່ອງສຽບ, ຫຼືໃຊ້ ps-a | ຄໍາສັ່ງ grep fcgiwrap .

    # chmod +x /etc/init.d/fcgiwrap-unix-socket
    # service start fcgiwrap-unix-socket
    # /etc/init.d/fcgiwrap-unix-socket status
    # ps -a | grep fcgiwrap

    ດັ່ງທີ່ກ່າວມາກ່ອນ ໜ້າ ນີ້ Fcgiwrap ສາມາດໃຊ້ກັບເຕົ້າສຽບ TCP ແລະ UNIX ໄດ້ພ້ອມກັນ, ແຕ່ຖ້າທ່ານບໍ່ຕ້ອງການເຊື່ອມຕໍ່ປະຕູພາຍນອກຕິດກັບ Unix Domain Socket ເທົ່ານັ້ນ, ເພາະວ່າມັນໃຊ້ການສື່ສານແບບ interprocess ເຊິ່ງໄວກວ່າການສື່ສານຜ່ານ ການເຊື່ອມຕໍ່ກັບ TCP loopback, ແລະໃຊ້ TCP ທີ່ໃຊ້ຈ່າຍ ໜ້ອຍ ລົງ.

    ຂັ້ນຕອນທີ 2: ເປີດໃຊ້ CGI Scripts ຢູ່ Nginx

    5. ສຳ ລັບ Nginx ຈະແຍກແລະແລ່ນອັກສອນ Perl ຫຼື Bash ຜ່ານ Fast Common Gateway Interface, Virtual Hosts ຕ້ອງໄດ້ຮັບການຕັ້ງຄ່າດ້ວຍ ຄຳ ນິຍາມຂອງ Fcgiwrap ກ່ຽວກັບເສັ້ນທາງຮາກຫຼືໃບລາຍງານສະຖານທີ່.

    ຕົວຢ່າງ, ຖືກ ນຳ ສະ ເໜີ ຢູ່ດ້ານລຸ່ມ (localhost), ເຊິ່ງເປີດໃຊ້ຕົວອັກສອນ Perl ແລະ CGI ໃນທຸກເອກະສານທີ່ວາງໄວ້ໃນເສັ້ນທາງຮາກ (/var/www/localhost/htdocs/) ກັບ .pl > ແລະ .cgi ການຂະຫຍາຍໂດຍໃຊ້ Fcgiwrap TCP Sockets ສຳ ລັບເສັ້ນທາງເອກະສານເລີ່ມຕົ້ນ, ສະຖານທີ່ທີສອງໂດຍໃຊ້ Unix Domain Sockets , ພ້ອມດ້ວຍເອກະສານ index.pl ແລະສະຖານທີ່ທີສາມແມ່ນ ກຳ ລັງໃຊ້ TCP sockets ພ້ອມດ້ວຍເອກະສານ index.cgi .

    ວາງເນື້ອຫາຕໍ່ໄປນີ້, ຫຼືພຽງແຕ່ບາງສ່ວນຂອງມັນ, ໃສ່ເອກະສານການຕັ້ງຄ່າ Virtual Host ທີ່ທ່ານຕ້ອງການທີ່ທ່ານຕ້ອງການທີ່ຈະກະຕຸ້ນອັກສອນ Perl ຫຼື Bash ແບບເຄື່ອນໄຫວດ້ວຍ UNIX ຫຼື TCP Sockets ພາຍໃຕ້ສະຖານທີ່ຕ່າງໆ, ໂດຍດັດແປງ fastcgi_pass ຄຳ ຖະແຫຼງການໂຕ້ຖຽງ.

    # nano /etc/nginx/sites-available/localhost.conf

    ແກ້ໄຂ localhost.conf ເພື່ອເບິ່ງໃນຮູບແບບຂ້າງລຸ່ມນີ້.

    server {
                                    listen 80;
                                    server_name localhost;
    
    access_log /var/log/nginx/localhost_access_log main;
    error_log /var/log/nginx/localhost_error_log info;
    
                   root /var/www/localhost/htdocs/;
                    location / {
                    autoindex on;
                    index index.html index.htm index.php;
                                    }
    
    ## PHP –FPM Gateway ###
                                location ~ \.php$ {
                                try_files $uri =404;
                                include /etc/nginx/fastcgi.conf;
                                fastcgi_pass 127.0.0.1:9001;
    				}
    
    ## Fcgiwrap Gateway on all files under root with TCP Sockets###
    location ~ \.(pl|cgi|rb)$ {
                    fastcgi_index index.cgi index.pl;
                    include /etc/nginx/fastcgi.conf;
    fastcgi_pass 127.0.0.1:12345;    
                                    }                                                                                                                             
    
    ## Fcgiwrap Gateway on all files under root second folder with index.pl using UNIX Sockets###
    location /second {
                                    index index.pl; 
    root /var/www/localhost/htdocs/;
                                    location ~ \.(pl|cgi|rb)$ {
                                    include /etc/nginx/fastcgi.conf;
                                    fastcgi_pass unix:/run/fcgiwrap-unix.sock;      
                                    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                                                 }                                                                                                            
                                                    }
    
    ## Fcgiwrap Gateway on all files under root third folder with index.cgi using TCP Sockets###
    location /third {
                                    index index.cgi;               
                                    location ~ \.(pl|cgi|rb)$ {
                                    include /etc/nginx/fastcgi.conf;
                                     fastcgi_pass 127.0.0.1:12345;       
                                    }                                                                                             
      }

    6. ຫຼັງຈາກທີ່ທ່ານ ສຳ ເລັດການດັດແກ້ Nginx localhost.conf , ຫຼືເອກະສານການຕັ້ງຄ່າ Virtual Host ສະເພາະຂອງທ່ານ, ຍ້າຍໄປທີ່ເສັ້ນທາງຮາກຂອງເວັບໄຊທ໌ຂອງທ່ານ, ສ້າງແຟ້ມທັງສອງໂຟນເດີເພື່ອສະທ້ອນໃບລາຍງານສະຖານທີ່ຂອງທ່ານ, ແລະສ້າງເອກະສານດັດສະນີ ສຳ ລັບ ທຸກໆສະຖານທີ່ທີ່ມີການຂະຫຍາຍສະເພາະຂອງມັນ.

    # cd /var/www/localhost/htdocs
    # mkdir second third

    ສ້າງເອກະສານ index.pl ຢູ່ບ່ອນທີສອງທີ່ມີເນື້ອຫາຕໍ່ໄປນີ້.

    # nano /var/www/localhost/htdocs/second/index.pl

    ເພີ່ມເນື້ອຫານີ້ເພື່ອໃຫ້ໄດ້ຕົວແປສິ່ງແວດລ້ອມ.

    #!/usr/bin/perl
    print "Content-type: text/html\n\n";
    print <<HTML;
                    <html>
                    <head><title>Perl Index</title></head>
                    <body>
                                    <div align=center><h1>A Perl CGI index on second location with env variables</h1></div>
                    </body>
    HTML
    print "Content-type: text/html\n\n"; foreach my $keys (sort keys %ENV) { print "$keys =
    $ENV{$keys}<br/>\n";
    }
    exit;

    ຈາກນັ້ນສ້າງເອກະສານ index.cgi ຢູ່ໃນ ຕຳ ແໜ່ງ ທີສາມດ້ວຍເນື້ອຫາຕໍ່ໄປນີ້.

    # nano /var/www/localhost/htdocs/third/index.cgi

    ເພີ່ມເນື້ອຫານີ້ເພື່ອໃຫ້ໄດ້ຕົວແປສິ່ງແວດລ້ອມ.

    #!/bin/bash
    echo Content-type: text/html
    echo ""
    cat << EOF
    <HTML>
    <HEAD><TITLE>Bash script</TITLE></HEAD>
    <BODY><PRE>
    <div align=center><h1>A BASH CGI index on third location with env variables</h1></div>
    EOF
    env
    cat << EOF
    </BODY>
    </HTML>
    EOF

    7. ເມື່ອ ສຳ ເລັດການດັດແກ້, ເຮັດໃຫ້ທັງສອງແຟ້ມປະຕິບັດໄດ້, ໃຫ້ເຊີບເວີ Nginx ຄືນ ໃໝ່ ແລະໃຫ້ແນ່ໃຈວ່າທັງສອງເຕົ້າຮັບ Fcgiwrap ກຳ ລັງແລ່ນຢູ່.

    # chmod +x /var/www/localhost/htdocs/second/index.pl
    # chmod +x /var/www/localhost/htdocs/third/index.cgi
    # service nginx restart
    # service fcgiwrap start
    # service fcgiwrap-unix-socket start

    ຕໍ່ໄປ, ປ່ຽນເສັ້ນທາງທ່ອງເວັບໃນທ້ອງຖິ່ນຂອງທ່ານຕາມ URL ຕໍ່ໄປນີ້.

    http://localhost 
    
    http://localhost/second/ 
    
    http://localhost/third/

    ຜົນໄດ້ຮັບຄວນຈະປາກົດຢູ່ໃນຫນ້າຈໍຂ້າງລຸ່ມນີ້.

    8. ຖ້າທຸກຢ່າງຢູ່ໃນສະຖານທີ່ແລະມີການຕັ້ງຄ່າຢ່າງຖືກຕ້ອງ, ເຮັດໃຫ້ທັງສອງ Fcgiwrap daemons ສາມາດເລີ່ມຕົ້ນໂດຍອັດຕະໂນມັດ, ຫຼັງຈາກເລີ່ມຄືນ ໃໝ່ ໂດຍການອອກ ຄຳ ສັ່ງຕໍ່ໄປນີ້ (ໃນກໍລະນີທີ່ທ່ານໄດ້ຕັ້ງຄ່າ Nginx ໃຊ້ທັງເຕົ້າສຽບ CGI).

    # rc-update add fcgiwrap default
    # rc-update add fcgiwrap-unix-socket default

    ຂັ້ນຕອນທີ 3: ກະຕຸ້ນການສະ ໜັບ ສະ ໜູນ Ruby ໃນ Fcgiwrap

    9. ຖ້າທ່ານ ຈຳ ເປັນຕ້ອງ ດຳ ເນີນການຂຽນບົດ Ruby ແບບເຄື່ອນໄຫວໃນ Nginx FCGI ທ່ານຕ້ອງຕິດຕັ້ງນາຍພາສາ Ruby ເທິງ Gentoo ດ້ວຍ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

    # emerge --ask ruby

    10. ຫຼັງຈາກທີ່ແພັກເກັດໄດ້ຖືກລວບລວມແລະຕິດຕັ້ງແລ້ວ, ຍ້າຍໄປທີ່ Nginx ສະຖານທີ່ສາມາດໃຊ້ໄດ້ ແລະດັດແກ້ເອກະສານ localhost.conf ໂດຍຕື່ມໃສ່ ຄຳ ຖະແຫຼງຕໍ່ໄປນີ້ກ່ອນວົງເລັບ curly ສຸດທ້າຍ " }” , ເຊິ່ງກະຕຸ້ນການສະ ໜັບ ສະ ໜູນ ທີ່ຈະເອີ້ນໃຊ້ Ruby scripts ທີ່ຢູ່ສີ່ບ່ອນທີ່ຢູ່ພາຍໃຕ້ເສັ້ນທາງຮາກຂອງເອກະສານທີ່ ກຳ ນົດໄວ້ໂດຍ Nginx localhost.

    # nano /etc/nginx/sites-available/localhost.conf

    ໃຊ້ທິດທາງ Nginx ຕໍ່ໄປນີ້.

    ## Fcgiwrap Gateway on all files under root fourth folder with index.rb under TCP Sockets###
                    location /fourth {
                                    index index.rb;
                                    location ~ \.rb$ {
                                    include /etc/nginx/fastcgi.conf;
                                    fastcgi_pass 127.0.0.1:12345;       
                                                    }                                                                                                             
                                   }             
    ## Last curly bracket which closes Nginx server definitions ##
    }

    11. ດຽວນີ້, ເພື່ອທົດສອບການຕັ້ງຄ່າສ້າງໄດເລກະທໍລີທີສີ່ພາຍໃຕ້ /var/www/localhost/htdocs ສ້າງສະຄິບດັດສະນີ Ruby ທີ່ປະຕິບັດໄດ້ດ້ວຍການຂະຫຍາຍ .rb ແລະເພີ່ມຕໍ່ໄປນີ້ ເນື້ອຫາ.

    # mkdir /var/www/localhost/htdocs/fourth
    # nano /var/www/localhost/htdocs/fourth/index.rb

    ຕົວຢ່າງ Ruby index.rb.

    #!/usr/bin/ruby
    puts "HTTP/1.0 200 OK"
    puts "Content-type: text/html\n\n"
    puts "<html><HEAD><TITLE>Ruby script</TITLE></HEAD>"
    puts "<BODY><PRE>"
    puts "<div align=center><h1>A Ruby CGI index on fourth location with env variables</h1></div>"
    system('env')

    12. ຫຼັງຈາກທີ່ທ່ານເພີ່ມການອະນຸຍາດການປະຕິບັດໃນເອກະສານ, ເລີ່ມຕົ້ນ Nginx daemon ເພື່ອ ນຳ ໃຊ້ການຕັ້ງຄ່າ.

    # chmod +x /var/www/localhost/htdocs/fourth/index.rb
    # service nginx restart

    ເປີດໂປແກຼມທ່ອງເວັບຂອງທ່ານແລະ ນຳ ທາງໄປທີ່ URL http:// localhost/ສີ່/, ເຊິ່ງຄວນ ນຳ ສະ ເໜີ ເນື້ອຫາຕໍ່ໄປນີ້ໃຫ້ທ່ານ.

    ນັ້ນແມ່ນມັນ ສຳ ລັບດຽວນີ້, ທ່ານໄດ້ຕັ້ງຄ່າ Nginx ໃຫ້ບໍລິການແບບເຄື່ອນໄຫວແບບເຄື່ອນໄຫວແບບ Perl, Ruby ແລະ Bash ໃນ FastCGI Gateway, ແຕ່ວ່າ, ໃຫ້ຮູ້ວ່າການໃຊ້ສະຄິບທີ່ແປໄດ້ແບບນີ້ໃນ Nginx CGI Gateway ສາມາດເປັນອັນຕະລາຍແລະບັງຄັບຄວາມສ່ຽງດ້ານຄວາມປອດໄພຢ່າງຈິງຈັງຕໍ່ກັບ server ຂອງທ່ານເພາະວ່າພວກເຂົາ ດໍາເນີນການໂດຍໃຊ້ຫອຍທີ່ມີການເຄື່ອນໄຫວຢູ່ພາຍໃຕ້ລະບົບຂອງທ່ານ, ແຕ່ສາມາດຂະຫຍາຍອຸປະສັກທີ່ກໍານົດໄວ້ໂດຍ HTML ຄົງທີ່, ເພີ່ມການເຮັດວຽກແບບເຄື່ອນໄຫວໃຫ້ກັບເວັບໄຊທ໌ຂອງທ່ານ.