apache虚拟主机搭建以及cgi程序的运行

来源:本站原创 服务器技术 超过705 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.jdccie.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
本文链接:http://www.jdccie.com/?p=3335转载请注明转自CCIE那点事
如果喜欢:点此订阅本站
  • 相关文章
  • 为您推荐
  • 各种观点

暂时还木有人评论,坐等沙发!
发表评论

您必须 [ 登录 ] 才能发表留言!