• Ubuntu下用apache+perl搭建最简单的聊天室


    最近学习了下perl,尝试自己搭建一个聊天室,现已搭建成功,但设计方法很简陋,误见笑,收获在于对apache、html、perl都有了些许认识,后面打算学习LAMP(Linux+Apache+MySQL+PHP)搭建一个在线听歌网页。


    操作系统:Ubuntu 12.04.2 LTS

    linux内核:Linux ubuntu 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    apache版本:Apache/2.2.22 (Ubuntu)
    编程语言:HTML + perl


    一、安装apache
    sudo apt-get install apache2


    二、编写HTML聊天WEB界面


    1、chatroom.html文件代码:


    <?xml version = "1.0" encoding = "utf-8"?>
    <!DOCTYPE html PUBLIC "-//w3c//DTD XHTML 1.1//EN"
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns = "http://www.w3.org/1999/xhtml">


    <FRAMESET ROWS = "*,65">
    <FRAME SRC = message.htm>
    <FRAME SRC = login.htm>
    </FRAMESET>


    2、message.htm文件代码:


    <html><head><META HTTP-EQUIV = "REFRESH" CONTENT = "4"></head><body>
    </body></html>


    3、login.htm文件代码:


    <?xml version = "1.0" encoding = "UTF-8"?>
    <!DOCTYPE html PUBLIC "-//w3c//DTD XHTML 1.1//EN"
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html><meta charset="utf-8" /><body>
    <form action = "./chatroom.pl" method = "post">输入你的名字:
    <input type = "text" name = "username">
    <input type = "submit" value = "开始聊天">
    <input type = "hidden" name = "message" value = "connected">
    </form></body></html>


    三、用perl编写cgi程序


    chatroom.pl文件代码:
    #!/usr/bin/perl -w


    $buffer = "";


    print "Content-type:text/html\n\n";
    &get_form_data;
    open(MESSAGE,"/var/www/message.htm");


    @lines = <MESSAGE>;
    close(MESSAGE);
    $now_string = localtime;
    @thetime = split(/ +/,$now_string);


    print "<html><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><body>\n";
    print "<form action = \"./chatroom.pl\" method = \"post\">\n";
    print "<input name = username type = hidden value = $data[1]>\n";
    print "<input type = text name = message size = 40>\n";
    print "<input type = submit value = \"发言\"></form>\n";


    if($data[3]ne"")
    {
    $newmessage = "<br>$data[1]:$data[3](发送时间:$thetime[3])\n";


    open(NEW,">/var/www/message.htm");
    print NEW "<html><head><META HTTP-EQUIV = \"REFRESH\" CONTENT = \"4\"></head><body>\n";
    #print NEW encode("utf-8",decode("utf-8",$newmessage));
    print NEW $newmessage;


    $limit_lines = 10;
    if($#lines < 10)
    {$limit_lines = $#lines;}
    for($i = 1;$i < $limit_lines;$i++)
    {
    #print NEW encode("utf-8",decode("utf-8",$lines[$i]));
    print NEW "$lines[$i]";
    }
    print NEW '</body></html>';
    close(NEW);
    }
    print "</body></html>\n";
    exit 0;


    sub get_form_data {


    read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
    @pairs = split(/&/,$buffer);
    @data=();
    foreach $pair(@pairs)
    {
    @a = split(/=/,$pair);
    $name = $a[0];
    $value = $a[1];
    $value =~s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
    push (@data,$name);
    push (@data,$value);
    }
    }


    四、移动文件
    将编写好的文件chatroom.html、message.htm、login.htm和chatroom.pl统一移动到/var/www/目录下。(此处可以通过配置apache自由设置目录)


    五、修改文件权限
    还没具体尝试到最安全可靠的权限级别,目前统一将html文件、perl文件、/var/www/文件夹全部修改权限为777。
    指令: chmod 777 /etc/www/
    chmod 777 /etc/www/chatroom.html
    chmod 777 /etc/www/message.htm
    chmod 777 /etc/www/login.htm
    chmod 777 /etc/www/chatroom.pl


    六、配置apache,使其支持perl
    1、进入/etc/apache2/sites-available/目录
    2、打开其中的default文件
    3、修改内容,最终内容如下:
    <VirtualHost *:80>
    ServerAdmin webmaster@localhost


    DocumentRoot /var/www/
    <Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    allow from all
    satisfy all
    </Directory>
    <Directory /var/www/>
    Options FollowSymLinks MultiViews
    AllowOverride None
    Order deny,allow
    allow from all
    </Directory>


    ScriptAlias /cgi-bin/ /var/www/
    <Directory "/var/www/">
    AllowOverride all
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order deny,allow
    Allow from all
    AddHandler cgi-script .cgi .pl
    </Directory>


    ErrorLog ${APACHE_LOG_DIR}/error.log


    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn


    CustomLog ${APACHE_LOG_DIR}/access.log combined


        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
            Options Indexes MultiViews FollowSymLinks
            AllowOverride none
            Order deny,allow
            Deny from all
            Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>


    </VirtualHost>


    七、重新开启apache服务
    指令:service apache2 restart


    八、在浏览器输入地址测试是否成功!
    http://你服务的IP地址/chatroom.html























  • 相关阅读:
    python之函数对象、函数嵌套、名称空间与作用域、装饰器
    python之函数
    python基础-小练习
    python基础之文件操作
    python基础之字符编码
    web开发-Django博客系统
    HotSpot的算法实现
    垃圾回收机制(GC)
    Java注意点...
    JVM内存区域及对象
  • 原文地址:https://www.cnblogs.com/fengty90/p/3768872.html
Copyright © 2020-2023  润新知