LAMP(Linux+Apache+MySQL+PHP/Python/Perl)架构是一套强大的网站解决方案,LAMP是多个开源项目的首字母缩写,

LAMP网站架构主要应用于动态网站的web架构,这种web框架具有通用、跨平台、高性能、高负载、稳定等特性,是目前企业

部署网站的首选平台。Nginx目前在国内的应用也越来越成熟,相对于Apache而言,Nginx对于静态文件的响应能力远远高于

Apache服务器,因此LNMP架构现在也很多见。但对于负载PHP的网站而言,Apache仍然是目前的首选产品。下面我们通过

实际部署两个开源网站项目了解LAMP的实际应用,两个开源项目均采用PHP代码编写,分别是Discuz!论坛系统及WordPress

博客系统。下图为网站架构图,通过基于域名的虚拟主机实现在一台Apache服务器上运行两个不同的网站品台,论坛域名为

bbs.example.com,博客域名为blog.example.com

动态网站 架构图 动态网站实例_mysql

论坛系统应用案例

Discuz!是目前国内应用最广泛的社区论坛建站平台,使用Discuz!可以实现一站式建站服务,Discuz!从2001年发布至今

,大量的应用案例证明额该系统的成熟度、稳定性及负载能力都是值得信赖的。另外,由于Discuz!采用的是PHP语言开发,

并且开放源代码,所以Discuz!也是PHP编程人员学习PHP的代码模板

部署Discuz!论坛所需环境:www服务器(如:Apache、Nginx等)、PHP软件包(版本要求在4.3.0以上)、MySQL数据库(

版本要求在3.23以上)。这里采用LAMP平台实现论坛系统的部署

1、下载软件包

wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.4.tar.gz

wget http://mirror.bjtu.edu.cn/apache/apr/apr-1.4.6.tar.gz

wget http://mirror.bjtu.edu.cn/apache/apr/apr-util-1.5.2.tar.gz

wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.11.tar.gz

wget http://cn2.php.net/get/php-5.4.14.tar.gz/from/this/mirror

2、部署AMP环境

将所有的源码包解压到特定目录

tar -zxvf httpd-2.4.4.tar.gz -C /usr/src/

tar -zxvf apr-1.4.6.tar.gz -C /usr/src/

tar -zxvf apr-util-1.5.2.tar.gz -C /usr/src/

tar -zxvf mysql-5.6.11.tar.gz -C /usr/src/

tar -zxvf php-5.4.14.tar.gz -C /usr/src/

安装依赖包

yum -y install gcc gcc-c++ autoconf automake make cmake pcre pcre-devel openssl openssl-devel \

>ncurses-devel libxml2-devel bison zlib-devel libtool-ltd1-devel libtool flex

安装Apache HTTP Server

cd /usr/src/apr-1.4.6/

./configure

make && make install

cd /usr/src/apr-util-1.5.2/

./configure --with-apr=/usr/local/apr/

make && make install

cd /usr/src/httpd-2.4.4/

./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl --enable-rewrite --with-mpm=worker --with-suexec-bin --with-apr=/usr/local/apr/

make && make install

安装MySQL

cd /usr/src/mysql-5.6.11/

groupadd mysql

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

cmake . -DENABLE_DOWNLOADS=1

make && make install

chown -R mysql.mysql /usr/local/mysql

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data

cp /usr/local/mysql/my.cnf /etc/my.cnf

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

service mysqld start

chkconfig --add mysqld

chkconfig mysqld on

echo "/usr/local/mysql/lib" >> /etc/ld.so.conf

ldconfig

Discuz是基于PHP的动态网站,很多数据都需要被保存在数据库中。因此我们需要在MySQL数据库中为论坛创建数据库,并创建数据库管理账户及密码

/usr/local/mysql/bin/mysql -uroot

mysql>create database bbs;

mysql>grant all on bbs.* to 'bbs_admin'@'localhost' identified by 'admin123';

mysql>flush privileges;

mysql>exit

安装PHP程序

cd /usr/src/php-5.4.14/

./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-sockets

make && make install

cp php.ini-development /usr/local/php5/lib/php.ini

修改Apache主配置文件httpd.conf以确保改文件中有如下两条指令,这两条指定的功能是加载模块并设置文件类型:

LoadModule php5_module modules/libphp5.so

AddType application/x-httpd-php .php

测试(服务器生成PHP测试页面,客户端通过IP地址访问测试页面)

echo "<?php phpinfo();?>" > /usr/local/apache2/htdocs/index.php

firefox http://124.126.181.119/index.php

3、初始化论坛系统

首先,修改Apache主配置文件,通过DirectoryIndex index.php index.html指令设置默认首页为index.php,去除主配置文件Include conf/extra/httpd-vhosts.conf指令

前的#。Include指令将读取httpd-vhosts.conf文件的内容作为主配置文件的一部分

其次,修改虚拟主机配置文件httpd-vhosts.conf的内容

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

动态网站 架构图 动态网站实例_apache_02

动态网站 架构图 动态网站实例_mysql_03

mkdir -p /usr/local/apache2/htdocs/bbs/logs

接下来从http://www.comsenz.com/downloads/install/discuz中下载Discuz!软件包,此处我们选择的版本为Discuz! X2.5,下载后解压将upload中的文件上传至bbs目录

mkdir /usr/src/discuz

unzip /root/Discuz_X2.5_SC_UTF8.zip -d /usr/src/discuz/

cp -r /usr/src/discuz/upload/* /usr/local/apache2/htdocs/bbs/

chmod -R 777 /usr/local/apache2/htdocs/bbs/{config/,data/}

chmod -R 777 /usr/local/apache2/htdocs/bbs/uc_client/data/cache/

chmod -R 777 /usr/local/apache2/htdocs/bbs/uc_server/data/

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

service iptables save

/usr/local/apache2/bin/apachectl restart

最后,客户端通过浏览器访问http:// bbs.example.com/install/,完成初始化操作,完成初始化操作后,将/usr/local/apache2/htdocs/bbs/install/index.php

删除,防止进行多次初始化操作。此时客户端通过浏览器访问论坛域名:http://bbs.example.com/,即可登录论坛首页,首次登录仅包含一个默认板块

4、论坛系统设置

论坛初始化完成后,没有具体板块内容,管理员可以登录后台进行一些全局、板块、内容、用户等设置。

博客系统应用案例

1、添加虚拟主机

修改虚拟主机配置文件httpd-vhosts.conf,添加博客虚拟主机站点

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

动态网站 架构图 动态网站实例_php_04

mkdir -p /usr/local/apache2/htdocs/blog/logs

/usr/local/apache2/bin/apachectl restart

2、下载WordPress并上传至Apache虚拟站点目录

wget http://cn.wordpress.org/wordpress-3.5.1-zh_CN.zip

unzip wordpress-3.5.1-zh_CN.zip -d /usr/src/

cp -r /usr/src/wordpress/* /usr/local/apache2/htdocs/blog/

chown -R daemon /usr/local/apache2/htdocs/blog

3、创建博客系统数据库及账户密码

/usr/local/mysql/bin/mysql -uroot -p

mysql>create database blog;

mysql>grant all on blog.* to 'blog_admin'@'localhost' identified by 'admin123';

mysql>exit

4、初始化博客系统

初始化过程比较简单,根据提示完成即可

5、后台管理

浏览博客首页,通过首页的登录链接可以进入后台管理界面