apache已经在linux里存在,查看apache版本信息及安装目录
# apachectl -v
Server version: Apache/2.2.3
2.安装mysql,由于redhat Enterprise 5 中自带一个mysql的版本,需要先删除
a. 查找已安装的mysql 版本:
#rpm -qa | grep mysql (注意大小写,如果mysql 不行就换MySQL)
在屏幕上将显示已安装的mysql包名如:mysql-5.0.77-3.el5 ;
b. 将搜索出的包名卸载:
#rpm -e --nodeps mysql-5.0.77-3.el5 (nodeps表示强制删除)
再次查找该包名,如果没有结果输出则表明已将该版本的mysql卸载了
c. 下载mysql:http://dev.mysql.com/downloads/mysql/5.0.html
客户端:MySQL-client-community-5.0.92-1.rhel5.x86_64.rpm
服务端:MySQL-server-community-5.0.92-1.rhel5.x86_64.rpm
d.检查perl-DBI-1.52-2.el5.rpm是否安装,
该包为是安装mysql的依赖,没它mysql安装不起,查看是否安装,如果安装了就不需要了,
可以通过 #rpm -qa | grep perl*查看是否已经安装,该包在linux系统盘上可以找到,以下提供该包下载)
e.安装mysql
[root@localhost /]#rpm -ivh MySQL-server-community-5.0.92-1.rhel5.x86_64.rpm
[root@localhost /]#rpm -ivh MySQL-client-community-5.0.92-1.rhel5.x86_64.rpm
f.查看是否安装成功
[root@localhost /]#netstat -ntpl
显示3306端口开放表示服务安装成功
[root@localhost /]#mysql
能自动登陆,则已成功
g.修改mysql root密码
[root@localhost/]#/usr/bin/mysqladmin -u root password 'xxxxxx';
[root@localhost /]#mysql -u root-p
Enter password:xxxxxx
出现mysql>表示登陆成功!
h.对mysql用户设置远程访问权限
方法1、改表法:登陆mysql后,更改“mysql”数据库里的“user”表里的“host”项,将“localhost”改“%”
mysql>use mysql;
mysql>update user set host ='%' where user ='root';
mysql>select host,user from user;
mysql>FLUSH PRIVILEGES
方法2、授权法:假设允许用户username通过密码password从远程连接到mysql服务器
mysql>GRANT ALL RRIVILEGES ON*.* TO username@'%' IDENTIFIED BY 'password' WITHGRANT OPTION;
mysql>FLUSH PRIVILEGES;
i.安装目录结构
数据库目录:/var/lib/mysql/
配置文件:/usr/share/mysql(mysql.server命令及配置文件)
相关命令:/usr/bin(mysqladmin、mysqldump等命令)
(*mysql的一种安全启动方式:/usr/bin/mysqld_safe -- user=root &)
启动脚本:/etc/rc.d/init.d/
1、下载
到官网下载mysql-5.1.65.tar.gz(注意是源码包)
2、解压
tar -zxvf mysql-5.1.65.tar.gz
3、建立目标文件夹
mkdir /usr/local/mysql
也就是说等下安装的mysql要安装到这个文件夹里面
4、配置
./configure --prefix=/usr/local/mysql/
在./configure时出现错误:error: No curses/termcaplibrary found
下载安装相应软件包
yum list|grep ncurses
yum -y install ncurses-devel
yum install ncurses-devel
5、编译
make
6、安装
make install
7、启动
MySQL服务并不会自动启动,还需要先初始化MySQL数据库,操作如下:
cd /usr/local/mysql/bin
sudo ./mysql_install_db --user=root
注意,这里最后的root是指可以操作数据库的用户,可以是当前用户,也可以新建用户,与linux上的root用户是两回事,可以自己取一个名字
./mysqld_safe --user=root & 这条命令负责启动mysql服务的守护进程,此外最后的&是必须的,因为希望守护进程在后台运行
这里的root就是刚才的那个
8、为根用户创建密码
./mysqladmin -u root password ‘123456’
如果root已经设置过密码,采用如下方法
./mysqladmin -u root password oldpass‘123456’
9、测试
mysql -u root -p
会提示输入密码,就用刚才设置的密码
123456
如果出现mysql>,说明连接成功了,下面通过命令 创建一个数据库、建一个表,增加一条记录,为后面的测试准备
mysql> create database gywtest;
mysql> use gywtest;
mysql> create table student(id int(4) not null primary keyauto_increment,stuname char(20));
mysql> insert into student(stuname) values('Tom');
注意每条命令后面有个分号,如果上面的都成功,后面就可以用这个测试。
四、将PHP与MySql结合起来
1、重新配置PHP,改变配置选项,只需重复PHP安装时的最后的三步configure, make, 以及 make install,然后需要重新启动 Apache 使新模块生效,Apache不需要重新编译。
2、配置
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/usr/local/mysql/bin/mysql_config 注意mysql_config 的路径
3、编译 make
4、安装 make installe
5、测试 写一个页面test.php,放在apache的web目录下,测试上面用命令创建的数据库
<?php
$mysqli=new mysqli();
$mysqli->connect('localhost','root','123456','gywtest');
// 创建查询
$sqlstr='select * from student';
//发送查询给MySql
$result=$mysqli->query($sqlstr);
while($row=$result->fetch_object())
{
$name=$row->stuname;
echo $name;
}
?>
Fatal error: Class 'mysqli' not found in /home/lufangtao/Project/DB.php online 3
解决方法:
/usr/local/php/bin/phpize 这里回车运行
出错:
Cannot find config.m4.
Make sure that you run './phpize' in the top level source directory of themodule
解决方法:
PHP源码包文件夹下的EXT文件夹就是放置着目前版本的可用扩展,CD进去看看都有哪些你需要的?应该看到mysqli文件夹了吧~~~
在当前目录下执行phpize
[root@localhost mysqli]#/usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Modeule Api No: 20090626
Zend Extension Api No: 220090626
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
解决方法:
yum install autoconf再次运行上面的命令即可。
[root@localhost mysqli]#./configure –prefix=/opt/mysqli –with-php-config=/opt/php/bin/php-config
–with-mysqli=/opt/mysql/bin/mysql_config
[root@localhost mysqli]#make
[root@localhost mysqli]#make install
安装完成后会有提示扩展所在目录路径,如:
/opt/php/lib/php/extensions/no-debug-zts-20090626php
所需的mysqli.so便会在此目录下,接下来修改/opt/php/etc/下的php.ini文件,加入mysqli扩展,即加入如下一行:
extension=/opt/php/lib/php/extensions/no-debug-zts-20090626/mysqli.so
这里还是会出现错误:
解决不用扩展连接MySQL的方法。
最终还是没有解决MySQLi连接的问题,但是可以使用MySQL数据库了,下面是测试程序
<?php
$link=mysql_connect('localhost','root','123456');
if(!$link) echo "F!";
else echo "S!";
mysql_select_db("students") or die("Couldnot select database");
$query="SELECT * FROM student;";
$result=mysql_query($query) or die("Queryfailed");
print "<table>\n";
while ($line =mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print"\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n"; }
print "</table>\n";
/* 释放资源 */
mysql_free_result($result);
mysql_close();
?>
~
2.安装php最新版,从http://www.php.net/downloads.php下载
php-5.3.5.tar.gz
安装php之前先安装libxml2:
解压后进入目录:libxml2-2.7.8,然后执行:
./configure --prefix=/usr/local/libxml2
Make && make install
a.解压
[root@localhost /]# tar -zxvf php-5.3.5.tar.gz
b.安装
[root@localhost /]# cd php-5.3.5
[root@localhost /]# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/lib --enable-track-vars --with-xml --with-mysql
其中--with-apxs2=/usr/local/apache/bin/apxs 是指向apache目录
[root@localhost /]# make
[root@localhost /]# make install
[root@localhost /]# cp php.ini-production /usr/local/lib/php.ini
c.配置
# vi /usr/local/apache/conf/httpd.conf
修改此文件,更改以下指令为:
DirectoryIndex index.html index.shtml index.cgi index.php index.phtml index.php3
ServerName 12.34.56.78:80 //这里的ip和端口号视实际情况而定
Options Indexes FollowSymLinks
AllowOverridenone
Requireall granted
//为安全起见,去掉"Indexes"
增加LoadModule php5_module modules/libphp5.so
LoadModule php5_module modules/libphp5-zts.so
<Directory/>
AllowOverride none
Require all granted
</Directory>
DocumentRoot"/usr/local/apache/htdocs"
<Directory"/usr/local/apache/htdocs">
找到AddType处,并添加以下2行:
AddType application/x-httpd-php .php .php3 .html .phtml .inc
AddType application/x-httpd-php-source .php5
AddHandler cgi-script .cgi .pl
AddHandler php5-script .php
vi /usr/local/lib/php.ini
更改以下指令为:
register_globals = On
3.安装php碰到的问题
a.configure: error: Cannot find MySQL header filesunder yes
解决办法:安装MySQL-devel-community-5.0.92-1.rhel5.x86_64.rpm即可
b.configure: error: Cannot find libmysqlclient under/usr.
解决办法:cp /usr/lib64/mysql/* /usr/lib/mysql/
这个问题也应该是安装64位的才会出现。
4.重新安装apache2.3.8
需先安装以下包,用于解决问题:apache2.3.8编译出错 configure: error: APR-util not found. Please read thedocumentation
a.apr-1.4.2.tar.gz
[root@localhost /]# ./configure –prefix=/usr/local/web/apr
[root@localhost /]# make
[root@localhost /]# make install
b.apr-util-1.3.10.tar.gz
[root@localhost /]#./configure –prefix=/usr/local/web/apr-util–with-apr=/usr/local/web/apr
[root@localhost /]#make
[root@localhost /]#make install
c.pcre-8.10.tar.gz
[root@localhost /]#./configure –prefix=/usr/local/web/pcre
[root@localhost /]#make
[root@localhost /]#make install
最后安装apache
apache
yum -y install gcc gcc++ zlib-devel
在源码安装apache之前,我们要先卸载系统中,已经通过rpm包安装的apache。如下:
rpm -qa |grep httpd
rpm -e --nodeps httpd-2.2.15-29.el6.centos.x86_64
rpm -e --nodeps httpd-tools-2.2.15-29.el6.centos.x86_64
安装之前需要先安装apr apr-util pcre,因为apache需要三个的支持
tar -zxvf httpd-2.2.tar.gz
cd httpd-2.2
./configure --help
[root@localhost /]#./configure -prefix=/usr/local/apache -enable-rewrite -enable-so-with-apr=/usr/local/web/apr -with-apr-util=/usr/local/web/apr-util -with-pcre=/usr/local/web/pcre
[root@localhost /]#make
[root@localhost /]#make install
apache2.3.8安装成功
apache加入系统服务
为了让apache开机启动,我们可以把apachectl启动脚本加入rc.local文件中,如下:
echo "/usr/local/apache2/bin/apachectlstart">>/etc/rc.local
我们也可以通过把apache加入系统服务,来启动apache。把apache添加为系统服务有两种方法,第一种是通过chkconfig进行添加,第二种是直接添加系统的各个启动级别。
我们先来介绍第一种方法,修改启动httpd脚本加入如下两行命令,如下:
#chkconfig: 2345 70 60
#description: apache
说明:
chkconfig: 2345 70 60中的2345是指脚本的运行级别,即在2345这4种模式下都可以运行,234都是文本界面,5是图形界面X。
70是指脚本将来的启动顺序号,如果别的程序的启动顺序号比70小(比如44、45),则脚本需要等这些程序都启动以后才启动。60是指系统关闭时,脚本的停止顺序号。
description: apache关于脚本的简短描述。
使用chkconfig进行添加,如下:
chkconfig --add httpd
chkconfig |grep httpd
chkconfig --add httpd命令的作用是把/etc/init.d/httpd加入到/etc/rc.d/rc0.d到/etc/rc.d/rc6.d目录下。如下:
find /etc -name *httpd
开启apache开机启动,使用如下命令:
chkconfig httpd on
chkconfig |grep httpd