您的位置:首页 > 运维架构 > Apache

linux+apache+mysql+php的LAMP搭建

2013-12-19 15:51 435 查看
编译配置LAMP: Linux, Apache, MySQL, PHP(Python, Perl)其大概步骤大致可以分为 httpd --> MySQL --> Php他们三者的关系又是什么呢?1、apache是服务器基础,php和mysql都需要他来协调工作2、php是脚本解释,如果不用php那么apache出来的东西就只是静态的,而不能在服务器实现功能3、mysql是数据库,完全可以单独使用,但是和另外两个一起,则是由php代码调用mysql接口,而apache就负责解释php代码,让他能真正地实现对mysql的调用这三个放在这里,大概可以这样讲所以稍微理清了下思绪,我们开始来进行试验!前提:因为要用到yum安装,所以请事先确保好yum的配置是否已经妥当。可参照/article/6936609.html中前几步介绍的步骤。以及事先准备好相应的软件包,:httpd-2.4.3.tar + mysql-5.5.28 + php-5.4.8 apr-util-1.4.1.tar,apr-1.4.6.tar 另外需要查看selinux是否开启。同样可参照上边博客中的方法来实现关闭selinux
[root@localhost ~]# getenforce

Enforcing

[root@localhost ~]# setenforce 0

[root@localhost ~]# getenforce

Permissive

//当然。这里也需要到vim /etc/selinux/config将其中的SELINUX=enforcing替换为SELINUX=permissive

一、编译安装apache注意:事先把httpd-2.4.3.tar,apr-util-1.4.1.tar,apr-1.4.6.tar 这三个包放到/usr/local/src/目录中,方法具体不在介绍xshell与window界面拖拽。另外需要注意的是,要将虚拟机里linux的时间做同步。--hwclock -s1解决依赖关系(1) 编译安装apr
[root@localhost src]# ls

apr-1.4.6.tar.bz2 apr-util-1.4.1.tar.bz2 httpd-2.4.3.tar.bz2

[root@localhost src]# tar xf apr-1.4.6.tar.bz2

[root@localhost src]# cd apr-1.4.6

[root@localhost apr-1.4.6]# ./configure --prefix=/usr/local/apr // prefix指定路径

[root@localhost apr-1.4.6] # make && make install //这里稍微简略了下步骤

//这个时候,apr已经安装好了 。然后去安装apr-util

(2) 编译安装apr-util
[root@localhost apr-1.4.6]# cd ..

[root@localhost src]# tar xf apr-util-1.4.1.tar.bz2

[root@localhost src]# cd apr-util-1.4.1

[root@localhost apr-util-1.4.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr //-with-apr告诉其apr的路径

[root@localhost apr-util-1.4.1]# make

[root@localhost apr-util-1.4.1]# make install

(3) httpd-2.4.3编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带,因此,找到并安装即可。
[root@localhost apr-util-1.4.1]# cd ..

[root@localhost src]# yum install pcre-devel

2、编译安装httpd-2.4.3
[root@localhost src]# tar xf httpd-2.4.3.tar.bz2

[root@localhost src]# cd httpd-2.4.3

[root@localhost httpd-2.4.3]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-mpms-shared=all--with-mpm=event //mpm=even默认使用event

[root@localhost httpd-2.4.3]# make

[root@localhost httpd-2.4.3]# make install

补充:(1)构建MPM为静态模块在全部平台中,MPM都可以构建为静态模块。在构建时选择一种MPM,链接到服务器中。如果要改变MPM,必须重新构建。为了使用指定的MPM,请在执行configure脚本 时,使用参数 --with-mpm=NAME。NAME是指定的MPM名称。编译完成后,可以使用 ./httpd -l 来确定选择的MPM。 此命令会列出编译到服务器程序中的所有模块,包括 MPM。(2)构建 MPM 为动态模块在Unix或类似平台中,MPM可以构建为动态模块,与其它动态模块一样在运行时加载。 构建 MPM 为动态模块允许通过修改LoadModule指令内容来改变MPM,而不用重新构建服务器程序。在执行configure脚本时,使用--enable-mpms-shared选项即可启用此特性。当给出的参数为all时,所有此平台支持的MPM模块都会被安装。还可以在参数中给出模块列表。默认MPM,可以自动选择或者在执行configure脚本时通过--with-mpm选项来指定,然后出现在生成的服务器配置文件中。编辑LoadModule指令内容可以选择不同的MPM。3、修改httpd的主配置文件,设置其Pid文件的路径
[root@localhost src]# vim /etc/httpd/httpd.conf

//添加如下内容

PidFile "/var/run/httpd.pid"

4、提供SysV服务脚本/etc/rc.d/init.d/httpd,内容如下:
[root@localhost src]# cd /etc/rc.d/init.d/

[root@localhost init.d]# vim httpd

//添加如下内容

#!/bin/bash

#

# httpd Startup script for the Apache HTTP Server

#

# chkconfig: - 85 15

# description: Apache is a World Wide Web server. It is used to serve \

# HTML files and CGI.

# processname: httpd

# config: /etc/httpd/conf/httpd.conf

# config: /etc/sysconfig/httpd

# pidfile: /var/run/httpd.pid

# Source function library.

. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then

. /etc/sysconfig/httpd

fi

# Start httpd in the C locale by default.

HTTPD_LANG=${HTTPD_LANG-"C"}

# This will prevent initlog from swallowing up a pass-phrase prompt if

# mod_ssl needs a pass-phrase from the user.

INITLOG_ARGS=""

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server

# with the thread-based "worker" MPM; BE WARNED that some modules may not

# work correctly with a thread-based MPM; notably PHP will refuse to start.

# Path to the apachectl script, server binary, and short-form for messages.

apachectl=/usr/local/apache/bin/apachectl

httpd=${HTTPD-/usr/local/apache/bin/httpd}

prog=httpd

pidfile=${PIDFILE-/var/run/httpd.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd}

RETVAL=0

start() {

echo -n $"Starting $prog: "

LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS

RETVAL=$?

echo

[ $RETVAL = 0 ] && touch ${lockfile}

return $RETVAL

}

stop() {

echo -n $"Stopping $prog: "

killproc -p ${pidfile} -d 10 $httpd

RETVAL=$?

echo

[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}

}

reload() {

echo -n $"Reloading $prog: "

if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then

RETVAL=$?

echo $"not reloading due to configuration syntax error"

failure $"not reloading $httpd due to configuration syntax error"

else

killproc -p ${pidfile} $httpd -HUP

RETVAL=$?

fi

echo

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

status)

status -p ${pidfile} $httpd

RETVAL=$?

;;

restart)

stop

start

;;

condrestart)

if [ -f ${pidfile} ] ; then

stop

start

fi

;;

reload)

reload

;;

graceful|help|configtest|fullstatus)

$apachectl $@

RETVAL=$?

;;

*)

echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"

exit 1

esac

exit $RETVAL

//而后为此脚本赋予执行权限:

[root@localhost init.d]# chmod +x httpd

[root@localhost init.d]# chkconfig --level 35 httpd on //设定运行级别

[root@localhost init.d]# chkconfig --list httpd

httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off

//下面的步骤可忽略,这里只是可以设置为bash可以直接执行

[root@localhost init.d]# vim /etv/profile.d/httpd.sh

[root@localhost init.d]# export PATH=$PATH:/usr/local/apache/bin

这个时候就可以验证下httpd服务了。

然后打开浏览器,输入172.16.111.1就可以查看工作网页了。其网页文件在/usr/local/apache/htdocs/中的index.html中,可以修改其中的内容对网页内容进行修改。二、安装mysql-5.5.28 前提:这里使用mysql-5.5.28-linux2.6-tar,提前下载放入linux中1准备数据存放的文件系统
//新建一个逻辑卷,这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。

[root@localhost init.d]# fdisk /dev/sda

//其中过程省略。。

[root@localhost init.d]# partprobe /dev/sda

//创建逻辑卷

[root@localhost init.d]# pvcreate /dev/sda5

Writing physical volume data to disk "/dev/sda5"

Physical volume "/dev/sda5" successfully created

[root@localhost init.d]# vgcreate myvg /dev/sda5

Volume group "myvg" successfully created

[root@localhost init.d]# lvcreate -n mydata -L 5G myvg

Logical volume "mydata" created

[root@localhost init.d]# lvs

LV VG Attr LSize Origin Snap% Move Log Copy% Convert

mydata myvg -wi-a- 5.00G

lvtext vgtext -wi-a- 1.00G

home vol0 -wi-ao 4.88G

root vol0 -wi-ao 29.28G

[root@localhost init.d]# mke2fs -j /dev/myvg/mydata

//设置开机挂载

[root@localhost ~]# mkdir /mydata

[root@localhost ~]# vim /etc/fstab

//添加如下内容

/dev/myvg/mydata /mydata ext3 defaults 0 0

[root@localhost ~]# mount –a //重新挂载

[root@localhost ~]# mkdir /mydata/data //作为数据的挂载目录

2、新建用户以安全方式运行进程:
//创建用户

[root@localhost ~]# groupadd -r mysql

[root@localhost ~]# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql

[root@localhost ~]# chown -R mysql:mysql /mydata/data

3[b]、[/b]安装并初始化mysql-5.5.28
[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# tar xf mysql-5.5.28-linux2.6-i686.tar.gz

[root@localhost src]# cd ..

[root@localhost local]# pwd

/usr/local

[root@localhost local]# ln -sv /usr/local/src/mysql-5.5.28-linux2.6-i686 mysql

create symbolic link `mysql' to `/usr/local/src/mysql-5.5.28-linux2.6-i686'

[root@localhost local]# cd mysql

[root@localhost mysql]# chown -R mysql:mysql *

[root@localhost mysql]# scripts/mysql_install_db --user=mysql--datadir=/mydata/data

Installing MySQL system tables...

[root@localhost mysql]#

4为mysql提供主配置文件:
[root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf

[root@localhost mysql]# vim /etc/my.cnf

//并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:

thread_concurrency = 2

//另外还需要添加如下行指定mysql数据文件的存放位置:

datadir = /mydata/data //添加此行指定mysql数据文件的存放位置

5为mysql提供sysv服务脚本:
[root@localhost mysql]# pwd

/usr/local/mysql

[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld

//添加至服务列表:

[root@localhost mysql]# chkconfig --add mysqld

[root@localhost mysql]# chkconfig mysqld on

为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:6输出mysql的man手册至man命令的查找路径:
[root@localhost mysql]# vim /etc/man.config

#####################mysql#############

MANPATH /usr/local/mysql/man

7[b]、[/b]输出mysql的头文件至系统头文件路径/usr/include
//这可以通过简单的创建链接实现:

[root@localhost mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql

create symbolic link `/usr/include/mysql' to `/usr/local/mysql/include'

8、输出mysql的库文件给系统库查找路径:
[root@localhost ld.so.conf.d]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。
[root@localhost ld.so.conf.d]# vim /etc/profile //需要重读或重启或重新登录

PATH=$PATH:/usr/local/mysql/bin

//另外export PATH=$PATH:/usr/local/mysql/bin 也可以起到上边的效果

PS:这个时候。就可以进入数据库创建表之类的东西了!




三、编译安装php-5.4.131、解决依赖关系:请配置好yum源(可以是本地系统光盘)后执行如下命令:
[root@localhost ~]# yum -y groupinstall "X Software Development"

如果想让编译的php支持mcrypt扩展,此处还需要下载如下两个rpm包并安装之:

libmcrypt-2.5.7-5.el5.i386.rpm

libmcrypt-devel-2.5.7-5.el5.i386.rpm

mhash-0.9.2-6.el5.i386

mhash-devel-0.9.2-6.el5.i386

2编译安装php-5.4.13
 //将下载好的安装包放到linux的src中(过程同上)

[root@localhost src]# tar xf php-5.4.13.tar.bz2

[root@localhost php-5.4.13]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts

//说明:

--prefix=/usr/local/php:php安装路径

--with-mysql=/usr/local/mysql:mysql安装路径

--with-openssl:支持openssl功能

--with-mysqli=/usr/local/mysql/bin/mysql_config:mysql与apache访问的另一种接口,安装在二进制目录下

--enable-mbstring:多字节string

--with-freetype-dir:安装的字体库头文件

--with-jpeg-dir:jpeg类型的库

--with-png-dir:png类型的库

--with-zlib:互联网上通用压缩库,先压缩再传送,减少带宽

--with-libxml-dir=/usr:xml库文件的路径

--enable-xml:支持xml功能

--enable-sockets:php支持套接字功能 --with-apxs2=/usr/local/apache/bin/apxs:基于apxs实现让php编译成apache模块

--with-mcrypt:支持额外的加密库

--with-config-file-path=/etc:php配置文件放置路径

--with-config-file-scan-dir=/etc/php.d :php配置文件的分段文件放置路径

--with-bz2 :压缩库

--enable-maintainer-zts:当apache使用worker或event这两个MPM,编译时使用该选项

[root@localhost php-5.4.13]# make

[root@localhost php-5.4.13]# make test

[root@localhost php-5.4.13]# make install

为php提供配置文件:
[root@localhost php-5.4.13]# cp php.ini-production /etc/php.ini

//php包中提供了配置文件,把配置文件重命名为/etc/php.ini,php的配置文件后缀名是以.ini结尾

3编辑apache配置文件httpd.conf,以apache支持php
 [root@localhost php-5.4.8]# vim /etc/httpd/httpd.conf

1、添加如下二行

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

//能够让APACHE处理PHP结尾的文件

2、定位至DirectoryIndex index.html

修改为:

DirectoryIndex index.php index.html

//能让目录索引处理php结尾的页面文件。在配置文件中可以根据自己安装内容启动相对模块。比如:SSL模块等。

[root@localhost php-5.4.13]#cd /usr/local/apache/htdocs/ //进入apache页面目录下,把默认页面修改为php页面文件

[root@localhost php-5.4.13]#mv index.html index.php

[root@localhost php-5.4.13]#vim index.php

<html><body><h1>It works! doubao’s test page</h1></body></html>

<?php

phpinfo();

?>

:wq

//保存退出

[root@localhost htdocs]# service httpd restart //重启

//发起php页面测试

//生成的测试页面内容对我们还是会有帮助,可以留意一下里面的内容



[align=left]4 php和mysql结合,在index.php页面文件中修改一下内容[/align]
<html><body><h1>It works! my test page</h1></body></html>

<?php

$conn=mysql_connect('localhost','root','');

if ($conn)

echo "<h2>Success...</h2>";

else

echo "<h2>Failure...</h2>";

phpinfo();

?>

//保存退出然后

[root@localhost htdocs]# service httpd restart //重启网络服务



到这里,一个linux+apache+mysql+php的LAMP已经搭建好了。另外,为LAMP提供加速也有很多机制,如XCahe等等,博主以后会更新这部分的内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: