Gentoo LEMP -ב Bash -ו Perl, Ruby לש תוימניד תופש תרשפאמו FcgiWrap תנקתה


.םיטפירקס .cgi .pl , .rb תועצמאב ימניד ןכות שיגהל ידכ Nginx לש םיילאוטריו םיחראמ לש הרוצת יצבק ךורעלו ,Fcgiwrap Gateway ךרד Ruby וא Bash וא Perl ומכ תוימניד טפ

    Gentoo LEMP -ב FCGIWRAP תא לעפה :1 בלש

    Fcgiwrap מ קלח אוה קשממ Nginx FastCGI Common Gateway םיטפירקס ומכ ,תורחא תוימניד טפירקס תופש דבעמה Perl וא Bash וא Ruby, מ ולבקתהש תושקב דוביע ידי לע דבוע- Nginx, ךרד TCP

    .האבה הדוקפה תועצמאב Gentoo Linux -ב FCcgiwrap ךילהת תנקתהב תישאר ליחתנ .1

    # emerge --ask www-misc/fcgiwrap

    .תינמז וב םהינש תועצמאב וא תועצמאב וא Unix Domain Sockets תועצמאב ךילהתה תלעפה וא :תושיג שולש תועצמאב Fcgiwrap ךילהת תא להנל ךל םיעייסמה init םיאבה םי

    .אבה ץבוקה ןכות םע /etc/init.d/ ביתנב init ץבוק רוצ

    # 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..."
    }

    .םאתהב הנש - 12345 איה ןאכ לדחמה תרירב - האיצי הנתשמ דחוימב ,ךלש תכרעמב םירחא םיתורישל םיפפוח אל םהש אדוו ךלש םיכרצה יפל הלאה םינתשמה תא הנש . האיצי ip המאתהב

    .םיסמוע ןוזיא וא םיעוציב ךרוצל רחא תמוצב Fcgiwrap רעש לש קוחרמ הנקתה ומכ תורחא תוביס ךל שי ןכ םא אלא , 127.0.0.1 ךיראתב דבלב תימוקמ הנזאהל ותוא תונשל ךילע החטבא ימעטמ ךא ,(שא תמוח

    .ורגסיי TCP ירוביח לכש דע שדחמ ותוא ליעפהל לוכי ךניא TIME_WAIT בצמב םיליעפ םירוביח שי ךילהתל םא ,ןכ ומכ .וב היה והשלכ ליעפ רוביח םאו בישקמ אוהש גוז IP-PORT ןוגכ יטנוולר י

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

    .ןמז ותואב םהינש תא ליעפהלו ליחתהל היהי ןתינש חיטבהל ידכ , fcgiwrap-unix-socket ל ינשה טפירקסה םש תא טעמ הנשיש ךכ ,םיעקשה ינש תועצמאב תינמז וב ץורל לוכי Fcgiwrap ןכל םדוק גצוהש יפכ

    # 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..."
    }

    .הדוקפ ps -a | grep fcgiwrap ב שמתשה וא ,עקשה תא רתאו לעפה/ הירפסה ןכות תמישר וא סוטטס גתמ תועצמאב ותוא אדוו ךילהתה תא לחתה . /run/fcgiwrap-unix.sock

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

    .TCP לש הרוקת תוחפ םישמתשמו TCP loopback ירוביח תרושקתמ רתוי הריהמה ,סצורפ-ןיב תרושקתב שמתשמ אוהש ןוויכמ ,דבלב סקינוי לש ןיימוד עקש ל דמציה ,םיינוציח רעש ירוביחל קוקז ךניא םא ךא

    Nginx -ב CGI לש םיטפירקס לעפה :2 בלש

    .םוקימ תורהצה וא שרוש ביתנב Fcgiwrap תורדגה םע םיילאוטריו םיחראמ רידגהל שי ,ריהמ ףתושמ רעש קשממ ךרד Bash וא Perl לש םיטפירקס ליעפיו חתני Nginx -ש ידכ .5

    . index.cgi ץבוק םע ב שמתשמ ישילשה םוקימהו index.pl ץבוק םע , תועצמאב ינשה םוקימה ,שרוש ךמסמ לש לדחמ תרירב ביתנ רובע TCP Fcg

    . fastcgi_pass ןועיט תרהצה יוניש ידי לע ,םינוש םימוקימב TCP וא UNIX יעקש םע םיימניד Bash וא Perl םיטפירקס ליעפהל ךנוצרבש יוצרה ילאוטריווה חראמה הרוצתה ץבוקל ,ונממ םימיוסמ םיקלח קר

    # 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;       
                                    }                                                                                             
      }

    .ולש תיפיצפסה תמויסה םע םוקימ לכ רובע סקדניא יצבק רוצו ךלש םוקימה תרהצה תא ףקשל ידכ הלא תויקית יתש רוצ ,ךלש רתאב לדחמ תרירבכ רדגומה ךמסמה שרוש ביתנל רובע ,ילאוטריו חראמ לש יפיצפסה הרוצתה ץ

    # 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

    .םילעופ Fcgiwrap יעקש ינשש אדוו Nginx תרש תא שדחמ לעפה ,הלעפהל םיצבקה ינש תא ךופה ,הכירעה םויסב .7

    # 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

    .האבה רתאה תבותכל ךלש ימוקמה ןפדפדה תא שדחמ הנפה ,ןכמ רחאל

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

    .הטמל ךסמ ימולצתב ומכ עיפוהל הכירצ האצותה

    .(CGI יעקש ינשב שמתשהל Nginx תא תרדגהש הרקמב) תואבה תודוקפה תקפנה ידי לע שדחמ לוחתא רחאל ,תיטמוטוא ליחתהל Fcgiwrap לש םינומדה ינשל רשפא ,יוארכ רדגומו םוקמב לכה םא .8

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

    Fcgiwrap -ב Ruby לש הכימתה תא לעפה :3 בלש

    .האבה הדוקפה םע Gentoo -ב Ruby ןמגרותמ ןיקתהל ךילע Nginx FCGI -ב םיימניד םייבור םיטפירקס ץירהל ךירצ התא םא .9

    # emerge --ask ruby

    .Nginx localhost ידי לע שגומה ךמסמה לש לדחמה תרירב שרוש ביתנ תחת יעיבר םוקימב Ruby לש םיטפירקס תלעפהב הכימת ליעפמש ,\"}" ןורחא לתלותמ רגוס ינפל תואבה תורהצהה תפסוה ידי לע lo

    # 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 ##
    }

    .ןכֶוֹת םיאבה םירבדה תא ףסוהו .rb תמויס םע הלעפהל Ruby סקדניא טפירקס רוצ ,/var/www/localhost/htdocs ביתנה תחת תיעיברה היירפסה תא רוצ ,הרוצתה תא קודבל ידכ ,תעכ .11

    # 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')

    .תורוצת ליחהל ידכ Nginx לש ןומדה תא שדחמ לעפה ,ץבוקב עוציב תואשרה ףיסותש רחאל .12

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

    .אבה ןכותה תא ךל גיצהל הרומאש ,/יעיברה/b> http:// localhost> רתאה תבותכ לא טוונו ןפדפדה תא חתפ

    .ךלש רתאל תימניד תוילנויצקנופ ףיסוהלו ,יטטס HTML ידי לע לטומה יטטסה םוסחמה תא ביחרהל לוכי ךא ,ךלש תכרעמה תחת םיליעפ םיזגפ תועצמאב ץורל םהש ןוויכמ ךלש תרשה לע םירומח החטבא ינוכיס ליטהלו תנכ


כל הזכויות שמורות. © Linux-Console.net • 2019-2024