思索网:WWW.4SO.NET
网站首页
设为首页
加入收藏
社区论坛
联系我们
网站地图
发现个人价值
提高企业内涵
一切源于思索
首页
企业之家
公关文秘
免费论文
网上办公指南
操作系统
多媒体应用
现代教学
下载中心
专题报道
推荐文章
评论
English Article
IT资讯
网页设计
网站运营
编程开发
平面设计
网络安全
工具下载
站内搜索
最新文章
热门文章
论坛
栏目列表
Windows XP
win9x
Windows NT/2000
Windows 2003
Longhorn
Windows应用
Linux
首页
>
操作系统
>
Linux
> 《Debian服务器设置入门》系列教程 第一章
《Debian服务器设置入门》系列教程 第一章
日期:
2006-06-11 23:47:47
来源:
网络转载
请您记住思索网的网址:
http://www.4so.net
[加入收藏夹]
作者:kanaka [冷罡华]
联系:
kanaka@yeah.net
,
leng@haier.com
版本:0.2.1
版权:GPL
最后修改:2002年11月26日
总目录
前 言
第一章 在Debian上配置Apache MySQL
PHP
4
第二章 在Debian上用Wu-ftpd配置FTP
服务器
第三章 在Debian上用Exim配置邮件
服务器
第四章 在Debian上配置Samba
服务器
第五章 在Debian上用Bind配置DNS
服务器
《Debian
服务器
设置入门》系列教程之第一章:Web
服务器
数据库
服务器
第一章 在Debian上配置Apache MySQL
PHP
4
本章目录
1 选择Apache MySQL
PHP
4
2 安装
3 配置
4 综合测试
5 结束语
1 选择Apache MySQL
PHP
4
你可能会问我:为什么不选择别的软件,而非得选择Apache MySQL
PHP
4的组合?呵呵,我要告诉你,著名的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>//n/";
echo /"<tr><td>查询:</td><td>$queryStr</td></tr>//n/";
echo /"<tr><td>结果:</td><td>$errMsg</td></tr>//n/";
echo /"</table><p>//n/";
}
}
//定义一个函数,用来显示数据
function viewData($dbname,$tablename,$page,$rowperpage) {
global $mysqlHandle, $
PHP
_SELF, $errMsg, $orderby;
echo /"<h2>下面是您所查的数据:</h2>//n/";
$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>//n/";
$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>//n/";
echo /"<tr>//n/";
echo /'<th bgcolor=/"#FFCC66/">/';
echo /"用户名//n/";
echo /"</th>//n/";
echo /'<th bgcolor=/"#FFCC66/">/';
echo /"口令//n/";
echo /"</th>//n/";
echo /'<th bgcolor=/"#FFCC66/">/';
echo /"出生日期//n/";
echo /"</th>//n/";
echo /'<th bgcolor=/"#FFCC66/">/';
echo /"是否激活//n/";
echo /"</th>//n/";
echo /"</tr>//n/";
for( $i = 0; $i < $rowperpage; $i ) {
$rowArray = mysql_fetch_row( $pResult );
if( $rowArray == false ) break;
echo /"<tr>//n/";
$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//n/";
echo /"</td>//n/";
}
echo /"</tr>//n/";
}
echo /"</table>//n/";
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>//n/";
echo /" | /";
if( $page > 0 ) {
echo /"<a href=/'$
PHP
_SELF?action=viewData&dbname=$dbname&tablename=$tablename&page=/".($page)./'&rowperpage=/'.$rowperpage;
if( $orderby != /"/" )
echo /"&orderby=$orderby/";
echo /"/'>上一页</a>//n/";
} else
echo /"上一页/";
echo /" | /";
if( $page < ($row/$rowperpage)-1 ) {
echo /"<a href=/'$
PHP
_SELF?action=viewData&dbname=$dbname&tablename=$tablename&page=/".($page 2)./'&rowperpage=/'.$rowperpage;
if( $orderby != /"/" )
echo /"&orderby=$orderby/";
echo /"/'>下一页</a>//n/";
} else
echo /"下一页/";
echo /" | /";
if( $row > $rowperpage ) {
echo /"<input type=submit value=/'跳到第/'>//n/";
echo /"<input type=text size=4 name=page>页/";
}
echo /"</form>/";
echo /"<form action=/'$
PHP
_SELF?action=viewData&dbname=$dbname&tablename=$tablename&page=$page&rowperpage=$rowperpage/' method=post>/";
echo /" 目前每页显示记录数为/".$rowperpage./"条,您可以/";
echo /"<input type=submit value=/'改为/'>/";
echo /"<input type=text size=4 name=rowperpage>条/页/";
echo /"</form>//n/";
echo /"</font>//n/";
}
?>
我好长时间没写程序了,连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
服务器
设置入门》系列教程之第一章,建议您按照顺序阅读,有问题可以和作者kanaka联系。
本文地址:
http://www.4so.net/system/linux/55760.html
将本页加入收藏夹
将地址复制到剪贴板发送给好友
若发现本文有误或版权问题点击这里
热门信息
相关文章
[
Linux
]
wget的常见用法
[
Linux
]
/dev/null丟失后
[
Linux
]
自认为最简单的中文latex配置,3
[
Linux
]
介绍一个apt系统的小技巧
[
Linux
]
好用的工具checkinstall
[
Linux
]
关于如何设置sources.list,大家一
[
Linux
]
关于如何设置sources.list
[
Linux
]
关于debian汉化的一点补充
[
Linux
]
告诉大家一个非常好的工具--nets
[
Linux
]
《Debian服务器设置入门》系列教
《Debian服务器设置入门》系列教程 第二章
文章评论
收藏本文
打印本文
关闭窗口