- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详解CentOS5.5 下搭建 PHP 环境(最佳的LAMP环境)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文详细阐述在 linux 系统中搭建 php 环境,由于 php 就是由 c 语言编写的,最初也是运行在 linux 系统中,所以linux 是 php 的最佳环境.
关于本文中使用到的软件,请点击此链接下载.
centos5.5现在官方已经不再提供,推荐大家使用centos6以上版本:
本文中作者是以虚拟机(vmware)安装的 centos 5.5 进行试验。下面进行安装详解 。
1、准备工作 。
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 是强制卸载 。
2、请保证你的 linux 系统中安装了 gcc、g++ 编译器 。
检查是否安装很简单,在命令行中敲入“gc”或“g+”,按 tab 键,看下面是否有命令显示.
如果没有也没关系,安装 gcc、g++ 的方法十分简单 。
安装gcc:
1
|
yum -y install gcc
|
安装g++:
1
|
yum install gcc-c++
|
3、将所有的软件(大部分都是 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 文件 。
4、编译安装软件包介绍 。
在 linux 系统安装每个源代码软件包的过程如下: △ 配置(configure) △ 编译(make) △ 安装(make install) 。
2、搭建 lamp 环境(请按照下面给出的顺序进行安装) 。
这里所有的软件都安装在 /usr/local 下 1、安装libxml 。
安装顺序:1、进入 libxml 目录;2、配置参数(包括安装路径;依赖软件;安装功能等);3、编译;4、安装。注:所有软件包安装类似 。
1
2
|
[root@gamejzy lamp]# cd libxml2-2.6.30/
[root@gamejzy libxml2-2.6.30]# ./configure --prefix=/usr/local/libxml2
|
./configure 为软件包配置参数命令,--prefix 表示指定的安装目录,大部分目录若不在会自动创建,个别不会,需要我们手动创建 。
1
|
[root@gamejzy libxml2-2.6.30]# make && make install
|
以上命令是将编译和安装在一起执行,由于软件小,安装速度比较快,若大的软件,可能会花比较长的时间.
2、安装libmcrypt 。
1
2
3
|
[root@gamejzy lamp]# cd libmcrypt-2.5.8/
[root@gamejzy libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt
[root@gamejzy libmcrypt-2.5.8]# make && make install
|
3、安装zlib 。
1
2
3
|
[root@gamejzy lamp]# cd zlib-1.2.3/
[root@gamejzy zlib-1.2.3]# ./configure
[root@gamejzy zlib-1.2.3]# make && make install
|
./configure 后面不要跟 --prefix 参数,让其安装在默认目录中,因为安装 libpng 的时候会用到 zlib。 4、安装libpng 。
1
2
3
|
[root@gamejzy lamp]# cd libpng-1.2.31/
[root@gamejzy libpng-1.2.31]# ./configure --prefix=/usr/local/libpng
[root@gamejzy libpng-1.2.31]# make && make install
|
5、安装jpeg6 。
这个软件配置的时候不会自动创建目录,需要我们手动创建 。
1
2
3
4
5
|
[root@gamejzy libpng-1.2.31]# mkdir /usr/local/jpeg6
[root@gamejzy libpng-1.2.31]# mkdir /usr/local/jpeg6/bin
[root@gamejzy libpng-1.2.31]# mkdir /usr/local/jpeg6/lib
[root@gamejzy libpng-1.2.31]# mkdir /usr/local/jpeg6/include
[root@gamejzy libpng-1.2.31]# mkdir -p /usr/local/jpeg6/man/man1
|
生成目录完毕! 。
1
2
3
|
[root@gamejzy lamp]# cd jpeg-6b/
[root@gamejzy jpeg-6b]# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
[root@gamejzy jpeg-6b]# make && make install
|
./configure 中参数说明: --enable-shared 建立共享库使用的gnu的libtool --enable-static 建立静态库使用的gnu的libtool 。
6、安装freetype 。
1
2
3
|
[root@gamejzy lamp]# cd freetype-2.3.5/
[root@gamejzy freetype-2.3.5]# ./configure --prefix=/usr/local/freetype
[root@gamejzy freetype-2.3.5]# make && make install
|
7、安装autoconf 。
1
2
3
|
[root@gamejzy lamp]# cd autoconf-2.61/
[root@gamejzy autoconf-2.61]# ./configure
[root@gamejzy autoconf-2.61]# make && make install
|
这个软件直接安装在默认目录下.
8、安装gd 。
1
2
3
|
[root@gamejzy lamp]# cd gd-2.0.35/
[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/
[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" 执行即可安装成功.
9、安装apache(关键) 。
1
2
3
|
[root@gamejzy lamp]# cd httpd-2.2.9/
[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
[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
|
10、安装mysql(重要) 。
安装 mysql 之前先建立一个专门管理 mysql 的组和用户名 。
建立一个组名叫“mysql” 。
1
|
[root@gamejzy /]# groupadd mysql
|
建立一个用户名叫“mysql”,让他属于“mysql”组 。
1
|
[root@gamejzy /]# useradd -g mysql mysql
|
1
2
3
|
[root@gamejzy lamp]# cd mysql-5.0.41/
[root@gamejzy mysql-5.0.41]# ./configure --prefix=/usr/local/mysql --with-extra-charsets=all
[root@gamejzy mysql-5.0.41]# make && make install
|
./configure 参数说明: --with-extra-charsets=all 安装mysql 所有的字符集 注意 在 ./configure 的时候如果出现如下错误 。
原因:缺少ncurses安装包.
解决方法:下载安装相应软件包 。
1
2
|
yum list|grep ncurses
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
|
11、安装php(重要) 。
这里我们安装 php 的高版本 php-5.3.19,安装参数比较多,请一定注意.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@gamejzy lamp]# cd php-5.3.19/
[root@gamejzy php-5.3.19]# ./configure \
> --prefix=/usr/local/php \
> --with-config-file-path=/usr/local/php/etc \
> --with-apxs2=/usr/local/apache2/bin/apxs \
> --with-mysql=/usr/local/mysql/ \
> --with-libxml-dir=/usr/local/libxml2/ \
> --with-png-dir=/usr/local/libpng/ \
> --with-jpeg-dir=/usr/local/jpeg6/ \
> --with-freetype-dir=/usr/local/freetype/ \
> --with-gd=/usr/local/gd2/ \
> --with-mcrypt=/usr/local/libmcrypt/ \
> --with-mysqli=/usr/local/mysql/bin/mysql_config \
> --enable-soap \
> --enable-mbstring=all \
> --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通讯特性 。
编译可能出现的问题:
出现如下报错:
解决方法:
1
2
|
cd /usr/local/mysql/lib/mysql/
ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so
|
编译ok后,出现“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
2
|
[root@gamejzy php-5.3.19]# /usr/local/apache2/bin/apachectl stop
[root@gamejzy php-5.3.19]# /usr/local/apache2/bin/apachectl start
|
3、测试 apache 服务器是否可以解析 php 。
往 /usr/local/apache2/htdocs 目录下添加一个phpinfo.php 文件,键入以下代码:
1
2
3
4
|
<?php
header(
"content-type:text/html;charset=utf-8"
);
phpinfo();
?>
|
打开浏览器,访问该文件,看到如下图所示,说明 php 安装成功,并且和 apache 服务器整合成功.
到此,centos 下的 lamp 环境就搭建完毕了,虽然步骤繁琐,但是“工欲善其事,必先利其器”,花些时间,搭建一个完美的环境是值得的.
最后此篇关于详解CentOS5.5 下搭建 PHP 环境(最佳的LAMP环境)的文章就讲到这里了,如果你想了解更多关于详解CentOS5.5 下搭建 PHP 环境(最佳的LAMP环境)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
LAMP 堆栈一词是什么意思? 我在招聘启事中看到过这个引用,但我不完全理解它的含义。 我觉得在我的开发中我相当普遍地使用 LAMP,但是当我听到“stack”时,我觉得我没有像我应该的那样使用 LA
完全在 WAMP 中开发,我需要将其部署在组织中的 LAMP 设置上。我想确保部署顺利进行并花费尽可能少的时间。在将其部署到 LAMP 之前,我需要更改哪些内容?还有什么方法可以在一些模拟的 LAMP
在变得有点疏远开源,并花了几年时间在 ASP.NET 中开发 Web 应用程序之后,我将开始做相当多的PHP/MySQL开发。 我已经很轻松地安装了WampServer在我的 Windows 机器上建
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我正在尝试遵循一些与AWS相关的亚马逊教程(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html)。这将允许我在我刚
我想在 Azure 服务器中设置 LAMP,可以使用以下方法设置 LAMP LAMP 包:sudo apt-get install lamp-server^ Apache、PHP、MySQL 单独安装
搭建LAMP Web服务器 在家中翻到了以前用的老电脑,在思索一番后,决定把这台电脑改造成一台Web服务器,作为我自己搭建博客的测试机器。 一、Linux服务器 LAMP中的L指的是Linux服
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 10年前关闭。 Improve this
请向我推荐一个基于Web的简单文档存储库,用于保存我的小公司文档(.DOC,.PDFs),以便我可以从任何地方访问它们。互联网上有很多可用的工具,但是它们很繁琐,并且充满了不必要的功能和要求。 我没有
我有一个个人项目已经在线一段时间了。我一直在通过这样做来记录下载量: 当用户点击下载链接时,它会点击一个 PHP 脚本,该脚本将一些信息写入表格。 写入数据后,脚本会返回实际文件的路径。 然后用户可以
我是 Ubuntu 的新手。安装灯。有几个问题 1)假设第一个网站目录看起来像:var/www/first/和第二个网站:var/www/second。如何设置多个网站,并将它们与 IIS 上的单独端
我的应用程序在 LAMP 服务器上运行时遇到了一些困难。我将解释该场景,下面我将介绍我的配置和一些 AB 结果。 我正在运行一个使用 Laravel 4.2 开发的应用程序。这是一个问答游戏,在某个时
情况: 我制作了一个可以打开和关闭灯的 Java 应用程序。现在我需要更改灯光,这必须发生在 class ColorLamp 中。正常的“黄”灯放在 class Lamp 中。 类 Colorlamp
嗨,最近我安装了 linux 并安装了 lamp + phpmyadmin,这个脚本在 xampp 上运行良好,而我使用了 win,但现在它不会执行,我已经更改了 dbconnect.php 文件中的
我在 Google 云上的 VM 实例上安装了 LAMP,但是当我尝试使用从 Linux 终端远程访问 mysql 数据库时 $ mysql -u username -h ipaddress -p 输
我在 EasyPHP 3.5.9 上开发了我的 php 软件,一切都很完美,现在我在 ubuntu 12.04 x64 上安装了 LAMP。如果我尝试在 ubuntu 上上传我的软件,我会显示一个白页
我最近(大约1个月)开始使用LAMP和Bootstrap。 我开发的网站在重新安装 LAMP 之前一直运行良好。 这是我的进展: 0. reinstalled LAMP 1. moved my "ba
我的项目驻留在一个共享的 Linux 托管服务器上。当然,托管服务提供商已经设置了相对于其他服务器用户的必要目录和文件所有权。我现在关心的是如何在我的域中设置权限,以便我的用户可以读取他们应该拥有的文
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我是一名优秀的程序员,十分优秀!