首页 > linux, 系统 > LAMP的部署经历

LAMP的部署经历

2008年8月10日 李悦 发表评论 阅读评论

  此次安装的版本比较低,适用于某个老系统的环境要求。费了一些周折,网络上提供的资料准确性有限,很杂乱。需要自己的实践和研究总结一些方法。
  环境:Redhat AS5,Apache1.3.9,PHP4.1.2,Mysql4.1,ZendOptimizer-2.5.7
  其他软件:zlib-1.2.3.tar.gz(后面会提及)

一、MySQL数据库

1、第一次用二进制方式安装,直接解压,初始化数据库出错,启动也失败过,后来采用源码安装包安装,避免麻烦。
源码安装:

1
2
3
4
5
6
7
8
9
10
11
12
groupadd mysql  /*创建mysql用户组*/
useradd -g mysql mysql /*创建用户*/
tar zxvf mysql-4.1.tar.gz    /*解压缩*/
cd mysql-4.1
./configure --prefix=/usr/local/mysql /*指定mysql安装路径*/
make /*时间会比较长*/
make install /*安装完毕*/
cp support-files/my-large.cnf /etc/my.cnf    /*复制配置文件改名为my.cnf,如果提示覆盖按Y确定*/
cd /usr/local/mysql
bin/mysql_install_db --user=mysql    /*必须以mysql用户初始化数据库*/
chown -R mysql:mysql /usr/local/mysql  /*更改mysql目录所有者权限,否则会导致启动失败*/
bin/mysqld_safe --user=mysql &    /*用mysql用户启动服务,只有不提示end,就成功了*/

2、修改mysql密码:
#mysqladmin -u root -p password ‘mypasswd’
输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。
mysql4以上版本会出现客户端连接不上的情况。需要再做如下操作更新:
#mysql -u root -p  /*输入刚才更改的密码登陆*/
执行下面的语句:
set password for root@”localhost”=old_password(‘mypasswd‘);

3、更改mysql默认最大连接数
mysql默认最大连接数是100,在实际应用中,不够。
修改mysqld_safe(一种不需要编译mysql就可以实现的方法)
编辑mysqld_safe启动脚本,找到mysqld启动的那两行,在后面加上参数 :
-O max_connections=1000
然后关闭mysql重启它,用
mysqladmin -uroot -p variables
输入root数据库账号的密码后可看到变量信息。
| max_connections | 1000 |
即新改动已经生效。

二、安装apache

  tar -zxvf apache_1.3.9.tar
  cd apache_1.3.9
  ./configure –prefix=/usr/local/apache –enable-module=so  /*指定安装路径,激活动态模式,必需激活mod_so*/
  make
  make install

  确认mod_so是否激活成功:
  /usr/local/apache/bin/httpd -l /*使用此命令查看*/
  在出现的列表中,只要有mod_so.c就可以了.

补充:Apache1.3中,最大连接数的上限是256,负载高的话这个太少了,提高上限,需要在编译之前,修改源码src/include/httpd.h中找到“#define HARD_SERVER_LIMIT 256”这行,改成1000或者更高,重新编译安装。然后在httpd.conf文件中,修改MaxClients数值,才能突破最大256的限制,否则apache启动失败。
可以查看系统中,当时有多少连接数ps -ef|grep http|wc -l 。

在Apache 2.0中新加入了ServerLimit指令,无须编译Apache就可以加大MaxClients。

三、安装PHP

1
2
3
4
5
6
7
8
  tar -zxvf php4.1.2.tar
  cd php4.1.2
   ./configure --with-apxs=/usr/local/apache/bin/apxs 
   --enable-track-vars --with-mysql=/usr/local/mysql --with-zlib
  make
  make install
 
  cp php.ini-dist /usr/local/lib/php.ini /*建立php.ini配置文件*/

分析:前面有过失败的经历,在./configure时候没有加–with-zlib,安装后,启动apache失败,提示undefined symbol “compress” when loading libphp4.so.
原因:官网说法,PHP支持mysql需要有zlib,没有的话,出现上面的错误。可以先查看是否已经装有zlib。
#rpm -qa|grep zlib
没有安装的话,下载安装zlib-1.2.3.tar.gz源码包,make ,make install安装,将会安装在/usr/local/lib/libz.a

误解:网上有说法是根据compress的字面意思,缺少nocompress安装包,是错误的,不起作用的。

如果前面安装过php,在重新配置前,你需要先清除原来的配置,否则是无法编译通过的.我是直接删除PHP,重新解压缩编译。

配置httpd.conf支持php

  vi /usr/local/apache/conf/httpd.conf

  确认以下几行存在并且没有被注释

1
2
3
  LoadModule php4_module libexec/libphp4.so
  AddType application/x-httpd-php .php .phtml .php3
  AddType application/x-httpd-php-source .phps

在Apache根目录下建立info.php,内容<? phpinfo(); ?> ,出现 phpinfo信息成功。

四、安装ZendOptimizer-2.5.7

  解压,执行文件夹里面的./install.sh,按照提示安装即可。

五、其他问题

  在重起apache后,访问编译过的php页面为乱码,发现Zend没有挂接上,通过phpinfo没有看到,查看apache错误日志:

Failed loading /usr/local/Zend/lib/Optimizer-2.5.7/php-4.1.x/ZendOptimizer.so:  /usr/local/Zend/lib/Optimizer-2.5.7/php-4.1.x/ZendOptimizer.so: q
Failed loading /usr/local/Zend/lib/Optimizer-2.5.7/php-4.1.x/ZendOptimizer.so:  /usr/local/Zend/lib/Optimizer-2.5.7/php-4.1.x/ZendOptimizer.so: cannot restore segment prot after reloc: Permission denied

  经查证,确认是由于selinux引起的,只有先关闭他。

#vi /etc/sysconfig/selinux

修改SELINUX=disabled

重起系统。

分类: linux, 系统 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.