Red Head Linux 下配置Apache+MySql+Php

本文详述了一天内在Red Head Linux上配置Apache、MySQL和PHP的完整过程,包括下载源码、安装步骤、遇到的问题及解决办法。在安装MySQL时,创建了用户组和用户以解决权限问题,而在Apache配置中,启用了so和rewrite模块。通过libxml2的安装解决了PHP配置中的错误。最终,实现了PHP与Apache的整合,解决了中文显示和数据库连接问题,并确保服务能够自启动。
摘要由CSDN通过智能技术生成
经过一天的努力终于在Linux下搞定了,apache、MySql、Php的配置,中间走了不少弯路,有不少的教训,也总结出了一些经验,拿出来和大家分享。
www.mysql.com ,  www.apache.org , www.php.net下载mysql,apache,php的最新源码包
Ø         mysql-max-5.0.17-linux-i686-glibc23.tar.gz
Ø         httpd-2.2.0.tar.gz
Ø         php-5.1.1.tar.gz
为了防止Linux系统的版本对xml的支持版本比较的,从 http://xmlsoft.org/sources/下载libxml2-2.6.11.tar.gz包。
Linux下访问外网的问题,还没有解决,我把所有的源码包都放在了ftp上,下面我们开始安装
 
登录到Linux下,访问 ftp://henu-softlab/free@172.20.1.5,从Apache目录下下载三个工具包,放到linux的目录下面,我选择的是 /usr/local 目录
a)         ,使用tar 命令来将mysql的程序包解压,这是就会在local目录下新建一个mysql-max-5.0.17-linux-i686-glibc23的目录,mysql的程序都在被解压到该目录下。Tar zxvf mysql-max-5.0.17-linux-i686-glibc23.tar.gz
b)        ,进入msql程序的目录,因为local目录下只有一个以mysql开头的命名的文件夹,所以这样用就会省很多事,也可以用目录的全名进入目录Cd mysql*
c)        使用 ./configure groupadd mysql         //添加一个用户组
useradd -g mysql mysql //在mysql用户组里添加一个名为mysql的用户,
添加用户组和用户的目的是因为在先前在linux下安装mysql时出现了找不到mysql用户的错误,导致mysql安装无法完成。
d)        ,使用脚本,初始化数据库./scripts/mysql_install_db --user=mysql
e)          从后台启动mysql,这时会看到Starting mysqld daemon with databases from……的消息,证明已经成功,可以用ps -aux │ grep mysql 可以看到mysql当前正在运行的进程。./bin/mysqld_safe --user=mysql &  
f)         到此为止,MySql安装成功
g)        F
a)         ,将Apache源码解压,Tar zxvf httpd-2.2.0.tar.gz
b)        ,进入源码目录cd httpd httpd*
c)        配置,configure脚本给你一个很大的控制权来如何配置你的apache。你使用configure命令行的选项进行。你也可以用正确的环境变量作用于configure。对于一个由configure支持的选择列表,运行这个命令: #./configure – help,
 ./configure --prefix=/usr/local/apache2 --enable-module=so --enable-module=rewrite --enable-shared=max,­--prefix选项指明apache安装的目录,通过 enable-module参数告诉设置脚本,我们需要启动so和rewrite模块,so模块是用来提DSO支持的apache核心模块,而rewrite模块则是用意实现地址重写的模块,由于rewrite模块需要DBM支持,如果在初次安装时没有编译进apache,以后需要用到时需要重新编译整个apache才可以实现。为此除非你可以确定以后不会用到rewrite模块,否则还是建议你在第一次编译的时候把rewrite模块编译好。
 
enable-shared=max 这个参数的作用时编译apache时,把除了so以外的所有apache的标准模块都编译成DSO模块。而不是编译进apache核心内。
d)        安装
                         i.              make 编译apache源码,
                       ii.              make install 安装apache
                      iii.              上面是安装的一种方法,另外还可以一步完成,那就是make && make install,这个样子就不用,输两次命令。
e)         运行apache ,
                         i.              方法1:cd /usr/local/apache2/bin/,进入bin目录,然后./apachectl start,
                       ii.              方法2:、/usr/local/apache2/bin/apachectl start
                      iii.              其实这时会出现“httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName”,这个问题的原因是在conf文件中没有设置servername,我们打开/usr/local/apache2/conf/httpd.conf,进行编辑,找到#ServerName new.host.name:80行,在其下添加 ServerName 127.0.0.1:80或者ServerName 机器名:80,也可以不加端口号,修改完毕后保存,然后用以下命令重启/usr/local/apache2/bin/apachectl restart
a)         tar zxvf  php-5.1.1.tar.gz
b)        cd php-5.1.1
c)        ,configure脚本的第一个参数的意思还没有搞清楚,关键的目的是为了配置mysql,防止在调试Php程序找不到MySql的库文件 ./configure --with-apxs2=/usr/local/httpd*/bin/apxs --with-mysql=/usr/local/mysql*
d)        不过这时会发现出现一个错误,就是这个系统的版本比较低的话,则出现配置错误,最后提示libxml需要2.6.11或者更高的版本,这个是因为PHP5.1.1要求的配置,所以应当先把系统对xml的最新支持库下载下来,安装过之后在进行PHP的配置安装,现在进入第5步
e)         安装xml最新支持库之后,重新对php进行配置,最后有 “ Thank you for using PHP” 的提示信息,ok,现在我们可以开始安装PHP了
f)         make && make install
2.       安装 libxml2-2.6.11.tar.gz
步骤和前面的安装一样,
a)         tar zxvf libxml2-2.6.11.tar.gz
b)        cd libxml*
c)        ./configure
d)        Make && make install
3.       PHP 与 Apache 整合
a)         既然我们已经成功安装上了Apache Web服务器和PHP,那么我们先来建一个Web站点来测试一下,看看结果是什么。F
                         i.              编辑 /usr/local/apache2/conf/httpd.conf,在最后面加上
NameVirtualHost IP地址(域名也可以,我的虚拟机的IP是172.20.172.14)
<VirtualHost> //这个和IIS下的虚拟目录相似
       ServerAdmin root@域名(或IP)
       DocumentRoot /var/www/doc //站点的文档所处的目录
       ServerName www.test.com //网站的域名,不过想用这个访问是不现实的,因为没有进行域名解析
</VirtualHost>
编辑好conf文件之后我们利用 /usr/local/apache2/bin/apachectl restart命令重新启动apache服务。
                       ii.              新建过虚拟主机之后,我们在该主机文档存放处新建一个名为test.php的文件 ,<? Phpinfo() ?>,phpinfo方法是用来取php安装信息的
                      iii.              好了,所有的准备工作都作完了,我们来访问一下站点,在浏览器地址栏中输入 http://172.20.172.14/test.php ,大家肯定希望看到的是本机上php的安装信息,可惜结果是出乎意料,页面上竟然将test.php文件的内容原样输出了。为什么呢?我们已经安装了php的最新版本了,难道还不能使用php,那我们的工作岂不是白做了?大家想一下,我们刚才安装apache时没有配置apache支持php,其实这就是问题的根源所在。好的,既然找到了问题的原因,那么下面我们就来解决这个问题
                     iv.              编辑 /usr/local/apache2/conf/httpd.conf文件,找到 AddType application/x-compress .Z AddType application/x-gzip .gz .tgz;大约就在838行左右,这两个就是apache现在支持的程序类型,我们在下面添加AddType application/x-httpd-php .php
1.       php 中文支持问题
a)         在第六步我们解决了浏览器访问php程序的问题,那么我们也想到,现在编码的问题,看看是不是可以正常显示中文,其实我说的是php页面的,不是html页面上的中文
b)        我们还在/var/www/doc(当然,这个目录可以是任意的,但必须是你的虚拟主机的文档所在地)建一个ch.php,并添加如下内容<?print “中文测试”?>,结果是可想而知的,因为我既然提到了这个问题那就说明结果有问题,结果就是乱码,我们来查看以下页面的编码,原来默认的是”ISO-8859-1”,我们换成GB2312的编码页面就可以正常显示。既然找到了原因,我们又会想到apache的配置问题了。
c)        编辑 /usr/local/apache2/conf/httpd.conf文件,找到ForceLanguagePriority Prefer Fallback,可以看到这一行下面就是apache支持的字符集的配置,我们在其下一行添加”AddDefaultCharSet GB2312”,保存文件,然后重启apache服务。
d)        再次浏览 ch.php,这次发现还是乱码,现在就是个问题了,既然我们都设置过了默认的字符集是GB2312了,为什么还是乱码呢?其实这个原因就是安装系统时安装的web服务启动的问题,我们利用”/etc/rc.d/init.d/httpd stop”将这个服务停掉。重新加载ch.php,这次发现完全正常了。
2.       php 连接 mysql
a)         关于如何使用php操作mysql不是我来介绍的重点,我来介绍的是php连接mysql时出现的问题及解决方案。
b)        我们还使用test.php文件,去掉原来的内容,将一下代码添加进取        
$link = mysql_connect("localhost","用户名","密码");
       mysql_select_db("test",$link);
       print ("Connected successfully");
       $sql = 'SELECT * FROM tt';
       $res = mysql_query($sql,$link);
       print '<table><tr><th>测试数据</th></tr>';
 
        while ($row = mysql_fetch_row($res)) {
 
            print "<tr><td>$row[0]</td></tr>";
 
        }
 
        print "</table>";
       mysql_close($link);、
c)        好的,我们在浏览一下test.php,大家是不是想着会将tt表里面的数据写到页面上了,这次又让大家失望了,竟然出现以下的错误“ Fatal error: Call to undefined function: mysql_connect() in /var/www/doc/a.php on line 3”。不是吧,mysql_connect()可是php的方法啊,为什么会说是没有定义的呢?那我们想一下安装系统的时候,我们选了sql服务器和web服务器,应该是版本太旧的问题引起的。
d)        我们用 /etc/rc.d/init.d/httpd stop将系统的http停掉。我们再次浏览test.php,这次的问题更严重,我们无法访问了,大家不用想也会明白,httpd服务给停掉了,当然不能访问了,那我们就把apache服务器启动起来看一下“ /user/local/apache2/bin/apachectl start”命令来启动我们的高版本的服务器。
e)         这次应该成功了吧!我们浏览一下test.php,不是吧,又错了!?? “ Warning: mysql_connect() [ function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /var/www/doc/a.php on line 3

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /var/www/doc/test.php on line 4
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /var/www/doc/test.php on line 7” 从Warning可以想到,应该是mysql服务没有启动起来。我们用下面的方法命令让 mysql服务器在后台运行。cd /usr/local/mysql* ,./bin/safe_mysqld 这次我们再浏览test.php,总算舒了一口气,结果总算出来了
其中还要注意的一个问题就是, mysql_connect("localhost"," 用户名 "," 密码 "); 密码一定要正确,否则将会出现访问被拒绝的问题,这就要求我们要知道用户名的密码, root 默认的是空密码,所以我们应该用 mysqladmin 来修改一下,这样可以相对来说安全一点。
如何让安装的服务自动?这样就省了每次重启服务器之后再去启动我们安装的服务了。
a)         自启动当我们安装好Apache之后,从/usr/local/apache/bin/apachectl 到  /etc/rc.d/init.d/httpd 建立一个符号连接:Apache
# ln -s /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
然后在此文件总添加以下几行(大概在文件顶部,约第二行的地方):
# chkconfig: 2345 10 90
# description: Activates/Deactivates Apache Web Server
最后,运行 chkconfig Apache 添加到系统的启动服务组里面:
# /sbin/chkconfig --del httpd
# /sbin/chkconfig --add httpd
如果你的 /etc/rc.d/init.d 已经有了 httpd 这个 shell 脚本,那就先把它删除,再用上面的命令来做一次就可以了。
b)        自启动MySql
                         i.              在MySQL二进制包里面,有一个叫myslq.server的启动脚本程序。把它复制到/etc/rc.d/init.d目录里面:
1.         cd /etc/rc.d/init.d
2.         cp /usr/local/mysql/support-files/mysql.server mysql
3.         接着把它的属性改为“ x”(executable,可执行) chmod +X mysql
4.         最后,运行chkconfig把MySQL添加到你系统的启动服务组里面去。 /sbin/chkconfig --del mysql , /sbin/chkconfig --add mysql
测试看看是否正确/etc/rc.d/init.d/mysql start,结果不是预料的那么好哦,出现了如下的错误,”/etc/rc.d/mysql: line 1: my_print_defaults: command not found……,意思就是说找不到启动程序。那我们来看一下/etc/rc.d/init.d/mysql这个脚本,用文本编辑器打开,找一下bindata一类的目录是不是设置有问题。对了,脚本对$basedir设置的时候出问题了,原因是我们的mysql放在/usr/local/mysql-max-5.0.17-linux-i686-glibc23,而不是mysql脚本里面的/usr/local/mysql,我们把它改一下,然后再启动,这次我们看到Starting MySql SUCCESS,ok,我们的mysql数据库也可以随着系统的启动而启动了,用不着担心再去启动机器后忘了启动数据库服务器,导致网站出问题了。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值