Centos搭建PHP环境,以及各种常见错误和解决方式

Centos 搭建PHP环境

系统:Centos6.3
PHP:5.4.8
Mysql:5.5.28
Apache:2.4.3

文末可下载所需资源包

纯源码搭建,仅供参考

步骤1

检查安装时使用的编译工具是否存在

gcc -v

查看是否返回gcc版本

准备工作

1、安装基本依赖包,先用yum安装cmake、automake 、autoconf ,另MySQL 5.5.x需要最少安装的包有:bison,gcc、gcc-c++、ncurses-devel

yum install gcc gcc-c++ cmake autoconf bison automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* -y

如果安装出错,提示:

Error: Protected multilib versions: zlib-1.2.3-29.el6.i686 != zlib-1.2.3-27.el6.x86_64

原因:多个库共存冲突

解决办法:在执行命令后面加上:--setopt=protected_multilib=false 
再次执行:yum install zlib* --setopt=protected_multilib=false

卸载默认的低版本环境

目前发行的Linux操作系统版本中,如果选择默认全部安装,就已经安装了LAMP环境,但是版本相对都比较低。我们可以再安装一个LAMP环境和原来的并存,但是这样做没有必要,因为同时只能开启一个LAMP环境。所要我们要在安装之前,先应检查一下系统中是否已经安装了低版本的环境,如果已经安装过了,停止原来的服务运行,或者把原来的环境卸载掉。

删除某个文件夹 rm –rf 文件夹名,也可以用用来删除文件

查看是否已经安装某软件,例如rpm –qa|grep mysql

Centos卸载mysql :
yum remove mysql
yum –y remove mysqlmysql

常见的错误提示

错误提示:httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
解决方式:vim /web/apache/conf/httpd.conf (在这里/web/apahce是我安装apache的目录,你默认安装的话应该是/usr/local/apache2/icons),找到ServerName www.example.com:80 把去掉,再重启apache即可没事了。

如果提示3306端口冲突
查看是否打开3306端口:Netstat –lnp|grep 3306
lsof -i :3306|grep -v “PID”|awk ‘{print “kill -9”,$2}’|sh

如果提示80端口冲突
netstat -an|grep 80
lsof -i :80|grep -v “PID”|awk ‘{print “kill -9”,$2}’|sh

编译安装过程

解压tar.gz为后缀的压缩软件包
如果是gzip压缩文件: tar zxvf x.tar.gz
如果是bzip2压缩的 tar jxvf x.tar.bz2

在Linux系统中源代码包安装过程
配置(configure)
编译(make)
安装(make install)

安装libxml2最新库文件

./configure --prefix=/usr/local/libxml2
make
make install

安装libmcrypt最新库文件

./configure --prefix=/usr/local/libmcrypt 
make 
make install 

安装zlib最新库文件

./configure --prefix=/usr/local/zlib
make 
make install

如果是64位操作系统,那么ZLIB编译方式应该改成:
CFLAGS=“-O3 -fPIC” ./configure --prefix=/usr/local/zlib/

如果安装libpng的时候,提示zlib找不到的话,后面不要带参数编译

安装libpng最新库文件

./configure --prefix=/usr/local/libpng
make 
make install 

安装jpeg6最新库文件

mkdir /usr/local/jpeg6            //建立jpeg6软件安装目录
mkdir /usr/local/jpeg6/bin    //建立存放命令的目录
mkdir /usr/local/jpeg6/lib     //创建jpeg6库文件所在目录
mkdir /usr/local/jpeg6/include      //建立存放头文件目录
mkdir -p /usr/local/jpeg6/man/man1 //建立存放手册的目录 

./configure \
--prefix=/usr/local/jpeg6/ \             
--enable-shared \                     //建立共享库使用的GNU的libtool
--enable-static                       //建立静态库使用的GNU的libtool 

make && make install

安装jpeg6出错

安装jpeg6出错
./libtool --mode=compile gcc -O2  -I. -c ./jcapimin.c
make: ./libtool锛..浠ゆ.?惧.
make: *** [jcapimin.lo] ?.. 127
更新libtool工具
ftp://ftp.gnu.org/gnu/libtool/
安装libtool文件
./configure make && make install
然后进入jpeg-6b的源码目录,然后执行以下步骤
删除jpeg-6b目录中原有的config.sub和config.guess两个文件再执行以下操作
6.3系统cp /usr/share/libtool/config/config.sub /media/jzysns/jpeg-6bcp /usr/share/libtool/config/config.guess /media/jzysns/jpeg-6b 之后再编译执行

安装freetype最新库文件

./configure --prefix=/usr/local/freetype 
make 
make install 

安装autoconf最新的库文件

./configure
make 
make install

如果报错:configure: error: perl is not found

解决方式:
yum install perl

安装最新的GD库文件

 ./configure \    //配置命令
--prefix=/usr/local/gd2/  \               //指定软件安装的位置
--with-zlib=/usr/local/zlib/  \             //指定到哪去找zlib库文件的位置
--with-jpeg=/usr/local/jpeg6/  \         //指定到哪去找jpeg库文件的位置
--with-png=/usr/local/libpng/  \         //指定到哪去找png库文件的位置
--with-freetype=/usr/local/freetype/       //指定到哪去找freetype 2.x字体库的位置 

make && make install

如果报错,去修改gd_png.c
#include “png.h”
改为:
#include “/usr/local/libpng/include/png.h”

安装数据库mysql5.5.28

mysql从5.5版本开始,不再使用./configure编译,而是使用cmake编译器
我的mysql目录配置如下:
安装路径:/usr/local/mysql
数据库路径:/media/shujuku/data
源码包存放位置:/media/shujuku/softfile
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/media/shujuku/data/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/media/shujuku/data/ \
-DMYSQL_TCP_PORT=3306
Make && make install

MYSQL配置调试1

查看mysql.mysql的用户及组是否存在
cat /etc/passwd | grep mysql
cat /etc/group |grep mysql
Centos搭建PHP环境,以及各种常见错误和解决方式_第1张图片
以下带颜色字体的命令非常非常,必须要执行
cd /usr/local/mysql
chown mysql.mysql -R . #将mysql目录赋予mysql用户的执行权
chown mysql.mysql -R data/mysql 如果不成功,则手动输入
cp support-files/my-medium.cnf /etc/my.cnf #mysql配置文件

chmod 755 scripts/mysql_install_db #赋予mysql_install_db执行权限

MYSQL配置调试2

以下命令为mysql 启动及自启动配置

scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/media/jiasu/data/
cp support-files/mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld

查看mysqld服务是否设置为开机启动
chkconfig --list|grep mysqld
设置为开机启动
chkconfig mysqld on

MYSQL配置调试3

启动mysql数据库,会输出一系列有用的信息,告诉你接下去如何初始化mysql

[root@centos mysql]# service mysqld start 

初始化 MySQL 数据库:
Installing MySQL system tables… OK
Filling help tables… OK ….

初始化管理员root的密码

mysql有两种帐号类型,即localhost和%,前者限本机连接mysql,后者可用于其它机器远程连接mysql
最后,处理帐号登录问题,让root帐号密码可以本地和远程连接使用/usr/local/mysql/bin/mysql -u root -p
#敲入该命令后,屏幕会提示输入密码,输入上一步设置的yourpassword 删除root密码为空的记录

mysql> use mysql;
mysql> delete from user where password='';
mysql> flush privileges;
配置mysql允许root远程登录
#登录
mysql> grant all privileges on *.* to root@'%' identified by "123456";
mysql> flush privileges;
mysql> select User,Password,Host from user;
mysql> quit

安装Apache服务器

安装apache依赖包pcre
./configure --prefix=/usr/local/pcre
make && make install

更新openssl库,否则编译时会报openssl太旧
yum install openssl-devel
yum update openssl

将apr、apr-util移动到apache的srclib目录
mv /路径/apr-1.4.6 /路径/httpd-2.4.3/srclib/apr
mv /路径/apr-util-1.5.1 /路径/httpd-2.4.3/srclib/apr-util

Apache编译

./configure --prefix=/usr/local/apache --enable-so --enable-deflate=shared --enable-ssl=shared --enable-expires=shared --enable-headers=shared --enable-rewrite=shared --enable-static-support --with-included-apr --with-mpm=prefork --enable-cache --enable-file-cache --with-pcre=/usr/local/pcre --with-z=/usr/local/zlib/

如果安装的时候报如下错误:

/usr/local/zlib//lib/libz.a: could not read symbols: Bad value

那么得看一下前面的ZLIB是否安装64位操作系统的方式安装

yum -y install pcre-devel

启动apache

/usr/local/apache/bin/apachectl start

停止apache

/usr/local/apache/bin/apachectl stop
netstat -tnl|grep 80     //查看80端口是否开启

http://localhost/去访问Apache服务器

开机启动

 echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.d/rc.local

Apache启动可能出现的错误

如果启动时出现如下错误:
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 218.30.64.194. Set the ‘ServerName’ directive globally to suppress this message

解决方式:

#vim /usr/local/apache/conf/httpd.conf

(在这里/web/apahce是我安装apache的目录,你默认安装的话应该是/usr/local/apache2/icons),找到#ServerName www.example.com:80 把#去掉,或则改为:ServerName localhost:80,再重启apache即可。

网站还是运行不了怎么办?

有可能centos开启了防火墙
打开防火墙80、443端口

vim /etc/sysconfig/iptables

加上以下现行,wq保存退出

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
service iptables restart

用sudo fuser -n tcp 80 -k 这句话是解决80端口被占用
安装apache之后如果不出现is work 则删除/etc/init.d/下面的 httpd文件,重新拷贝一份

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

然后/etc/init.d/httpd restart 再localhost一下页面出现 的是不是 it works

查看防火墙规则

iptables -L INPUT --line-numbers

Apache版本查看

查看apache版本

/usr/local/apache/bin/httpd –v

查看apache已编译安装的模块

/usr/local/apache/bin/httpd -M

安装PHP

进入PHP的openssl扩展模块目录

mv config0.m4 config.m4
/var/www/php5/bin/phpize
./configure --with-openssl --with-php-config=/var/www/php5/bin/php-config
make
make install

#安装完成后,会返回一个.so文件(openssl.so)的目录。在此目录下把openssl.so 文件拷贝到你在php.ini 中指定的 extension_dir 下(在php.ini文件中查找:extension_dir =),我这里的目录是 var/www/php5/lib/php/extensions
#编辑php.ini文件,在文件最后添加

extension=openssl.so

重启Apache即可

/usr/local/apache2/bin/apachectl restart

PHP配置1

php配置,编译安装时我的php.ini文件目录指向/usr/local/apache/conf

[root@localhost ~]# cp /media/shujuku/softfile/php-5.4.8/php.ini-production /usr/local/apache/conf/php.ini

apache配置文件httpd.conf相关修改

vim /usr/local/apache/conf/httpd.conf

    DirectoryIndex index.html

改为

    DirectoryIndex index.html index.php


AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
下面添加三行
 AddType application/x-httpd-php .php .phtml
    AddType application/x-httpd-php-source .phps
    PHPIniDir "conf"

PHP配置2

不显示目录结构,找到“Options Indexes FollowSymLinks”,修改为 Options FollowSymLinks


AllowOverride None
Options None
Require all granted

改为:

AllowOverride All
Options None
Require all granted
Order deny,allow
Allow from all

PHP配置3

开启Apache支持伪静态,找到“AllowOverride None”,修改为 AllowOverride All
#LoadModule rewrite_module modules/mod_rewrite.so删掉前面的#号,增加重写功能

保存httpd.conf配置,然后再执行以下两行命令给文件存放目录读写权限

[root@localhost ~]# chown -R nobody. /usr/local/apache/htdocs/
[root@localhost ~]# chmod -R 777 /usr/local/apache/htdocs/

开启调试

编辑 vim /usr/local/apache/conf/php.ini

display_errors = Off 改为display_errors = On

开启短语句支持

short_open_tag = Off 改为 short_open_tag = On

时区

;date.timezone = 改成: date.timezone = Asia/Shanghai 

Session存放路径

;session.save_path = “/tmp“ 去掉前面的;号,自定义存放路径

configure: error: Please reinstall the libcurl distribution

问题:

checking for cURL in default path… not found

configure: error: Please reinstall the libcurl distribution -

easy.h should be in /include/curl/

解决方式:

yum -y install curl-devel

== 资源包下载 ==

你可能感兴趣的:(Centos,PHP,centos,php,apache)