天天看点

LAMP源码编译安装配置+wordpress

 什么是LAMP呢?LAMP就是Linux+apache+mysql+php,一组常用来搭建动态网站或者静态网站的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。Linux系统稳定,而apache功能强大,mysql也是开源的性能优越的数据库,php用来是web服务器支持动态php网页,他们四者是面向应用的黄金组合。

下面是Linux + httpd-2.4.1 + mysql-5.5.19 + php-5.3.10的编译安装过程:

一,编译安装apache

二、安装mysql-5.5.19

三、编译安装php-5.3.10

四,安装phpMyAdmin-3.2.5,以便于我们以图形化的方式管理mysql

五,建站工具wordpress的安装

首先,我们要配置好yum源。可以把我们的yum源指向我们的光盘中的Server目录,方便我们安装其中的软件包.

一、编译安装apache

1、解决依赖关系

httpd-2.4.1需要较新版本的apr和apr-util,因此需要事先对其进行升级。

升级方式有两种,一种是通过源代码编译安装,第二种是直接升级rpm包。

第一种:源代码编译安装:

apr-1.4.6:

# ./configure --prefix=/usr/local/apr 

# make

# make install

apr-util-1.4.1:

# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

--with-apr=  指定apr的位置

第二种:用rpm包直接升级(这个rpm包可以自己制作或是网上下载):

共需要如下4个软件包:

apr-1.4.6-1.i386.rpm

apr-devel-1.4.6-1.i386.rpm

apr-util-1.4.1-1.i386.rpm

apr-util-devel-1.4.1-1.i386.rpm

#rpm -Uvh apr-1.4.6-1.i386.rpm  apr-devel-1.4.6-1.i386.rpm

#rpm -Uvh apr-util-1.4.1-1.i386.rpm  apr-util-devel-1.4.1-1.i386.rpm

另外,httpd-2.4.1编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带,可以用yum命令安装:

#yum install pcre-devel

2、编译安装httpd-2.4.1

首先下载httpd-2.4.1到本地,而后执行如下命令进行编译安装过程。

首先两个开发包组要安装,这是编译安装所必要的:

#yum groupinstall "Development Tools" "Development Libraries"

# tar xf httpd-2.4.1.tar.bz2

# cd httpd-2.4.1

# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib    

--prefix= 指定安装路径

--sysconfdir= 指定配置文件的安装路径

--enable-so  启用DSO功能,让apache在需要的时候动态装载模块,这个很重要

--enable-ssl 启用ssl功能

--enable-cgi 启用cgi功能

--enable-rewrite 启用URL重写

--with-zlib 

# make           编译

# make install   安装

3、修改httpd的主配置文件,设置其Pid文件的路径

#vim /etc/httpd/httpd.conf

添加如下行即可:

PidFile  "/var/run/httpd.pid"

4、提供SysV服务脚本/etc/rc.d/init.d/httpd:

编辑这个文件,添加如下内容,保存退出

vim /etc/rc.d/init.d/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

        echo $"not reloading due to configuration syntax error"

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

    else

        killproc -p ${pidfile} $httpd -HUP

    fi

    echo

# See how we were called.

case "$1" in

  start)

start

;;

  stop)

stop

  status)

        status -p ${pidfile} $httpd

  restart)

  condrestart)

if [ -f ${pidfile} ] ; then

  reload)

        reload

  graceful|help|configtest|fullstatus)

$apachectl $@

  *)

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

exit 1

esac

exit $RETVAL

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

# chmod +x /etc/rc.d/init.d/httpd

把httpd服务加入服务列表:

# chkconfig --add httpd

#chkconfig httpd on

接下来我们就可以执行service相关命令了

开启httpd服务:

#service httpd start 

1、准备数据存放的文件系统

在企业应用中,由于数据库中的数据变化量是很大的,为了方便管理,我们可以把数据库放在一个逻辑卷上,可以很方便的扩展或缩减其空间大小,利用管理。

首先进行分区,用作物理卷的分区的id为8e,大小为10G,我们这里以创建分区/dev/sda3为例:

#fdisk /dev/sda

让kernel识别新建的分区:

#partprobe /dev/sda

创建物理卷:

#pvcreate /dev/sda3

创建卷组:

#vgcreate myvg /dev/sda3

创建逻辑卷;

#lvcreate -L 5G -n lv_mydata myvg

格式化逻辑卷:

#mke2fs -j /dev/myvg/lv_mydata

逻辑卷的挂载目录为/mydata,/mydata/data目录来存放mysql的数据:

#mkdir -p /mydata/data

使逻辑卷开机自动挂载:

#vim /etc/fstab

添加如下行:

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

挂载/etc/fstab中的文件系统:

#mount -a

2、新建系统用户以安全方式运行mysqld进程:

# groupadd -r mysql

# useradd -g mysql -r -s /sbin/nologin -M  mysql

由于/mydata/data是用于存放mysql数据的文件,故要更改其属主属组为mysql:

# chown -R mysql:mysql /mydata/data

3、安装并初始化mysql-5.5.19

首先下载平台对应的mysql-5.5.19版本至本地,这里是32位平台,因此,选择的为mysql-5.5.19-linux2.6-i686.tar.gz,这个是绿色版的。

# tar xf mysql-5.5.19-linux2.6-i686.tar.gz -C /usr/local

# cd /usr/local/

# ln -sv mysql-5.5.19-linux2.6-i686  mysql

# cd mysql 

# chown -R mysql:mysql  .

初始化数据库:

# scripts/mysql_install_db --user=mysql --datadir=/mydata/data

--user= 指定运行mysql数据库的用户

--datadir= 指定数据库数据的存放位置

# chown -R root  .

4、为mysql提供主配置文件:

# cd /usr/local/mysql

# cp support-files/my-large.cnf  /etc/my.cnf

#vim /etc/my.cnf

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

thread_concurrency = 2

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

datadir = /mydata/data

5、为mysql提供sysv服务脚本:

# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

添加至服务列表:

# chkconfig --add mysqld

# chkconfig mysqld on

开启mysqld服务:

#service mysqld start 

为了使用mysql的安装符合Linux系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:

6、输出mysql的man手册至man命令的查找路径:

#vim /etc/man.config

MANPATH  /usr/local/mysql/man

7、输出mysql的头文件至系统头文件路径/usr/include:

这可以通过简单的创建链接实现:

# ln -sv /usr/local/mysql/include  /usr/include/mysql

8、输出mysql的库文件给系统库查找路径:

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

而后让系统重新载入系统库:

# ldconfig

9、修改PATH环境变量,让系统所有用户可以直接使用mysql的相关命令:

vim /etc/profile

PATH=$PATH:/usr/local/mysql/bin  (重新登录系统即可生效)

1、解决依赖关系:

# 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

#rpm -ivh libmcrypt-2.5.7-5.el5.i386.rpm

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

2、编译安装php-5.3.10

首先下载源码包至本地目录,然后编译安装:

# tar xf php-5.3.10.tar.bz2

# cd php-5.3.10

# ./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  --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt

--with-mysql= 指定mysql的路径,php有时要调用mysql中的数据

--with-openssl 支持ssl功能

--with-mysqli=/usr/local/mysql/bin/mysql_config 指定mysqli这个接口的;路径

--enable-mbstring 支持多字节串

--with-freetype-dir 要启用freetype的功能,是一个绘图库

--with-jpeg-dir 启用jpeg功能,也是一个绘图库

--with-png-dir 启用png功能,也是一个绘图库

--with-zlib 启用zlib功能,是一个压缩库

--with-libxml-dir= 指定扩展标记语言的库文件的位置

--enable-xml 启用xml功能

--with-apxs2= 使用指定的这个命令,把php做成apache的一个模块,这个很重要

--with-mcrypt  支持mcrypt扩展

说明:如果前面第1步解决依赖关系时没有安装mcrypt相关的两个rpm包,此./configure命令还不用带--with-mcrypt

# make test

# make intall

为php提供配置文件:

# cp php.ini-production /usr/local/php/lib/php.ini

3、 编辑apache配置文件httpd.conf,以使apache支持php

 # vim /etc/httpd/httpd.conf

 1、添加如下二行

   AddType application/x-httpd-php  .php

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

 2、定位至DirectoryIndex index.html 

   修改为:

    DirectoryIndex  index.php  index.html

而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。

#service httpd restart

#vim /usr/local/apache/htdocs/index.php

<?php

phpinfo();

?>

如果显示“PHP Version 5.3.10”的很多信息,则配置正常。如图所示:

apache放网页的位置是:/usr/local/apache/htdocs ,主配置文件是:/etc/httpd/httpd.conf

四,安装phpMyAdmin-3.2.5,以便于我们以图形化的方式管理mysql:

加入我们想让以http://web_ip/padm的方式访问数据库,则:

#mkdir /usr/local/apache/htdocs/padm

#tax xf phpMyAdmin-3.2.5-all-languages.tar.gz

#mv phpMyAdmin-3.2.5-all-languages/* /usr/local/apache/htdocs/padm

#cd /usr/local/apache/htdocs/padm

#cp config.sample.inc.php config.inc.php

#vim config.inc.php

更改$cfg的行,加一段乱码:

$cfg['blowfish_secret'] = 'ajdfjflkdjfdf;l';

由于phpMyAdmin不支持用户以空密码的身份登录,故我们可以为mysql的root用户设定一个密码:

# mysqladmin -uroot -p password '123456'

Enter password:   这里是让我们输入老密码,如果没有设的话直接回车就好了

通过http://web_ip/padm就可以访问了

五,建站工具wordpress的安装:

首先,以root用户的身份登录数据库,创建wordpress所使用的数据库及用户:

#mysql -uroot -p

 创建数据库

mysql> CREATE DATABASE wordpress; 

建立用户,并设定其密码为lee

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wpuser@localhost IDENTIFIED BY 'lee';

使账号立即生效

mysql> FLUSH PRIVILEGES; 

退出数据库:

mysql> \q

如果我们想以http://web_ip/wordpress来访问我们的站点,则:

#cp wordpress-3.2.1-zh_CN.zip /usr/local/apache/htdocs

#cd /usr/local/apache/htdocs/

#unzip wordpress-3.2.1-zh_CN.zip  

#cd wordpress

#cp wp-config-sample.php wp-config.php

#vim wp-config.php

修改

define('DB_NAME', 'wordpress');

define('DB_USER', 'wpuser');

define('DB_PASSWORD', 'lee');

define('DB_HOST', 'localhost'); 指定数据库所在的主机

配置我们的wordpress站点:

http://www.magedu.com/wordpress

配置完成之后,用这个url就可以访问我们的站点了,并登录进行相应的管理 

本文转自 leejia1989 51CTO博客,原文链接:http://blog.51cto.com/leejia/810860,如需转载请自行联系原作者