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
以下带颜色字体的命令非常非常,必须要执行
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
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
改为
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
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
<Directory "/usr/local/apache/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
改为:
<Directory "/usr/local/apache/cgi-bin">
AllowOverride All
Options None
Require all granted
Order deny,allow
Allow from all
</Directory>
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
== 资源包下载 ==