Linux服务器的升级

一.    检测MySQL、Apache、PHP的安装模式:
这部分的主要目的是了解MySQL、Apache、PHP的安装模式,从而选择以何种方式删除之前的旧版本。
1.    MySQL:
# rpm –q mysql
package mysql is not installed.
显示结果表明,MySQL不是以RPM包来安装的,而是以二进制包安装。
2.    Apache:
# rpm –q apache
apache-1.3.12-2
显示结果表明,Apache是以RPM包安装的,且版本是1.3.12-2。
3.    PHP:
# rpm –q php
php-3.0.15-2
显示结果表明,PHP是以RPM包安装的,且版本是3.0.15-2。

二.    备份Linux服务器上的文件:
1.    MySQL:
Export库文件,将之前MySQL中的库全部导出。
2.    PHP3:
将PHP的源文件备份。
3.    Apache:
这次由于Linux版本的问题,新版本的Apache,无论是RPM(Redhat Package Management),还是二进制包,都无法安装成功。而未升级Apache,只是将其关键的httpd.conf文件做过修改(这部分,后面会有详细叙述)。

三.    删除之前旧版本的MySQL、PHP:
根据“二”中检测的安装模式,选择不同的删除方式。
1.    MySQL:
已经检测是用二进制包安装,卸载的方法,先用“find –name”命令查到所有MySQL文件的路径,然后逐一使用“rm –rf 文件路径”的命令删除。
2.    Apache:
前面提到过Apache由于Linux版本的问题,没有升级。
3.    PHP:
由于在“二”中已经检测了PHP3是以RPM的方式安装的,则只需运行:
# rpm –e php-3.0.15-2
error: removing these package would break dependencies:
     php is needed by php-imap-3.0.15-2
     php is needed by php-ldap-3.0.15-2
     php is needed by php-pqsql-3.0.15-2
     php is needed by piranha-qui-0.4.12-1
运行后,显示上面所列错误。
解决方法:
先用find命令查到以上所显示每个package的路径,然后逐一删除,再次运行该命令就可以了。
当然也可以用rpm命令,逐一删除这些文件。
# rm –rf package的路径
四.    安装新版本:
新版本的MySQL和PHP,全部放在“/root”目录下分别为mysql-3.23.46.tar.gz和php-4.0.6.tar.gz的tar包。
1.    MySQL:
(1)
# cd /root
进入root目录。

(2)
# tar –zxvf mysql-3.23.46.tar.gz
将之前放在root目录下的mysql新版本的tar包,解包。

(3)
# cd mysql-3.23.46
进入解包后,mysql的目录。

(4)
# ./configure –prefix=/usr/local/mysql >--with-berkeley-db=./bdb >--with-tcp-port=3306 >--with-mysqld-user=mysql >--with-charset=gb2312 >--with-extra-charset=latinl
配置mysql:
①安装路径;
②支持bdb数据库类型,事务处理;
③设置端口为3306;
(这部分要注意,如果配置时没写这句配置语句,或者写成了9999,都会导致MySQL无法正常进入。)
④设置用户;

(5)
# make
编译。

(6)
# make install
安装。

(7)
# scripts/mysql_install_db
建立初始数据库

(8)
# chown –R root /usr/local/mysql
# chown –R mysql /usr/local/mysql
设置权限

(9)
# adduser mysql
增加mysql用户

(10)
# cd /etc/rc.d/init.d
# cp /root/mysql-3.23.46/support-files/mysql.server mysql
# chmod +x mysql
增加执行权限

(11)
# /sbin/chkconfig –del mysql
# /sbin/chkconfig –add mysql
运行chkconfig,把mysql添加到系统的启动服务组里

(12)
# reboot
重起Linux服务器服务器

(13)
# cd /usr/local/mysql/bin
#./mysql
进入MySQL

(14)
mysql>show databases;
+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.11 sec)
显示MySQL中存在的库

(15)
mysql>use mysql
进入名为mysql的库

(16)
mysql>grant all on *.* to admin@’%’ identified by ‘422817’;
设置用户、密码
(17)
mysql>quit
Bye
退出MySQL

(18)
# ./mysql –u root admin –p
Enter password:
尝试按照刚刚设置的用户和密码进入MySQL

至此,MySQL安装和测试成功。接下来就是导入(Import)之前备份的库文件。同样也是使用MySQL-Front。
不过,有一点要注意,在Import之前的库文件时,要先create database,且一定要和之前同名。

2.    Apache:
虽然这次Linux服务器整个的升级,最后的结果是Apache还是采用最初的版本。不过在这里,还是提一下Apache以RPM包的安装过程:
先找到之前Linux6.02的CD,在其中的“RedHat/RPM”目录下,有一个名为apache-1.3.12-2.i386.rpm的文件。
由于Linux服务器没有CDROM,采取的方法同前面提到的一样,现在Windows下将该目录下的文件拷贝出来,然后通过局域网,拷贝到Samba开启的目录。

(1)
# cp /home/httpd/html/pos/bak/apache-1.3.12-2.i386.rpm /root
将RPM包的文件,拷贝至目录“/root”

(2)
# cd root
进入root目录

(3)
# rpm –i apache-1.3.12-2.i386.rpm
将apache-1.3.12-2.i386.rpm套件安装到Linux服务器服务器,默认的安装路径为:./usr/lib/apache,如果是二进制包,则路径应为:/usr/local/apache。

(4)
# /etc/rc.d/init.d/httpd start
运行Apache。如果结果如下,表示可以正常启动
Starting httpd:   OK  ]

(5)
# ps aux | grep httpd
查询整个系统中,所有包含httpd(Apache服务器),且正在执行的程序。
root      1368  0.0  3.4  4560 2196 ?        S    16:31   0:00 httpd
nobody    1371  0.0  3.6  4668 2280 ?        S    16:31   0:00 httpd
nobody    1372  0.0  3.6  4668 2280 ?        S    16:31   0:00 httpd
nobody    1373  0.0  3.6  4668 2280 ?        S    16:31   0:00 httpd
……
(6)
如果Apache运行正常,可以从其他机器的IE浏览到Apache的欢迎页面。

至此,Apache Web Server安装和测试成功。
3.    PHP:
(1)
# /etc/rc.d/init.d/httpd stop
首先停掉Apache

(2)
# cd /root
进入root目录。

(3)
# tar –zxvf php-4.0.6.tar.gz
将之前放在root目录下的PHP4的tar包,解包。

(4)
# cd php-4.0.6
进入解包后,PHP4的目录。

(5)
# ./configure –apxs=/usr/sbin/apxs >--with-config-file-path=/etc/httpd/conf >--with-mysql=/usr/local/mysql >--with-gd >--with-zlib >--with-system-regex >--enable-ftp
配置PHP:
①如果把apxs安装到了其他路径,必须更改“/usr/sbin/apxs”,以指向apxs脚本程序所在的路径。通常二进制包,路径为“/usr/local/apache/bin/apxs”;RPM包,路径为“/usr/sbin/apxs”。
②将PHP配置成Apache的DSO模块。配置文件将保存在“/etc/httpd/conf”(和Apache的配置文件一起);
③ 如果是以RPM包安装MySQL,应该把“--with-mysql=/usr/local/mysql”改为“--with-mysql”
④ 如果没有GD库,请取消“--with-gd”
⑤ 如果要支持ftp上传功能,需要“--enable-ftp”

(6)
# make
编译。

(7)
# make install
安装。

(8)
# reboot
重起Faresever服务器

五.    配置:
配置这部分主要针对Apache的httpd.conf文件,我们要求原先没有升级的Apache,既可以解析PHP4,也可以解析PHP4。
由于Linux服务器的Apache服务器是以RPM包装的,所以httpd.conf文件放在“/etc/httpd/conf/httpd.conf”。
以下是对该配置文件所做的编辑修改:
1.    找到该文件中
# LoadModule php3_module  modules/libphp3.so
将其改为:
# LoadModule php4_module  /usr/lib/apache/libphp4.so

作用:将之前Apache所Load的PHP3的Module,改为PHP4的Module,后面是Module文件的路径。

2.    找到该文件中]
# AddModule mod_php3.c
将其改为:
# AddModule mod_php4.c

作用:将之前Apache所添加的Module由PHP3改为PHP4。

3.    找到该文件中:Port 80,所在位置,在下面增加如下语句:
DirectoryIndex index.html index.shtml index.cgi index.phtml index.php3 index.php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

作用:可以是未升级的Apache,既能解析PHP3,也能解析PHP4。

至此,1.3.12版本的Apache配置文件“/etc/httpd/conf/httpd.conf”修改完毕。

六.    安装中可能出现的错误:
1.    MySQL:
(1)    如果MySQL的安装进入到前面(13)时,出现错误无法正常进入。
错误原因:端口设置错误。
用“netstat -t -l -p”命令查看网络状态,发现根本没有mysql,只有一个9999的端口在运行。
修改方法:
①    看/usr/local/mysql/bin/safe_mysqld,是否有一行为MYSQL_TCP_PORT=${MYSQL_TCP_PORT:-9999},将其改为MYSQL_TCP_PORT=${MYSQL_TCP_PORT:-3306}
②    用VI编辑器进入查看,并修改。
# vi /usr/local/mysql/bin/safe_mysqld
③    重启mysql
# /etc/rc.d/init.d/mysql.server stop
# /etc/rc.d/init.d/mysql.server start

(2)    连接MySQL出现错误,只要把opendatabase.php的文件改成127.0.0.1,就可以正常连接。
错误原因:权限问题。
修改方法:删除mysql库的user表中,一条Host为fareserve.fareexpress.com,而User为空的记录。

2.    Apache:
之前想安装新版本,也就是1.3.22的Apache,但是,不论是RPM包,还是二进制包都无法安装成功。考虑为不过由于Linux版本的原因。最后还是采用了之前版本的Apache,还是用RPM包安装,未出现什么问题。
3.    PHP:
安装很顺利。只是安装完后,无法在IE中浏览FareExpress(PHP3),和Power POS Management(PHP4),后来修改了Apache的httpd.conf(配置文件),这个在前面第五点“配置”中,已经介绍的很清楚,这里不再重复介绍。