免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1183 | 回复: 0
打印 上一主题 下一主题

在Debian上配置Apache+MySQL+PHP4 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-01 16:12 |只看该作者 |倒序浏览

[email=leng@haier.com,%20kanaka@yeah.net]kanaka[/email]
的一篇 文章

1 选择Apache+MySQL+PHP4
               

  你可能会问我:为什么不选择别的软件,而非得选择Apache+MySQL+PHP4的组合?呵呵,我要告诉你,著名的Free
Lamp组合,说的就是Linux/Apache/MySQL/PHP/Perl/Python,你可以到www.freelamp.com上面去看看。
PHP在互联网上的应用,正成燎原之势。如果作Web开发,在我看来,别无选择,就是PHP。详细情况可以到www.php.net上面去了解。
MySQL非常轻便,性能卓越。Apache就不必多说了,互联网上没有几个Web站点不用它。
2 安装
               

  在Debian上安装软件,真的是非常简单。不需要configure,不用make,不用make                 
install,遍布全球的Debian的工作人员已经为你做好了一切。
  你可以一口气把这些软件全部装上:
   
  
    [color="#c0c0c0"]# apt-get           
      install apache php4 php4-gd php4-mysql mysql-server mysql-client         
  
  其中,php-gd是一个非常棒的图形库,如果你不需要使用php生成动态图片,就不用装。
  这时,系统会自动列出一些相关的软件,然后问你是不是要继续(说Debian棒,这是其中一点:自动查找软件关联,自动补充安装)——Debian给你一次反悔的机会,如果你现在不想装了,那么按n,就退出来了。
  当然我们在这里要按回车,继续安装。现在Debian会到你的sources.list里面指定的站点去下载这些软件。下载完后,会自动进行配置,配置过程中会征求你的意见,问你几个问题。
  比如现在他就问你:你要在计算机启动时就运行MySQL吗?当然选Yes了,否则每次要用的时候才启动,怪麻烦的。
  又问你:你想运行apacheconfig脚本吗?默认是N,不过我们输入Y让它替我们配置一下。配置完后,问你是否保存配置,当然是了,呵呵。然后,他会问你是否要启动Apache,好,启动它。
  接着,系统会自动配置PHP。由于你选择了php-gd和php-mysql,他会问你是否把gd.so和mysql.so的支持写入php.ini,回答是。你看,Debian聪明吧。
3 配置
               

3.1 配置Apache
   
3.1.1 提供php支持
   
  
Apache刚装上的时候不提供php支持。当你点击有.php脚本的连接,浏览器会下载这个脚本:-(
  修改/etc/apache/httpd.conf,以便提供php支持。运行:
  
    [color="#c0c0c0"]#           
      nano /etc/apache/httpd.conf         
  
  顺便提一下,我非常喜欢这个叫做nano的编辑器,它很容易上手。
  使用nano的ctrl+w功能找到下面这一行:
  
    #                 
      LoadModule php4_module /usr/lib/apache/1.3/libphp4.so               
  
  把这一行前面的井号去掉,以便apache加载这个libphp4.so模块。
  然后,配置默认页,找到:
  
    DirectoryIndex                 
      index.html index.htm index.shtml index.cgi               
  
  改成:
  
    DirectoryIndex                 
      index.php index.php3 index.html index.htm index.shtml index.cgi               
  
  然后再加上.php3扩展名的支持和php源码支持,找到:
  
    #
      # And for PHP 4.x, use:
               
      #
      #AddType application/x-httpd-php .php
               
      #AddType application/x-httpd-php-source .phps               
  
  把后面两行修改成:
  
    #
      # And for PHP 4.x, use:
               
      #
      AddType application/x-httpd-php .php .php3
               
      AddType application/x-httpd-php-source .phps               
  
3.1.2   
修改默认字符集

  让Apache把简体中文作为默认的字符集。找到这一行:
  
    AddDefaultCharset                 
      on
  
  修改成:
  
    AddDefaultCharset                 
      gb2312
  
  好,Apache就配置完了,按ctrl+o保存后,再按ctrl+x退出nano。
  为了使我们的修改生效,需要重新启动Apache,运行:
  
    [color="#c0c0c0"]#           
      apachectl restart           
  
  apache 1.3 提供了这个apachectl工具,但是2.0就没了。
   
  另外,注意一个技巧:Debian提供的服务器软件包,几乎都会提供一个脚本用于启动/终止/重新启动这个服务。脚本全部放在/etc/init.d/下面。
  比如Apache,可以通过下面的命令控制:  
  
    [color="#c0c0c0"]#           
      [color="red"]/etc/init.d/apache restart         
  
  其它的服务也可以如此操作。
3.2   
MySQL配置
3.2.1 修改MySQL的口令
   
  由于MySQL默认没有口令,为了安全起见,一定要修改你的口令!
  先来看看你的mysql是不是真的没有口令:
  
    $      
               
      mysqladmin version         
  
  如果你能够看到mysql的版本信息,证明目前MySQL没有口令。
  好,运行mysqladmin password xxxxxx 修改口令:
               
  
    [color="#c0c0c0"]#  
      mysqladmin password xxxxxx
  
  这里xxxxxx是你的新口令。
  现在你需要运行 mysqladmin version --user=root --pass,然后输入口令,才能查看版本号等信息。
               
  注意,上面命令中的--user=root --pass这一部分,可以简写为-u                 
root -p。我们来测试一下,看口令是否生效:
               
  
    #               
                 
      mysqladmin version -u root -p
         
      Enter
      password:
  
3.2.2   
打开3306端口监听

  这项工作要慎重。处于安全考虑,默认情况下,Debian把3306端口关闭了。因为,不少黑客通过它来攻击你的系统。如果你不通过其他机器来存取数据库,那么不要打开这个端口。
  修改/etc/mysql/my.cnf,找到:
  
    skip-networking
  
  把它注释掉:
  
    #                 
      skip-networking
  
3.2.3   
修改默认字符集
  
  让MySQL把简体中文作为默认的字符集。编辑/etc/init.d/mysql,找到这一行:
  
    /usr/bin/safe_mysqld                 
      > /dev/null 2>&1 &               
  
   改成:
  
    /usr/bin/safe_mysqld                 
      > --default-character-set=gb2312 > /dev/null 2>&1 &               
  
  好,重新启动MySQL:
  
    #
      
      /etc/init.d/mysql restart
  
3.3 PHP配置
               
  主要是要修改php的默认字符集,把它改成简体中文。编辑/etc/php4/apache/php.ini:
  
    [color="#c0c0c0"]#           
      nano /etc/php4/apache/php.ini         
  
  找到 ;default_charset = "iso-8859-1"这一行:
               
  
    ;default_charset                 
      = "iso-8859-1"               
  
  把前面的分号去掉,并改成:                 
default_charset = "gb2312"
               
  
    default_charset
      = "gb2312"
  
4 综合测试
               

  好了,安装完了,我们来测试一下。
  这一部分,高手完全可以略过。我主要考虑到初学者,才写了这些。
4.1 建立一个数据库
   
  下面我们来创建一个简单的数据库,这个库里面只有一张表,叫做user,用来存放用户名/明文密码/出生日期/激活状态。
  
   
      
#               
       mysql -u root -p
         
      [color="#c0c0c0"]Enter password:
      
[color="#c0c0c0"]mysql> CREATE DATABASE
      mytest;
      [color="#c0c0c0"]Query OK, 1 row affacted (0.00 sec)
      
[color="#c0c0c0"]mysql> USE
      mytest;
      [color="#c0c0c0"]Database changed
      mysql>
      
      CREATE TABLE user (
        -> [color="#ff00ff"] username varchar(16) NOT NULL default '',

        -> [color="#ff00ff"] password varchar(16) binary NOT NULL default '',

        -> birthday date NOT NULL  
      default '1975-12-31',
        -> actived int(1) NOT NULL default
      '0',
        -> [color="#ff00ff"] UNIQUE KEY username (username)
        -> [color="#ff00ff"] ); 
      Query OK, 0 row affected (0.00 sec)           
      
     
      
[color="#c0c0c0"]mysql> INSERT INTO user VALUES   
      ('kanaka','kanakapswd','1975-09-18',0);
      Query OK, 1 row affected (0.01 sec)
  
      
      mysql>
       INSERT INTO user VALUES
      ('atfa','atfapswd','1977-10-30',1);
      Query OK, 1 row affected (0.00 sec)
  
      
      mysql>
      quit
      [color="#c0c0c0"]Bye

   
  
  注意,默认情况下,所有的数据库放在/var/lib/mysql/下面。每个数据库占一个目录,目录名就是数据库名。你创建数据库的时候,系统自动就把它放在这个目录下面了。
4.2 编写一个php脚本
     

  下面我们来编写一个简单的php脚本,来调用上面数据库里面的内容。文件名比如叫做mytest.php。
  
   
";
               
                echo "查询:$queryStr
";
               
                echo "结果:$errMsg
";
               
                echo "
";
               
        }
      }
      
      
      //定义一个函数,用来显示数据
      function viewData($dbname,$tablename,$page,$rowperpage) {
               
        global $mysqlHandle, $PHP_SELF, $errMsg,  $orderby;
               
      
        echo "下面是您所查的数据:
";
               
      
        $queryStr = stripslashes( $queryStr );
               
        if( $queryStr == "" ) {
               
                $queryStr = "SELECT * FROM $tablename";
               
                if( $orderby != "" )
               
                        $queryStr .= " ORDER BY $orderby";
               
        }
      
        $pResult = mysql_db_query( $dbname, $queryStr );
               
        $errMsg = mysql_error();
               
      
        $GLOBALS[queryStr] = $queryStr;
               
      
        if( $pResult == false ) {
               
                echoQueryResult();
                return;
        }
        if( $pResult == 1 ) {
               
                $errMsg = "成功";
               
                echoQueryResult();
                return;
        }
      
        echo "
";
               
      
        $row = mysql_num_rows( $pResult );
               
        $col = mysql_num_fields( $pResult );
               
      
        if( $row == 0 ) {
               
                echo "没有数据!表格是空的。";
               
                return;
        }
      
        if( $rowperpage == "" ) $rowperpage = 20;
               
        if( $page == "" ) $page = 0;
               
        else $page--;
               
        mysql_data_seek( $pResult, $page * $rowperpage );
               
      
        echo "
";
               
        echo "
";
               
                echo '';
               
                echo "用户名
";
               
                echo "
";
               
                echo '';
               
                echo "口令
";
               
                echo "
";
               
                echo '';
               
                echo "出生日期
";
               
                echo "
";
               
                echo '';
               
                echo "是否激活
";
               
                echo "
";
               
        echo "
";
               
      
      
        for( $i = 0; $i
";
               
                $key = "";
               
                for( $j = 0; $j primary_key == 1 )
               
                                $key .= "&" . $field->name . "=" . $data;
               
      
                        if( strlen( $data ) > 30 )
               
                                $data = substr( $data, 0, 30 ) . "...";
               
                        $data = htmlspecialchars( $data );
               
                        echo '';
               
                        echo "$data
";
               
                        echo "
";
               
                }
      
                echo "
";
               
        }
        echo "
";
               
        echo "";
               
      //$PHP_SELF
      
        echo "";
echo "";
               
        echo "";
               
        echo "第".($page+1)."页/共".(int)($row/$rowperpage+1)."页";
               
        echo "
";
               
        echo " | ";
               
        if( $page > 0 ) {
echo "上一页
";
               
        } else
               
                echo "上一页";
               
        echo " | ";
               
        if( $page 下一页
";
               
        } else
               
                echo "下一页";
               
        echo " | ";
               
        if( $row > $rowperpage ) {
               
                echo "
";
               
                echo "页";
               
        }
        echo "";
               
      
      
echo "";
               
                echo "        目前每页显示记录数为".$rowperpage."条,您可以";
               
                echo "";
               
                echo "条/页";
               
      
        echo "
";
               
        echo "
";
               
      }
      
      
      ?>
  
  我好长时间没写程序了,连php的语法都快忘了,呵呵。我去年给公司的生产线编写了一个应用,上面就是摘抄下来的,我本来想写一个最简单的程序在这里,但是我还是把两个函数保留在里面了,为的是让初学者有个借鉴,呵呵。

4.3 测试
   

  把这个mytest.php复制到/var/www下面,在你的浏览器里面,访问这个mytest.php,就会看到数据库的内容。
  之所以把mytest.php放到/var/www下面,是因为,默认情况下,Apache的httpd.conf里面定义了把/var/www作为文档根目录。
  初学者注意,在linux控制台下面有好几款浏览器,w3c,lynx,links等等。三个各有优劣,都不完美。个人感觉links比较适合初学者,因为按下esc键之后有菜单出现。

5 结束语
              

  本文是《Debian服务器设置入门》系列教程之第一章,建议您按照顺序阅读,有问题可以和作者
[email=leng@haier.com,%20kanaka@yeah.net]kanaka[/email]
联系

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/6728/showart_38602.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP