apache虛擬主機搭建以及cgi程序的運行

來源:本站原創 服務器技術 超過744 views圍觀 0條評論

apache2 下架設虛擬主機。首先在/etc/apache2/sites-available/下復制default文件,并取名為你所想要的虛擬域名(如:www.love.com),取域名后就可用域名來訪問你的網站了,而不再需要輸入localhost/ try.html ,就直接用www.love.com/try.html,這樣看起來比較正式。復制好后,用編輯器打開修改里面的內容:修改服務器名ServerName www.love.com   ,然后修改根目錄:DocumetRoot /home/web (這個修改是自愿的,不改也可以,就是以后需要把你寫的網頁什么的都要放到默認目錄下,一般(/var/www/)), 在往下看:
    有一個 ScriptAlias /cgi-bin/  /usr/lib/cgi-bin/    <Director “/usr/lib/cgi-bin”> 這個cgi-bin/目錄是用來存放你的cgi程序的(CGI(Common Gateway Interface)是HTTP服務器與你的或其它機器 上的程序進行“交談”的一種工具,其程序須運行在網絡服務器上。通俗的來講就是,如果有一個cgi 程序的運行結果可在網頁上顯示,而cgi應用程序可以由大多數的編程語言編寫,如Perl(Practical Extraction and Report Language)、C\C++、Java 和Visual Basic等),你也可更改其他目錄,但上面兩個藍色路徑都要更改,因此可改為如:”/home/web/cgi-bin/”。
    然后退出保存, 在終端輸入: a2ensite www.love.com,這樣就會把你的域名配置映射到/sites-enabled/ . 之后執行: sudo gedit /etc/hosts 在服務器默認分配的本機ip(一般127.0.0.1)下面,添加另一ip(127.0.0.2/127.0.3等本機保留ip都行,也可以是你本機真實ip)。修改之后就是重啟apache服務器了:sudo service apache2 restart,到此你的apache虛擬主機就建好了。
    下面就是用c寫的一個text.c程序:
        int main(int argc, char *argv[])
    {   
          char *web_str;  
/*程序會把后 面的  此行通過標準輸出將字符串Contenttype:text/html;charset=utf-8\n\n傳送給Web服務器。它是一個MINE頭信 息,它告訴Web服務器隨后的輸出是以網頁的形式。注意:這個頭信息中有兩個換行符,這是因為Web服務器需要在實際的文本信息開始之前先看見一個空行。*/      
      printf("Content-type: text/html;charset=utf-8\n\n");
          web_str = getenv("QUERY_STRING"); //獲得web表單傳來的參數      
           printf("<html>");  
          printf("<head><title>welcome to c cgi.</title></head><body>");
          /*如果從表單傳來的有漢字, 則web_str會是以name=%十六進制數&age=%十六進制數的形式打印出來。因此,我們需要將十六進制轉成十進制,再以字符串的         形式打印出來就行了。(name,age是html中的兩個兩個標示符)*/
   printf("你好:世界!<p>ser=%s”,web_str);
          printf("</body></html>");  
        return 0;
    }
寫好程序后,gcc -text.c -o text.cgi;之后就將text.cig放到cgi-bin/ 目錄下。
    現在寫一個try.html頁面:
<!DOCTYPE html>
<html lang="en">  
<head>      
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
<meta http-equiv="Content-Language" content="zh-cn" />
  <title>你想說什么</title>   
  <meta name="viewport" content="width=320, initial-scale=1, user-scalable=0">   
  <meta name="keywords" content="">   
  <style type="text/css">   
    body {         padding-top: 40px;       }   
    .text-center {         text-align: center;       }  
     .form-youthink {         margin: 0 auto;         max-width: 300px;       }   
    .input-youthink {         margin: 0 0 10px 0;         width: 100%;         min-height: 30px;    }  
   </style> 
  </head>   
<body>    
<form class="form-youthink" action="/cgi-bin/text.cgi" method="get">     
   <h2 class="text-center">你想說什么</h2>     
  <input class="input-youthink" type="text" name="name" placeholder="name">
   <input class="input-youthink" type="text" name="age" placeholder="age">
   <input class="input-youthink" type="submit" value="原來如此">    
</form>  
</body>
</html>
現將try.html放在和cgi-bin 同一目錄下(注意:不是放到cgi-bin目錄下),在瀏覽器中輸入www.love.com/try.html 就能看見try.html頁面,在輸入類容之后,頁面跳轉并打印你text.c中的printf中的內容(注意看,跳轉后的頁面所打印的字符中是否有上面紅色的字符變量,那是肯定有的,所以在解析漢字時,就要去掉前面的這兩個變量名)。

 

原文 http://blog.chinaunix.net/uid-28308371-id-3808673.html

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=3335轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
  • 相關文章
  • 為您推薦
  • 各種觀點
?
暫時還木有人評論,坐等沙發!
發表評論

您必須 [ 登錄 ] 才能發表留言!

?
?
萌宠夺宝游戏