黑基Web安全攻防班
安基网 首页 IT技术 网络管理 查看内容

《Debian服务器设置入门》系列教程0.2.1版(1)

2005-6-5 21:45| 投稿: Linux

摘要: 作者:kanaka [冷罡华] 联系: kanaka@yeah.net,leng@haier.com ...
作者:kanaka [冷罡华] 联系: kanaka@yeah.net,leng@haier.com 版本:0.2.1 版权:GPL 最后修改:2002年11月26日 总目录 更新记录 ◆ 2002年11月26日,0.2.1版。    修改了第一章和第五章的一些错误,感谢afta兄和ckf兄,他们在linuxsir.com论坛上给我提出修改意见。 ◆ 2002年11月15日,0.2版。    修改了一些错误;去掉了每章的版本号信息,统一全文版本;加上了总目录和各章的目录,方便阅读。 ◆ 2002年11月13日,0.1版全文写作完毕。 总目录 前 言 第一章 在Debian上配置 A pache+ M ySQL+ P HP 第二章 在Debian上用 W u-ftpd配置FTP服务器 第三章 在Debian上用 E xim配置邮件服务器 第四章 在Debian上配置 S amba服务器 第五章 在Debian上用 B ind配置DNS服务器 《Debian服务器设置入门》系列教程之前言 前 言 1 准备工作 2 一些废话 3 系列文章 4 沟通 1 准备工作 1.1 你需要先安装Debian 3.0(Woody)基本系统,我建议你仅仅安装基本系统就可以了,保持一个清洁的Debian。然后你运行一下apt-get update,以便系统生成可以安装的软件的列表。    建议你保留你的计算机名字为Debian,域名为test.com。我就是这么做的,所以我的文章里面也会这么写,所以,如果你的计算机也做同样设置,看起文章来会省点劲儿。 1.2 最起码,你需要掌握这几条命令的用法:apt-get install / apt-get remove / apt-cache search 。 2 一些废话 2.1 由来    我出生在农村,家里穷,头一次接触计算机是1996年,那是大二的下学期,我们专业上开了Basic语言的课程。1998年我毕业了,这年冬天,我第一次接触了GNU/Linux。那时接触的是TurboLinux。第一次接触Debian,是在2002年10月。相见恨晚呐!这是我见过的最优秀的发行版!完全的可定制!给你充分的自由!    由于Debian的特性,使得安装和配置软件极为简单。然而,网络上的众多教程,很少有基于Debian作介绍的,对于初学者来说,他们需要基于Debian写的教程;更重要的原因是,我遇到了一个叫做linuxsir.com的论坛,我由衷的说,这是我在国内见过的最优秀的论坛!大家努力营造了一个非常好的学习气氛,它能连续不断得给我感动。当我看到众多Debian的初学者心急如焚时,我就决定,写一些教程,遵循GPL,以我微薄之力,回馈linuxsir.com给我的帮助,并一同感谢全世界为了Debian默默耕耘的朋友,于是我就开始写了。    由于接触Debian时间太短了,难免疏漏,请高手们不要客气,给我指出来,以便我成长,呵呵。 2.2 本文的组织方法    我将力求用最简洁的语言,说明我想说的东西。我很反感那些晦涩的文章。但是为了照顾初学者,我会写得尽量详细。 2.2.1 控制台命令    在Linux控制台上输入的命令,用黑色背景、 红色文字 表示;系统回显的内容用 灰色 ,这样最接近Linux控制台的颜色。在MySQL控制台里面,输入的命令用 紫色 ,MySQL回显的内容用 灰色 ,以示区别。像这样: $ cp cp: missing file arguments Try `cp --help' for more information $ mysql test mysql> select * from test.table1 ERROR 1146: Table 'test.table1' doesn't exist mysql>   另外,初学者注意:    用$符号开头的,是以普通用户身份执行的命令;    用#符号开头的,是以root身份执行的命令。    当然,在默认情况下,凡是普通用户可以执行的命令,root都可以执行。 2.2.2 配置文件    配置文件的内容,将用浅黄色背景,以免混淆。像这样: deb ftp://202.118.66.14/debian sid main non-free contrib deb-src ftp://202.118.66.14/debian sid main non-free contrib deb http://security.debian.org/ stable/updates main contrib non-free   上面列出了我所使用的sources.list,这个站点是debian在中国的某所大学的镜像,非常快。另外大家注意我用的是sid,如果你用stable,可能我们下载得到的软件的版本就会不同。 3 系列文章    本文是一个系列,将包括下面的部分:   第一章 Web服务器+数据库服务器    第二章 FTP服务器    第三章 邮件服务器    第四章 Samba服务器    第五章 域名服务器 4 沟通    有任何问题,请与作者联系,leng@haier.com,或者kanaka@yeah.net。 《Debian服务器设置入门》系列教程之第一章 :Web服务器+数据库服务器 第一章 在Debian上配置 A pache+ M ySQL+ P HP4 本章目录 1 选择Apache+MySQL+PHP4 2 安装 3 配置 4 综合测试 5 结束语 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的工作人员已经为你做好了一切。    你可以一口气把这些软件全部装上: # 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支持。运行: # 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,运行: # apachectl restart   apache 1.3 提供了这个apachectl工具,但是2.0就没了。    另外,注意一个技巧:Debian提供的服务器软件包,几乎都会提供一个脚本用于启动/终止/重新启动这个服务。脚本全部放在/etc/init.d/下面。    比如Apache,可以通过下面的命令控制: # /etc/init.d/apache restart   其它的服务也可以如此操作。 3.2 MySQL配置 3.2.1 修改MySQL的口令   由于MySQL默认没有口令,为了安全起见,一定要修改你的口令!    先来看看你的mysql是不是真的没有口令: $ mysqladmin version    如果你能够看到mysql的版本信息,证明目前MySQL没有口令。    好,运行mysqladmin password xxxxxx 修改口令: # 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: # 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 Enter password: mysql> CREATE DATABASE mytest; Query OK, 1 row affacted (0.00 sec) mysql> USE mytest; Database changed mysql> CREATE TABLE user (   -> username varchar(16) NOT NULL default '',   -> password varchar(16) binary NOT NULL default '',   -> birthday date NOT NULL default '1975-12-31',   -> actived int(1) NOT NULL default '0',   -> UNIQUE KEY username (username)   -> ); Query OK, 0 row affected (0.00 sec) 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 Bye   注意,默认情况下,所有的数据库放在/var/lib/mysql/下面。每个数据库占一个目录,目录名就是数据库名。你创建数据库的时候,系统自动就把它放在这个目录下面了。 4.2 编写一个php脚本    下面我们来编写一个简单的php脚本,来调用上面数据库里面的内容。文件名比如叫做mytest.php。 <?php $dbname='mytest'; $tablename='user'; $page=0; $rowperpage=20; mysql_connect("localhost", "root", "您的密码"); //下面这个viewData函数,是自己编的,用来显示数据 //从某种程度上讲,本程序起关键作用的就这么一句: viewData($dbname,$tablename,$page,$rowperpage); //////////////////////////////////////////////// // // 往下仅仅是定义了两个函数而已,你可以不去看他 /// // //////////////////////////////////////////////// //定义一个函数,用来返回查询状态 function echoQueryResult() { global $queryStr, $errMsg; if( $errMsg == "" ) $errMsg = "成功"; if( $queryStr != "" ) { echo "<table cellpadding=5> "; echo "<tr><td>查询:</td><td>$queryStr</td></tr> "; echo "<tr><td>结果:</td><td>$errMsg</td></tr> "; echo "</table><p> "; } } //定义一个函数,用来显示数据 function viewData($dbname,$tablename,$page,$rowperpage) { global $mysqlHandle, $PHP_SELF, $errMsg, $orderby; echo "<h2>下面是您所查的数据:</h2> "; $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 "<hr> "; $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 "<table cellspacing=1 cellpadding=2> "; echo "<tr> "; echo '<th bgcolor="#FFCC66">'; echo "用户名 "; echo "</th> "; echo '<th bgcolor="#FFCC66">'; echo "口令 "; echo "</th> "; echo '<th bgcolor="#FFCC66">'; echo "出生日期 "; echo "</th> "; echo '<th bgcolor="#FFCC66">'; echo "是否激活 "; echo "</th> "; echo "</tr> "; for( $i = 0; $i < $rowperpage; $i++ ) { $rowArray = mysql_fetch_row( $pResult ); if( $rowArray == false ) break; echo "<tr> "; $key = ""; for( $j = 0; $j < $col; $j++ ) { $data = $rowArray[$j]; $field = mysql_fetch_field( $pResult, $j ); if( $field->primary_key == 1 ) $key .= "&" . $field->name . "=" . $data; if( strlen( $data ) > 30 ) $data = substr( $data, 0, 30 ) . "..."; $data = htmlspecialchars( $data ); echo '<td bgcolor="#99CCCC">'; echo "$data "; echo "</td> "; } echo "</tr> "; } echo "</table> "; echo "<hr>"; //$PHP_SELF echo "<font size=2>"; echo "<form action='$PHP_SELF?action=viewData&dbname=$dbname&tablename=$tablename&page=$page&rowperpage=$rowperpage' method=post>"; echo "<font color=green>"; echo "第".($page+1)."页/共".(int)($row/$rowperpage+1)."页"; echo "</font> "; echo " | "; if( $page > 0 ) { echo "<a href='$PHP_SELF?action=viewData&dbname=$dbname&tablename=$tablename&pa

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部