LAMP环境搭建心得

引言
LAMPChina的这个教程是能找到的最详细的教程,但是有一部分设为回复后可见,因此转贴到这里:LAMP攻略: LAMP环境搭建,Linux下Apache,MySQL,PHP安装与配置。也可以看看这个教程,写得也不错:linux+php5.1.6+mysql5.0.2+apache2.0.55安装配置说明

环境

LAMP 教程环境 本地环境
OS CentOS 5.3 SUSE 10.3
Apache httpd 2.2.11 httpd 2.2.13
MySQL 5.1.33 5.1.37
PHP 5.2.9 5.3.0

问题及解决办法
教程里用的是CentOS,而本地是64位SUSE10.3,因此MySQL的RPM包需要下载sles10 而不是 rhel5 后缀的,可以到官网下载,也可以去filesearching.com搜索其他镜像。

MySQL-client-community-5.1.37-0.sles10.i586.rpm
MySQL-devel-community-5.1.37-0.sles10.i586.rpm
MySQL-server-community-5.1.37-0.sles10.i586.rpm

PHP最新版本为5.3.0,可以从 php.net 下载,在

./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/lib –with-apxs2=/usr/local/httpd/bin/apxs –with-mysql –with-zlib –enable-mbstring –enable-xml

时一直报这样的错误:

checking for mysql_close in -lmysqlclient… no
checking for mysql_error in -lmysqlclient… no
configure: error: mysql configure failed. Please check config.log for more information.

查看config.log,发现如下错误信息:

configure:58889: checking for mysql_error in -lmysqlclient
configure:58908: gcc -o conftest -I/usr/include -g -O2 -fvisibility=hidden  -L/usr/lib -L/usr/lib64/mysql -Wl,-rpath,/usr/local/lib -L/usr/local/lib -Wl,-rpath,/usr -L/usr conftest.c -lmysqlclient  -lz -lz -lm -ldl -lnsl  -lxml2 -lz -lm -lxml2 -lz -lm 1>&5
/usr/lib64/gcc/x86_64-suse-linux/4.2.1/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib/libmysqlclient.so when searching for -lmysqlclient
/usr/lib64/gcc/x86_64-suse-linux/4.2.1/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib/libmysqlclient.so when searching for -lmysqlclient
/usr/lib64/gcc/x86_64-suse-linux/4.2.1/../../../../x86_64-suse-linux/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status

搜索了很长时间,最终发现原来 php5.3 自带 mysql 驱动,只需要将高亮部分的 –with-mysql 替换为 –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd 即可。当然如果是 php 5.2.9 或更低版本就可能是下面这几种情况了:……

MySQL的一系列问题
安装Discuz时提示 No Such File or Directory 的错误,发现是Mysql与php通信问题,解决办法在这里,不过稍有区别:

首先查询系统 /etc 目录下是否存在 my.cnf 配置文件,如果不存在则查询系统中已存在的mysql配置文件
# find / -name my-*.cnf    * 假设得出目录为 /usr/share/mysql/my-small.cnf
# cp /usr/share/mysql/my-small.cnf /etc/my.cnf
# vi /etc/my.cnf
按i键进入修改模式,将 socket 改为 /tmp/mysql.sock
按esc键,输入 :wq 保存退出。
重启mysql,如果报错,则
# cd /var/lib/mysql/
# ln -s /tmp/mysql.sock
# ldconfig
重新启动mysql即可。

* 修改mysql端口同样是my.cnf,只需将port=3306 修改为自己想要的端口保存退出即可。
* apache启动相关命令 # /usr/local/httpd/bin/apachectl start|stop|restart
* mysql启动相关命令  # /etc/init.d/mysql start|stop|restart|reload

目录权限
前面安装apache/httpd都将prefix设为 /usr/local 目录下,但是当前用户developer对此目录的权限为只读,因此需要修改apache的目录权限:

# chown developer /usr/local/apache/htdocs  * 如果想将htdocs目录及其子目录都分配权限可以在chown后加上参数 -hR

这样就可以将eclipse/zend 的workspace设为htdocs目录了,但是这样只是设置了当前用户可写,如果安装UCenter/Discuz或者其他程序,很多时候需要任何用 户都有读写权限,比如写入缓存或者上传附件,这样需要设置文件夹权限为777,例如ucenter需要这样设置:

# chmod 777 /usr/local/apache/htdocs/ucenter/data  * 此命令同样可以设置某单个文件的权限
# chmod 777 /usr/local/apache/htdocs/ucenter/data/*   * /*的意思是将data下一层的所有子目录及文件同时修改权限,如果下面两层,则需要再加/*成为 …/data/*/*,以此类推

在安装mantis后,如果apache log出类似这样的错误:

postdrop: warning: mail_queue_enter: create file maildrop/576069.18214: Permission denied

则是因为maildrop目录没有权限,用find / -name maildrop 查出目录所在,设置一下777即可。

安装phpMyAdmin
下载解压至htdocs目录简单设置即可:phpMyAdmin简明安装教程
遇到“无法载入 mcrypt 扩展,请检查 PHP 配置!!!”问题

# find / -name mcrypt

无返回结果,系统没有安装此扩展,下载安装重新编译php,问题解决!

其他安装问题
* Mantis 发送邮件乱码问题解决以及设置简体中文方法:Mantis 配置问题补漏
* Apache 出現 child pid XXXX exit signal Segmentation fault (11) 該如何處理?
* PHP 5.3.0 对mysql_close($link_identifier)这个函数(以及其他很多函数)要求更严格,必须带参数$link_identifier,而Discuz源码里直接写成mysql_close(),导致怎么也过不去,加上参数即可。

综上,PHP的configure后面参数如下:

./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/lib –with-apxs2=/usr/local/httpd/bin/apxs –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –with-zlib –with-mcrypt –enable-mbstring –enable-xml

发表评论

电子邮件地址不会被公开。 必填项已用*标注