环境:
lamp服务器:
RHEL5.2(kernel2.6.18),iptables stop .selinuxdisabled.lamp主机IP地址是192.168.0.21.已经在DNS服务器上做好A、PTR记录,域名为ccc.dns.com。(注:编译PHP时使用了YUM,YUM服务器IP地址为192.168.0.19)
lamp客户机:
一台windowsserver 2003.一台rhel5.0(防火墙已关,selinux=disabled)
注:(提前配置服务器与客户机IP地址之间能够互相PING通。域名ccc.dns.com也能正常PING通。)
准备:
1、源码安装mysql (解压mysql.XXXXXtar.gz。./configure & make &makeinstall)源码下载网址:http://mysql.borsen.dk/Downloads/MySQL-5.0/mysql-5.0.84.tar.gz。
2、源码安装apache (解压apache..XXXXXtar.gz。./configure & make &make install)
3、源码安装php (解压php.XXXXXtar.gz。./configure & make &makeinstall)http://cn.php.net/downloads.php源码下载点、
一、mysql源码安装步骤:
编译前步骤:
牢记:
安装mysql以前呢,需要先安装几个包。少一个后面configure或者make都会出问题。
需先安装:gcc、gcc-c++、ncureses-devel、安装gcc时有一个依赖。需要先安装glibc-headers、libgomp、glibc-devel才能安装成功gcc。安装gcc-c++时亦有一个依赖libstdc++-devel此包安装上即可成功安装gcc-c++
rpm-e mysql 删除的所有的安装mysql的RPM包,如果不删除完,源码安装的文件与RPM安装的文件极有可能混淆
注:编译时亦可使用2》把错误输出到一个文档中,如果编译出错方便查看。
解压缩:
[ root@localhost ~]# tar -zxvf /var/ftp/nm/mysql-5.0.84.tar.gz -C/usr/local/src/
tar解压指令
z解开tar包
x解开gz文件
v进度条
f文件输出到默认设备
C指定路径
/var/ftp/nm/mysql-5.0.84.tar.gz 这个文件是我预先使用FTP上传进来的mysql源码包。
/usr/local/src/这条路径是使用tar-zxvf命令把mysql.XXXXX.gz解压到的路径。cd到/usr/local/src查看肯定有一个mysql-5.0.84的文件夹而不是mysql-5.0.84.tar.gz。
编译:
[ root@localhost ~]# cd /usr/local/src/mysql-5.0.84
[ root@localhost mysql5.0.84]# ls 查看一下目录。应该有一个文件configure。此文件是检查编译前的环境。
[ root@localhost mysql5.0.84]# ./configure --prefix=/usr/local/mysql \ ###--prefix指源码要安装的路径。
>--with-extra-charsets=all\ ###支持所有的字符串
>--sysconfdir=/etc \ ###配置文件路径
>--enable-assembler\ ###使用一些字符函数的汇编版本
>--with-mysqld-ldflags=-all-static\ ###以静态方式编译服务器
>--with-charset=utf8 \ ###添加对UTF8的支持
##### --localstatedir=/usr/local/mysql/data \ ###存放数据库文件的路径,如果没有这条默认就在/usr/local/mysql/var/目录下。后面呢。也会设定这个文件夹是myql这个帐户的家目录。我是没有加这条路径的。默认的就可以了。
>--with-plugins=all ###默认安装时,是没有INNODE存储引擎。但很多需要安全交易数据的时候就经常使用到这个INNODB,虽然速度有些慢。但比较可靠。加上这条参数,mysql就会支持innodB存储引擎。
安装好以后进入到数据库以后使用showengines这条命令查看mysql所支持的所有引擎。支持的就是YES。不支持就是NO,下图是我加上这条命令并且已经编译好后,进入数据库查看到的内容:
图1
前面介绍完毕,接下来按回车。进入编译第一步:检查
检查成功后的提示,如下图:
图2
Thank youfor choosing MySQL!出来这句话呢,就是检查成功。可以进行下一步了:
编译第二步:使用make命令编译源文件。
[root@localhost mysql-5.0.84]#make 2>log.txt
编译源文件,如果有什么错误信息就会使用2>重定向到当前的log.txt文件中。
编译无误的话,最后几行不会出现什么乱码,只有[makeXX]。。。。。。YES or NO的字样
编译第三步:makeinstall
[root@localhost mysql-5.0.84]#make install 2>logs.txt
这一步是安装make编译好的程序.
检查编译安装的mysql是否完全无误
[root@localhost ~]#cd /usr/local/mysql/
[root@localhost mysql]# ls ########查看一下安装了哪些目录,安装正常的情况如下图:
图3
以上几个文件都有的话安装基本无误。
如果编译安装错误,以上文件极有可能不会全部存在。
再查看mysql源码中support-files中的文件.如果编译的有问题则是下图:
[root@localhost ~]#ls /usr/local/src/mysql-5.0.84/supports-files
图4
以上的文件多数是以.cnf.sh结尾。正常情况下呢,编译OK的文件不止这些。还有一部分.cnf结尾的文件,如下图:
图5
这些.cnf的文件中,有一个是我后面需要复制到/etc/下做为mysql的配置文件模板,也就是后面的把my-large.cnf复制为/etc/my.cnf。如果这些.cnf文件编译的不正常,那么生成基础数据库及启动数据库的时候就会有一堆的乱七八槽的问题出现。
注:编译时间可能在25分钟左右。如果只有10分钟左右就可能有问题出现了。查看一下log.txt或者是logs.txt看看是不是有什么错误提示在里面而自己没有发现的。
权限:
[root@localhost ~]#useradd mysql
[root@localhost ~]#vi /etc/password #####找到mysql用户。把家目录/home/mysql改为/usr/lcoal/mysql/var
[root@localhost ~]#chown –R mysql:mysql /usr/local/mysql ###########使mysql的所有者组都属于mysql。只有用户及超级管理员可以对var进行操作。
权限设置好了,这个时候还没有var目录。也就是数据库文件目录还没有创建。
创建基础基础数据库文件:(var)
[root@localhost ~]#su – mysql
-bash-3.1#cd/usr/local/mysql/bin
-bash-3.1#./mysql_install_db #######这条命令执行完以后,就会创建var文件夹。Var文件夹内有二个子文件夹及一个错误日志文件一个mysql进程文件还有几个不认识的。这二个子文件夹一个是mysql一个是test。Mysql是保存数据库用户或者数据库表的一些信息。Test是做为测试用。
这条命令执行完正确的提示如下:
正确的var目录如下图:
现在数据库的安装就算全部完成了。
接下来就可以登陆数据库
登陆数据库以前需要
启动数据库。命令如下
[root@localhost ~]#/usr/local/mysql/bin/mysqld_safe --user=mysql & ####开启mysql服务。并且后台运行。如下图:
关闭服务:
[root@localhost ~]#/usr/local/mysql/bin/mysqladmin shutdown --user=root--password=888888
有二种方法可以查看mysql的状态。
查看状态1:mysqladmin查看mysql 的服务状态是开启还是关闭的。如下图:
查看状态2:
[root@localhost ~]#ps –aux |grep mysql
更改密码:给root更改密码,更改密码前需要使用-p旧密码登陆才能正确的更改。否则是一条拒绝提示。
[root@localhost ~]#/usr/local/mysql/bin/mysqladmin -u root –poldpassword password newpassword
如图:
登陆MYSQL
[root@localhost ~]#mysql –u root –p
Enterpassword :
如下图:
SHELL>use mysql;切换到mysql这个库
SHELL>show tables; 查看所有的表
如下图:
下面总结一下源码安装的MYSQL数据库的目录结构:
不提定路径默认安装在/usr/local下
目錄名稱 | 用途 |
bin | MySQLClient 執行檔(mysql)、系統创建及維護用腳本 |
libexec | MySQLServer 執行檔(mysqld) |
var | 資料庫本體所在地、错误日誌文件、进程文件 |
Mysql-test | 这个不知道是什么耶 |
include/mysql | C語言專用引入檔所在地 |
lib/mysql | 函式庫 |
share/mysql或者share/info或者 share/man | 錯誤訊息檔 、说明文件 |
sql-bench | 效能測試元件 |
下面总结几个MYSQL安装途中的一系列问题:
问题一、
编译前没有安装ncureses提示错误:
解决办法:安装ncurses及ncurses-devel
问题二、
编译好后,查看MYSQL安装目录下的文件。只有四个。
Bin lib share include
而正常情况下的文件夹数据为
Bin includelib libexec mysql-test share sql-bench.
虽然以前装过MYSQL,但也早忘光了,并不知道这四个文件夹是不正常的。
问题三、
启动服务提示mysqld这个文件。
当然,少了几个主要的文件,服务启动的时候总是提示少这文件少那文件,我记得的就是/libexec/mysqld这个文件少了。提示出来的。还有几个文件少了。当时我又没有删除RPM安装的MYSQL。使用find/ -namemysqld在/usr/libexec/mysqld找到缺少的文件了。这是RPM默认安装的服务器主程序。复制到/usr/local/mysql/。还是有其它的错误提示。说是少什么文件已经记不清楚了。思前想后。看来是我安装的MYSQL有问题。
解决办法:重新编译安装。把RPM安装的MYSQL全部卸载掉。并且在编译前安装gcc-c++。再次进行编译。编译出来后。
问题四、
少resolveip这个文件。因为这个resolveip在mysql/bin下。但是没有安装上。也能从RPM安装的程序中找到。就把RPM的这个文件复制到/mysql/bin下。这个问题算搞定了。
又有问题出现了
问题四、
创建基础数据库时执行mysql_install_db出下现列错误
现在我知道是编译的源有问题。当然安装出来的也是有问题的.mysql的配置文件是从源码包的supports-files中复制的。编译正常的情况下这个supports-files文件中有一部分文件是以.cnf结尾。但事实却是以.cnf.sh结尾。也就是说我编译的这个源有问题。但在不知道的情况下把my-large.cnf.sh也给考贝到/etc/my.cnf做为配置文件使用。
因为编译的有问题。所以出现以上提示。解决办法打开/etc/my.cnf。把’MYSQL_TCP_PORT@’=port更改为port= 3306.client及mysqld选项都需要更改。就可以解决。
正确的配置文件参见下图:
问题五、
Mysqlamdinping 查看系统服务是否开启时,权限拒绝
解决办法:命令行加上有权限的用户名 ./mysqladminping –user=mysql问题解决
问题六:
Mysqladminshutdown关闭服务时提示拒绝信息
解决办法:./mysqladminshutdown --user=root--password=XXXXX因为root超级管理员权限。所以用mysql的root帐户关闭就OK。
问题七:
进入数据库时无法登陆。并且提示找不到/tmp/mysql.sock路径:
解决办法:服务压根都没有开起来。当然不能进入。开启服务:/usr/local/mysql/bin/mysqld_safe–user &
问题八:
MYSQL登陆不进去。并且提示权限拒绝:
有二种办法解决此类问题:
第一种:你还记得旧密码,直接输入。要么使用mysqladmin -uroot –poldpass passworkd newpass直接更改新密码。
第二种:
把服务关闭(使用mysqladmin需要用到root旧密码,你都已经忘了,肯定用这种方法无法关闭)
[root@localhost ~]#ps –aux |grep mysql ######查看已经开起来的mysql进程号
[root@localhost ~]#skill -9 进程号 ######强制结束二个进程。再次使用ps–aux |grep msyql查看已经没有mysql的进程启动。
开启服务
[root@localhost ~]#/usr/local/mysql/bin/mysqld_safe --user=mysql--skip-grant-tables --skip-networking & ###############有这么二条参数跟着。进入数据库root就是空密码了。
[root@localhost ~]#mysql –u root –p
空密码进入以后:
SHELL>UPDATEuser SET Password=PASSWORD(‘新密码’) where USER=’这个密码附给哪个用户’;
SHELL>FLUSHPRIVILEGES;
SHELL>EXIT
密码更改成功。重新启动服务。这个新密码才会生效。
注:也可以在正常(启动服务没有使用—skip-grant-tables)进入数据库以后。使用updateuser set 更改密码,不一定非得使用mysqladmin。
到此mysql基本完成
二、安装apache步骤
基础步骤与上面的编译相同。只是参数不同,到参数祥细解释
#tar -zxvfhttpd-2.2.11.tar.gz -C /usr/local/src(解压源码包)
#cd/usr/local/src/httpd-2.2.11(进入解压后的包准备下一步的编译)
#./configure--prefix=/usr/local/apache2 --enable-so--enable-rewrite(编译并且指定安装的路径为/usr/local/apache2,后面的二个参数是为了mysql.php而启用的。--enable-so是启用插件·--enable-rewrite是url路径重定向·可以根据设置。将不同的regex将请求重定向.)
#make 编译源
#makeinstall 安装
#/usr/local/apache2/bin/apachect1stop/start/restart(服务启动成功)
测试一下:
在WIN2003的IE浏览器中输ccc.dns.com。访问到itworks。
Apache正常。
三、安装PHP步骤:
安装前准备:
牢记:支持PHP的库文件。
- zlib、zlib-devel
- libxml2、libxml5-devel
- libjpeg、libjpeg-devel
- libpng、libpng-devel
- Freetype-devel
- gd、gd-devel
以上五种都可以使用RPM手动安装。第6种安装GD的时候呢,需要先安装gd-devel。安装gd-devel的时候呢有12个RPM包是互相依赖循环。手动是无法成功的安装的。所以呢。安装第6种需要YUM来安装。就OK了。
解压:
#tar –zxvfphp-5.3.0.tar.gz -C /usr/local/src/
#cd /usr/local/src/php-5.3.0
# cdphp-5.3.0/
[root@localhost php-5.3.0]# ./configure--prefix=/usr/local/php5 \ PHP安装目录
>--with-apxs2=/usr/local/apache2/bin/apxs \ PHP为apache服务器提供的模块位置,PHP解析后的东西如何交给apache就通过这个模块.
>--with-config-file-path=/usr/local/php5 \ PHP的配置文件所以路径
>--with-mysql=/usr/local/mysql/ \ PHP为MYSQL服务器提供的模块位置
> --with-gd \ 激活GD库扩展功能(因为是RPM安装。GD的程序gd.h, libgd.a,libgd.so等,都在/usr下的不同目录之中,所以就不写目录让系统自动去找安装的路径。如果GD是使用源码编译后的。就要在—with-gd后写上源码编译的路径)
> --enable-gd-native-ttf\ 激活对本地TrueType字符串函数的支持
>--with-ttf \ 激活对FreeType1.x 的支持
> --enable-gd-jis-conv \
> --with-libxml-dir 告诉PHP,支持的libxml库在什么地方
> --with-zlib-dir 告诉PHP支持的zlib库在什么地方
> --with-zlib 激活zlib压缩库
>--with-freetype-dir=/usr/local/freetype \ 激活对FreeType2.x 的支持
>--with-jpeg-dir=/usr/local/libjpeg 激活对jpeg-6b的支持
>--with-png-dir=/usr/local/libpng 激活对png的支持
> --enable-xml 激活xml库
> --enable-sockets 激活socket通讯特性
#make
#makeinstall
接着从源码中复制一个配置文件:
#cp/usr/local/src/php-5.3.0/php.ini-development /usr/local/php/php.ini
更改apache配置文件,使用apache支持PHP。
# vi/usr/local/apache2/conf/httpd.conf
需要改三处地方:
1、找到DirectoryIndex 配置文件第167行.
默认是DirectoryIndex index.html
在DirectoryIndex后面添加index.php 不用删除index.html ###这样做的目的是访问到apache的时候默认显示主页为index.php这个主页。
2、找到AddType application/x-gzip .gz .tgz 配置文件第309行
在这一行后面添加二行,如下:
AddType application/x-httpd-php .php .php3 .php4 ######这一行的意思是apache支持解析的PHP格式
AddType application/x-httpd-php-soruce .phps
3、找到LoadModule php5_module modules/libphp5.so 在配置文件第53行
这一行告诉apache加载的PHP模块。这个模块在/usr/local/php/modules/下。可以查看是libphp5.so还是libphp4.so。因为我安装的是php5.3.0。所以肯定是libphp5.so不会有错。这行主要看的是LoadModule后面的PHP模块。如果模块是5.0。就是上面那样写。如果PHP模块是4.0就要把上面的php5_module及modules/libphp5.so的数字5都改成4.才能正常解析。
重启apache服务
#/usr/local/apache2/bin/apachectlrestart
编译PHP主页
#vi/usr/local/apache2/htdocs/index.php
<?php phpinfo ?> ###############这句话可以显示PHP的安装信息及模块信息
:wq
在LINUX的火狐浏览器上访问ccc.dns.com。查以看到php的安装信息及版本信息。如下图:
在WIN2003的IE浏览器上访问ccc.dns.com查看PHP的信息:
自己写一段代码到index.php解析一下:
<html>
<head>
<title>PHP 测试</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>注意绿点的不是冒号,是分号。
</body>
</html>
解析出来的效果应该是helloworld
实际上也是可以解析成功。
开始不能解析。情况如下:
在index.php里面写了
<?php phpinfo ?>
<html>
<head>
<title>PHP 测试</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>注意绿点的不是冒号,是分号。
</body>
</html>
在WINDOWS2003上访问是一片空白:
又在LINUX上访问。只出现了一堆源码:如下
<?php phpinfo ?>
<html>
<head>
<title>PHP 测试</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
我就纳闷了。在网上查啊查啊。查了6个小时。还是个没有头绪。网上说的index.php没有执行权限啊。我改了。还是空白还是源码。网上又有的说是php.ini没有权限我又改成了755还是空白还是源码。问题不能解决。。我就纳闷。这个破LAMP我都弄几天了还没弄出来。一年多以前没有弄出来那是没有用心。现在这么用心还是没搞定。我就气啊。跑apache的配置文件里面再一看。是没有看出来什么。我就看着发起呆来了。
看到这AddType application/x-httpd-php .php.php3.php4 我瞧这行,把.php .php3 .php4用空格空起来。开始是粘一起的。没有分开。
再把apache服务一重启。
OY。成功了。。哈哈哈。二个空格找了一上午的错误。。哦耶耶~~~~~~~~
LAMP初始安装成功了