本文详细阐述在 Linux 系统中搭建 PHP 环境,由于 PHP 就是由 C 语言编写的,最初也是运行在 Linux 系统中,所以Linux 是 PHP 的最佳环境。

关于本文中使用到的软件,请点击此链接下载。>>> 【点击下载

本文中作者是以虚拟机(VMware)安装的 CentOS 5.5 进行试验。下面进行安装详解

1、准备工作

一、请先确认你所安装的 Linux 系统中是否已经安装了Apache、MySQL、PHP,如果安装请先卸载。

查看是否安装(Apache为例)

  1. [root@gamejzy Linux]# rpm -qa|grep httpd

注:rpm -qa 是查看本机中已经安装的所有软件。 grep httpd 是过滤出与 httpd(apache) 有关的软件。注:grep php 是查看 PHP;grep mysql 是查看 MySQL

如果执行完命令后出现空,那么说明机器中没有安装 Apache 软件,如果出现诸如下情况说明已经安装。

如果如上图所示的那样,那么就需要把这三个软件都卸载了。

卸载命令如下:

  1. [root@gamejzy Linux]# rpm -e httpd-2.2.3-43.el5.centos --nodeps

注:--nodeps 是强制卸载

二、请保证你的 Linux 系统中安装了 gcc、g++ 编译器

检查是否安装很简单,在命令行中敲入“gc”或“g+”,按 tab 键,看下面是否有命令显示。

如果没有也没关系,安装 gcc、g++ 的方法十分简单

安装gcc:

  1. yum -y install gcc

安装g++:

  1. yum install gcc-c++

三、将所有的软件(大部分都是 tar 包)包拷贝到 /tmp/lamp 底下,并解压

解压 tar.gz 命令(php软件为例):tar zxvf php-5.2.6.tar.gz

当执行完此命令后,会在当前目录下创建一个 php-5.2.6 的文件夹,解压的所有文件会放置在 php-5.2.6 文件夹中

请按照同样的方法将所有的包都解压,并且删除所有的 *.tar.gz 文件

  1. [root@gamejzy lamp]# rm -rf *.gz

以上命令删除所有的 .gz 文件

四、编译安装软件包介绍

在 Linux 系统安装每个源代码软件包的过程如下:

△ 配置(configure)

△ 编译(make)

△ 安装(make install)

2、搭建 LAMP 环境(请按照下面给出的顺序进行安装)

这里所有的软件都安装在 /usr/local 下

一、安装libxml

安装顺序:1、进入 libxml 目录;2、配置参数(包括安装路径;依赖软件;安装功能等);3、编译;4、安装。注:所有软件包安装类似

  1. [root@gamejzy lamp]# cd libxml2-2.6.30/
  2. [root@gamejzy libxml2-2.6.30]# ./configure --prefix=/usr/local/libxml2

./configure 为软件包配置参数命令,--prefix 表示指定的安装目录,大部分目录若不在会自动创建,个别不会,需要我们手动创建

  1. [root@gamejzy libxml2-2.6.30]# make && make install

以上命令是将编译和安装在一起执行,由于软件小,安装速度比较快,若大的软件,可能会花比较长的时间。

二、安装libmcrypt

  1. [root@gamejzy lamp]# cd libmcrypt-2.5.8/
  2. [root@gamejzy libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt
  3. [root@gamejzy libmcrypt-2.5.8]# make && make install

三、安装zlib

  1. [root@gamejzy lamp]# cd zlib-1.2.3/
  2. [root@gamejzy zlib-1.2.3]# ./configure
  3. [root@gamejzy zlib-1.2.3]# make && make install

./configure 后面不要跟 --prefix 参数,让其安装在默认目录中,因为安装 libpng 的时候会用到 zlib。

四、安装libpng

  1. [root@gamejzy lamp]# cd libpng-1.2.31/
  2. [root@gamejzy libpng-1.2.31]# ./configure --prefix=/usr/local/libpng
  3. [root@gamejzy libpng-1.2.31]# make && make install

五、安装jpeg6

这个软件配置的时候不会自动创建目录,需要我们手动创建

  1. [root@gamejzy libpng-1.2.31]# mkdir /usr/local/jpeg6
  2. [root@gamejzy libpng-1.2.31]# mkdir /usr/local/jpeg6/bin
  3. [root@gamejzy libpng-1.2.31]# mkdir /usr/local/jpeg6/lib
  4. [root@gamejzy libpng-1.2.31]# mkdir /usr/local/jpeg6/include
  5. [root@gamejzy libpng-1.2.31]# mkdir -p  /usr/local/jpeg6/man/man1

生成目录完毕!

  1. [root@gamejzy lamp]# cd jpeg-6b/
  2. [root@gamejzy jpeg-6b]# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
  3. [root@gamejzy jpeg-6b]# make && make install

./configure 中参数说明:

--enable-shared  建立共享库使用的GNU的libtool

--enable-static   建立静态库使用的GNU的libtool

六、安装freetype

  1. [root@gamejzy lamp]# cd freetype-2.3.5/
  2. [root@gamejzy freetype-2.3.5]# ./configure --prefix=/usr/local/freetype
  3. [root@gamejzy freetype-2.3.5]# make && make install

七、安装autoconf

  1. [root@gamejzy lamp]# cd autoconf-2.61/
  2. [root@gamejzy autoconf-2.61]# ./configure
  3. [root@gamejzy autoconf-2.61]# make && make install

这个软件直接安装在默认目录下。

八、安装GD

  1. [root@gamejzy lamp]# cd gd-2.0.35/
  2. [root@gamejzy gd-2.0.35]# ./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg6/ --with-png=/usr/local/libpng/ --with-freetype=/usr/local/freetype/
  3. [root@gamejzy gd-2.0.35]# make && make install

./configure 中参数说明:

--with-jpeg=/usr/local/jpeg6/ 指定到哪去找jpeg库文件的位置
--with-png=/usr/local/libpng/ 指定到哪去找png库文件的位置
--with-freetype=/usr/local/freetype/ 指定到哪去找freetype 2.x字体库的位置

注意 安装此软件包可能会出现以下错误,如下图所示:

如果出现如此错误,解决方法:

  1. [root@gamejzy gd-2.0.35]# vi gd_png.c

找到关键词"png.h" 命令:/png.h 回车

替换为:/usr/local/libpng/include/png.h

效果如下图所示:

保存退出,继续执行"make && make install" 执行即可安装成功。

九、安装Apache(关键)

  1. [root@gamejzy lamp]# cd httpd-2.2.9/
  2. [root@gamejzy httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --enable-static-support
  3. [root@gamejzy httpd-2.2.9]# make && make install

./configure 中的参数说明:

--sysconfdir=/etc/httpd 指定Apache服务器的配置文件(httpd.conf等文件)存放位置
--with-included-apr 使用捆绑APR/APR-Util的副本
--enable-so 以动态共享对象(DSO)编译
--enable-deflate=shared 缩小传输编码的支持
--enable-expires=shared 期满头控制
--enable-rewrite=shared 基于规则的URL操控
--enable-static-support 建立一个静态链接版本的支持

测试 Apache 服务器

1、检查 /usr/local/ 下是否出现 apache2 目录;

2、检查 /etc/ 目录下面是否出现 httpd 目录,即里面是否有 httpd.conf 文件、extra目录等内容

3、开启 apache 服务器

  1. [root@gamejzy httpd]# /usr/local/apache2/bin/apachectl start

stop(关闭)、restart(重启)

4、查看 apache 服务器是否启动,即查看 80 端口是否启动

  1. [root@gamejzy httpd]# netstat -tnl|grep 80

执行完命令,出现如下所示,表示已经启动

tcp        0      0 :::80                       :::*                       
LISTEN

5、在浏览器中访问

如果在本机的话,请在浏览器地址栏中输入:http://localhost 或 http://127.0.0.1

如果是远程连接的话,比如:SSH连接,那么请在浏览器地址栏中输入 Linux 的 ip 地址。比如:http://192.168.1.233

若网页中出现大字“

It works!

”说明 Apache 安装成功。

测试完毕!

添加 Apache 每次开机自动启动

  1. [root@gamejzy /]# echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local


十、安装MySQL(重要)

安装 MySQL 之前先建立一个专门管理 MySQL 的组和用户名

建立一个组名叫“mysql”

  1. [root@gamejzy /]# groupadd mysql

建立一个用户名叫“mysql”,让他属于“mysql”组

  1. [root@gamejzy /]# useradd -g mysql mysql
  1. [root@gamejzy lamp]# cd mysql-5.0.41/
  2. [root@gamejzy mysql-5.0.41]# ./configure --prefix=/usr/local/mysql --with-extra-charsets=all
  3. [root@gamejzy mysql-5.0.41]# make && make install

./configure 参数说明:

--with-extra-charsets=all 安装MySQL 所有的字符集

注意 在 ./configure 的时候如果出现如下错误

原因:缺少ncurses安装包。

解决方法:下载安装相应软件包

  1. yum list|grep ncurses
  2. yum -y install ncurses-devel

ncurses安装完成之后,再进行 ./configure 配置!

MySQL安装完成之后,设置一些内容,这些内容非常繁琐,但是又非常关键的,希望大家耐心学习。

1、设置配置文件 my.cnf,放在 /etc/ 目录下

  1. [root@gamejzy mysql-5.0.41]# cp support-files/my-medium.cnf /etc/my.cnf

2、初始化数据库文件,安装完 MySQL 之后,并不会出现 MySQL 的数据文件及数据存放位置

首先切换到 MySQL 的安装目录下

  1. [root@gamejzy mysql-5.0.41]# cd /usr/local/mysql/

使用 bin 目录下的 mysql_install_db 进行初始化数据库文件,并使用上面建的 mysql 用户

  1. [root@gamejzy mysql]# bin/mysql_install_db --user=mysql

运行完之后,会发现 MySQL 安装目录中会多一个 var 目录,里面放置的就是数据库文件,包括我们已经建的数据库都会放置在这个目录里面。

3、设置 MySQL 安装目录权限

改变目录下的所有文件和目录的拥有者为 root

  1. [root@gamejzy mysql]# chown -R root .

改变 var 目录的拥有者为 mysql 用户

  1. [root@gamejzy mysql]# chown -R mysql ./var/

改变所有目录和文件的用户组为 mysql 组

  1. [root@gamejzy mysql]# chgrp -R mysql .

4、启动 MySQL

  1. [root@gamejzy mysql]# /usr/local/mysql/bin/mysqld_safe --user=mysql &

& 表示在后台启动

这时,使用 netstat -tnl,如果看见 3306 端口,那么说明启动成功

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                  
LISTEN

5、设置权限,如果我们现在直接使用 bin 目录下的 mysql 命令,那么就能登录

  1. [root@gamejzy mysql]# bin/mysql

这样就太危险了!因此需要设置权限。

先登录进 MySQL 中,使用 SQL 命令删除主机不是“localhost” 的用户名(MySQL 中的用户都mysql库中的user表),只留允许本机登录的账号。

  1. mysql> delete from mysql.user where Host != 'localhost';

刷新授权表

  1. mysql> flush privileges;

设置允许本机进入 MySQL 的 root 用户的密码

  1. mysql> set password for 'root'@'localhost'=password('123456');

注:设置的密码必须记住,不然就进不去 MySQL 数据库了。

到这步的时候,我们的 root 用户,就已经设置了密码(密码为“123456”),我们可以测试一下,键入“exit”退出MySQL

这时登录 MySQL 数据库的命令不能是 bin/mysql 那么简单,应该如下:

  1. [root@gamejzy mysql]# bin/mysql -h 127.0.0.1 -u root -p123456

-h 指定主机名

-u 用户名

-p 密码

6、关闭 MySQL 数据库服务器

  1. [root@gamejzy mysql]# bin/mysqladmin -u root -p shutdown

这里的是 root 用户是 MySQL 中的用户,执行后会提示你输入密码,Enter password:

输入密码,回车即可关闭数据库。

启动命令,请看本节4

7、加入到开机默认启动

  1. [root@gamejzy mysql]# echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &" >> /etc/rc.d/rc.local

十一、安装PHP(重要)

这里我们安装 PHP 的高版本 php-5.3.19,安装参数比较多,请一定注意。

  1. [root@gamejzy lamp]# cd php-5.3.19/
  2. [root@gamejzy php-5.3.19]# ./configure \
  3. > --prefix=/usr/local/php \
  4. > --with-config-file-path=/usr/local/php/etc \
  5. > --with-apxs2=/usr/local/apache2/bin/apxs \
  6. > --with-mysql=/usr/local/mysql/ \
  7. > --with-libxml-dir=/usr/local/libxml2/ \
  8. > --with-png-dir=/usr/local/libpng/ \
  9. > --with-jpeg-dir=/usr/local/jpeg6/ \
  10. > --with-freetype-dir=/usr/local/freetype/ \
  11. > --with-gd=/usr/local/gd2/ \
  12. > --with-mcrypt=/usr/local/libmcrypt/ \
  13. > --with-mysqli=/usr/local/mysql/bin/mysql_config \
  14. > --enable-soap \
  15. > --enable-mbstring=all \
  16. > --enable-sockets

./configure 参数说明:

--with-config-file-path=/usr/local/php/etc 指定PHP5配置文件存入的路径
--with-apxs2=/usr/local/apache2/bin/apxs 告诉PHP查找Apache 2的地方
--with-mysql=/usr/local/mysql/ 指定MySQL的安装目录
--with-libxml-dir=/usr/local/libxml2/ 告诉PHP放置libxml2库的地方
--with-png-dir=/usr/local/libpng/ 告诉PHP放置libpng库的地方
--with-jpeg-dir=/usr/local/jpeg6/ 告诉PHP放置jpeg库的地方
--with-freetype-dir=/usr/local/freetype/ 告诉PHP放置freetype库的地方
--with-gd=/usr/local/gd2/ 告诉PHP放置gd库的地方
--with-mcrypt=/usr/local/libmcrypt/ 告诉PHP放置libmcrypt库的地方
--with-mysqli=/usr/local/mysql/bin/mysql_config 变量激活新增加的MySQLi功能
--enable-soap 变量激活SOAP和Web services支持
--enable-mbstring=all 使多字节字符串支持
--enable-sockets 变量激活socket通讯特性

执行命令后,出现“Thank you for using PHP.”,说明配置成功。

  1. [root@gamejzy php-5.3.19]# make && make install

编译和安装,时间会比较长,耐心等待吧!

编译完成后,需要以下配置

1、设置 php.ini 配置文件

  1. [root@gamejzy php-5.3.19]# cp php.ini-development /usr/local/php/etc/php.ini

注:/usr/local/php/etc 是在配置的时候指定的位置

2、和 Apache 整合

先打开 Apache 的配置文件 httpd.conf

  1. [root@gamejzy php-5.3.19]# vi /etc/httpd/httpd.conf

会发现文件中有这么条内容

  1. LoadModule php5_module        modules/libphp5.so

这就说明 PHP 已经加载到 Apache 服务器中了,我们所要做的是告诉 Apache 服务器,哪些后缀名使用 PHP 解析

在 vi 编辑器中搜索“AddType application/x-compress .Z”

在后面添加一条:AddType application/x-httpd-php .php

修改后的效果如下图

保存并退出,重启 Apache

  1. [root@gamejzy php-5.3.19]# /usr/local/apache2/bin/apachectl stop
  2. [root@gamejzy php-5.3.19]# /usr/local/apache2/bin/apachectl start

3、测试 Apache 服务器是否可以解析 PHP

往 /usr/local/apache2/htdocs 目录下添加一个phpinfo.php 文件,键入以下代码:

  1. <?php
  2. header("Content-Type:text/html;Charset=utf-8");
  3. phpinfo();
  4. ?>

打开浏览器,访问该文件,看到如下图所示,说明 PHP 安装成功,并且和 Apache 服务器整合成功。

到此,CentOS 下的 LAMP 环境就搭建完毕了,虽然步骤繁琐,但是“工欲善其事,必先利其器”,花些时间,搭建一个完美的环境是值得的。

(转)CentOS5.5 下搭建 PHP 环境(最佳的LAMP环境)的更多相关文章

  1. linux-mint下搭建android,angularjs,rails,html5开发环境 - qijie29896的个人空间 - 开源中国社区

    linux-mint下搭建android,angularjs,rails,html5开发环境 - qijie29896的个人空间 - 开源中国社区 http://blog.csdn.net/orzor ...

  2. 在Win7虚拟机下搭建Hadoop2.6.0伪分布式环境

    近几年大数据越来越火热.由于工作需要以及个人兴趣,最近开始学习大数据相关技术.学习过程中的一些经验教训希望能通过博文沉淀下来,与网友分享讨论,作为个人备忘. 第一篇,在win7虚拟机下搭建hadoop ...

  3. OSX 下搭建Asp.Net vNext的开发环境

    开年第一天,按照惯例逛逛各个网站,看看7天有没有什么错过的东西,偶见VS 2015的CPT 6发布了,据说更新ASP.NET,就顺便去官方网站看了看,也忘记在什么地方偶然发现一个叫OmniSharp的 ...

  4. Learning Lua Programming (3) iMac下搭建Lua脚本最好的编码环境(代码补全,编译运行)

    这篇文章参考自http://blog.sina.com.cn/s/blog_991afe570101rdgf.html,十分感谢原作者的伟大创造,本人亲测可行. 这篇文章记录一下如何在MAC系统环境下 ...

  5. ubuntu下搭建一个数据化处理的开发环境

    1.搭建matplotlib环境 构建matplotlib运行环境,需要满足相关软件环境. numpy库提供大数据集的数据的数据结构和数学方法.诸如元组.列表或字典等python的默认数据结构同样可以 ...

  6. Win8.1系统下搭建IIS8.5+php-5.6运行环境教程

    本文是在window 8.1 的IIS8.5 中搭建php环境 步骤: 1.下载php-5.6程序包 ,官网地址为:http://windows.php.net/download/     注意要下载 ...

  7. PyQt5系列教程(一)Mac OS X下搭建Python3.5.1+PyQt5开发环境

    软硬件环境 OS X EI Capitan Python 3.5.1 PyQt 5.5.1 PyCharm 5.0.1 前言 Qt是一个开源的跨平台的GUI框架,为很多计算机语言提供了应用程序开发接口 ...

  8. Windows下搭建Apache+Django+Python Web服务环境

    最近在学Django,想用Apache搭建一个服务器环境,因此在网上看了好多资料,很多都是用Python2.6和Apache2.2搭建的环境,不过我还是想用Python35和Apache24来搭建,具 ...

  9. linux下搭建nginx+php(FastCGI)+mysql运行环境

    一.安装环境 1.CentOS5.5 2.php5.4 3.MySQL5.5.19 二.安装程序依赖库和开发环境 为了省事把所需要的库文件全都安装上,可以使用rpm包安装,也可以用yum命令安装, 1 ...

随机推荐

  1. BeanDefinition的Resource定位

    1.以编程的方式使用DefaultListableBeanFactory时,首先定义一个Resource来定位容器使用的BeanDefiniton.这时使用的是ClassPathResource,这意 ...

  2. 【风马一族_git_github】gitGui与github的SSH

    权限校验 首先,您的数据保存在远端服务器一份,服务器需要对您的身份识别.一段RSA加密字符串. 启动GUI,菜单-帮助,[Step1-创建密钥]Generate SSH KEY 步骤一: 步骤二: 步 ...

  3. 下载服务器dll文件并动态加载

    1.新加一个类库 namespace ClassLibrary1 { public class Class1 { public int Add(int a, int b) { return a + b ...

  4. C# 测试代码运行时间

    一.新建一个控制台程序项目Test.exe using System; using System.Collections.Generic; using System.Linq; using Syste ...

  5. jdbc连接数据库使用sid和service_name的区别

    问题描述: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connect ...

  6. Django模版进阶

    # -*- coding: utf-8 -*-from django.shortcuts import renderdef home(request): string = "测试" ...

  7. Python标准库之urllib,urllib2自定义Opener

    urllib2.urlopen()函数不支持验证.cookie或者其它HTTP高级功能.要支持这些功能,必须使用build_opener()函数创建自定义Opener对象. 1. build_open ...

  8. 【转】Mac 上 java 究竟在哪里,本文彻底让你搞清楚!

    这篇文章可能比较适合那些在经常在Mac下进行Java编程开发,或者经常使用Java工具的朋友.不关心Java或者不了解Java的朋友可以绕过本文哈~ 1. Mac下当你在[终端]输入java -ver ...

  9. 将Unity3D游戏移植到Android平台上

    将Unity3D游戏移植到Android平台是一件很容易的事情,只需要在File->Build Settings中选择Android平台,然后点击Switch Platform并Build出ap ...

  10. require.js入门指南(三)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...