在Debian上配置Apache+MySQL+PHP4
来源:互联网 发布:centos 文档 编辑:程序博客网 时间:2024/04/29 04:15
1 选择Apache+MySQL+PHP4
你可能会问我:为什么不选择别的软件,而非得选择Apache+MySQL+PHP4的组合?呵呵,我要告诉你,著名的FreeLamp组合,说的就是Linux/Apache/MySQL/PHP/Perl/Python,你可以到www.freelamp.com上面去看看。PHP在互联网上的应用,正成燎原之势。如果作Web开发,在我看来,别无选择,就是PHP。详细情况可以到www.php.net上面去了解。MySQL非常轻便,性能卓越。Apache就不必多说了,互联网上没有几个Web站点不用它。
2 安装
在Debian上安装软件,真的是非常简单。不需要configure,不用make,不用makeinstall,遍布全球的Debian的工作人员已经为你做好了一切。
你可以一口气把这些软件全部装上:
# apt-get install apachephp4 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.htmlindex.htm index.shtml index.cgi
改成:
DirectoryIndex index.phpindex.php3 index.html index.htm index.shtml index.cgi
然后再加上.php3扩展名的支持和php源码支持,找到:
#
# And for PHP 4.x, use:
#
#AddTypeapplication/x-httpd-php .php
#AddTypeapplication/x-httpd-php-source .phps
把后面 两行修改成:
#
# And for PHP 4.x, use:
#
AddTypeapplication/x-httpd-php .php .php3
AddTypeapplication/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 passwordxxxxxx 修改口令:
# mysqladmin password xxxxxx
这里 xxxxxx是你的新口令。
现在你需要运行 mysqladminversion --user=root --pass,然后输入口令,才能查看版本号等信息。
注意,上面命令中的--user=root--pass这一部分,可以简写为-u root -p。我们来测试一下,看口令是否生效:
#mysqladmin version -u root -p
Enterpassword:
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
Enterpassword:
mysql>CREATEDATABASE mytest;
QueryOK, 1 row affacted (0.00 sec)
mysql>USE mytest;
Databasechanged
mysql>CREATE TABLEuser (
->usernamevarchar(16) NOT NULL default '',
->passwordvarchar(16) binary NOT NULL default '',
-> birthday date NOTNULL default '1975-12-31',
->actived int(1)NOT NULL default '0',
->UNIQUE KEYusername (username)
->);
QueryOK, 0 row affected (0.00 sec)
mysql> INSERT INTOuser VALUES ('kanaka','kanakapswd','1975-09-18',0);
QueryOK, 1 row affected (0.01 sec)
mysql>INSERT INTOuser VALUES ('atfa','atfapswd','1977-10-30',1);
QueryOK, 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);
////////////////////////////////////////////////
//
//往下仅仅是定义了两个函数而已,你可以不去看他 ///
//
////////////////////////////////////////////////
//定义一个函数,用来返回查询状态
functionechoQueryResult() {
global $queryStr,$errMsg;
if( $errMsg =="" ) $errMsg = "成功";
if( $queryStr !="" ) {
echo "<tablecellpadding=5>\n";
echo"<tr><td>查询:</td><td>$queryStr</td></tr>\n";
echo"<tr><td>结果:</td><td>$errMsg</td></tr>\n";
echo"</table><p>\n";
}
}
//定义一个函数,用来显示数据
functionviewData($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 "<tablecellspacing=1 cellpadding=2>\n";
echo"<tr>\n";
echo '<thbgcolor="#FFCC66">';
echo"用户名\n";
echo"</th>\n";
echo '<thbgcolor="#FFCC66">';
echo"口令\n";
echo"</th>\n";
echo '<thbgcolor="#FFCC66">';
echo"出生日期\n";
echo"</th>\n";
echo '<thbgcolor="#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 '<tdbgcolor="#99CCCC">';
echo"$data\n";
echo"</td>\n";
}
echo"</tr>\n";
}
echo"</table>\n";
echo"<hr>";
//$PHP_SELF
echo "<fontsize=2>";
echo "<formaction='$PHP_SELF?action=viewData&dbname=$dbname&tablename=$tablename&page=$page&rowperpage=$rowperpage'method=post>";
echo "<fontcolor=green>";
echo"第".($page+1)."页/共".(int)($row/$rowperpage+1)."页";
echo"</font>\n";
echo " |";
if( $page > 0 ) {
echo "<ahref='$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 "<ahref='$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 "<formaction='$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联系。
- 在Debian上配置Apache+MySQL+PHP4
- debian 上配置 apache php mysql
- APACHE下配置PHP4
- debian+mysql+apache+php 配置
- Apache2+PHP4+MySql配置
- Win2000安装Apache+PHP4+MySQL
- 在Debian Lenny上安装Apache Tomcat
- Debian/Ubuntu 10.04配置Apache+PHP+MySQL
- 在 Debian 下安装 Apache,MySQL,PHP
- 在 Debian 下安装 Apache,MySQL,PHP
- 在 Debian 下安装 Apache,MySQL,PHP
- 在 Debian 下安装 Apache,MySQL,PHP
- 在Debian中玩转MySql(上)
- 在DEBIAN上如何配置APACHE2.X
- 在 Debian 上安装和配置 Xen
- 在 Debian 上安装和配置 Xen
- 在Debian上配置Samba 服务器
- Bugfree2.0+apache+mysql+php在windows2003上配置成功
- 在Debian上用Wu- ftpd配置FTP服务器
- 找工作感触
- 解决复制到keil编辑器中汉字出现乱码情况
- 模拟实现strstr函数
- Android简单自定义圆形和水平ProgressBar
- 在Debian上配置Apache+MySQL+PHP4
- 自定义报表应用的关键问题
- Android(五)安卓SQLite数据库方法
- html表单元素
- hihocoder 1110 正则表达式 (区间dp)
- 互联网思维,发现身边的痛点和痒点
- eclipse中高亮显示相同的变量
- varnish
- 如何从纸质文档中创建可搜索的PDF